From 4fd9833d8e3daf7921b916e2c33876d46e7d1370 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 9 Jul 2024 21:06:06 +0800 Subject: [PATCH 001/151] Update FUNDING.yml --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 6cfdb93788..1abe006a95 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,3 @@ +github: SoftFever ko_fi: SoftFever custom: https://paypal.me/softfever3d From 56edacf7373b43ecd06c4a5f76ae06b612e80432 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 10 Jul 2024 01:29:52 +0800 Subject: [PATCH 002/151] Add BigTreeTech as sponsor --- README.md | 22 ++++++++++++++------ SoftFever_doc/sponsor_logos/BigTreeTech.png | Bin 0 -> 13411 bytes 2 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 SoftFever_doc/sponsor_logos/BigTreeTech.png diff --git a/README.md b/README.md index 855503c1ef..3f492a5835 100644 --- a/README.md +++ b/README.md @@ -110,27 +110,37 @@ Thank you! :) - Peopoly + Peopoly - QIDI + QIDI - Phrozen Technology + Phrozen Technology + + + + + BIGTREE TECH ### Backers: -Ko-fi supporters: [Backers list](https://github.com/SoftFever/OrcaSlicer/files/14855600/sponsors.csv) +**Ko-fi supporters**: [Backers list](https://github.com/user-attachments/files/16147016/Supporters_638561417699952499.csv) + +## Support me + + + + +[![PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/softfever3d) -Support me -[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/G2G5IP3CP) ## Some background OrcaSlicer is originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever. diff --git a/SoftFever_doc/sponsor_logos/BigTreeTech.png b/SoftFever_doc/sponsor_logos/BigTreeTech.png new file mode 100644 index 0000000000000000000000000000000000000000..85a4aa04af233261796f09c12f34af2013ad86fa GIT binary patch literal 13411 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 S@xLYjfR2Vfv|i07`hNgJ6$Nwv literal 0 HcmV?d00001 From f5a710e758a39a756bdbcc94829216bc05cadbe9 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 5 Jul 2024 00:00:54 +0800 Subject: [PATCH 003/151] tool changer support - init work --- src/libslic3r/GCode.cpp | 64 +++- src/libslic3r/Preset.cpp | 4 +- src/libslic3r/Print.cpp | 13 +- src/libslic3r/PrintConfig.cpp | 52 ++-- src/libslic3r/PrintConfig.hpp | 6 +- src/libslic3r/PrintObject.cpp | 2 +- src/slic3r/GUI/ConfigManipulation.cpp | 2 +- src/slic3r/GUI/GUI_App.cpp | 20 +- src/slic3r/GUI/Plater.cpp | 14 +- src/slic3r/GUI/Plater.hpp | 2 + src/slic3r/GUI/Tab.cpp | 411 +++++++++++++++----------- 11 files changed, 370 insertions(+), 220 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index cdeaa1f159..c46de72179 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -272,11 +272,22 @@ static std::vector get_path_of_change_filament(const Print& print) gcode += gcodegen.writer().travel_to_xy(unscale(standby_point), "move to standby position"); } + unsigned int extruder_id = gcodegen.writer().extruder()->id(); + const ConfigOptionInts& filament_idle_temp = gcodegen.config().idle_temperature; - if (gcodegen.config().standby_temperature_delta.value != 0) { - // we assume that heating is always slower than cooling, so no need to block - gcode += gcodegen.writer().set_temperature - (this->_get_temp(gcodegen) + gcodegen.config().standby_temperature_delta.value, false, gcodegen.writer().extruder()->id()); + if (filament_idle_temp.get_at(extruder_id) == 0) { + if (gcodegen.config().standby_temperature_delta.value != 0) { + // we assume that heating is always slower than cooling, so no need to block + gcode += gcodegen.writer().set_temperature(this->_get_temp(gcodegen) + gcodegen.config().standby_temperature_delta.value, + false, gcodegen.writer().extruder()->id()); + gcode.pop_back(); + gcode += " ;cooldown\n"; // this is a marker for GCodeProcessor, so it can supress the commands when needed + } + } else { + // Use the value from filament settings. That one is absolute, not delta. + gcode += gcodegen.writer().set_temperature(filament_idle_temp.get_at(extruder_id), false, extruder_id); + gcode.pop_back(); + gcode += " ;cooldown\n"; // this is a marker for GCodeProcessor, so it can supress the commands when needed } return gcode; @@ -2261,6 +2272,8 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->placeholder_parser().set("has_wipe_tower", has_wipe_tower); //this->placeholder_parser().set("has_single_extruder_multi_material_priming", has_wipe_tower && print.config().single_extruder_multi_material_priming); this->placeholder_parser().set("total_toolchanges", std::max(0, print.wipe_tower_data().number_of_toolchanges)); // Check for negative toolchanges (single extruder mode) and set to 0 (no tool change). + this->placeholder_parser().set("num_extruders", int(print.config().nozzle_diameter.values.size())); + this->placeholder_parser().set("retract_length", new ConfigOptionFloats(print.config().retraction_length)); // PlaceholderParser currently substitues non-existent vector values with the zero'th value, which is harmful in the // case of "is_extruder_used[]" as Slicer may lie about availability of such non-existent extruder. We rather @@ -3255,8 +3268,12 @@ void GCode::_print_first_layer_extruder_temperatures(GCodeOutputStream &file, Pr // Set temperatures of all the printing extruders. for (unsigned int tool_id : print.extruders()) { int temp = print.config().nozzle_temperature_initial_layer.get_at(tool_id); - if (print.config().ooze_prevention.value) - temp += print.config().standby_temperature_delta.value; + if (print.config().ooze_prevention.value) { + if (print.config().idle_temperature.get_at(tool_id) == 0) + temp += print.config().standby_temperature_delta.value; + else + temp = print.config().idle_temperature.get_at(tool_id); + } if (temp > 0) file.write(m_writer.set_temperature(temp, wait, tool_id)); } @@ -6016,15 +6033,22 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b // if we are running a single-extruder setup, just set the extruder and return nothing if (!m_writer.multiple_extruders) { this->placeholder_parser().set("current_extruder", extruder_id); - this->placeholder_parser().set("retraction_distance_when_cut", m_config.retraction_distances_when_cut.get_at(extruder_id)); - this->placeholder_parser().set("long_retraction_when_cut", m_config.long_retractions_when_cut.get_at(extruder_id)); std::string gcode; // Append the filament start G-code. const std::string &filament_start_gcode = m_config.filament_start_gcode.get_at(extruder_id); if (! filament_start_gcode.empty()) { // Process the filament_start_gcode for the filament. - gcode += this->placeholder_parser_process("filament_start_gcode", filament_start_gcode, extruder_id); + DynamicConfig config; + config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); + config.set_key_value("layer_z", new ConfigOptionFloat(this->writer().get_position().z() - m_config.z_offset.value)); + config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); + config.set_key_value("filament_extruder_id", new ConfigOptionInt(int(extruder_id))); + config.set_key_value("retraction_distance_when_cut", + new ConfigOptionFloat(m_config.retraction_distances_when_cut.get_at(extruder_id))); + config.set_key_value("long_retraction_when_cut", new ConfigOptionBool(m_config.long_retractions_when_cut.get_at(extruder_id))); + + gcode += this->placeholder_parser_process("filament_start_gcode", filament_start_gcode, extruder_id, &config); check_add_eol(gcode); } if (m_config.enable_pressure_advance.get_at(extruder_id)) { @@ -6054,7 +6078,12 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b unsigned int old_extruder_id = m_writer.extruder()->id(); const std::string &filament_end_gcode = m_config.filament_end_gcode.get_at(old_extruder_id); if (! filament_end_gcode.empty()) { - gcode += placeholder_parser_process("filament_end_gcode", filament_end_gcode, old_extruder_id); + DynamicConfig config; + config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); + config.set_key_value("layer_z", new ConfigOptionFloat(m_writer.get_position().z() - m_config.z_offset.value)); + config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); + config.set_key_value("filament_extruder_id", new ConfigOptionInt(int(old_extruder_id))); + gcode += placeholder_parser_process("filament_end_gcode", filament_end_gcode, old_extruder_id, &config); check_add_eol(gcode); } } @@ -6166,6 +6195,14 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b std::string toolchange_gcode_parsed; //Orca: Ignore change_filament_gcode if is the first call for a tool change and manual_filament_change is enabled if (!change_filament_gcode.empty() && !(m_config.manual_filament_change.value && m_toolchange_count == 1)) { + dyn_config.set_key_value("previous_extruder", + new ConfigOptionInt((int) (m_writer.extruder() != nullptr ? m_writer.extruder()->id() : -1))); + dyn_config.set_key_value("next_extruder", new ConfigOptionInt((int) extruder_id)); + dyn_config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); + dyn_config.set_key_value("layer_z", new ConfigOptionFloat(print_z)); + dyn_config.set_key_value("toolchange_z", new ConfigOptionFloat(print_z)); + dyn_config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); + toolchange_gcode_parsed = placeholder_parser_process("change_filament_gcode", change_filament_gcode, extruder_id, &dyn_config); check_add_eol(toolchange_gcode_parsed); gcode += toolchange_gcode_parsed; @@ -6216,7 +6253,12 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b const std::string &filament_start_gcode = m_config.filament_start_gcode.get_at(extruder_id); if (! filament_start_gcode.empty()) { // Process the filament_start_gcode for the new filament. - gcode += this->placeholder_parser_process("filament_start_gcode", filament_start_gcode, extruder_id); + DynamicConfig config; + config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); + config.set_key_value("layer_z", new ConfigOptionFloat(this->writer().get_position().z() - m_config.z_offset.value)); + config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); + config.set_key_value("filament_extruder_id", new ConfigOptionInt(int(extruder_id))); + gcode += this->placeholder_parser_process("filament_start_gcode", filament_start_gcode, extruder_id, &config); check_add_eol(gcode); } // Set the new extruder to the operating temperature. diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 05c34446b6..724bdc148e 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -809,7 +809,7 @@ static std::vector s_Preset_print_options { "tree_support_brim_width", "gcode_comments", "gcode_label_objects", "initial_layer_travel_speed", "exclude_object", "slow_down_layers", "infill_anchor", "infill_anchor_max","initial_layer_min_bead_width", "make_overhang_printable", "make_overhang_printable_angle", "make_overhang_printable_hole_size" ,"notes", - "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_extruder", "wiping_volumes_extruders","wipe_tower_bridging", "single_extruder_multi_material_priming", + "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_filament", "wiping_volumes_extruders","wipe_tower_bridging", "single_extruder_multi_material_priming", "wipe_tower_rotation_angle", "tree_support_branch_distance_organic", "tree_support_branch_diameter_organic", "tree_support_branch_angle_organic", "hole_to_polyhole", "hole_to_polyhole_threshold", "hole_to_polyhole_twisted", "mmu_segmented_region_max_width", "mmu_segmented_region_interlocking_depth", "small_area_infill_flow_compensation", "small_area_infill_flow_compensation_model", @@ -845,7 +845,7 @@ static std::vector s_Preset_filament_options { "filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_multitool_ramming", "filament_multitool_ramming_volume", "filament_multitool_ramming_flow", "activate_chamber_temp_control", - "filament_long_retractions_when_cut","filament_retraction_distances_when_cut" + "filament_long_retractions_when_cut","filament_retraction_distances_when_cut", "idle_temperature" }; static std::vector s_Preset_machine_limits_options { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 43755c8ade..5e5f4bf284 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -284,10 +284,11 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "initial_layer_speed" || opt_key == "initial_layer_travel_speed" || opt_key == "slow_down_layers" + || opt_key == "idle_temperature" || opt_key == "wipe_tower_cone_angle" || opt_key == "wipe_tower_extra_spacing" || opt_key == "wipe_tower_max_purge_speed" - || opt_key == "wipe_tower_extruder" + || opt_key == "wipe_tower_filament" || opt_key == "wiping_volumes_extruders" || opt_key == "enable_filament_ramming" || opt_key == "purge_in_prime_tower" @@ -1148,9 +1149,12 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* double nozzle_diam = m_config.nozzle_diameter.get_at(extruder_idx); double filament_diam = m_config.filament_diameter.get_at(extruder_idx); if (nozzle_diam - EPSILON > first_nozzle_diam || nozzle_diam + EPSILON < first_nozzle_diam - || std::abs((filament_diam - first_filament_diam) / first_filament_diam) > 0.1) - // BBS: remove L() - return { L("Different nozzle diameters and different filament diameters is not allowed when prime tower is enabled.") }; + || std::abs((filament_diam - first_filament_diam) / first_filament_diam) > 0.1) { + // return { L("Different nozzle diameters and different filament diameters may not work well when prime tower is enabled. It's very experimental, please proceed with caucious.") }; + warning->string = L("Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."); + warning->opt_key = "nozzle_diameter"; + break; + } } if (! m_config.use_relative_e_distances) @@ -2820,6 +2824,7 @@ std::string Print::output_filename(const std::string &filename_base) const // These values will be just propagated into the output file name. DynamicConfig config = this->finished() ? this->print_statistics().config() : this->print_statistics().placeholders(); config.set_key_value("num_filaments", new ConfigOptionInt((int)m_config.nozzle_diameter.size())); + config.set_key_value("num_extruders", new ConfigOptionInt((int) m_config.nozzle_diameter.size())); config.set_key_value("plate_name", new ConfigOptionString(get_plate_name())); config.set_key_value("plate_number", new ConfigOptionString(get_plate_number_formatted())); config.set_key_value("model_name", new ConfigOptionString(get_model_name())); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 1dc18c1711..2c3798dd08 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2800,11 +2800,10 @@ void PrintConfigDef::init_fff_params() def = this->add("mmu_segmented_region_interlocking_depth", coFloat); def->label = L("Interlocking depth of a segmented region"); - //def->tooltip = L("Interlocking depth of a segmented region. It will be ignored if " - // "\"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\"" - // "is bigger then \"mmu_segmented_region_max_width\". Zero disables this feature."); - def->tooltip = L("Interlocking depth of a segmented region. Zero disables this feature."); - def->sidetext = L("mm"); //(zero to disable) + def->tooltip = L("Interlocking depth of a segmented region. It will be ignored if " + "\"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\"" + "is bigger then \"mmu_segmented_region_max_width\". Zero disables this feature."); + def->sidetext = L("mm"); def->min = 0; def->category = L("Advanced"); def->mode = comAdvanced; @@ -3398,7 +3397,7 @@ void PrintConfigDef::init_fff_params() def->category = "Extruders"; def->tooltip = "Filament to print walls"; def->min = 1; - def->mode = comDevelop; + def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); def = this->add("inner_wall_line_width", coFloatOrPercent); @@ -4061,12 +4060,13 @@ void PrintConfigDef::init_fff_params() def = this->add("standby_temperature_delta", coInt); def->label = L("Temperature variation"); - //def->tooltip = L("Temperature difference to be applied when an extruder is not active. " - // "Enables a full-height \"sacrificial\" skirt on which the nozzles are periodically wiped."); + // TRN PrintSettings : "Ooze prevention" > "Temperature variation" + def->tooltip = L("Temperature difference to be applied when an extruder is not active. " + "The value is not used when 'idle_temperature' in filament settings " + "is defined."); def->sidetext = "∆°C"; def->min = -max_temp; def->max = max_temp; - //BBS def->mode = comDevelop; def->set_default_value(new ConfigOptionInt(-5)); @@ -4092,7 +4092,6 @@ void PrintConfigDef::init_fff_params() def->label = L("Single Extruder Multi Material"); def->tooltip = L("Use single nozzle to print multi filament"); def->mode = comAdvanced; - def->readonly = true; def->set_default_value(new ConfigOptionBool(true)); def = this->add("manual_filament_change", coBool); @@ -4913,8 +4912,8 @@ void PrintConfigDef::init_fff_params() def->min = 10; def->set_default_value(new ConfigOptionFloat(90.)); - def = this->add("wipe_tower_extruder", coInt); - def->label = L("Wipe tower extruder"); + def = this->add("wipe_tower_filament", coInt); + def->label = L("Wipe tower"); def->category = L("Extruders"); def->tooltip = L("The extruder to use when printing perimeter of the wipe tower. " "Set to 0 to use the one that is available (non-soluble would be preferred)."); @@ -4961,6 +4960,15 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(10.)); + def = this->add("idle_temperature", coInts); + def->label = L("Idle temperature"); + def->tooltip = L("Nozzle temperature when the tool is currently not used in multi-tool setups." + "This is only used when 'Ooze prevention' is active in Print Settings. Set to 0 to disable."); + def->sidetext = L("°C"); + def->min = 0; + def->max = max_temp; + def->set_default_value(new ConfigOptionInts{0}); + def = this->add("xy_hole_compensation", coFloat); def->label = L("X-Y hole compensation"); def->category = L("Quality"); @@ -5921,7 +5929,9 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va opt_key = "solid_infill_filament"; }else if (opt_key == "perimeter_extruder") { opt_key = "wall_filament"; - } else if (opt_key == "support_material_extruder") { + }else if(opt_key == "wipe_tower_extruder") { + opt_key = "wipe_tower_filament"; + }else if (opt_key == "support_material_extruder") { opt_key = "support_filament"; } else if (opt_key == "support_material_interface_extruder") { opt_key = "support_interface_filament"; @@ -5988,8 +5998,6 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va } else { opt_key = "wall_sequence"; } - } else if(opt_key == "single_extruder_multi_material") { - value = "1"; } else if(opt_key == "ensure_vertical_shell_thickness") { if(value == "1") { @@ -7243,10 +7251,9 @@ ReadWriteSlicingStatesConfigDef::ReadWriteSlicingStatesConfigDef() def->label = L("Extra deretraction"); def->tooltip = L("Currently planned extra extruder priming after deretraction."); - // Options from PS not used in Orca -// def = this->add("e_position", coFloats); -// def->label = L("Absolute E position"); -// def->tooltip = L("Current position of the extruder axis. Only used with absolute extruder addressing."); + def = this->add("e_position", coFloats); + def->label = L("Absolute E position"); + def->tooltip = L("Current position of the extruder axis. Only used with absolute extruder addressing."); } OtherSlicingStatesConfigDef::OtherSlicingStatesConfigDef() @@ -7488,10 +7495,9 @@ OtherPresetsConfigDef::OtherPresetsConfigDef() def->label = L("Physical printer name"); def->tooltip = L("Name of the physical printer used for slicing."); - // Options from PS not used in Orca - // def = this->add("num_extruders", coInt); - // def->label = L("Number of extruders"); - // def->tooltip = L("Total number of extruders, regardless of whether they are used in the current print."); + def = this->add("num_extruders", coInt); + def->label = L("Number of extruders"); + def->tooltip = L("Total number of extruders, regardless of whether they are used in the current print."); } diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 67cdfef999..3401423eb4 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1244,9 +1244,11 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( // Orca: mmu support ((ConfigOptionFloat, wipe_tower_cone_angle)) ((ConfigOptionPercent, wipe_tower_extra_spacing)) - ((ConfigOptionFloat, wipe_tower_max_purge_speed)) - ((ConfigOptionInt, wipe_tower_extruder)) + ((ConfigOptionFloat, wipe_tower_max_purge_speed)) + ((ConfigOptionInt, wipe_tower_filament)) ((ConfigOptionFloats, wiping_volumes_extruders)) + ((ConfigOptionInts, idle_temperature)) + // BBS: wipe tower is only used for priming ((ConfigOptionFloat, prime_volume)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 907cc9c248..6112159585 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -2888,7 +2888,7 @@ static void apply_to_print_region_config(PrintRegionConfig &out, const DynamicPr // 1) Copy the "extruder key to sparse_infill_filament and wall_filament. auto *opt_extruder = in.opt(key_extruder); if (opt_extruder) - if (int extruder = opt_extruder->value; extruder != 0) { + if (int extruder = opt_extruder->value; extruder != 1) { // Not a default extruder. out.sparse_infill_filament .value = extruder; out.solid_infill_filament.value = extruder; diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 52d1ea99a6..be5bb65a51 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -675,7 +675,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool purge_in_primetower = preset_bundle->printers.get_edited_preset().config.opt_bool("purge_in_prime_tower"); - for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_max_purge_speed", "wipe_tower_bridging", "wipe_tower_no_sparse_layers"}) + for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_max_purge_speed", "wipe_tower_bridging", "wipe_tower_no_sparse_layers", "single_extruder_multi_material_priming"}) toggle_line(el, have_prime_tower && purge_in_primetower); toggle_line("prime_volume",have_prime_tower && !purge_in_primetower); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 842909985b..19a4d42c4a 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3982,16 +3982,18 @@ void GUI_App::on_http_error(wxCommandEvent &evt) wxString result; if (status >= 400 && status < 500) { try { - json j = json::parse(evt.GetString()); - if (j.contains("code")) { - if (!j["code"].is_null()) - code = j["code"].get(); + auto evt_str = evt.GetString(); + if (!evt_str.empty()) { + json j = json::parse(evt_str); + if (j.contains("code")) { + if (!j["code"].is_null()) + code = j["code"].get(); + } + if (j.contains("error")) + if (!j["error"].is_null()) + error = j["error"].get(); } - if (j.contains("error")) - if (!j["error"].is_null()) - error = j["error"].get(); - } - catch (...) {} + } catch (...) {} } // Version limit diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b3bcfb2f7f..0b63afd342 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1224,6 +1224,8 @@ void Sidebar::update_all_preset_comboboxes() p->m_filament_icon->SetBitmap_("filament"); } + show_add_del_filament_button(cfg.opt_bool("single_extruder_multi_material")); + //p->m_staticText_filament_settings->Update(); @@ -1327,6 +1329,7 @@ void Sidebar::update_presets(Preset::Type preset_type) /* update bed shape */ Tab* printer_tab = wxGetApp().get_tab(Preset::TYPE_PRINTER); if (printer_tab) { + printer_tab->on_preset_loaded(); printer_tab->update(); } @@ -1786,6 +1789,15 @@ void Sidebar::sync_ams_list() Layout(); } +void Sidebar::show_add_del_filament_button(bool bshow) +{ + if(p->m_bpButton_add_filament) + p->m_bpButton_add_filament->Show(bshow); + if(p->m_bpButton_del_filament) + p->m_bpButton_del_filament->Show(bshow); + Layout(); +} + ObjectList* Sidebar::obj_list() { // BBS @@ -2703,7 +2715,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) "brim_width", "wall_loops", "wall_filament", "sparse_infill_density", "sparse_infill_filament", "top_shell_layers", "enable_support", "support_filament", "support_interface_filament", "support_top_z_distance", "support_bottom_z_distance", "raft_layers", - "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_extruder", + "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_filament", "best_object_pos" })) , sidebar(new Sidebar(q)) diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index bda2ab6110..95a08c1827 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -148,6 +148,8 @@ public: void load_ams_list(std::string const & device, MachineObject* obj); std::map build_filament_ams_list(MachineObject* obj); void sync_ams_list(); + // Orca + void show_add_del_filament_button(bool bshow); ObjectList* obj_list(); ObjectSettings* obj_settings(); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 6db2ff4c37..163b9b7d51 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -27,6 +27,7 @@ #include #include #include "libslic3r/libslic3r.h" +#include "slic3r/GUI/OptionsGroup.hpp" #include "wxExtensions.hpp" #include "PresetComboBoxes.hpp" #include @@ -1431,8 +1432,8 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } - if (opt_key == "single_extruder_multi_material" || opt_key == "extruders_count" ) - update_wiping_button_visibility(); + if (opt_key == "single_extruder_multi_material" ) + wxGetApp().sidebar().show_add_del_filament_button(m_config->opt_bool("single_extruder_multi_material")); if (opt_key == "enable_prime_tower") { auto timelapse_type = m_config->option>("timelapse_type"); @@ -1645,11 +1646,16 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } - // BBS -#if 0 - if (opt_key == "extruders_count") - wxGetApp().plater()->on_extruders_change(boost::any_cast(value)); -#endif + //Orca: sync filament num if it's a multi tool printer + if (opt_key == "extruders_count" && !m_config->opt_bool("single_extruder_multi_material")){ + auto num_extruder = boost::any_cast(value); + wxColour new_col = Plater::get_next_color_for_filament(); + std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); + wxGetApp().preset_bundle->set_num_filaments(num_extruder, new_color); + wxGetApp().plater()->on_filaments_change(num_extruder); + wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); + wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); + } if (m_postpone_update_ui) { // It means that not all values are rolled to the system/last saved values jet. @@ -1658,7 +1664,8 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } update(); - m_active_page->update_visibility(m_mode, true); + if(m_active_page) + m_active_page->update_visibility(m_mode, true); m_page_view->GetParent()->Layout(); } @@ -1677,14 +1684,16 @@ void Tab::show_timelapse_warning_dialog() { void Tab::update_wiping_button_visibility() { if (m_preset_bundle->printers.get_selected_preset().printer_technology() == ptSLA) return; // ys_FIXME - bool wipe_tower_enabled = dynamic_cast( (m_preset_bundle->prints.get_edited_preset().config ).option("enable_prime_tower"))->value; - bool multiple_extruders = dynamic_cast((m_preset_bundle->printers.get_edited_preset().config).option("nozzle_diameter"))->values.size() > 1; + // Orca: it's not used + // + // bool wipe_tower_enabled = dynamic_cast( (m_preset_bundle->prints.get_edited_preset().config ).option("enable_prime_tower"))->value; + // bool multiple_extruders = dynamic_cast((m_preset_bundle->printers.get_edited_preset().config).option("nozzle_diameter"))->values.size() > 1; + // auto wiping_dialog_button = wxGetApp().sidebar().get_wiping_dialog_button(); + // if (wiping_dialog_button) { + // wiping_dialog_button->Show(wipe_tower_enabled && multiple_extruders); + // wiping_dialog_button->GetParent()->Layout(); + // } - auto wiping_dialog_button = wxGetApp().sidebar().get_wiping_dialog_button(); - if (wiping_dialog_button) { - wiping_dialog_button->Show(wipe_tower_enabled && multiple_extruders); - wiping_dialog_button->GetParent()->Layout(); - } } void Tab::activate_option(const std::string& opt_key, const wxString& category) @@ -2288,8 +2297,17 @@ void TabPrint::build() optgroup->append_single_option_line("wipe_tower_extra_spacing"); optgroup->append_single_option_line("wipe_tower_max_purge_speed"); optgroup->append_single_option_line("wipe_tower_no_sparse_layers"); - // optgroup->append_single_option_line("single_extruder_multi_material_priming"); + optgroup->append_single_option_line("single_extruder_multi_material_priming"); + optgroup = page->new_optgroup(L("Filament for Features")); + optgroup->append_single_option_line("wall_filament"); + optgroup->append_single_option_line("sparse_infill_filament"); + optgroup->append_single_option_line("solid_infill_filament"); + optgroup->append_single_option_line("wipe_tower_filament"); + + optgroup = page->new_optgroup(L("Ooze prevention")); + optgroup->append_single_option_line("ooze_prevention"); + optgroup->append_single_option_line("standby_temperature_delta"); optgroup = page->new_optgroup(L("Flush options"), L"param_flush"); optgroup->append_single_option_line("flush_into_infill", "reduce-wasting-during-filament-change#wipe-into-infill"); @@ -2312,7 +2330,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Advanced"), L"advanced"); optgroup->append_single_option_line("interlocking_beam"); - // optgroup->append_single_option_line("mmu_segmented_region_max_width"); + optgroup->append_single_option_line("mmu_segmented_region_max_width"); optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth"); optgroup->append_single_option_line("interlocking_beam_width"); optgroup->append_single_option_line("interlocking_orientation"); @@ -3234,6 +3252,7 @@ void TabFilament::build() optgroup->append_single_option_line("filament_cost"); //BBS optgroup->append_single_option_line("temperature_vitrification"); + optgroup->append_single_option_line("idle_temperature"); Line line = { L("Recommended nozzle temperature"), L("Recommended nozzle temperature range of this filament. 0 means no set") }; line.append_option(optgroup->get_option("nozzle_temperature_range_low")); line.append_option(optgroup->get_option("nozzle_temperature_range_high")); @@ -3438,6 +3457,7 @@ void TabFilament::build() }); // Orca: multi tool is not supported yet. +#define ORCA_MULTI_TOOL #ifdef ORCA_MULTI_TOOL optgroup = page->new_optgroup(L("Toolchange parameters with multi extruder MM printers")); optgroup->append_single_option_line("filament_multitool_ramming"); @@ -3660,18 +3680,6 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("z_offset"); optgroup->append_single_option_line("preferred_orientation"); - // ConfigOptionDef def; - // def.type = coInt, - // def.set_default_value(new ConfigOptionInt(1)); - // def.label = L("Extruders"); - // def.tooltip = L("Number of extruders of the printer."); - // def.min = 1; - // def.max = 256; - // //BBS - // def.mode = comDevelop; - // Option option(def, "extruders_count"); - // optgroup->append_single_option_line(option); - optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); optgroup->append_single_option_line("printer_structure"); optgroup->append_single_option_line("gcode_flavor"); @@ -3947,12 +3955,10 @@ void TabPrinter::extruders_count_changed(size_t extruders_count) m_preset_bundle->update_multi_material_filament_presets(); is_count_changed = true; } - // BBS -#if 0 + // Orca: support multi tool else if (m_extruders_count == 1 && m_preset_bundle->project_config.option("flush_volumes_matrix")->values.size()>1) m_preset_bundle->update_multi_material_filament_presets(); -#endif /* This function should be call in any case because of correct updating/rebuilding * of unregular pages of a Printer Settings @@ -4086,14 +4092,86 @@ if (is_marlin_flavor) auto page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material", true); // ORCA: icon only visible on placeholders auto optgroup = page->new_optgroup(L("Single extruder multimaterial setup"), "param_multi_material"); optgroup->append_single_option_line("single_extruder_multi_material", "semm"); - // Orca: we only support Single Extruder Multi Material, so it's always enabled - // optgroup->m_on_change = [this](const t_config_option_key &opt_key, const boost::any &value) { - // wxTheApp->CallAfter([this, opt_key, value]() { - // if (opt_key == "single_extruder_multi_material") { - // build_unregular_pages(); - // } - // }); - // }; + ConfigOptionDef def; + def.type = coInt, def.set_default_value(new ConfigOptionInt((int) m_extruders_count)); + def.label = L("Extruders"); + def.tooltip = L("Number of extruders of the printer."); + def.min = 1; + def.max = 256; + def.mode = comAdvanced; + Option option(def, "extruders_count"); + optgroup->append_single_option_line(option); + + // Orca: rebuild missed extruder pages + optgroup->m_on_change = [this, optgroup_wk = ConfigOptionsGroupWkp(optgroup)](t_config_option_key opt_key, boost::any value) { + auto optgroup_sh = optgroup_wk.lock(); + if (!optgroup_sh) + return; + + // optgroup->get_value() return int for def.type == coInt, + // Thus, there should be boost::any_cast ! + // Otherwise, boost::any_cast causes an "unhandled unknown exception" + size_t extruders_count = size_t(boost::any_cast(optgroup_sh->get_value("extruders_count"))); + wxTheApp->CallAfter([this, opt_key, value, extruders_count]() { + if (opt_key == "extruders_count" || opt_key == "single_extruder_multi_material") { + extruders_count_changed(extruders_count); + init_options_list(); // m_options_list should be updated before UI updating + update_dirty(); + if (opt_key == "single_extruder_multi_material") { // the single_extruder_multimaterial was added to force pages + on_value_change(opt_key, value); // rebuild - let's make sure the on_value_change is not skipped + + if (boost::any_cast(value) && m_extruders_count > 1) { + SuppressBackgroundProcessingUpdate sbpu; + +// Orca: we use a different logic here. If SEMM is enabled, we set extruder count to 1. +#if 1 + extruders_count_changed(1); +#else + + std::vector nozzle_diameters = + static_cast(m_config->option("nozzle_diameter"))->values; + const double frst_diam = nozzle_diameters[0]; + + for (auto cur_diam : nozzle_diameters) { + // if value is differs from first nozzle diameter value + if (fabs(cur_diam - frst_diam) > EPSILON) { + const wxString msg_text = _( + L("Single Extruder Multi Material is selected, \n" + "and all extruders must have the same diameter.\n" + "Do you want to change the diameter for all extruders to first extruder nozzle diameter value?")); + MessageDialog dialog(parent(), msg_text, _(L("Nozzle diameter")), wxICON_WARNING | wxYES_NO); + + DynamicPrintConfig new_conf = *m_config; + if (dialog.ShowModal() == wxID_YES) { + for (size_t i = 1; i < nozzle_diameters.size(); i++) + nozzle_diameters[i] = frst_diam; + + new_conf.set_key_value("nozzle_diameter", new ConfigOptionFloats(nozzle_diameters)); + } else + new_conf.set_key_value("single_extruder_multi_material", new ConfigOptionBool(false)); + + load_config(new_conf); + break; + } + } +#endif + } + + m_preset_bundle->update_compatible(PresetSelectCompatibleType::Never); + // Upadte related comboboxes on Sidebar and Tabs + Sidebar& sidebar = wxGetApp().plater()->sidebar(); + for (const Preset::Type& type : {Preset::TYPE_PRINT, Preset::TYPE_FILAMENT}) { + sidebar.update_presets(type); + wxGetApp().get_tab(type)->update_tab_ui(); + } + } + } + else { + update_dirty(); + on_value_change(opt_key, value); + } + }); + }; optgroup->append_single_option_line("manual_filament_change", "semm#manual-filament-change"); optgroup = page->new_optgroup(L("Wipe tower"), "param_tower"); @@ -4110,140 +4188,138 @@ if (is_marlin_flavor) m_pages.insert(m_pages.end() - n_after_single_extruder_MM, page); } - // BBS. Just create one extruder page because BBL machine has only on physical extruder. - // Build missed extruder pages - //for (auto extruder_idx = m_extruders_count_old; extruder_idx < m_extruders_count; ++extruder_idx) - auto extruder_idx = 0; - const wxString& page_name = (m_extruders_count > 1) ? wxString::Format("Extruder %d", int(extruder_idx + 1)) : wxString::Format("Extruder"); - bool page_exist = false; - for (auto page_temp : m_pages) { - if (page_temp->title() == page_name) { - page_exist = true; - break; + // Orca: build missed extruder pages + for (auto extruder_idx = m_extruders_count_old; extruder_idx < m_extruders_count; ++extruder_idx) { + // auto extruder_idx = 0; + const wxString& page_name = wxString::Format("Extruder %d", int(extruder_idx + 1)); + bool page_exist = false; + for (auto page_temp : m_pages) { + if (page_temp->title() == page_name) { + page_exist = true; + break; + } } - } - if (!page_exist) - { - //# build page - //const wxString& page_name = wxString::Format("Extruder %d", int(extruder_idx + 1)); - auto page = add_options_page(page_name, "custom-gcode_extruder", true); // ORCA: icon only visible on placeholders - m_pages.insert(m_pages.begin() + n_before_extruders + extruder_idx, page); + if (!page_exist) + { + //# build page + //const wxString& page_name = wxString::Format("Extruder %d", int(extruder_idx + 1)); + auto page = add_options_page(page_name, "custom-gcode_extruder", true); // ORCA: icon only visible on placeholders + m_pages.insert(m_pages.begin() + n_before_extruders + extruder_idx, page); - auto optgroup = page->new_optgroup(L("Size"), L"param_extruder_size", -1, true); - optgroup->append_single_option_line("nozzle_diameter", "", extruder_idx); + auto optgroup = page->new_optgroup(L("Size"), L"param_extruder_size"); + optgroup->append_single_option_line("nozzle_diameter", "", extruder_idx); - optgroup->m_on_change = [this, extruder_idx](const t_config_option_key& opt_key, boost::any value) - { - //if (m_config->opt_bool("single_extruder_multi_material") && m_extruders_count > 1 && opt_key.find_first_of("nozzle_diameter") != std::string::npos) - //{ - // SuppressBackgroundProcessingUpdate sbpu; - // const double new_nd = boost::any_cast(value); - // std::vector nozzle_diameters = static_cast(m_config->option("nozzle_diameter"))->values; + optgroup->m_on_change = [this, extruder_idx](const t_config_option_key& opt_key, boost::any value) + { + bool is_SEMM = m_config->opt_bool("single_extruder_multi_material"); + if (is_SEMM && m_extruders_count > 1 && opt_key.find_first_of("nozzle_diameter") != std::string::npos) + { + SuppressBackgroundProcessingUpdate sbpu; + const double new_nd = boost::any_cast(value); + std::vector nozzle_diameters = static_cast(m_config->option("nozzle_diameter"))->values; - // // if value was changed - // if (fabs(nozzle_diameters[extruder_idx == 0 ? 1 : 0] - new_nd) > EPSILON) + // if value was changed + if (fabs(nozzle_diameters[extruder_idx == 0 ? 1 : 0] - new_nd) > EPSILON) + { + const wxString msg_text = _(L("This is a single extruder multimaterial printer, diameters of all extruders " + "will be set to the new value. Do you want to proceed?")); + //wxMessageDialog dialog(parent(), msg_text, _(L("Nozzle diameter")), wxICON_WARNING | wxYES_NO); + MessageDialog dialog(parent(), msg_text, _(L("Nozzle diameter")), wxICON_WARNING | wxYES_NO); + + DynamicPrintConfig new_conf = *m_config; + if (dialog.ShowModal() == wxID_YES) { + for (size_t i = 0; i < nozzle_diameters.size(); i++) { + if (i == extruder_idx) + continue; + nozzle_diameters[i] = new_nd; + } + } + else + nozzle_diameters[extruder_idx] = nozzle_diameters[extruder_idx == 0 ? 1 : 0]; + + new_conf.set_key_value("nozzle_diameter", new ConfigOptionFloats(nozzle_diameters)); + load_config(new_conf); + } + } + + update_dirty(); + update(); + }; + + optgroup = page->new_optgroup(L("Layer height limits"), L"param_layer_height"); + optgroup->append_single_option_line("min_layer_height", "", extruder_idx); + optgroup->append_single_option_line("max_layer_height", "", extruder_idx); + + optgroup = page->new_optgroup(L("Position"), L"param_position"); + optgroup->append_single_option_line("extruder_offset", "", extruder_idx); + + //BBS: don't show retract related config menu in machine page + optgroup = page->new_optgroup(L("Retraction"), L"param_retraction"); + optgroup->append_single_option_line("retraction_length", "", extruder_idx); + optgroup->append_single_option_line("retract_restart_extra", "", extruder_idx); + optgroup->append_single_option_line("z_hop", "", extruder_idx); + optgroup->append_single_option_line("z_hop_types", "", extruder_idx); + optgroup->append_single_option_line("travel_slope", "", extruder_idx); + optgroup->append_single_option_line("retraction_speed", "", extruder_idx); + optgroup->append_single_option_line("deretraction_speed", "", extruder_idx); + optgroup->append_single_option_line("retraction_minimum_travel", "", extruder_idx); + optgroup->append_single_option_line("retract_when_changing_layer", "", extruder_idx); + optgroup->append_single_option_line("wipe", "", extruder_idx); + optgroup->append_single_option_line("wipe_distance", "", extruder_idx); + optgroup->append_single_option_line("retract_before_wipe", "", extruder_idx); + + optgroup = page->new_optgroup(L("Lift Z Enforcement"), L"param_extruder_lift_enforcement"); + optgroup->append_single_option_line("retract_lift_above", "", extruder_idx); + optgroup->append_single_option_line("retract_lift_below", "", extruder_idx); + optgroup->append_single_option_line("retract_lift_enforce", "", extruder_idx); + + optgroup = page->new_optgroup(L("Retraction when switching material"), L"param_retraction_material_change"); + optgroup->append_single_option_line("retract_length_toolchange", "", extruder_idx); + optgroup->append_single_option_line("retract_restart_extra_toolchange", "", extruder_idx); + // do not display this params now + optgroup->append_single_option_line("long_retractions_when_cut", "", extruder_idx); + optgroup->append_single_option_line("retraction_distances_when_cut", "", extruder_idx); + + #if 0 + //optgroup = page->new_optgroup(L("Preview"), -1, true); + + //auto reset_to_filament_color = [this, extruder_idx](wxWindow* parent) { + // m_reset_to_filament_color = new ScalableButton(parent, wxID_ANY, "undo", _L("Reset to Filament Color"), + // wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true); + // ScalableButton* btn = m_reset_to_filament_color; + // btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); + // btn->SetSize(btn->GetBestSize()); + // auto sizer = new wxBoxSizer(wxHORIZONTAL); + // sizer->Add(btn); + + // btn->Bind(wxEVT_BUTTON, [this, extruder_idx](wxCommandEvent& e) // { - // const wxString msg_text = _(L("This is a single extruder multimaterial printer, diameters of all extruders " - // "will be set to the new value. Do you want to proceed?")); - // //wxMessageDialog dialog(parent(), msg_text, _(L("Nozzle diameter")), wxICON_WARNING | wxYES_NO); - // MessageDialog dialog(parent(), msg_text, _(L("Nozzle diameter")), wxICON_WARNING | wxYES_NO); + // std::vector colors = static_cast(m_config->option("extruder_colour"))->values; + // colors[extruder_idx] = ""; // DynamicPrintConfig new_conf = *m_config; - // if (dialog.ShowModal() == wxID_YES) { - // for (size_t i = 0; i < nozzle_diameters.size(); i++) { - // if (i==extruder_idx) - // continue; - // nozzle_diameters[i] = new_nd; - // } - // } - // else - // nozzle_diameters[extruder_idx] = nozzle_diameters[extruder_idx == 0 ? 1 : 0]; - - // new_conf.set_key_value("nozzle_diameter", new ConfigOptionFloats(nozzle_diameters)); + // new_conf.set_key_value("extruder_colour", new ConfigOptionStrings(colors)); // load_config(new_conf); - // } - //} - update_dirty(); - update(); - }; - - optgroup = page->new_optgroup(L("Layer height limits"), L"param_layer_height", -1, true); - optgroup->append_single_option_line("min_layer_height", "", extruder_idx); - optgroup->append_single_option_line("max_layer_height", "", extruder_idx); - - optgroup = page->new_optgroup(L("Position"), L"param_position", -1, true); - optgroup->append_single_option_line("extruder_offset", "", extruder_idx); - - //BBS: don't show retract related config menu in machine page - optgroup = page->new_optgroup(L("Retraction"), L"param_retraction"); - optgroup->append_single_option_line("retraction_length", "", extruder_idx); - optgroup->append_single_option_line("retract_restart_extra", "", extruder_idx); - optgroup->append_single_option_line("z_hop", "", extruder_idx); - optgroup->append_single_option_line("z_hop_types", "", extruder_idx); - optgroup->append_single_option_line("travel_slope", "", extruder_idx); - optgroup->append_single_option_line("retraction_speed", "", extruder_idx); - optgroup->append_single_option_line("deretraction_speed", "", extruder_idx); - optgroup->append_single_option_line("retraction_minimum_travel", "", extruder_idx); - optgroup->append_single_option_line("retract_when_changing_layer", "", extruder_idx); - optgroup->append_single_option_line("wipe", "", extruder_idx); - optgroup->append_single_option_line("wipe_distance", "", extruder_idx); - optgroup->append_single_option_line("retract_before_wipe", "", extruder_idx); - - optgroup = page->new_optgroup(L("Lift Z Enforcement"), L"param_extruder_lift_enforcement", -1, true); - optgroup->append_single_option_line("retract_lift_above", "", extruder_idx); - optgroup->append_single_option_line("retract_lift_below", "", extruder_idx); - optgroup->append_single_option_line("retract_lift_enforce", "", extruder_idx); - - optgroup = page->new_optgroup(L("Retraction when switching material"), L"param_retraction_material_change", -1, true); - optgroup->append_single_option_line("retract_length_toolchange", "", extruder_idx); - optgroup->append_single_option_line("retract_restart_extra_toolchange", "", extruder_idx); - // do not display this params now - optgroup->append_single_option_line("long_retractions_when_cut", "", extruder_idx); - optgroup->append_single_option_line("retraction_distances_when_cut", "", extruder_idx); - -#if 0 - //optgroup = page->new_optgroup(L("Preview"), -1, true); - - //auto reset_to_filament_color = [this, extruder_idx](wxWindow* parent) { - // m_reset_to_filament_color = new ScalableButton(parent, wxID_ANY, "undo", _L("Reset to Filament Color"), - // wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true); - // ScalableButton* btn = m_reset_to_filament_color; - // btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - // btn->SetSize(btn->GetBestSize()); - // auto sizer = new wxBoxSizer(wxHORIZONTAL); - // sizer->Add(btn); - - // btn->Bind(wxEVT_BUTTON, [this, extruder_idx](wxCommandEvent& e) - // { - // std::vector colors = static_cast(m_config->option("extruder_colour"))->values; - // colors[extruder_idx] = ""; - - // DynamicPrintConfig new_conf = *m_config; - // new_conf.set_key_value("extruder_colour", new ConfigOptionStrings(colors)); - // load_config(new_conf); - - // update_dirty(); - // update(); - // }); - - // return sizer; - //}; - ////BBS - //Line line = optgroup->create_single_option_line("extruder_colour", "", extruder_idx); - //line.append_widget(reset_to_filament_color); - //optgroup->append_line(line); -#endif - } + // update_dirty(); + // update(); + // }); + // return sizer; + //}; + ////BBS + //Line line = optgroup->create_single_option_line("extruder_colour", "", extruder_idx); + //line.append_widget(reset_to_filament_color); + //optgroup->append_line(line); + #endif + } +} // BBS. No extra extruder page for single physical extruder machine // # remove extra pages -#if 0 if (m_extruders_count < m_extruders_count_old) m_pages.erase( m_pages.begin() + n_before_extruders + m_extruders_count, m_pages.begin() + n_before_extruders + m_extruders_count_old); -#endif Thaw(); @@ -4264,15 +4340,12 @@ if (is_marlin_flavor) // this gets executed after preset is loaded and before GUI fields are updated void TabPrinter::on_preset_loaded() { - // BBS -#if 0 + // Orca // update the extruders count field auto *nozzle_diameter = dynamic_cast(m_config->option("nozzle_diameter")); size_t extruders_count = nozzle_diameter->values.size(); // update the GUI field according to the number of nozzle diameters supplied extruders_count_changed(extruders_count); -#endif - build_unregular_pages(); } void TabPrinter::update_pages() @@ -4319,7 +4392,7 @@ void TabPrinter::reload_config() // "extruders_count" doesn't update from the update_config(), // so update it implicitly - if (m_active_page && m_active_page->title() == "General") + if (m_active_page && m_active_page->title() == "Multimaterial") m_active_page->set_value("extruders_count", int(m_extruders_count)); } @@ -4329,7 +4402,7 @@ void TabPrinter::activate_selected_page(std::function throw_if_canceled) // "extruders_count" doesn't update from the update_config(), // so update it implicitly - if (m_active_page && m_active_page->title() == "General") + if (m_active_page && m_active_page->title() == "Multimaterial") m_active_page->set_value("extruders_count", int(m_extruders_count)); } @@ -4368,13 +4441,19 @@ void TabPrinter::toggle_options() } if (m_active_page->title() == L("Multimaterial")) { - // toggle_option("single_extruder_multi_material", have_multiple_extruders); - // SoftFever: hide specific settings for BBL printer for (auto el : {"purge_in_prime_tower", "enable_filament_ramming", "cooling_tube_retraction", "cooling_tube_length", "parking_pos_retraction", "extra_loading_move", "high_current_on_filament_swap", }) toggle_option(el, !is_BBL_printer); + auto bSEMM = m_config->opt_bool("single_extruder_multi_material"); + if (!bSEMM && m_config->opt_bool("manual_filament_change")) { + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value("manual_filament_change", new ConfigOptionBool(false)); + load_config(new_conf); + } + toggle_option("extruders_count", !bSEMM); + toggle_option("manual_filament_change", bSEMM); } wxString extruder_number; long val = 1; From 2937249bcc8805793ffc0c6b6758a830690a47f0 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 7 Jul 2024 00:11:37 +0800 Subject: [PATCH 004/151] dynamic list --- src/libslic3r/PrintConfig.cpp | 10 +++--- src/slic3r/GUI/Plater.cpp | 60 +++++++++++++++++++++++++++++++++-- src/slic3r/GUI/Tab.cpp | 13 ++++++-- 3 files changed, 72 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 2c3798dd08..a44fa6ebbb 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2715,6 +2715,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionBool(false)); def = this->add("sparse_infill_filament", coInt); + def->gui_type = ConfigOptionDef::GUIType::i_enum_open; def->label = L("Infill"); def->category = L("Extruders"); def->tooltip = L("Filament to print internal sparse infill."); @@ -3390,9 +3391,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionBool(true)); def = this->add("wall_filament", coInt); - //def->label = L("Walls"); - //def->category = L("Extruders"); - //def->tooltip = L("Filament to print walls"); + def->gui_type = ConfigOptionDef::GUIType::i_enum_open; def->label = "Walls"; def->category = "Extruders"; def->tooltip = "Filament to print walls"; @@ -3983,9 +3982,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(15)); def = this->add("solid_infill_filament", coInt); - //def->label = L("Solid infill"); - //def->category = L("Extruders"); - //def->tooltip = L("Filament to print solid infill"); + def->gui_type = ConfigOptionDef::GUIType::i_enum_open; def->label = "Solid infill"; def->category = "Extruders"; def->tooltip = "Filament to print solid infill"; @@ -4913,6 +4910,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(90.)); def = this->add("wipe_tower_filament", coInt); + def->gui_type = ConfigOptionDef::GUIType::i_enum_open; def->label = L("Wipe tower"); def->category = L("Extruders"); def->tooltip = L("The extruder to use when printing perimeter of the wipe tower. " diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 0b63afd342..5000424a2a 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -545,7 +545,7 @@ std::vector get_min_flush_volumes(const DynamicPrintConfig& full_config) // Sidebar / public -static struct DynamicFilamentList : DynamicList +struct DynamicFilamentList : DynamicList { std::vector> items; @@ -590,13 +590,69 @@ static struct DynamicFilamentList : DynamicList } DynamicList::update(); } -} dynamic_filament_list; +}; + +struct DynamicFilamentList1Based : DynamicFilamentList +{ + void apply_on(Choice *c) override + { + if (items.empty()) + update(true); + auto cb = dynamic_cast(c->window); + auto n = cb->GetSelection(); + cb->Clear(); + for (auto i : items) { + cb->Append(i.first, *i.second); + } + if (n < cb->GetCount()) + cb->SetSelection(n); + } + wxString get_value(int index) override + { + wxString str; + str << index+1; + return str; + } + int index_of(wxString value) override + { + long n = 0; + if(!value.ToLong(&n)) + return -1; + --n; + return (n >= 0 && n <= items.size()) ? int(n) : -1; + } + void update(bool force = false) + { + items.clear(); + if (!force && m_choices.empty()) + return; + auto icons = get_extruder_color_icons(true); + auto presets = wxGetApp().preset_bundle->filament_presets; + for (int i = 0; i < presets.size(); ++i) { + wxString str; + std::string type; + wxGetApp().preset_bundle->filaments.find_preset(presets[i])->get_filament_type(type); + str << type; + items.push_back({str, icons[i]}); + } + DynamicList::update(); + } + +}; + + +static DynamicFilamentList dynamic_filament_list; +static DynamicFilamentList1Based dynamic_filament_list_1_based; Sidebar::Sidebar(Plater *parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(42 * wxGetApp().em_unit(), -1)), p(new priv(parent)) { Choice::register_dynamic_list("support_filament", &dynamic_filament_list); Choice::register_dynamic_list("support_interface_filament", &dynamic_filament_list); + Choice::register_dynamic_list("wall_filament", &dynamic_filament_list_1_based); + Choice::register_dynamic_list("sparse_infill_filament", &dynamic_filament_list_1_based); + Choice::register_dynamic_list("solid_infill_filament", &dynamic_filament_list_1_based); + Choice::register_dynamic_list("wipe_tower_filament", &dynamic_filament_list); p->scrolled = new wxPanel(this); // p->scrolled->SetScrollbars(0, 100, 1, 2); // ys_DELETE_after_testing. pixelsPerUnitY = 100 diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 163b9b7d51..c974c2f044 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1431,9 +1431,16 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) m_config->set_key_value("pellet_flow_coefficient", new ConfigOptionFloats{double_value}); } + auto bSEMM = m_config->opt_bool("single_extruder_multi_material"); + + if (opt_key == "single_extruder_multi_material" ){ + wxGetApp().sidebar().show_add_del_filament_button(bSEMM); + wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); + } + + if(opt_key == "purge_in_prime_tower") + wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); - if (opt_key == "single_extruder_multi_material" ) - wxGetApp().sidebar().show_add_del_filament_button(m_config->opt_bool("single_extruder_multi_material")); if (opt_key == "enable_prime_tower") { auto timelapse_type = m_config->option>("timelapse_type"); @@ -1647,7 +1654,7 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) //Orca: sync filament num if it's a multi tool printer - if (opt_key == "extruders_count" && !m_config->opt_bool("single_extruder_multi_material")){ + if (opt_key == "extruders_count" && !bSEMM){ auto num_extruder = boost::any_cast(value); wxColour new_col = Plater::get_next_color_for_filament(); std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); From 6bec8eb305fa95942dcfdd590d8b8f061c42f12e Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 7 Jul 2024 00:28:44 +0800 Subject: [PATCH 005/151] fix crash --- src/slic3r/GUI/Tab.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index c974c2f044..7f89e45104 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1431,9 +1431,9 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) m_config->set_key_value("pellet_flow_coefficient", new ConfigOptionFloats{double_value}); } - auto bSEMM = m_config->opt_bool("single_extruder_multi_material"); if (opt_key == "single_extruder_multi_material" ){ + const auto bSEMM = m_config->opt_bool("single_extruder_multi_material"); wxGetApp().sidebar().show_add_del_filament_button(bSEMM); wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); } @@ -1654,7 +1654,7 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) //Orca: sync filament num if it's a multi tool printer - if (opt_key == "extruders_count" && !bSEMM){ + if (opt_key == "extruders_count" && !m_config->opt_bool("single_extruder_multi_material")){ auto num_extruder = boost::any_cast(value); wxColour new_col = Plater::get_next_color_for_filament(); std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); From 7c176f0917b0f4ea33b2c259b3c2899f42c50863 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 8 Jul 2024 00:35:22 +0800 Subject: [PATCH 006/151] support has_single_extruder_multi_material_priming --- src/libslic3r/GCode.cpp | 35 ++++++++++++--------------- src/libslic3r/Print.cpp | 30 ++++++++++++----------- src/slic3r/GUI/ConfigManipulation.cpp | 3 ++- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index c46de72179..c9c48fce7d 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2180,16 +2180,13 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato // No object to print was found, cancel the G-code export. throw Slic3r::SlicingError(_(L("No object can be printed. Maybe too small"))); has_wipe_tower = print.has_wipe_tower() && tool_ordering.has_wipe_tower(); - // BBS: priming logic is removed, so 1st layer tool_ordering also respect the object tool sequence -#if 0 + // Orca: support all extruder priming initial_extruder_id = (has_wipe_tower && !print.config().single_extruder_multi_material_priming) ? // The priming towers will be skipped. tool_ordering.all_extruders().back() : // Don't skip the priming towers. tool_ordering.first_extruder(); -#else - initial_extruder_id = tool_ordering.first_extruder(); -#endif + //BBS: try to find the non-support filament extruder if is multi color and initial_extruder is support filament if (initial_extruder_id != static_cast(-1)) { initial_non_support_extruder_id = initial_extruder_id; @@ -2270,7 +2267,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->placeholder_parser().set("current_object_idx", 0); // For the start / end G-code to do the priming and final filament pull in case there is no wipe tower provided. this->placeholder_parser().set("has_wipe_tower", has_wipe_tower); - //this->placeholder_parser().set("has_single_extruder_multi_material_priming", has_wipe_tower && print.config().single_extruder_multi_material_priming); + this->placeholder_parser().set("has_single_extruder_multi_material_priming", has_wipe_tower && print.config().single_extruder_multi_material_priming); this->placeholder_parser().set("total_toolchanges", std::max(0, print.wipe_tower_data().number_of_toolchanges)); // Check for negative toolchanges (single extruder mode) and set to 0 (no tool change). this->placeholder_parser().set("num_extruders", int(print.config().nozzle_diameter.values.size())); this->placeholder_parser().set("retract_length", new ConfigOptionFloats(print.config().retraction_length)); @@ -2511,8 +2508,8 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato } } - // BBS: priming logic is removed, always set first extruer here. - //if (! (has_wipe_tower && print.config().single_extruder_multi_material_priming)) + // Orca: support extruder priming + if (! (has_wipe_tower && print.config().single_extruder_multi_material_priming)) { // Set initial extruder only after custom start G-code. // Ugly hack: Do not set the initial extruder if the extruder is primed using the MMU priming towers at the edge of the print bed. @@ -2642,7 +2639,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato m_wipe_tower.reset(new WipeTowerIntegration(print.config(), print.get_plate_index(), print.get_plate_origin(), * print.wipe_tower_data().priming.get(), print.wipe_tower_data().tool_changes, *print.wipe_tower_data().final_purge.get())); //BBS file.write(m_writer.travel_to_z(initial_layer_print_height + m_config.z_offset.value, "Move to the first layer height")); - #if 0 + if (print.config().single_extruder_multi_material_priming) { file.write(m_wipe_tower->prime(*this)); // Verify, whether the print overaps the priming extrusions. @@ -2667,19 +2664,17 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato file.write("M1 S10\n"); } } - //BBS: only support Marlin - //else { + else { // This is not Marlin, M1 command is probably not supported. - //if (overlap) { - // print.active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, - // _(L("Your print is very close to the priming regions. " - // "Make sure there is no collision."))); - //} else { - // // Just continue printing, no action necessary. - //} - //} + if (overlap) { + print.active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, + _(L("Your print is very close to the priming regions. " + "Make sure there is no collision."))); + } else { + // Just continue printing, no action necessary. + } + } } - #endif print.throw_if_canceled(); } // Process all layers of all objects (non-sequential mode) with a parallel pipeline: diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 5e5f4bf284..6bb1ff8508 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2061,14 +2061,6 @@ void Print::process(long long *time_cost_with_cache, bool use_cache) tool_ordering = this->tool_ordering(); tool_ordering.assign_custom_gcodes(*this); has_wipe_tower = this->has_wipe_tower() && tool_ordering.has_wipe_tower(); - //BBS: have no single_extruder_multi_material_priming -#if 0 - initial_extruder_id = (has_wipe_tower && !this->config().single_extruder_multi_material_priming) ? - // The priming towers will be skipped. - tool_ordering.all_extruders().back() : - // Don't skip the priming towers. - tool_ordering.first_extruder(); -#endif initial_extruder_id = tool_ordering.first_extruder(); print_object_instances_ordering = chain_print_object_instances(*this); append(printExtruders, tool_ordering.tools_for_layer(layers_to_print.front().first).extruders); @@ -2581,9 +2573,19 @@ void Print::_make_wipe_tower() for (unsigned int i = 0; i(flush_matrix.begin()+i*number_of_extruders, flush_matrix.begin()+(i+1)*number_of_extruders)); + // Orca: itertate over wipe_volumes and change the non-zero values to the prime_volume + if (!m_config.purge_in_prime_tower && !is_BBL_printer()) { + for (unsigned int i = 0; i < number_of_extruders; ++i) { + for (unsigned int j = 0; j < number_of_extruders; ++j) { + if (wipe_volumes[i][j] > 0) { + wipe_volumes[i][j] = m_config.prime_volume; + } + } + } + } + // Let the ToolOrdering class know there will be initial priming extrusions at the start of the print. - // BBS: priming logic is removed, so don't consider it in tool ordering - m_wipe_tower_data.tool_ordering = ToolOrdering(*this, (unsigned int)-1, false); + m_wipe_tower_data.tool_ordering = ToolOrdering(*this, (unsigned int)-1, true); if (!m_wipe_tower_data.tool_ordering.has_wipe_tower()) // Don't generate any wipe tower. @@ -2734,13 +2736,13 @@ void Print::_make_wipe_tower() for (size_t i = 0; i < number_of_extruders; ++i) wipe_tower.set_extruder(i, m_config); - // m_wipe_tower_data.priming = Slic3r::make_unique>( - // wipe_tower.prime((float)this->skirt_first_layer_height(), m_wipe_tower_data.tool_ordering.all_extruders(), false)); + m_wipe_tower_data.priming = Slic3r::make_unique>( + wipe_tower.prime((float)this->skirt_first_layer_height(), m_wipe_tower_data.tool_ordering.all_extruders(), false)); // Lets go through the wipe tower layers and determine pairs of extruder changes for each // to pass to wipe_tower (so that it can use it for planning the layout of the tower) { - unsigned int current_extruder_id = m_wipe_tower_data.tool_ordering.first_extruder(); + unsigned int current_extruder_id = m_wipe_tower_data.tool_ordering.all_extruders().back(); for (auto &layer_tools : m_wipe_tower_data.tool_ordering.layer_tools()) { // for all layers if (!layer_tools.has_wipe_tower) continue; @@ -2748,7 +2750,7 @@ void Print::_make_wipe_tower() wipe_tower.plan_toolchange((float) layer_tools.print_z, (float) layer_tools.wipe_tower_layer_height, current_extruder_id, current_extruder_id, false); for (const auto extruder_id : layer_tools.extruders) { - if (/*(first_layer && extruder_id == m_wipe_tower_data.tool_ordering.all_extruders().back()) || */ extruder_id != + if ((first_layer && extruder_id == m_wipe_tower_data.tool_ordering.all_extruders().back()) || extruder_id != current_extruder_id) { float volume_to_wipe = m_config.prime_volume; if (m_config.purge_in_prime_tower) { diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index be5bb65a51..263f57e19b 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -675,8 +675,9 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool purge_in_primetower = preset_bundle->printers.get_edited_preset().config.opt_bool("purge_in_prime_tower"); + // Orca: do we really need to hide these options when not purge_in_primetower? for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_max_purge_speed", "wipe_tower_bridging", "wipe_tower_no_sparse_layers", "single_extruder_multi_material_priming"}) - toggle_line(el, have_prime_tower && purge_in_primetower); + toggle_line(el, have_prime_tower); toggle_line("prime_volume",have_prime_tower && !purge_in_primetower); From e86bc6046324f139cd5cbcb77558a944122c917e Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 9 Jul 2024 22:20:36 +0800 Subject: [PATCH 007/151] update wipe tower according to latest PrusaSlicer --- src/libslic3r/GCode/WipeTower2.cpp | 294 +++++++++++++++++--------- src/libslic3r/GCode/WipeTower2.hpp | 37 ++-- src/libslic3r/Preset.cpp | 4 +- src/libslic3r/Print.cpp | 3 + src/libslic3r/PrintConfig.cpp | 24 +++ src/libslic3r/PrintConfig.hpp | 3 + src/slic3r/GUI/ConfigManipulation.cpp | 13 +- src/slic3r/GUI/Plater.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 4 +- 9 files changed, 256 insertions(+), 128 deletions(-) diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index 6e96e21150..a22bec5dd8 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -1,6 +1,4 @@ -// Orca: This file is ported from latest PrusaSlicer - -// Original PrusaSlicer Copyright: +// Orca: WipeTower2 for all non bbl printers, support all MMU device and toolchanger. #include "WipeTower2.hpp" #include @@ -26,6 +24,20 @@ namespace Slic3r { +// Calculates length of extrusion line to extrude given volume +static float volume_to_length(float volume, float line_width, float layer_height) +{ + return std::max(0.f, volume / (layer_height * (line_width - layer_height * (1.f - float(M_PI) / 4.f)))); +} + +static float length_to_volume(float length, float line_width, float layer_height) +{ + return std::max(0.f, length * layer_height * (line_width - layer_height * (1.f - float(M_PI) / 4.f))); +} + + + + class WipeTowerWriter2 { public: @@ -37,12 +49,9 @@ public: m_extrusion_flow(0.f), m_preview_suppressed(false), m_elapsed_time(0.f), -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - m_default_analyzer_line_width(line_width), -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - m_gcode_flavor(flavor), - m_filpar(filament_parameters) - { + m_gcode_flavor(flavor), + m_filpar(filament_parameters) + { // ORCA: This class is only used by non BBL printers, so set the parameter appropriately. // This fixes an issue where the wipe tower was using BBL tags resulting in statistics for purging in the purge tower not being displayed. GCodeProcessor::s_IsBBLPrinter = false; @@ -62,18 +71,6 @@ public: return *this; } -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - WipeTowerWriter2& change_analyzer_mm3_per_mm(float len, float e) { - static const float area = float(M_PI) * 1.75f * 1.75f / 4.f; - float mm3_per_mm = (len == 0.f ? 0.f : area * e / len); - // adds tag for processor: - std::stringstream str; - str << ";" << GCodeProcessor::Mm3_Per_Mm_Tag << mm3_per_mm << "\n"; - m_gcode += str.str(); - return *this; - } -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - WipeTowerWriter2& set_initial_position(const Vec2f &pos, float width = 0.f, float depth = 0.f, float internal_angle = 0.f) { m_wipe_tower_width = width; m_wipe_tower_depth = depth; @@ -109,16 +106,16 @@ public: return *this; } + WipeTowerWriter2& switch_filament_monitoring(bool enable) { + m_gcode += std::string("G4 S0\n") + "M591 " + (enable ? "R" : "S0") + "\n"; + return *this; + } + // Suppress / resume G-code preview in Slic3r. Slic3r will have difficulty to differentiate the various // filament loading and cooling moves from normal extrusion moves. Therefore the writer // is asked to suppres output of some lines, which look like extrusions. -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - WipeTowerWriter2& suppress_preview() { change_analyzer_line_width(0.f); m_preview_suppressed = true; return *this; } - WipeTowerWriter2& resume_preview() { change_analyzer_line_width(m_default_analyzer_line_width); m_preview_suppressed = false; return *this; } -#else WipeTowerWriter2& suppress_preview() { m_preview_suppressed = true; return *this; } - WipeTowerWriter2& resume_preview() { m_preview_suppressed = false; return *this; } -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING + WipeTowerWriter2& resume_preview() { m_preview_suppressed = false; return *this; } WipeTowerWriter2& feedrate(float f) { @@ -140,8 +137,8 @@ public: float get_and_reset_used_filament_length() { float temp = m_used_filament_length; m_used_filament_length = 0.f; return temp; } // Extrude with an explicitely provided amount of extrusion. - WipeTowerWriter2& extrude_explicit(float x, float y, float e, float f = 0.f, bool record_length = false, bool limit_volumetric_flow = true) - { + WipeTowerWriter2& extrude_explicit(float x, float y, float e, float f = 0.f, bool record_length = false, bool limit_volumetric_flow = true) + { if (x == m_current_pos.x() && y == m_current_pos.y() && e == 0.f && (f == 0.f || f == m_current_feedrate)) // Neither extrusion nor a travel move. return *this; @@ -157,12 +154,9 @@ public: Vec2f rot(this->rotate(Vec2f(x,y))); // this is where we want to go if (! m_preview_suppressed && e > 0.f && len > 0.f) { -#if ENABLE_GCODE_VIEWER_DATA_CHECKING - change_analyzer_mm3_per_mm(len, e); -#endif // ENABLE_GCODE_VIEWER_DATA_CHECKING - // Width of a squished extrusion, corrected for the roundings of the squished extrusions. + // Width of a squished extrusion, corrected for the roundings of the squished extrusions. // This is left zero if it is a travel move. - float width = e * m_filpar[0].filament_area / (len * m_layer_height); + float width = e * m_filpar[0].filament_area / (len * m_layer_height); // Correct for the roundings of a squished extrusion. width += m_layer_height * float(1. - M_PI / 4.); if (m_extrusions.empty() || m_extrusions.back().pos != rotated_current_pos) @@ -204,17 +198,17 @@ public: return *this; } - WipeTowerWriter2& extrude_explicit(const Vec2f &dest, float e, float f = 0.f, bool record_length = false, bool limit_volumetric_flow = true) - { return extrude_explicit(dest.x(), dest.y(), e, f, record_length); } + WipeTowerWriter2& extrude_explicit(const Vec2f &dest, float e, float f = 0.f, bool record_length = false, bool limit_volumetric_flow = true) + { return extrude_explicit(dest.x(), dest.y(), e, f, record_length); } - // Travel to a new XY position. f=0 means use the current value. + // Travel to a new XY position. f=0 means use the current value. WipeTowerWriter2& travel(float x, float y, float f = 0.f) - { return extrude_explicit(x, y, 0.f, f); } + { return extrude_explicit(x, y, 0.f, f); } - WipeTowerWriter2& travel(const Vec2f &dest, float f = 0.f) - { return extrude_explicit(dest.x(), dest.y(), 0.f, f); } + WipeTowerWriter2& travel(const Vec2f &dest, float f = 0.f) + { return extrude_explicit(dest.x(), dest.y(), 0.f, f); } - // Extrude a line from current position to x, y with the extrusion amount given by m_extrusion_flow. + // Extrude a line from current position to x, y with the extrusion amount given by m_extrusion_flow. WipeTowerWriter2& extrude(float x, float y, float f = 0.f) { float dx = x - m_current_pos.x(); @@ -222,8 +216,8 @@ public: return extrude_explicit(x, y, std::sqrt(dx*dx+dy*dy) * m_extrusion_flow, f, true); } - WipeTowerWriter2& extrude(const Vec2f &dest, const float f = 0.f) - { return extrude(dest.x(), dest.y(), f); } + WipeTowerWriter2& extrude(const Vec2f &dest, const float f = 0.f) + { return extrude(dest.x(), dest.y(), f); } WipeTowerWriter2& rectangle(const Vec2f& ld,float width,float height,const float f = 0.f) { @@ -291,6 +285,25 @@ public: return extrude_explicit(end_point, y(), loading_dist, x_speed * 60.f, false, false); } + // Loads filament while also moving towards given point in x-axis. Unlike the previous function, this one respects + // both the loading_speed and x_speed. Can shorten the move. + WipeTowerWriter2& load_move_x_advanced_there_and_back(float farthest_x, float e_dist, float e_speed, float x_speed) + { + float old_x = x(); + float time = std::abs(e_dist / e_speed); // time that the whole move must take + float x_max_dist = std::abs(farthest_x - x()); // max x-distance that we can travel + float x_dist = x_speed * time; // totel x-distance to travel during the move + int n = int(x_dist / (2*x_max_dist) + 1.f); // how many there and back moves should we do + float r = 2*n*x_max_dist / x_dist; // actual/required dist if the move is not shortened + + float end_point = x() + (farthest_x > x() ? 1.f : -1.f) * x_max_dist / r; + for (int i=0; i& m_filpar; @@ -533,7 +544,9 @@ WipeTower2::WipeTower2(const PrintConfig& config, const PrintRegionConfig& defau m_wipe_tower_rotation_angle(float(config.wipe_tower_rotation_angle)), m_wipe_tower_brim_width(float(config.prime_tower_brim_width)), m_wipe_tower_cone_angle(float(config.wipe_tower_cone_angle)), - m_extra_spacing(float(config.wipe_tower_extra_spacing/100.)), + m_extra_flow(float(config.wipe_tower_extra_flow/100.)), + m_extra_spacing_wipe(float(config.wipe_tower_extra_spacing/100. * config.wipe_tower_extra_flow/100.)), + m_extra_spacing_ramming(float(config.wipe_tower_extra_spacing/100.)), m_y_shift(0.f), m_z_pos(0.f), m_bridging(float(config.wipe_tower_bridging)), @@ -571,6 +584,8 @@ WipeTower2::WipeTower2(const PrintConfig& config, const PrintRegionConfig& defau m_set_extruder_trimpot = config.high_current_on_filament_swap; } + m_is_mk4mmu3 = boost::icontains(config.printer_notes.value, "PRINTER_MODEL_MK4") && boost::icontains(config.printer_notes.value, "MMU"); + // Calculate where the priming lines should be - very naive test not detecting parallelograms etc. const std::vector& bed_points = config.printable_area.values; BoundingBoxf bb(bed_points); @@ -605,6 +620,7 @@ void WipeTower2::set_extruder(size_t idx, const PrintConfig& config) m_filpar[idx].is_soluble = config.filament_soluble.get_at(idx); m_filpar[idx].temperature = config.nozzle_temperature.get_at(idx); m_filpar[idx].first_layer_temperature = config.nozzle_temperature_initial_layer.get_at(idx); + m_filpar[idx].filament_minimal_purge_on_wipe_tower = config.filament_minimal_purge_on_wipe_tower.get_at(idx); // If this is a single extruder MM printer, we will use all the SE-specific config values. // Otherwise, the defaults will be used to turn off the SE stuff. @@ -617,6 +633,8 @@ void WipeTower2::set_extruder(size_t idx, const PrintConfig& config) m_filpar[idx].cooling_moves = config.filament_cooling_moves.get_at(idx); m_filpar[idx].cooling_initial_speed = float(config.filament_cooling_initial_speed.get_at(idx)); m_filpar[idx].cooling_final_speed = float(config.filament_cooling_final_speed.get_at(idx)); + m_filpar[idx].filament_stamping_loading_speed = float(config.filament_stamping_loading_speed.get_at(idx)); + m_filpar[idx].filament_stamping_distance = float(config.filament_stamping_distance.get_at(idx)); } m_filpar[idx].filament_area = float((M_PI/4.f) * pow(config.filament_diameter.get_at(idx), 2)); // all extruders are assumed to have the same filament diameter at this point @@ -730,7 +748,7 @@ std::vector WipeTower2::prime( toolchange_Wipe(writer, cleaning_box , 20.f); WipeTower::box_coordinates box = cleaning_box; box.translate(0.f, writer.y() - cleaning_box.ld.y() + m_perimeter_width); - toolchange_Unload(writer, box , m_filpar[m_current_tool].material, m_filpar[tools[idx_tool + 1]].first_layer_temperature); + toolchange_Unload(writer, box , m_filpar[m_current_tool].material, m_filpar[m_current_tool].first_layer_temperature, m_filpar[tools[idx_tool + 1]].first_layer_temperature); cleaning_box.translate(prime_section_width, 0.f); writer.travel(cleaning_box.ld, 7200); } @@ -777,7 +795,7 @@ WipeTower::ToolChangeResult WipeTower2::tool_change(size_t tool) for (const auto &b : m_layer_info->tool_changes) if ( b.new_tool == tool ) { wipe_volume = b.wipe_volume; - wipe_area = b.required_depth * m_layer_info->extra_spacing; + wipe_area = b.required_depth; break; } } @@ -797,10 +815,10 @@ WipeTower::ToolChangeResult WipeTower2::tool_change(size_t tool) .set_initial_tool(m_current_tool) .set_y_shift(m_y_shift + (tool!=(unsigned int)(-1) && (m_current_shape == SHAPE_REVERSED) ? m_layer_info->depth - m_layer_info->toolchanges_depth(): 0.f)) .append(";--------------------\n" - "; CP TOOLCHANGE START\n") - .comment_with_value(" toolchange #", m_num_tool_changes + 1); // the number is zero-based + "; CP TOOLCHANGE START\n"); if (tool != (unsigned)(-1)){ + writer.comment_with_value(" toolchange #", m_num_tool_changes + 1); // the number is zero-based writer.append(std::string("; material : " + (m_current_tool < m_filpar.size() ? m_filpar[m_current_tool].material : "(NONE)") + " -> " + m_filpar[tool].material + "\n").c_str()) .append(";--------------------\n"); writer.append(";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Tower_Start) + "\n"); @@ -819,7 +837,8 @@ WipeTower::ToolChangeResult WipeTower2::tool_change(size_t tool) // Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool. if (tool != (unsigned int)-1){ // This is not the last change. toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material, - is_first_layer() ? m_filpar[tool].first_layer_temperature : m_filpar[tool].temperature); + (is_first_layer() ? m_filpar[m_current_tool].first_layer_temperature : m_filpar[m_current_tool].temperature), + (is_first_layer() ? m_filpar[tool].first_layer_temperature : m_filpar[tool].temperature)); toolchange_Change(writer, tool, m_filpar[tool].material); // Change the tool, set a speed override for soluble and flex materials. toolchange_Load(writer, cleaning_box); writer.travel(writer.x(), writer.y()-m_perimeter_width); // cooling and loading were done a bit down the road @@ -827,7 +846,7 @@ WipeTower::ToolChangeResult WipeTower2::tool_change(size_t tool) writer.append(";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Tower_End) + "\n"); ++ m_num_tool_changes; } else - toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material, m_filpar[m_current_tool].temperature); + toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material, m_filpar[m_current_tool].temperature, m_filpar[m_current_tool].temperature); m_depth_traversed += wipe_area; @@ -854,13 +873,14 @@ void WipeTower2::toolchange_Unload( WipeTowerWriter2 &writer, const WipeTower::box_coordinates &cleaning_box, const std::string& current_material, + const int old_temperature, const int new_temperature) { float xl = cleaning_box.ld.x() + 1.f * m_perimeter_width; float xr = cleaning_box.rd.x() - 1.f * m_perimeter_width; const float line_width = m_perimeter_width * m_filpar[m_current_tool].ramming_line_width_multiplicator; // desired ramming line thickness - const float y_step = line_width * m_filpar[m_current_tool].ramming_step_multiplicator * m_extra_spacing; // spacing between lines in mm + const float y_step = line_width * m_filpar[m_current_tool].ramming_step_multiplicator * m_extra_spacing_ramming; // spacing between lines in mm const Vec2f ramming_start_pos = Vec2f(xl, cleaning_box.ld.y() + m_depth_traversed + y_step/2.f); @@ -873,10 +893,14 @@ void WipeTower2::toolchange_Unload( float e_done = 0; // measures E move done from each segment const bool do_ramming = m_enable_filament_ramming && (m_semm || m_filpar[m_current_tool].multitool_ramming); + const bool cold_ramming = m_is_mk4mmu3; if (do_ramming) { writer.travel(ramming_start_pos); // move to starting position - writer.disable_linear_advance(); + if (! m_is_mk4mmu3) + writer.disable_linear_advance(); + if (cold_ramming) + writer.set_extruder_temp(old_temperature - 20); } else writer.set_position(ramming_start_pos); @@ -897,7 +921,7 @@ void WipeTower2::toolchange_Unload( if (tch.old_tool == m_current_tool) { sum_of_depths += tch.ramming_depth; float ramming_end_y = sum_of_depths; - ramming_end_y -= (y_step/m_extra_spacing-m_perimeter_width) / 2.f; // center of final ramming line + ramming_end_y -= (y_step/m_extra_spacing_ramming-m_perimeter_width) / 2.f; // center of final ramming line if ( (m_current_shape == SHAPE_REVERSED && ramming_end_y < sparse_beginning_y - 0.5f*m_perimeter_width ) || (m_current_shape == SHAPE_NORMAL && ramming_end_y > sparse_beginning_y + 0.5f*m_perimeter_width ) ) @@ -910,6 +934,11 @@ void WipeTower2::toolchange_Unload( sum_of_depths += tch.required_depth; } } + + if (m_is_mk4mmu3) { + writer.switch_filament_monitoring(false); + writer.wait(1.5f); + } // now the ramming itself: @@ -953,32 +982,70 @@ void WipeTower2::toolchange_Unload( .retract(0.10f * total_retraction_distance, 0.3f * m_filpar[m_current_tool].unloading_speed * 60.f) .resume_preview(); } + + const int& number_of_cooling_moves = m_filpar[m_current_tool].cooling_moves; + const bool cooling_will_happen = m_semm && number_of_cooling_moves > 0; + bool change_temp_later = false; + // Wipe tower should only change temperature with single extruder MM. Otherwise, all temperatures should // be already set and there is no need to change anything. Also, the temperature could be changed // for wrong extruder. if (m_semm) { - if (new_temperature != 0 && (new_temperature != m_old_temperature || is_first_layer()) ) { // Set the extruder temperature, but don't wait. + if (new_temperature != 0 && (new_temperature != m_old_temperature || is_first_layer() || cold_ramming) ) { // Set the extruder temperature, but don't wait. // If the required temperature is the same as last time, don't emit the M104 again (if user adjusted the value, it would be reset) // However, always change temperatures on the first layer (this is to avoid issues with priming lines turned off). - writer.set_extruder_temp(new_temperature, false); + if (cold_ramming && cooling_will_happen) + change_temp_later = true; + else + writer.set_extruder_temp(new_temperature, false); m_old_temperature = new_temperature; } } // Cooling: - const int& number_of_moves = m_filpar[m_current_tool].cooling_moves; - if (m_semm && number_of_moves > 0 && m_cooling_tube_length != 0) { + if (cooling_will_happen) { writer.append("; Cooling\n"); const float& initial_speed = m_filpar[m_current_tool].cooling_initial_speed; const float& final_speed = m_filpar[m_current_tool].cooling_final_speed; - float speed_inc = (final_speed - initial_speed) / (2.f * number_of_moves - 1.f); + float speed_inc = (final_speed - initial_speed) / (2.f * number_of_cooling_moves - 1.f); + + if (m_is_mk4mmu3) + writer.disable_linear_advance(); writer.suppress_preview() .travel(writer.x(), writer.y() + y_step); old_x = writer.x(); turning_point = xr-old_x > old_x-xl ? xr : xl; - for (int i=0; i0 && m_filpar[m_current_tool].filament_stamping_distance != 0) { + + // Stamping turning point shall be no farther than 20mm from the current nozzle position: + float stamping_turning_point = std::clamp(old_x + 20.f * (turning_point - old_x > 0.f ? 1.f : -1.f), xl, xr); + + // Only last 5mm will be done with the fast x travel. The point is to spread possible blobs + // along the whole wipe tower. + if (stamping_dist_e > 5) { + float cent = writer.x(); + writer.load_move_x_advanced(stamping_turning_point, (stamping_dist_e - 5), m_filpar[m_current_tool].filament_stamping_loading_speed, 200); + writer.load_move_x_advanced(cent, 5, m_filpar[m_current_tool].filament_stamping_loading_speed, m_travel_speed); + writer.travel(cent, writer.y()); + } else + writer.load_move_x_advanced_there_and_back(stamping_turning_point, stamping_dist_e, m_filpar[m_current_tool].filament_stamping_loading_speed, m_travel_speed); + + // Retract while the print head is stationary, so if there is a blob, it is not dragged along. + writer.retract(stamping_dist_e, m_filpar[m_current_tool].unloading_speed * 60.f); + } + + if (i == number_of_cooling_moves - 1 && change_temp_later) { + // If cold_ramming, the temperature change should be done before the last cooling move. + writer.set_extruder_temp(new_temperature, false); + } + float speed = initial_speed + speed_inc * 2*i; writer.load_move_x_advanced(turning_point, m_cooling_tube_length, speed); speed += speed_inc; @@ -998,7 +1065,7 @@ void WipeTower2::toolchange_Unload( // this is to align ramming and future wiping extrusions, so the future y-steps can be uniform from the start: // the perimeter_width will later be subtracted, it is there to not load while moving over just extruded material - Vec2f pos = Vec2f(end_of_ramming.x(), end_of_ramming.y() + (y_step/m_extra_spacing-m_perimeter_width) / 2.f + m_perimeter_width); + Vec2f pos = Vec2f(end_of_ramming.x(), end_of_ramming.y() + (y_step/m_extra_spacing_ramming-m_perimeter_width) / 2.f + m_perimeter_width); if (do_ramming) writer.travel(pos, 2400.f); else @@ -1018,11 +1085,14 @@ void WipeTower2::toolchange_Change( if (m_current_tool < m_used_filament_length.size()) m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); - // This is where we want to place the custom gcodes. We will use placeholders for this. // These will be substituted by the actual gcodes when the gcode is generated. + //writer.append("[end_filament_gcode]\n"); writer.append("[change_filament_gcode]\n"); + if (m_is_mk4mmu3) + writer.switch_filament_monitoring(true); + // Travel to where we assume we are. Custom toolchange or some special T code handling (parking extruder etc) // gcode could have left the extruder somewhere, we cannot just start extruding. We should also inform the // postprocessor that we absolutely want to have this in the gcode, even if it thought it is the same as before. @@ -1030,10 +1100,11 @@ void WipeTower2::toolchange_Change( writer.feedrate(m_travel_speed * 60.f) // see https://github.com/prusa3d/PrusaSlicer/issues/5483 .append(std::string("G1 X") + Slic3r::float_to_string_decimal_point(current_pos.x()) + " Y" + Slic3r::float_to_string_decimal_point(current_pos.y()) - + never_skip_tag() + "\n"); + + never_skip_tag() + "\n" + ); + writer.append("[deretraction_from_wipe_tower_generator]"); - // Orca TODO: handle multi extruders // The toolchange Tn command will be inserted later, only in case that the user does // not provide a custom toolchange gcode. writer.set_tool(new_tool); // This outputs nothing, the writer just needs to know the tool has changed. @@ -1084,21 +1155,25 @@ void WipeTower2::toolchange_Wipe( const float& xl = cleaning_box.ld.x(); const float& xr = cleaning_box.rd.x(); + writer.set_extrusion_flow(m_extrusion_flow * m_extra_flow); + const float line_width = m_perimeter_width * m_extra_flow; + writer.change_analyzer_line_width(line_width); + // Variables x_to_wipe and traversed_x are here to be able to make sure it always wipes at least // the ordered volume, even if it means violating the box. This can later be removed and simply // wipe until the end of the assigned area. - float x_to_wipe = volume_to_length(wipe_volume, m_perimeter_width, m_layer_height) * (is_first_layer() ? m_extra_spacing : 1.f); - float dy = (is_first_layer() ? 1.f : m_extra_spacing) * m_perimeter_width; // Don't use the extra spacing for the first layer. + float x_to_wipe = volume_to_length(wipe_volume, m_perimeter_width, m_layer_height) / m_extra_flow; + float dy = (is_first_layer() ? m_extra_flow : m_extra_spacing_wipe) * m_perimeter_width; // Don't use the extra spacing for the first layer, but do use the spacing resulting from increased flow. // All the calculations in all other places take the spacing into account for all the layers. // If spare layers are excluded->if 1 or less toolchange has been done, it must be sill the first layer, too.So slow down. const float target_speed = is_first_layer() || (m_num_tool_changes <= 1 && m_no_sparse_layers) ? m_first_layer_speed * 60.f : std::min(m_wipe_tower_max_purge_speed * 60.f, m_infill_speed * 60.f); float wipe_speed = 0.33f * target_speed; - // if there is less than 2.5*m_perimeter_width to the edge, advance straightaway (there is likely a blob anyway) - if ((m_left_to_right ? xr-writer.x() : writer.x()-xl) < 2.5f*m_perimeter_width) { - writer.travel((m_left_to_right ? xr-m_perimeter_width : xl+m_perimeter_width),writer.y()+dy); + // if there is less than 2.5*line_width to the edge, advance straightaway (there is likely a blob anyway) + if ((m_left_to_right ? xr-writer.x() : writer.x()-xl) < 2.5f*line_width) { + writer.travel((m_left_to_right ? xr-line_width : xl+line_width),writer.y()+dy); m_left_to_right = !m_left_to_right; } @@ -1113,21 +1188,21 @@ void WipeTower2::toolchange_Wipe( float traversed_x = writer.x(); if (m_left_to_right) - writer.extrude(xr - (i % 4 == 0 ? 0 : 1.5f*m_perimeter_width), writer.y(), wipe_speed); + writer.extrude(xr - (i % 4 == 0 ? 0 : 1.5f*line_width), writer.y(), wipe_speed); else - writer.extrude(xl + (i % 4 == 1 ? 0 : 1.5f*m_perimeter_width), writer.y(), wipe_speed); + writer.extrude(xl + (i % 4 == 1 ? 0 : 1.5f*line_width), writer.y(), wipe_speed); - if (writer.y()+float(EPSILON) > cleaning_box.lu.y()-0.5f*m_perimeter_width) + if (writer.y()+float(EPSILON) > cleaning_box.lu.y()-0.5f*line_width) break; // in case next line would not fit traversed_x -= writer.x(); x_to_wipe -= std::abs(traversed_x); if (x_to_wipe < WT_EPSILON) { - writer.travel(m_left_to_right ? xl + 1.5f*m_perimeter_width : xr - 1.5f*m_perimeter_width, writer.y(), 7200); + writer.travel(m_left_to_right ? xl + 1.5f*line_width : xr - 1.5f*line_width, writer.y(), 7200); break; } // stepping to the next line: - writer.extrude(writer.x() + (i % 4 == 0 ? -1.f : (i % 4 == 1 ? 1.f : 0.f)) * 1.5f*m_perimeter_width, writer.y() + dy); + writer.extrude(writer.x() + (i % 4 == 0 ? -1.f : (i % 4 == 1 ? 1.f : 0.f)) * 1.5f*line_width, writer.y() + dy); m_left_to_right = !m_left_to_right; } @@ -1141,6 +1216,7 @@ void WipeTower2::toolchange_Wipe( m_left_to_right = !m_left_to_right; writer.set_extrusion_flow(m_extrusion_flow); // Reset the extrusion flow. + writer.change_analyzer_line_width(m_perimeter_width); } @@ -1414,16 +1490,15 @@ std::vector> WipeTower2::extract_wipe_volumes(const PrintConf std::vector wiping_matrix(cast(config.flush_volumes_matrix.values)); auto scale = config.flush_multiplier; - // Orca todo: currently we only/always support SEMM. // The values shall only be used when SEMM is enabled. The purging for other printers // is determined by filament_minimal_purge_on_wipe_tower. - if (! config.purge_in_prime_tower.value) + if (! config.purge_in_prime_tower.value || ! config.single_extruder_multi_material.value) std::fill(wiping_matrix.begin(), wiping_matrix.end(), 0.f); // Extract purging volumes for each extruder pair: std::vector> wipe_volumes; const unsigned int number_of_extruders = (unsigned int)(sqrt(wiping_matrix.size())+EPSILON); - for (unsigned int i = 0; i(wiping_matrix.begin()+i*number_of_extruders, wiping_matrix.begin()+(i+1)*number_of_extruders)); // Also include filament_minimal_purge_on_wipe_tower. This is needed for the preview. @@ -1434,6 +1509,14 @@ std::vector> WipeTower2::extract_wipe_volumes(const PrintConf return wipe_volumes; } +static float get_wipe_depth(float volume, float layer_height, float perimeter_width, float extra_flow, float extra_spacing, float width) +{ + float length_to_extrude = (volume_to_length(volume, perimeter_width, layer_height)) / extra_flow; + length_to_extrude = std::max(length_to_extrude,0.f); + + return (int(length_to_extrude / width) + 1) * perimeter_width * extra_spacing; +} + // Appends a toolchange into m_plan and calculates neccessary depth of the corresponding box void WipeTower2::plan_toolchange(float z_par, float layer_height_par, unsigned int old_tool, unsigned int new_tool, float wipe_volume) @@ -1449,23 +1532,18 @@ void WipeTower2::plan_toolchange(float z_par, float layer_height_par, unsigned i if (old_tool == new_tool) // new layer without toolchanges - we are done return; - // this is an actual toolchange - let's calculate depth to reserve on the wipe tower - float depth = 0.f; - float width = m_wipe_tower_width - 3*m_perimeter_width; + // this is an actual toolchange - let's calculate depth to reserve on the wipe tower + float width = m_wipe_tower_width - 3*m_perimeter_width; float length_to_extrude = volume_to_length(0.25f * std::accumulate(m_filpar[old_tool].ramming_speed.begin(), m_filpar[old_tool].ramming_speed.end(), 0.f), m_perimeter_width * m_filpar[old_tool].ramming_line_width_multiplicator, layer_height_par); - depth = (int(length_to_extrude / width) + 1) * (m_perimeter_width * m_filpar[old_tool].ramming_line_width_multiplicator * m_filpar[old_tool].ramming_step_multiplicator); - float ramming_depth = depth; - length_to_extrude = width*((length_to_extrude / width)-int(length_to_extrude / width)) - width; - float first_wipe_line = -length_to_extrude; - length_to_extrude += volume_to_length(wipe_volume, m_perimeter_width, layer_height_par); - length_to_extrude = std::max(length_to_extrude,0.f); + float ramming_depth = (int(length_to_extrude / width) + 1) * (m_perimeter_width * m_filpar[old_tool].ramming_line_width_multiplicator * m_filpar[old_tool].ramming_step_multiplicator) * m_extra_spacing_ramming; + float first_wipe_line = - (width*((length_to_extrude / width)-int(length_to_extrude / width)) - width); - depth += (int(length_to_extrude / width) + 1) * m_perimeter_width; - depth *= m_extra_spacing; - - m_plan.back().tool_changes.push_back(WipeTowerInfo::ToolChange(old_tool, new_tool, depth, ramming_depth, first_wipe_line, wipe_volume)); + float first_wipe_volume = length_to_volume(first_wipe_line, m_perimeter_width * m_extra_flow, layer_height_par); + float wiping_depth = get_wipe_depth(wipe_volume - first_wipe_volume, layer_height_par, m_perimeter_width, m_extra_flow, m_extra_spacing_wipe, width); + + m_plan.back().tool_changes.push_back(WipeTowerInfo::ToolChange(old_tool, new_tool, ramming_depth + wiping_depth, ramming_depth, first_wipe_line, wipe_volume)); } @@ -1505,20 +1583,25 @@ void WipeTower2::save_on_last_wipe() // Which toolchange will finish_layer extrusions be subtracted from? int idx = first_toolchange_to_nonsoluble(m_layer_info->tool_changes); + if (idx == -1) { + // In this case, finish_layer will be called at the very beginning. + finish_layer().total_extrusion_length_in_plane(); + } + for (int i=0; itool_changes.size()); ++i) { auto& toolchange = m_layer_info->tool_changes[i]; tool_change(toolchange.new_tool); if (i == idx) { float width = m_wipe_tower_width - 3*m_perimeter_width; // width we draw into - float length_to_save = finish_layer().total_extrusion_length_in_plane(); - float length_to_wipe = volume_to_length(toolchange.wipe_volume, - m_perimeter_width, m_layer_info->height) - toolchange.first_wipe_line - length_to_save; - length_to_wipe = std::max(length_to_wipe,0.f); - float depth_to_wipe = m_perimeter_width * (std::floor(length_to_wipe/width) + ( length_to_wipe > 0.f ? 1.f : 0.f ) ) * m_extra_spacing; + float volume_to_save = length_to_volume(finish_layer().total_extrusion_length_in_plane(), m_perimeter_width, m_layer_info->height); + float volume_left_to_wipe = std::max(m_filpar[toolchange.new_tool].filament_minimal_purge_on_wipe_tower, toolchange.wipe_volume_total - volume_to_save); + float volume_we_need_depth_for = std::max(0.f, volume_left_to_wipe - length_to_volume(toolchange.first_wipe_line, m_perimeter_width*m_extra_flow, m_layer_info->height)); + float depth_to_wipe = get_wipe_depth(volume_we_need_depth_for, m_layer_info->height, m_perimeter_width, m_extra_flow, m_extra_spacing_wipe, width); toolchange.required_depth = toolchange.ramming_depth + depth_to_wipe; + toolchange.wipe_volume = volume_left_to_wipe; } } } @@ -1563,7 +1646,7 @@ void WipeTower2::generate(std::vector> return; plan_tower(); - for (int i=0;i<5;++i) { + for (int i = 0; i<5; ++i) { save_on_last_wipe(); plan_tower(); } @@ -1579,14 +1662,15 @@ void WipeTower2::generate(std::vector> } } - for (auto& used : m_used_filament_length) // reset used filament stats - used = 0.f; + m_used_filament_length.assign(m_used_filament_length.size(), 0.f); // reset used filament stats + assert(m_used_filament_length_until_layer.empty()); + m_used_filament_length_until_layer.emplace_back(0.f, m_used_filament_length); m_old_temperature = -1; // reset last temperature written in the gcode - std::vector layer_result; for (const WipeTower2::WipeTowerInfo& layer : m_plan) { + std::vector layer_result; set_layer(layer.z, layer.height, 0, false/*layer.z == m_plan.front().z*/, layer.z == m_plan.back().z); m_internal_rotation += 180.f; @@ -1623,6 +1707,10 @@ void WipeTower2::generate(std::vector> } result.emplace_back(std::move(layer_result)); + + if (m_used_filament_length_until_layer.empty() || m_used_filament_length_until_layer.back().first != layer.z) + m_used_filament_length_until_layer.emplace_back(); + m_used_filament_length_until_layer.back() = std::make_pair(layer.z, m_used_filament_length); } } diff --git a/src/libslic3r/GCode/WipeTower2.hpp b/src/libslic3r/GCode/WipeTower2.hpp index 58bdd6fc39..07c5ca330f 100644 --- a/src/libslic3r/GCode/WipeTower2.hpp +++ b/src/libslic3r/GCode/WipeTower2.hpp @@ -1,6 +1,5 @@ -// Orca: This file is ported from latest PrusaSlicer +// Orca: WipeTower2 for all non bbl printers, support all MMU device and toolchanger -// Original PrusaSlicer Copyright: #ifndef WipeTower2_ #define WipeTower2_ @@ -128,6 +127,7 @@ public: } std::vector get_used_filament() const { return m_used_filament_length; } + std::vector>> get_used_filament_until_layer() const { return m_used_filament_length_until_layer; } int get_number_of_toolchanges() const { return m_num_tool_changes; } struct FilamentParameters { @@ -140,6 +140,10 @@ public: float unloading_speed = 0.f; float unloading_speed_start = 0.f; float delay = 0.f ; + + float filament_stamping_loading_speed = 0.f; + float filament_stamping_distance = 0.f; + int cooling_moves = 0; float cooling_initial_speed = 0.f; float cooling_final_speed = 0.f; @@ -151,6 +155,7 @@ public: float filament_area; bool multitool_ramming; float multitool_ramming_time = 0.f; + float filament_minimal_purge_on_wipe_tower = 0.f; }; private: @@ -169,6 +174,7 @@ private: bool m_semm = true; // Are we using a single extruder multimaterial printer? bool m_enable_filament_ramming = true; + bool m_is_mk4mmu3 = false; Vec2f m_wipe_tower_pos; // Left front corner of the wipe tower in mm. float m_wipe_tower_width; // Width of the wipe tower. float m_wipe_tower_depth = 0.f; // Depth of the wipe tower @@ -219,8 +225,7 @@ private: // State of the wipe tower generator. unsigned int m_num_layer_changes = 0; // Layer change counter for the output statistics. unsigned int m_num_tool_changes = 0; // Tool change change counter for the output statistics. - ///unsigned int m_idx_tool_change_in_layer = 0; // Layer change counter in this layer. Counting up to m_max_color_changes. - bool m_print_brim = true; + // A fill-in direction (positive Y, negative Y) alternates with each layer. wipe_shape m_current_shape = SHAPE_NORMAL; size_t m_current_tool = 0; @@ -229,7 +234,9 @@ private: float m_depth_traversed = 0.f; // Current y position at the wipe tower. bool m_current_layer_finished = false; bool m_left_to_right = true; - float m_extra_spacing = 1.f; + float m_extra_flow = 1.f; + float m_extra_spacing_wipe = 1.f; + float m_extra_spacing_ramming = 1.f; bool is_first_layer() const { return size_t(m_layer_info - m_plan.begin()) == m_first_layer_idx; } @@ -241,17 +248,10 @@ private: return layer_height * ( m_perimeter_width - layer_height * (1.f-float(M_PI)/4.f)) / filament_area(); } - // Calculates length of extrusion line to extrude given volume - float volume_to_length(float volume, float line_width, float layer_height) const { - return std::max(0.f, volume / (layer_height * (line_width - layer_height * (1.f - float(M_PI) / 4.f)))); - } // Calculates depth for all layers and propagates them downwards void plan_tower(); - // Goes through m_plan and recalculates depths and width of the WT to make it exactly square - experimental - void make_wipe_tower_square(); - // Goes through m_plan, calculates border and finish_layer extrusions and subtracts them from last wipe void save_on_last_wipe(); @@ -265,19 +265,19 @@ private: float ramming_depth; float first_wipe_line; float wipe_volume; + float wipe_volume_total; ToolChange(size_t old, size_t newtool, float depth=0.f, float ramming_depth=0.f, float fwl=0.f, float wv=0.f) - : old_tool{old}, new_tool{newtool}, required_depth{depth}, ramming_depth{ramming_depth}, first_wipe_line{fwl}, wipe_volume{wv} {} + : old_tool{old}, new_tool{newtool}, required_depth{depth}, ramming_depth{ramming_depth}, first_wipe_line{fwl}, wipe_volume{wv}, wipe_volume_total{wv} {} }; float z; // z position of the layer float height; // layer height float depth; // depth of the layer based on all layers above - float extra_spacing; float toolchanges_depth() const { float sum = 0.f; for (const auto &a : tool_changes) sum += a.required_depth; return sum; } std::vector tool_changes; WipeTowerInfo(float z_par, float layer_height_par) - : z{z_par}, height{layer_height_par}, depth{0}, extra_spacing{1.f} {} + : z{z_par}, height{layer_height_par}, depth{0} {} }; std::vector m_plan; // Stores information about all layers and toolchanges for the future wipe tower (filled by plan_toolchange(...)) @@ -289,6 +289,7 @@ private: // Stores information about used filament length per extruder: std::vector m_used_filament_length; + std::vector>> m_used_filament_length_until_layer; // Return index of first toolchange that switches to non-soluble extruder // ot -1 if there is no such toolchange. @@ -299,6 +300,7 @@ private: WipeTowerWriter2 &writer, const WipeTower::box_coordinates &cleaning_box, const std::string& current_material, + const int old_temperature, const int new_temperature); void toolchange_Change( @@ -316,6 +318,9 @@ private: float wipe_volume); }; + + + } // namespace Slic3r -#endif // WipeTowerPrusaMM_hpp_ +#endif // slic3r_GCode_WipeTower_hpp_ diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 724bdc148e..1a3a984a74 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -809,7 +809,7 @@ static std::vector s_Preset_print_options { "tree_support_brim_width", "gcode_comments", "gcode_label_objects", "initial_layer_travel_speed", "exclude_object", "slow_down_layers", "infill_anchor", "infill_anchor_max","initial_layer_min_bead_width", "make_overhang_printable", "make_overhang_printable_angle", "make_overhang_printable_hole_size" ,"notes", - "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_filament", "wiping_volumes_extruders","wipe_tower_bridging", "single_extruder_multi_material_priming", + "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_filament", "wiping_volumes_extruders","wipe_tower_bridging", "wipe_tower_extra_flow","single_extruder_multi_material_priming", "wipe_tower_rotation_angle", "tree_support_branch_distance_organic", "tree_support_branch_diameter_organic", "tree_support_branch_angle_organic", "hole_to_polyhole", "hole_to_polyhole_threshold", "hole_to_polyhole_twisted", "mmu_segmented_region_max_width", "mmu_segmented_region_interlocking_depth", "small_area_infill_flow_compensation", "small_area_infill_flow_compensation_model", @@ -842,7 +842,7 @@ static std::vector s_Preset_filament_options { //SoftFever "enable_pressure_advance", "pressure_advance","chamber_temperature", "filament_shrink", "support_material_interface_fan_speed", "filament_notes" /*,"filament_seam_gap"*/, "filament_loading_speed", "filament_loading_speed_start", "filament_load_time", - "filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves", + "filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves", "filament_stamping_loading_speed", "filament_stamping_distance", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_multitool_ramming", "filament_multitool_ramming_volume", "filament_multitool_ramming_flow", "activate_chamber_temp_control", "filament_long_retractions_when_cut","filament_retraction_distances_when_cut", "idle_temperature" diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 6bb1ff8508..5e687cbbd4 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -252,6 +252,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "filament_unloading_speed_start" || opt_key == "filament_toolchange_delay" || opt_key == "filament_cooling_moves" + || opt_key == "filament_stamping_loading_speed" + || opt_key == "filament_stamping_distance" || opt_key == "filament_cooling_initial_speed" || opt_key == "filament_cooling_final_speed" || opt_key == "filament_ramming_parameters" @@ -273,6 +275,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "other_layers_print_sequence" || opt_key == "other_layers_print_sequence_nums" || opt_key == "wipe_tower_bridging" + || opt_key == "wipe_tower_extra_flow" || opt_key == "wipe_tower_no_sparse_layers" || opt_key == "flush_volumes_matrix" || opt_key == "prime_volume" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index a44fa6ebbb..bfe3590ea5 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1883,6 +1883,21 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionInts { 4 }); + def = this->add("filament_stamping_loading_speed", coFloats); + def->label = L("Stamping loading speed"); + def->tooltip = L("Speed used for stamping."); + def->min = 0; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats { 0. }); + + def = this->add("filament_stamping_distance", coFloats); + def->label = L("Stamping distance measured from the center of the cooling tube"); + def->tooltip = L("If set to nonzero value, filament is moved toward the nozzle between the individual cooling moves (\"stamping\"). " + "This option configures how long this movement should be before the filament is retracted again."); + def->min = 0; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats { 0. }); + def = this->add("filament_cooling_initial_speed", coFloats); def->label = L("Speed of the first cooling move"); def->tooltip = L("Cooling moves are gradually accelerating beginning at this speed."); @@ -4958,6 +4973,15 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(10.)); + def = this->add("wipe_tower_extra_flow", coPercent); + def->label = L("MATHIEU TEST: extra flow"); + def->tooltip = L(""); + def->sidetext = L("%"); + def->mode = comAdvanced; + def->min = 100.; + def->max = 300.; + def->set_default_value(new ConfigOptionPercent(100.)); + def = this->add("idle_temperature", coInts); def->label = L("Idle temperature"); def->tooltip = L("Nozzle temperature when the tool is currently not used in multi-tool setups." diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 3401423eb4..89a020774e 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1130,6 +1130,8 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionBools, filament_multitool_ramming)) ((ConfigOptionFloats, filament_multitool_ramming_volume)) ((ConfigOptionFloats, filament_multitool_ramming_flow)) + ((ConfigOptionFloats, filament_stamping_loading_speed)) + ((ConfigOptionFloats, filament_stamping_distance)) ((ConfigOptionBool, purge_in_prime_tower)) ((ConfigOptionBool, enable_filament_ramming)) ((ConfigOptionBool, support_multi_bed_types)) @@ -1238,6 +1240,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionFloat, wipe_tower_rotation_angle)) ((ConfigOptionFloat, prime_tower_brim_width)) ((ConfigOptionFloat, wipe_tower_bridging)) + ((ConfigOptionPercent, wipe_tower_extra_flow)) ((ConfigOptionFloats, flush_volumes_matrix)) ((ConfigOptionFloats, flush_volumes_vector)) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 263f57e19b..4752e24c0b 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -674,11 +674,14 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_line(el, have_prime_tower); bool purge_in_primetower = preset_bundle->printers.get_edited_preset().config.opt_bool("purge_in_prime_tower"); - - // Orca: do we really need to hide these options when not purge_in_primetower? - for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_max_purge_speed", "wipe_tower_bridging", "wipe_tower_no_sparse_layers", "single_extruder_multi_material_priming"}) - toggle_line(el, have_prime_tower); - + + for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", + "wipe_tower_extra_spacing", "wipe_tower_max_purge_speed", + "wipe_tower_bridging", "wipe_tower_extra_flow", + "wipe_tower_no_sparse_layers", + "single_extruder_multi_material_priming"}) + toggle_line(el, have_prime_tower); + toggle_line("prime_volume",have_prime_tower && !purge_in_primetower); for (auto el : {"flush_into_infill", "flush_into_support", "flush_into_objects"}) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 5000424a2a..b1812aa6c2 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2771,7 +2771,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) "brim_width", "wall_loops", "wall_filament", "sparse_infill_density", "sparse_infill_filament", "top_shell_layers", "enable_support", "support_filament", "support_interface_filament", "support_top_z_distance", "support_bottom_z_distance", "raft_layers", - "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing","wipe_tower_max_purge_speed", "wipe_tower_filament", + "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_extra_flow", "wipe_tower_max_purge_speed", "wipe_tower_filament", "best_object_pos" })) , sidebar(new Sidebar(q)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 7f89e45104..f1345bc0e8 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2302,6 +2302,7 @@ void TabPrint::build() optgroup->append_single_option_line("wipe_tower_bridging"); optgroup->append_single_option_line("wipe_tower_cone_angle"); optgroup->append_single_option_line("wipe_tower_extra_spacing"); + optgroup->append_single_option_line("wipe_tower_extra_flow"); optgroup->append_single_option_line("wipe_tower_max_purge_speed"); optgroup->append_single_option_line("wipe_tower_no_sparse_layers"); optgroup->append_single_option_line("single_extruder_multi_material_priming"); @@ -3444,7 +3445,8 @@ void TabFilament::build() optgroup->append_single_option_line("filament_cooling_moves", "semm"); optgroup->append_single_option_line("filament_cooling_initial_speed", "semm"); optgroup->append_single_option_line("filament_cooling_final_speed", "semm"); - + optgroup->append_single_option_line("filament_stamping_loading_speed"); + optgroup->append_single_option_line("filament_stamping_distance"); create_line_with_widget(optgroup.get(), "filament_ramming_parameters", "", [this](wxWindow* parent) { auto ramming_dialog_btn = new wxButton(parent, wxID_ANY, _(L("Ramming settings"))+dots, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); wxGetApp().UpdateDarkUI(ramming_dialog_btn); From 9df64248ebe2117038d8ca84c3cc547b59b6e770 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 10 Jul 2024 00:32:11 +0800 Subject: [PATCH 008/151] tidy up some codes --- src/libslic3r/PrintConfig.cpp | 23 ++++++++++++----------- src/slic3r/GUI/Tab.cpp | 4 ---- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index bfe3590ea5..bc34ccc6ed 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4901,15 +4901,6 @@ void PrintConfigDef::init_fff_params() def->min = 0.; def->max = 90.; def->set_default_value(new ConfigOptionFloat(0.)); - - def = this->add("wipe_tower_extra_spacing", coPercent); - def->label = L("Wipe tower purge lines spacing"); - def->tooltip = L("Spacing of purge lines on the wipe tower."); - def->sidetext = L("%"); - def->mode = comAdvanced; - def->min = 100.; - def->max = 300.; - def->set_default_value(new ConfigOptionPercent(100.)); def = this->add("wipe_tower_max_purge_speed", coFloat); def->label = L("Maximum wipe tower print speed"); @@ -4973,9 +4964,19 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(10.)); + def = this->add("wipe_tower_extra_spacing", coPercent); + def->label = L("Wipe tower purge lines spacing"); + def->tooltip = L("Spacing of purge lines on the wipe tower."); + def->sidetext = L("%"); + def->mode = comAdvanced; + def->min = 100.; + def->max = 300.; + def->set_default_value(new ConfigOptionPercent(100.)); + def = this->add("wipe_tower_extra_flow", coPercent); - def->label = L("MATHIEU TEST: extra flow"); - def->tooltip = L(""); + def->label = L("Extra flow for purging"); + def->tooltip = L("Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower " + "than they normally would be. The spacing is adjusted automatically."); def->sidetext = L("%"); def->mode = comAdvanced; def->min = 100.; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index f1345bc0e8..26e3ec001c 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3465,14 +3465,10 @@ void TabFilament::build() return sizer; }); - // Orca: multi tool is not supported yet. -#define ORCA_MULTI_TOOL -#ifdef ORCA_MULTI_TOOL optgroup = page->new_optgroup(L("Toolchange parameters with multi extruder MM printers")); optgroup->append_single_option_line("filament_multitool_ramming"); optgroup->append_single_option_line("filament_multitool_ramming_volume"); optgroup->append_single_option_line("filament_multitool_ramming_flow"); -#endif page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Notes"),"note", 0); From 1c6c482e0f94527378f36345c398d0ddc8cec7b5 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 10 Jul 2024 00:55:45 +0800 Subject: [PATCH 009/151] Add Generic ToolChanger Printer profile --- resources/profiles/Custom.json | 112 ++++++++++- resources/profiles/Custom/Custom_350_bed.stl | Bin 0 -> 5484 bytes .../My Generic ABS @MyToolChanger.json | 57 ++++++ .../My Generic ASA @MyToolChanger.json | 57 ++++++ .../My Generic PA @MyToolChanger.json | 60 ++++++ .../My Generic PA-CF @MyToolChanger.json | 63 ++++++ .../My Generic PC @MyToolChanger.json | 57 ++++++ .../My Generic PETG @MyToolChanger.json | 87 ++++++++ .../My Generic PLA @MyToolChanger.json | 60 ++++++ .../My Generic PLA-CF @MyToolChanger.json | 63 ++++++ .../My Generic PVA @MyToolChanger.json | 27 +++ .../My Generic TPU @MyToolChanger.json | 18 ++ .../machine/MyToolChanger 0.2 nozzle.json | 30 +++ .../machine/MyToolChanger 0.4 nozzle.json | 24 +++ .../machine/MyToolChanger 0.6 nozzle.json | 30 +++ .../machine/MyToolChanger 0.8 nozzle.json | 30 +++ .../Custom/machine/MyToolChanger.json | 12 ++ .../machine/fdm_toolchanger_common.json | 189 ++++++++++++++++++ .../0.08mm Extra Fine @MyToolChanger.json | 19 ++ .../process/0.12mm Fine @MyToolChanger.json | 19 ++ .../0.15mm Optimal @MyToolChanger.json | 20 ++ .../0.16mm Optimal @MyToolChanger.json | 20 ++ .../0.20mm Standard @MyToolChanger.json | 14 ++ .../process/0.24mm Draft @MyToolChanger.json | 17 ++ .../0.28mm Extra Draft @MyToolChanger.json | 15 ++ .../0.32mm Extra Draft @MyToolChanger.json | 17 ++ .../0.40mm Extra Draft @MyToolChanger.json | 16 ++ .../0.56mm Extra Draft @MyToolChanger.json | 15 ++ .../fdm_process_mytoolchanger_common.json | 27 +++ 29 files changed, 1173 insertions(+), 2 deletions(-) create mode 100644 resources/profiles/Custom/Custom_350_bed.stl create mode 100644 resources/profiles/Custom/filament/My Generic ABS @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic ASA @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic PA @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic PA-CF @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic PC @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic PETG @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic PLA @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic PLA-CF @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic PVA @MyToolChanger.json create mode 100644 resources/profiles/Custom/filament/My Generic TPU @MyToolChanger.json create mode 100644 resources/profiles/Custom/machine/MyToolChanger 0.2 nozzle.json create mode 100644 resources/profiles/Custom/machine/MyToolChanger 0.4 nozzle.json create mode 100644 resources/profiles/Custom/machine/MyToolChanger 0.6 nozzle.json create mode 100644 resources/profiles/Custom/machine/MyToolChanger 0.8 nozzle.json create mode 100644 resources/profiles/Custom/machine/MyToolChanger.json create mode 100644 resources/profiles/Custom/machine/fdm_toolchanger_common.json create mode 100644 resources/profiles/Custom/process/0.08mm Extra Fine @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.12mm Fine @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.15mm Optimal @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.16mm Optimal @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.20mm Standard @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.24mm Draft @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.28mm Extra Draft @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.32mm Extra Draft @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.40mm Extra Draft @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/0.56mm Extra Draft @MyToolChanger.json create mode 100644 resources/profiles/Custom/process/fdm_process_mytoolchanger_common.json diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json index a6015b1a4e..9aa9bfde7b 100644 --- a/resources/profiles/Custom.json +++ b/resources/profiles/Custom.json @@ -1,6 +1,6 @@ { "name": "Custom Printer", - "version": "02.01.01.00", + "version": "02.01.03.00", "force_update": "0", "description": "My configurations", "machine_model_list": [ @@ -15,6 +15,10 @@ { "name": "Generic RRF Printer", "sub_path": "machine/MyRRF.json" + }, + { + "name": "Generic ToolChanger Printer", + "sub_path": "machine/MyToolChanger.json" } ], "process_list": [ @@ -34,6 +38,10 @@ "name": "fdm_process_marlin_common", "sub_path": "process/fdm_process_marlin_common.json" }, + { + "name": "fdm_process_mytoolchanger_common", + "sub_path": "process/fdm_process_mytoolchanger_common.json" + }, { "name": "0.08mm Extra Fine @MyKlipper", "sub_path": "process/0.08mm Extra Fine @MyKlipper.json" @@ -121,6 +129,46 @@ { "name": "0.28mm Extra Draft @MyMarlin", "sub_path": "process/0.28mm Extra Draft @MyMarlin.json" + }, + { + "name": "0.08mm Extra Fine @MyToolChanger", + "sub_path": "process/0.08mm Extra Fine @MyToolChanger.json" + }, + { + "name": "0.12mm Fine @MyToolChanger", + "sub_path": "process/0.12mm Fine @MyToolChanger.json" + }, + { + "name": "0.15mm Optimal @MyToolChanger", + "sub_path": "process/0.15mm Optimal @MyToolChanger.json" + }, + { + "name": "0.16mm Optimal @MyToolChanger", + "sub_path": "process/0.16mm Optimal @MyToolChanger.json" + }, + { + "name": "0.20mm Standard @MyToolChanger", + "sub_path": "process/0.20mm Standard @MyToolChanger.json" + }, + { + "name": "0.24mm Draft @MyToolChanger", + "sub_path": "process/0.24mm Draft @MyToolChanger.json" + }, + { + "name": "0.28mm Extra Draft @MyToolChanger", + "sub_path": "process/0.28mm Extra Draft @MyToolChanger.json" + }, + { + "name": "0.32mm Extra Draft @MyToolChanger", + "sub_path": "process/0.32mm Extra Draft @MyToolChanger.json" + }, + { + "name": "0.40mm Extra Draft @MyToolChanger", + "sub_path": "process/0.40mm Extra Draft @MyToolChanger.json" + }, + { + "name": "0.56mm Extra Draft @MyToolChanger", + "sub_path": "process/0.56mm Extra Draft @MyToolChanger.json" } ], "filament_list": [ @@ -199,6 +247,46 @@ { "name": "My Generic PA-CF", "sub_path": "filament/My Generic PA-CF.json" + }, + { + "name": "My Generic PLA @MyToolChanger", + "sub_path": "filament/My Generic PLA @MyToolChanger.json" + }, + { + "name": "My Generic PLA-CF @MyToolChanger", + "sub_path": "filament/My Generic PLA-CF @MyToolChanger.json" + }, + { + "name": "My Generic PETG @MyToolChanger", + "sub_path": "filament/My Generic PETG @MyToolChanger.json" + }, + { + "name": "My Generic ABS @MyToolChanger", + "sub_path": "filament/My Generic ABS @MyToolChanger.json" + }, + { + "name": "My Generic TPU @MyToolChanger", + "sub_path": "filament/My Generic TPU @MyToolChanger.json" + }, + { + "name": "My Generic ASA @MyToolChanger", + "sub_path": "filament/My Generic ASA @MyToolChanger.json" + }, + { + "name": "My Generic PC @MyToolChanger", + "sub_path": "filament/My Generic PC @MyToolChanger.json" + }, + { + "name": "My Generic PVA @MyToolChanger", + "sub_path": "filament/My Generic PVA @MyToolChanger.json" + }, + { + "name": "My Generic PA @MyToolChanger", + "sub_path": "filament/My Generic PA @MyToolChanger.json" + }, + { + "name": "My Generic PA-CF @MyToolChanger", + "sub_path": "filament/My Generic PA-CF @MyToolChanger.json" } ], "machine_list": [ @@ -214,6 +302,10 @@ "name": "fdm_rrf_common", "sub_path": "machine/fdm_rrf_common.json" }, + { + "name": "fdm_toolchanger_common", + "sub_path": "machine/fdm_toolchanger_common.json" + }, { "name": "MyKlipper 0.4 nozzle", "sub_path": "machine/MyKlipper 0.4 nozzle.json" @@ -237,6 +329,22 @@ { "name": "MyRRF 0.4 nozzle", "sub_path": "machine/MyRRF 0.4 nozzle.json" + }, + { + "name": "MyToolChanger 0.4 nozzle", + "sub_path": "machine/MyToolChanger 0.4 nozzle.json" + }, + { + "name": "MyToolChanger 0.2 nozzle", + "sub_path": "machine/MyToolChanger 0.2 nozzle.json" + }, + { + "name": "MyToolChanger 0.6 nozzle", + "sub_path": "machine/MyToolChanger 0.6 nozzle.json" + }, + { + "name": "MyToolChanger 0.8 nozzle", + "sub_path": "machine/MyToolChanger 0.8 nozzle.json" } ] -} +} \ No newline at end of file diff --git a/resources/profiles/Custom/Custom_350_bed.stl b/resources/profiles/Custom/Custom_350_bed.stl new file mode 100644 index 0000000000000000000000000000000000000000..d2a9a497925cfc6dc753649ef436fae559767cfb GIT binary patch literal 5484 zcmb7|zityj5XLPeYAT8d3U_oN5l|tp!%1mCMB-0N6VcI8Bc0$uk_IVH5nDP5p){!w zkHI6re6!!}e0!dR*aEcn>~FuBotfP`-oAVFVt(-MaK8U&cmMJ3p8fM=-W|O0%i`?p_H!G~X8nFQ>vy|$yj=hKxZnLaeCWS_eyxOBf>vU={`~sG zw@-_^e+Ji3BF4-0{TdYBUQJ=QhC=+bG|5iyG~`ASp5eINIyu1k%Z5$a)1AX?S% zvE_fTolgk0s3%sHgY`#3s6`3ul>vW|xi)gOC{fnW2(>7I7~t`yhSpW->vDc*jkR8> zMTzM7X&g%EtmxnkLQa|JLGxZJ-@WP)5&DDq=*oA`K^gZ^l^bzHg_o>3!Cm+9)r8LC zt_RT)I9YFosIjp>oG>OV6N2{&G^}>d$LA8x>P!zbPa>~G z+&KPwOIR&cOHM$;D)AgUjAfOGvDYr{C~7ESwNx!R0S&9f)%cvKM2x+5ajQ{73H!BL zasnE*{t6Y3IFyL7*Y02|P(uleu3B;e8n#a>bS^ZMh_Tl$Zcb__VOgq{oPdVqdo{j) zC=p|?UCX~!kbPQ$ceq<}0vh0~h_F|^uY-!WQ%$QReviABPq1>QP6$?|c!eG`4Zn*9 zsK&VNmH%GjaDu*HLr6Y0h@flEslj|W!5p|HC!oP9@jh1~#JR2=rJ9HTC8^YzY#a}swGUr&l2&Gh*xks}ba%s|Cxdy*x73ZuWi6dm_6cvPQ$j6zQs2<4 zqSuvE!k@c*>~UC4;nVgY*BuGeRS*RzM71bE5C22xEXJ1*YT;gO;Z;M_C$;JBvOCMV KGK;l9ul@m{EI)(* literal 0 HcmV?d00001 diff --git a/resources/profiles/Custom/filament/My Generic ABS @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic ABS @MyToolChanger.json new file mode 100644 index 0000000000..fb8f51bf95 --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic ABS @MyToolChanger.json @@ -0,0 +1,57 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFB99_MTC_0", + "name": "My Generic ABS @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.926" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic ASA @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic ASA @MyToolChanger.json new file mode 100644 index 0000000000..05bab114b4 --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic ASA @MyToolChanger.json @@ -0,0 +1,57 @@ +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFB98_MTC_0", + "name": "My Generic ASA @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PA @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic PA @MyToolChanger.json new file mode 100644 index 0000000000..17a9b793cc --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic PA @MyToolChanger.json @@ -0,0 +1,60 @@ +{ + "type": "filament", + "filament_id": "GFN99", + "setting_id": "GFN99_MTC_0", + "name": "My Generic PA @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic PA-CF @MyToolChanger.json new file mode 100644 index 0000000000..0b0f065eed --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic PA-CF @MyToolChanger.json @@ -0,0 +1,63 @@ +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFN98_MTC_0", + "name": "My Generic PA-CF @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "filament_type": [ + "PA-CF" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PC @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic PC @MyToolChanger.json new file mode 100644 index 0000000000..7ae24c6774 --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic PC @MyToolChanger.json @@ -0,0 +1,57 @@ +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFC99_MTC_0", + "name": "My Generic PC @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PETG @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic PETG @MyToolChanger.json new file mode 100644 index 0000000000..f9cb2e0b16 --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic PETG @MyToolChanger.json @@ -0,0 +1,87 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFG99_MTC_0", + "name": "My Generic PETG @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PLA @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic PLA @MyToolChanger.json new file mode 100644 index 0000000000..facaf08984 --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic PLA @MyToolChanger.json @@ -0,0 +1,60 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFL99_MTC_0", + "name": "My Generic PLA @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PLA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic PLA-CF @MyToolChanger.json new file mode 100644 index 0000000000..8adf8d53d2 --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic PLA-CF @MyToolChanger.json @@ -0,0 +1,63 @@ +{ + "type": "filament", + "filament_id": "GFL98", + "setting_id": "GFL98_MTC_0", + "name": "My Generic PLA-CF @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.95" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "7" + ], + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PVA @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic PVA @MyToolChanger.json new file mode 100644 index 0000000000..a2dd357753 --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic PVA @MyToolChanger.json @@ -0,0 +1,27 @@ +{ + "type": "filament", + "filament_id": "GFS99", + "setting_id": "GFS99_MTC_0", + "name": "My Generic PVA @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pva", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "7" + ], + "slow_down_min_speed": [ + "10" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic TPU @MyToolChanger.json b/resources/profiles/Custom/filament/My Generic TPU @MyToolChanger.json new file mode 100644 index 0000000000..54c4a15a19 --- /dev/null +++ b/resources/profiles/Custom/filament/My Generic TPU @MyToolChanger.json @@ -0,0 +1,18 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFU99_MTC_0", + "name": "My Generic TPU @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_tpu", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/machine/MyToolChanger 0.2 nozzle.json b/resources/profiles/Custom/machine/MyToolChanger 0.2 nozzle.json new file mode 100644 index 0000000000..f23384aee7 --- /dev/null +++ b/resources/profiles/Custom/machine/MyToolChanger 0.2 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "setting_id": "GM_CUSTOM_001", + "name": "MyToolChanger 0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_toolchanger_common", + "printer_model": "Generic ToolChanger Printer", + "nozzle_diameter": [ + "0.2", + "0.2", + "0.2", + "0.2", + "0.2" + ], + "max_layer_height": [ + "0.16" + ], + "min_layer_height": [ + "0.04" + ], + "printer_variant": "0.2", + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "300" +} \ No newline at end of file diff --git a/resources/profiles/Custom/machine/MyToolChanger 0.4 nozzle.json b/resources/profiles/Custom/machine/MyToolChanger 0.4 nozzle.json new file mode 100644 index 0000000000..cf43dd0a41 --- /dev/null +++ b/resources/profiles/Custom/machine/MyToolChanger 0.4 nozzle.json @@ -0,0 +1,24 @@ +{ + "type": "machine", + "setting_id": "GM_CUSTOM_002", + "name": "MyToolChanger 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_toolchanger_common", + "printer_model": "Generic ToolChanger Printer", + "nozzle_diameter": [ + "0.4", + "0.4", + "0.4", + "0.4", + "0.4" + ], + "printer_variant": "0.4", + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "300" +} \ No newline at end of file diff --git a/resources/profiles/Custom/machine/MyToolChanger 0.6 nozzle.json b/resources/profiles/Custom/machine/MyToolChanger 0.6 nozzle.json new file mode 100644 index 0000000000..b8d387573f --- /dev/null +++ b/resources/profiles/Custom/machine/MyToolChanger 0.6 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "setting_id": "GM_CUSTOM_003", + "name": "MyToolChanger 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_toolchanger_common", + "printer_model": "Generic ToolChanger Printer", + "nozzle_diameter": [ + "0.6", + "0.6", + "0.6", + "0.6", + "0.6" + ], + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.12" + ], + "printer_variant": "0.6", + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "300" +} \ No newline at end of file diff --git a/resources/profiles/Custom/machine/MyToolChanger 0.8 nozzle.json b/resources/profiles/Custom/machine/MyToolChanger 0.8 nozzle.json new file mode 100644 index 0000000000..2ce7029dce --- /dev/null +++ b/resources/profiles/Custom/machine/MyToolChanger 0.8 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "setting_id": "GM_CUSTOM_004", + "name": "MyToolChanger 0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_toolchanger_common", + "printer_model": "Generic ToolChanger Printer", + "nozzle_diameter": [ + "0.8", + "0.8", + "0.8", + "0.8", + "0.8" + ], + "max_layer_height": [ + "0.6" + ], + "min_layer_height": [ + "0.2" + ], + "printer_variant": "0.8", + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "300" +} \ No newline at end of file diff --git a/resources/profiles/Custom/machine/MyToolChanger.json b/resources/profiles/Custom/machine/MyToolChanger.json new file mode 100644 index 0000000000..9c927e4be2 --- /dev/null +++ b/resources/profiles/Custom/machine/MyToolChanger.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Generic ToolChanger Printer", + "model_id": "my_toolchanger_01", + "nozzle_diameter": "0.4;0.2;0.6;0.8", + "machine_tech": "FFF", + "family": "MyPrinter", + "bed_model": "Custom_350_bed.stl", + "bed_texture": "orcaslicer_bed_texture.svg", + "hotend_model": "", + "default_materials": "My Generic PLA @MyToolChanger;My Generic ABS @MyToolChanger;My Generic PLA-CF @MyToolChanger;My Generic PETG @MyToolChanger;My Generic TPU @MyToolChanger;My Generic ASA @MyToolChanger;My Generic PC @MyToolChanger;My Generic PVA @MyToolChanger;My Generic PA @MyToolChanger;My Generic PA-CF @MyToolChanger" +} diff --git a/resources/profiles/Custom/machine/fdm_toolchanger_common.json b/resources/profiles/Custom/machine/fdm_toolchanger_common.json new file mode 100644 index 0000000000..9d724ed88f --- /dev/null +++ b/resources/profiles/Custom/machine/fdm_toolchanger_common.json @@ -0,0 +1,189 @@ +{ + "type": "machine", + "name": "fdm_toolchanger_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_klipper_common", + "gcode_flavor": "klipper", + "single_extruder_multi_material": "0", + "default_filament_profile": [ + "My Generic PLA @MyToolChanger" + ], + "default_print_profile": "0.20mm Standard @MyToolChanger", + "max_layer_height": [ + "0.32", + "0.32", + "0.32", + "0.32", + "0.32" + ], + "min_layer_height": [ + "0.08", + "0.08", + "0.08", + "0.08", + "0.08" + ], + "deretraction_speed": [ + "30", + "30", + "30", + "30", + "30" + ], + "extruder_colour": [ + "#FCE94F", + "#FCE94F", + "#FCE94F", + "#FCE94F", + "#FCE94F" + ], + "extruder_offset": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ], + "long_retractions_when_cut": [ + "0", + "0", + "0", + "0", + "0" + ], + "nozzle_diameter": [ + "0.4", + "0.4", + "0.4", + "0.4", + "0.4" + ], + "retract_before_wipe": [ + "70%", + "70%", + "70%", + "70%", + "70%" + ], + "retract_length_toolchange": [ + "2", + "2", + "2", + "2", + "2" + ], + "retract_lift_above": [ + "0", + "0", + "0", + "0", + "0" + ], + "retract_lift_below": [ + "0", + "0", + "0", + "0", + "0" + ], + "retract_lift_enforce": [ + "All Surfaces", + "All Surfaces", + "All Surfaces", + "All Surfaces", + "All Surfaces" + ], + "retract_restart_extra": [ + "0", + "0", + "0", + "0", + "0" + ], + "retract_restart_extra_toolchange": [ + "0", + "0", + "0", + "0", + "0" + ], + "retract_when_changing_layer": [ + "1", + "1", + "1", + "1", + "1" + ], + "retraction_distances_when_cut": [ + "18", + "18", + "18", + "18", + "18" + ], + "retraction_length": [ + "0.8", + "0.8", + "0.8", + "0.8", + "0.8" + ], + "retraction_minimum_travel": [ + "1", + "1", + "1", + "1", + "1" + ], + "retraction_speed": [ + "30", + "30", + "30", + "30", + "30" + ], + "travel_slope": [ + "3", + "3", + "3", + "3", + "3" + ], + "version": "2.1.1.1", + "wipe": [ + "1", + "1", + "1", + "1", + "1" + ], + "wipe_distance": [ + "1", + "1", + "1", + "1", + "1" + ], + "z_hop": [ + "0.4", + "0.4", + "0.4", + "0.4", + "0.4" + ], + "z_hop_types": [ + "Normal Lift", + "Normal Lift", + "Normal Lift", + "Normal Lift", + "Normal Lift" + ], + "purge_in_prime_tower": "0", + "machine_pause_gcode": "M601", + "machine_start_gcode": "PRINT_START TOOL_TEMP={first_layer_temperature[initial_tool]} {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif} {if is_extruder_used[2]}T2_TEMP={first_layer_temperature[2]}{endif} {if is_extruder_used[3]}T3_TEMP={first_layer_temperature[3]}{endif} {if is_extruder_used[4]}T4_TEMP={first_layer_temperature[4]}{endif} {if is_extruder_used[5]}T5_TEMP={first_layer_temperature[5]}{endif} BED_TEMP=[first_layer_bed_temperature] TOOL=[initial_tool]\n\n", + "change_filament_gcode": "M104 S{nozzle_temperature[next_extruder]} T[next_extruder] ; set new tool temperature so it can start heating while changing", + "scan_first_layer": "0", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.08mm Extra Fine @MyToolChanger.json b/resources/profiles/Custom/process/0.08mm Extra Fine @MyToolChanger.json new file mode 100644 index 0000000000..4ce1736916 --- /dev/null +++ b/resources/profiles/Custom/process/0.08mm Extra Fine @MyToolChanger.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.08mm Extra Fine @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "layer_height": "0.08", + "bottom_shell_layers": "7", + "top_shell_layers": "9", + "support_top_z_distance": "0.08", + "support_bottom_z_distance": "0.08", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.12mm Fine @MyToolChanger.json b/resources/profiles/Custom/process/0.12mm Fine @MyToolChanger.json new file mode 100644 index 0000000000..1117ba588f --- /dev/null +++ b/resources/profiles/Custom/process/0.12mm Fine @MyToolChanger.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Fine @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "layer_height": "0.12", + "bottom_shell_layers": "5", + "top_shell_layers": "6", + "support_top_z_distance": "0.08", + "support_bottom_z_distance": "0.08", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.15mm Optimal @MyToolChanger.json b/resources/profiles/Custom/process/0.15mm Optimal @MyToolChanger.json new file mode 100644 index 0000000000..13254161c8 --- /dev/null +++ b/resources/profiles/Custom/process/0.15mm Optimal @MyToolChanger.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Optimal @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "layer_height": "0.15", + "support_top_z_distance": "0.15", + "support_bottom_z_distance": "0.15", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.16mm Optimal @MyToolChanger.json b/resources/profiles/Custom/process/0.16mm Optimal @MyToolChanger.json new file mode 100644 index 0000000000..f3fa8058a5 --- /dev/null +++ b/resources/profiles/Custom/process/0.16mm Optimal @MyToolChanger.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "support_top_z_distance": "0.16", + "support_bottom_z_distance": "0.16", + "layer_height": "0.16", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.20mm Standard @MyToolChanger.json b/resources/profiles/Custom/process/0.20mm Standard @MyToolChanger.json new file mode 100644 index 0000000000..812886e486 --- /dev/null +++ b/resources/profiles/Custom/process/0.20mm Standard @MyToolChanger.json @@ -0,0 +1,14 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @MyToolChanger", + "from": "system", + "inherits": "fdm_process_mytoolchanger_common", + "instantiation": "true", + "layer_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} diff --git a/resources/profiles/Custom/process/0.24mm Draft @MyToolChanger.json b/resources/profiles/Custom/process/0.24mm Draft @MyToolChanger.json new file mode 100644 index 0000000000..af372cc109 --- /dev/null +++ b/resources/profiles/Custom/process/0.24mm Draft @MyToolChanger.json @@ -0,0 +1,17 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "layer_height": "0.24", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.28mm Extra Draft @MyToolChanger.json b/resources/profiles/Custom/process/0.28mm Extra Draft @MyToolChanger.json new file mode 100644 index 0000000000..71f435467b --- /dev/null +++ b/resources/profiles/Custom/process/0.28mm Extra Draft @MyToolChanger.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.28mm Extra Draft @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "layer_height": "0.28", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.32mm Extra Draft @MyToolChanger.json b/resources/profiles/Custom/process/0.32mm Extra Draft @MyToolChanger.json new file mode 100644 index 0000000000..d5282eecef --- /dev/null +++ b/resources/profiles/Custom/process/0.32mm Extra Draft @MyToolChanger.json @@ -0,0 +1,17 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.32mm Standard @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "support_top_z_distance": "0.24", + "support_bottom_z_distance": "0.24", + "layer_height": "0.32", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.40mm Extra Draft @MyToolChanger.json b/resources/profiles/Custom/process/0.40mm Extra Draft @MyToolChanger.json new file mode 100644 index 0000000000..940d51d8bf --- /dev/null +++ b/resources/profiles/Custom/process/0.40mm Extra Draft @MyToolChanger.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.40mm Standard @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "support_top_z_distance": "0.24", + "support_bottom_z_distance": "0.24", + "layer_height": "0.40", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/0.56mm Extra Draft @MyToolChanger.json b/resources/profiles/Custom/process/0.56mm Extra Draft @MyToolChanger.json new file mode 100644 index 0000000000..ea4ba5c07d --- /dev/null +++ b/resources/profiles/Custom/process/0.56mm Extra Draft @MyToolChanger.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.56mm Standard @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_mytoolchanger_common", + "support_top_z_distance": "0.24", + "support_bottom_z_distance": "0.24", + "layer_height": "0.56", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "MyToolChanger 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Custom/process/fdm_process_mytoolchanger_common.json b/resources/profiles/Custom/process/fdm_process_mytoolchanger_common.json new file mode 100644 index 0000000000..9d6e497afe --- /dev/null +++ b/resources/profiles/Custom/process/fdm_process_mytoolchanger_common.json @@ -0,0 +1,27 @@ +{ + "type": "process", + "name": "fdm_process_mytoolchanger_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_klipper_common", + "default_acceleration": "5000", + "top_surface_acceleration": "3000", + "travel_acceleration": "7000", + "inner_wall_acceleration": "5000", + "outer_wall_acceleration": "3000", + "initial_layer_acceleration": "500", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "105", + "outer_wall_speed": "120", + "inner_wall_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "100", + "gap_infill_speed": "100", + "sparse_infill_speed": "200", + "travel_speed": "350", + "exclude_object": "1", + "enable_prime_tower": "1", + "wipe_tower_cone_angle": "25", + "wipe_tower_extra_spacing": "150%", + "wipe_tower_rotation_angle": "90" +} \ No newline at end of file From ff6ca4aa071f14b75bff000fa824ce747b75008c Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 10 Jul 2024 21:17:04 +0800 Subject: [PATCH 010/151] ooze prevention update: sync with PrusaSlicer --- src/libslic3r/GCode.cpp | 69 +++++++++-------------------------------- src/libslic3r/GCode.hpp | 3 +- 2 files changed, 16 insertions(+), 56 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index c9c48fce7d..1d7dc09f0e 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -256,30 +256,15 @@ static std::vector get_path_of_change_filament(const Print& print) { std::string gcode; - // move to the nearest standby point - if (!this->standby_points.empty()) { - // get current position in print coordinates - Vec3d writer_pos = gcodegen.writer().get_position(); - Point pos = Point::new_scale(writer_pos(0), writer_pos(1)); - - // find standby point - Point standby_point; - pos.nearest_point(this->standby_points, &standby_point); - - /* We don't call gcodegen.travel_to() because we don't need retraction (it was already - triggered by the caller) nor reduce_crossing_wall and also because the coordinates - of the destination point must not be transformed by origin nor current extruder offset. */ - gcode += gcodegen.writer().travel_to_xy(unscale(standby_point), - "move to standby position"); - } unsigned int extruder_id = gcodegen.writer().extruder()->id(); - const ConfigOptionInts& filament_idle_temp = gcodegen.config().idle_temperature; - - if (filament_idle_temp.get_at(extruder_id) == 0) { + const auto& filament_idle_temp = gcodegen.config().idle_temperature; + if (filament_idle_temp.get_at(extruder_id) > 0) { + // There is no idle temperature defined in filament settings. + // Use the delta value from print config. if (gcodegen.config().standby_temperature_delta.value != 0) { // we assume that heating is always slower than cooling, so no need to block - gcode += gcodegen.writer().set_temperature(this->_get_temp(gcodegen) + gcodegen.config().standby_temperature_delta.value, - false, gcodegen.writer().extruder()->id()); + gcode += gcodegen.writer().set_temperature + (this->_get_temp(gcodegen) + gcodegen.config().standby_temperature_delta.value, false, extruder_id); gcode.pop_back(); gcode += " ;cooldown\n"; // this is a marker for GCodeProcessor, so it can supress the commands when needed } @@ -300,14 +285,16 @@ static std::vector get_path_of_change_filament(const Print& print) std::string(); } - int - OozePrevention::_get_temp(GCode& gcodegen) + int OozePrevention::_get_temp(const GCode &gcodegen) const { - return (gcodegen.layer() != NULL && gcodegen.layer()->id() == 0) + // First layer temperature should be used when on the first layer (obviously) and when + // "other layers" is set to zero (which means it should not be used). + return (gcodegen.layer() == nullptr || gcodegen.layer()->id() == 0 + || gcodegen.config().nozzle_temperature.get_at(gcodegen.writer().extruder()->id()) == 0) ? gcodegen.config().nozzle_temperature_initial_layer.get_at(gcodegen.writer().extruder()->id()) : gcodegen.config().nozzle_temperature.get_at(gcodegen.writer().extruder()->id()); } - + // Orca: // Function to calculate the excess retraction length that should be retracted either before or after wiping // in order for the wipe operation to respect the filament retraction speed @@ -1732,34 +1719,7 @@ namespace DoExport { static void init_ooze_prevention(const Print &print, OozePrevention &ooze_prevention) { - // Calculate wiping points if needed - if (print.config().ooze_prevention.value && ! print.config().single_extruder_multi_material) { - Points skirt_points; - for (const ExtrusionEntity *ee : print.skirt().entities) - for (const ExtrusionPath &path : dynamic_cast(ee)->paths) - append(skirt_points, path.polyline.points); - if (! skirt_points.empty()) { - Polygon outer_skirt = Slic3r::Geometry::convex_hull(skirt_points); - Polygons skirts; - for (unsigned int extruder_id : print.extruders()) { - const Vec2d &extruder_offset = print.config().extruder_offset.get_at(extruder_id); - Polygon s(outer_skirt); - s.translate(Point::new_scale(-extruder_offset(0), -extruder_offset(1))); - skirts.emplace_back(std::move(s)); - } - ooze_prevention.enable = true; - ooze_prevention.standby_points = offset(Slic3r::Geometry::convex_hull(skirts), float(scale_(3.))).front().equally_spaced_points(float(scale_(10.))); - #if 0 - require "Slic3r/SVG.pm"; - Slic3r::SVG::output( - "ooze_prevention.svg", - red_polygons => \@skirts, - polygons => [$outer_skirt], - points => $gcodegen->ooze_prevention->standby_points, - ); - #endif - } - } + ooze_prevention.enable = print.config().ooze_prevention.value && ! print.config().single_extruder_multi_material; } // Fill in print_statistics and return formatted string containing filament statistics to be inserted into G-code comment section. @@ -3776,7 +3736,8 @@ LayerResult GCode::process_layer( // Transition from 1st to 2nd layer. Adjust nozzle temperatures as prescribed by the nozzle dependent // nozzle_temperature_initial_layer vs. temperature settings. for (const Extruder &extruder : m_writer.extruders()) { - if (print.config().single_extruder_multi_material.value && extruder.id() != m_writer.extruder()->id()) + if ((print.config().single_extruder_multi_material.value || m_ooze_prevention.enable) && + extruder.id() != m_writer.extruder()->id()) // In single extruder multi material mode, set the temperature for the current extruder only. continue; int temperature = print.config().nozzle_temperature.get_at(extruder.id()); diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 18ea653546..9fff855040 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -43,14 +43,13 @@ class ConstPrintObjectPtrsAdaptor; class OozePrevention { public: bool enable; - Points standby_points; OozePrevention() : enable(false) {} std::string pre_toolchange(GCode &gcodegen); std::string post_toolchange(GCode &gcodegen); private: - int _get_temp(GCode &gcodegen); + int _get_temp(const GCode &gcodegen) const; }; class Wipe { From 09116e5931a41c239d43c9821441527101acd3b8 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 10 Jul 2024 21:37:06 +0800 Subject: [PATCH 011/151] tweak UI --- .../Generic ToolChanger Printer_cover.png | Bin 0 -> 118525 bytes src/libslic3r/PrintConfig.cpp | 10 ++- src/slic3r/GUI/ConfigManipulation.cpp | 10 ++- src/slic3r/GUI/Tab.cpp | 61 +++++++++--------- 4 files changed, 42 insertions(+), 39 deletions(-) create mode 100644 resources/profiles/Custom/Generic ToolChanger Printer_cover.png diff --git a/resources/profiles/Custom/Generic ToolChanger Printer_cover.png b/resources/profiles/Custom/Generic ToolChanger Printer_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..508720da28d162892bc33e7176b26b23dcac83f1 GIT binary patch literal 118525 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 F{{Yp%WZ3`! literal 0 HcmV?d00001 diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index bc34ccc6ed..4045f41e33 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3355,10 +3355,8 @@ void PrintConfigDef::init_fff_params() def = this->add("ooze_prevention", coBool); def->label = L("Enable"); - //def->tooltip = L("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."); - def->mode = comDevelop; + def->tooltip = L("This option will drop the temperature of the inactive extruders to prevent oozing."); + def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); def = this->add("filename_format", coString); @@ -4002,7 +4000,7 @@ void PrintConfigDef::init_fff_params() def->category = "Extruders"; def->tooltip = "Filament to print solid infill"; def->min = 1; - def->mode = comDevelop; + def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); def = this->add("internal_solid_infill_line_width", coFloatOrPercent); @@ -4079,7 +4077,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = "∆°C"; def->min = -max_temp; def->max = max_temp; - def->mode = comDevelop; + def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(-5)); def = this->add("machine_start_gcode", coString); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 4752e24c0b..796a11ff0b 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -672,7 +672,13 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool have_prime_tower = config->opt_bool("enable_prime_tower"); for (auto el : { "prime_tower_width", "prime_tower_brim_width"}) toggle_line(el, have_prime_tower); - + + auto bSEMM = preset_bundle->printers.get_edited_preset().config.opt_bool("single_extruder_multi_material"); + toggle_field("purge_in_prime_tower", bSEMM); + + for (auto el : {"wall_filament", "sparse_infill_filament", "solid_infill_filament", "wipe_tower_filament"}) + toggle_line(el, !bSEMM); + bool purge_in_primetower = preset_bundle->printers.get_edited_preset().config.opt_bool("purge_in_prime_tower"); for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", @@ -682,7 +688,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co "single_extruder_multi_material_priming"}) toggle_line(el, have_prime_tower); - toggle_line("prime_volume",have_prime_tower && !purge_in_primetower); + toggle_line("prime_volume",have_prime_tower && (!purge_in_primetower || !bSEMM)); for (auto el : {"flush_into_infill", "flush_into_support", "flush_into_objects"}) toggle_field(el, have_prime_tower); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 26e3ec001c..1e5384bc06 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1656,9 +1656,7 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) //Orca: sync filament num if it's a multi tool printer if (opt_key == "extruders_count" && !m_config->opt_bool("single_extruder_multi_material")){ auto num_extruder = boost::any_cast(value); - wxColour new_col = Plater::get_next_color_for_filament(); - std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); - wxGetApp().preset_bundle->set_num_filaments(num_extruder, new_color); + wxGetApp().preset_bundle->set_num_filaments(num_extruder); wxGetApp().plater()->on_filaments_change(num_extruder); wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); @@ -2277,22 +2275,7 @@ void TabPrint::build() optgroup->append_single_option_line("tree_support_auto_brim"); optgroup->append_single_option_line("tree_support_brim_width"); - page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Skirt"), L"param_skirt"); - optgroup->append_single_option_line("skirt_loops"); - optgroup->append_single_option_line("min_skirt_length"); - optgroup->append_single_option_line("skirt_distance"); - optgroup->append_single_option_line("skirt_height"); - optgroup->append_single_option_line("skirt_speed"); - optgroup->append_single_option_line("draft_shield"); - - optgroup = page->new_optgroup(L("Brim"), L"param_adhension"); - optgroup->append_single_option_line("brim_type", "auto-brim"); - optgroup->append_single_option_line("brim_width", "auto-brim#manual"); - optgroup->append_single_option_line("brim_object_gap", "auto-brim#brim-object-gap"); - optgroup->append_single_option_line("brim_ears_max_angle"); - optgroup->append_single_option_line("brim_ears_detection_length"); - + page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Prime tower"), L"param_tower"); optgroup->append_single_option_line("enable_prime_tower"); optgroup->append_single_option_line("prime_tower_width"); @@ -2321,6 +2304,31 @@ void TabPrint::build() optgroup->append_single_option_line("flush_into_infill", "reduce-wasting-during-filament-change#wipe-into-infill"); optgroup->append_single_option_line("flush_into_objects", "reduce-wasting-during-filament-change#wipe-into-object"); optgroup->append_single_option_line("flush_into_support", "reduce-wasting-during-filament-change#wipe-into-support-enabled-by-default"); + optgroup = page->new_optgroup(L("Advanced"), L"advanced"); + optgroup->append_single_option_line("interlocking_beam"); + optgroup->append_single_option_line("mmu_segmented_region_max_width"); + optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth"); + optgroup->append_single_option_line("interlocking_beam_width"); + optgroup->append_single_option_line("interlocking_orientation"); + optgroup->append_single_option_line("interlocking_beam_layer_count"); + optgroup->append_single_option_line("interlocking_depth"); + optgroup->append_single_option_line("interlocking_boundary_avoidance"); + +page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only visible on placeholders + optgroup = page->new_optgroup(L("Skirt"), L"param_skirt"); + optgroup->append_single_option_line("skirt_loops"); + optgroup->append_single_option_line("min_skirt_length"); + optgroup->append_single_option_line("skirt_distance"); + optgroup->append_single_option_line("skirt_height"); + optgroup->append_single_option_line("skirt_speed"); + optgroup->append_single_option_line("draft_shield"); + + optgroup = page->new_optgroup(L("Brim"), L"param_adhension"); + optgroup->append_single_option_line("brim_type", "auto-brim"); + optgroup->append_single_option_line("brim_width", "auto-brim#manual"); + optgroup->append_single_option_line("brim_object_gap", "auto-brim#brim-object-gap"); + optgroup->append_single_option_line("brim_ears_max_angle"); + optgroup->append_single_option_line("brim_ears_detection_length"); optgroup = page->new_optgroup(L("Special mode"), L"param_special"); optgroup->append_single_option_line("slicing_mode"); @@ -2336,16 +2344,6 @@ void TabPrint::build() optgroup->append_single_option_line("fuzzy_skin_thickness"); optgroup->append_single_option_line("fuzzy_skin_first_layer"); - optgroup = page->new_optgroup(L("Advanced"), L"advanced"); - optgroup->append_single_option_line("interlocking_beam"); - optgroup->append_single_option_line("mmu_segmented_region_max_width"); - optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth"); - optgroup->append_single_option_line("interlocking_beam_width"); - optgroup->append_single_option_line("interlocking_orientation"); - optgroup->append_single_option_line("interlocking_beam_layer_count"); - optgroup->append_single_option_line("interlocking_depth"); - optgroup->append_single_option_line("interlocking_boundary_avoidance"); - optgroup = page->new_optgroup(L("G-code output"), L"param_gcode"); optgroup->append_single_option_line("reduce_infill_retraction"); optgroup->append_single_option_line("gcode_add_line_number"); @@ -2365,13 +2363,13 @@ void TabPrint::build() option.opt.is_code = true; option.opt.height = 15; optgroup->append_single_option_line(option); - page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders + optgroup = page->new_optgroup(L("Notes"), "note", 0); option = optgroup->get_option("notes"); option.opt.full_width = true; option.opt.height = 25;//250; optgroup->append_single_option_line(option); - + #if 0 //page = add_options_page(L("Dependencies"), "advanced.png"); // optgroup = page->new_optgroup(L("Profile dependencies")); @@ -4459,6 +4457,7 @@ void TabPrinter::toggle_options() } toggle_option("extruders_count", !bSEMM); toggle_option("manual_filament_change", bSEMM); + toggle_option("purge_in_prime_tower", bSEMM); } wxString extruder_number; long val = 1; From 549b8e0799cdb70bc28eb59bdf10790d4aeb58b6 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 10 Jul 2024 21:51:18 +0800 Subject: [PATCH 012/151] update cover image bg --- .../Generic ToolChanger Printer_cover.png | Bin 118525 -> 132945 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/profiles/Custom/Generic ToolChanger Printer_cover.png b/resources/profiles/Custom/Generic ToolChanger Printer_cover.png index 508720da28d162892bc33e7176b26b23dcac83f1..cf85288d7ae1eff989cc5bcc8444773b8785bcac 100644 GIT binary patch literal 132945 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 AtN;K2 literal 118525 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 F{{Yp%WZ3`! From e5b455fac67f0cdf8cacee5172aa59f7ff0ff21f Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Thu, 11 Jul 2024 01:04:47 +0900 Subject: [PATCH 013/151] Fix typos (#5998) * Fix typos * Update translation files appropriately * Fix more 'fond's with 'found's * Fix typos * Fix duplicate message error --- localization/i18n/OrcaSlicer.pot | 34 ++++++++---------- localization/i18n/ca/OrcaSlicer_ca.po | 34 ++++++++---------- localization/i18n/cs/OrcaSlicer_cs.po | 34 ++++++++---------- localization/i18n/de/OrcaSlicer_de.po | 34 ++++++++---------- localization/i18n/en/OrcaSlicer_en.po | 38 +++++++++----------- localization/i18n/es/OrcaSlicer_es.po | 34 ++++++++---------- localization/i18n/fr/OrcaSlicer_fr.po | 34 ++++++++---------- localization/i18n/hu/OrcaSlicer_hu.po | 38 +++++++++----------- localization/i18n/it/OrcaSlicer_it.po | 38 +++++++++----------- localization/i18n/ja/OrcaSlicer_ja.po | 38 +++++++++----------- localization/i18n/ko/OrcaSlicer_ko.po | 34 ++++++++---------- localization/i18n/nl/OrcaSlicer_nl.po | 36 ++++++++----------- localization/i18n/pl/OrcaSlicer_pl.po | 40 ++++++++------------- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 34 ++++++++---------- localization/i18n/ru/OrcaSlicer_ru.po | 34 ++++++++---------- localization/i18n/sv/OrcaSlicer_sv.po | 36 ++++++++----------- localization/i18n/tr/OrcaSlicer_tr.po | 32 +++++++---------- localization/i18n/uk/OrcaSlicer_uk.po | 34 ++++++++---------- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 34 ++++++++---------- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 34 ++++++++---------- src/admesh/normals.cpp | 2 +- src/libslic3r/Brim.cpp | 16 ++++----- src/libslic3r/Model.cpp | 6 ++-- src/libslic3r/Model.hpp | 2 +- src/libslic3r/PrintConfig.cpp | 2 +- src/slic3r/GUI/ConfigManipulation.cpp | 2 +- src/slic3r/GUI/CreatePresetsDialog.cpp | 6 ++-- src/slic3r/GUI/GUI_Factories.cpp | 6 ++-- src/slic3r/GUI/GUI_ObjectList.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoText.cpp | 2 +- src/slic3r/GUI/Jobs/PrintJob.cpp | 2 +- src/slic3r/GUI/Jobs/SendJob.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 4 +-- 35 files changed, 318 insertions(+), 444 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 49c7cb14a7..4eb026e183 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -587,7 +587,7 @@ msgstr "" msgid "%1%" msgstr "" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "" msgid "Operation already cancelling. Please wait few seconds." @@ -654,7 +654,7 @@ msgstr "" msgid "Horizontal text" msgstr "" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "" msgid "Rotate text" @@ -987,7 +987,7 @@ msgstr "" #, possible-boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" @@ -1590,7 +1590,7 @@ msgstr "" msgid "Wipe options" msgstr "" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "" msgid "Add part" @@ -1869,12 +1869,6 @@ msgstr "" msgid "Auto orient the object to improve print quality." msgstr "" -msgid "Split the selected object into mutiple objects" -msgstr "" - -msgid "Split the selected object into mutiple parts" -msgstr "" - msgid "Select All" msgstr "" @@ -2123,8 +2117,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "" msgstr[1] "" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "" msgstr[1] "" @@ -2550,7 +2544,7 @@ msgstr "" msgid "Service Unavailable" msgstr "" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "" msgid "Sending print configuration" @@ -3429,7 +3423,7 @@ msgid "" msgstr "" msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -5761,7 +5755,7 @@ msgid "" "Do you want to replace it?" msgstr "" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "" msgid "Delete object which is a part of cut object" @@ -5967,7 +5961,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" #, possible-boost-format @@ -10130,7 +10124,7 @@ msgstr "" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" msgid "Speed of initial layer except the solid infill part" @@ -13557,7 +13551,7 @@ msgstr "" msgid "Create Type" msgstr "" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "" msgid "Select Model" @@ -13606,10 +13600,10 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "" -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "" -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "" msgid "Printer Preset" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 3a1921c67d..1b9d913cf4 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -600,7 +600,7 @@ msgstr "Mostra estructura de xarxa" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "No es pot aplicar quan es previsualitza el processament." msgid "Operation already cancelling. Please wait few seconds." @@ -669,7 +669,7 @@ msgstr "Superfície" msgid "Horizontal text" msgstr "Text horitzontal" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Majúscules + Ratolí pujar o baixar" msgid "Rotate text" @@ -1015,7 +1015,7 @@ msgstr "Orientar/alinear el text vers la càmera." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "No es pot carregar exactament el mateix tipus de lletra( \"%1%\" ), " @@ -1663,7 +1663,7 @@ msgstr "Amplada de l'extrusió" msgid "Wipe options" msgstr "Opcions de purga" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Adhesió al llit" msgid "Add part" @@ -1950,12 +1950,6 @@ msgstr "" "Orientar/alinear automàticament l'objecte per millorar la qualitat " "d'impressió." -msgid "Split the selected object into mutiple objects" -msgstr "Partir l'objecte seleccionat en múltiples objectes" - -msgid "Split the selected object into mutiple parts" -msgstr "Partir l'objecte seleccionat en múltiples peces" - msgid "Select All" msgstr "Seleccionar-ho tot" @@ -2221,8 +2215,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "S'ha reparat el següent objecte del model" msgstr[1] "S'han reparat els següents objectes del model" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "No s'ha pogut reparar el següent objecte del model" msgstr[1] "No s'han pogut reparar els següents objectes del model" @@ -2679,7 +2673,7 @@ msgstr "Ha expirat el temps d'enviament de la tasca d'impressió." msgid "Service Unavailable" msgstr "Servei no disponible" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Error desconegut." msgid "Sending print configuration" @@ -3681,7 +3675,7 @@ msgstr "" "El valor es restablirà a 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6216,7 +6210,7 @@ msgstr "" "El fitxer %s ja existeix\n" "Vols substituir-lo?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Confirmar Desar Com" msgid "Delete object which is a part of cut object" @@ -6440,7 +6434,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "No s'ha pogut realitzar l'operació booleana a les malles del model. Només " "s'exportaran les parts positives. Proveu d'arreglar les malles i tornar-ho a " @@ -11422,7 +11416,7 @@ msgstr "Alçada de la capa inicial" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Alçada de la capa inicial. Fer que l'alçada inicial de la capa sigui " "lleugerament més gruixuda pot millorar l'adherència de la placa d'impressió" @@ -15667,7 +15661,7 @@ msgstr "Importar Perfil" msgid "Create Type" msgstr "Crea un Tipus" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "El model no s'ha trobat, torneu a triar proveïdor." msgid "Select Model" @@ -15718,10 +15712,10 @@ msgstr "No es troba la ruta predeterminada, torneu a seleccionar el proveïdor." msgid "The printer model was not found, please reselect." msgstr "No s'ha trobat el model d'impressora, torneu a seleccionar." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "El diàmetre del broquet no s'ha trobat, torneu a seleccionar-lo." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "El perfil de la impressora no s'ha trobat, torneu a seleccionar-lo." msgid "Printer Preset" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index bfaea6bdb4..484a81da9f 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -600,7 +600,7 @@ msgstr "Zobrazit drátěný model" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Nelze použít při náhledu procesu." msgid "Operation already cancelling. Please wait few seconds." @@ -669,7 +669,7 @@ msgstr "Povrch" msgid "Horizontal text" msgstr "Vodorovný text" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + pohyb myši nahoru nebo dolů" msgid "Rotate text" @@ -1008,7 +1008,7 @@ msgstr "Orientovat text směrem ke kameře." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Nelze načíst přesně stejné písmo(\"%1%\"). Aplikace vybrala podobné " @@ -1641,7 +1641,7 @@ msgstr "Šířka Extruze" msgid "Wipe options" msgstr "Možnosti čištění" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Přilnavost k Podložce" msgid "Add part" @@ -1920,12 +1920,6 @@ msgstr "Automatická orientace" msgid "Auto orient the object to improve print quality." msgstr "Automaticky orientovat objekt pro zlepšení kvality tisku." -msgid "Split the selected object into mutiple objects" -msgstr "Rozdělit vybraný objekt na více objektů" - -msgid "Split the selected object into mutiple parts" -msgstr "Rozdělit vybraný objekt na více částí" - msgid "Select All" msgstr "Vybrat vše" @@ -2192,8 +2186,8 @@ msgstr[0] "Následující objekt modelu byl opraven" msgstr[1] "Následující objekty modelu byly opraveny" msgstr[2] "Následující objekty modelu byly opraveny" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Nepodařilo se opravit následující objekt modelu" msgstr[1] "Nepodařilo se opravit následující objekty modelu" msgstr[2] "Nepodařilo se opravit následující objekty modelu" @@ -2644,7 +2638,7 @@ msgstr "" msgid "Service Unavailable" msgstr "Služba není k dispozici" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Neznámá chyba." msgid "Sending print configuration" @@ -3613,7 +3607,7 @@ msgstr "" "Hodnota bude resetována na 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6082,7 +6076,7 @@ msgid "" "Do you want to replace it?" msgstr "" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "" msgid "Delete object which is a part of cut object" @@ -6303,7 +6297,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" #, boost-format @@ -10907,7 +10901,7 @@ msgstr "Výška první vrstvy" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Výška první vrstvy. Mírně tlustá první vrstva může zlepšit přilnavost k " "podložce" @@ -14831,7 +14825,7 @@ msgstr "" msgid "Create Type" msgstr "" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "" msgid "Select Model" @@ -14880,10 +14874,10 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "" -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "" -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "" msgid "Printer Preset" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index eb48d9845d..a318d283c8 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -601,7 +601,7 @@ msgstr "Gittermodell anzeigen" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Kann nicht angewendet werden, wenn die Vorschau angezeigt wird." msgid "Operation already cancelling. Please wait few seconds." @@ -670,7 +670,7 @@ msgstr "Oberfläche" msgid "Horizontal text" msgstr "Horizontaler Text" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Umschalttaste + Mausbewegung nach oben oder unten" msgid "Rotate text" @@ -1016,7 +1016,7 @@ msgstr "Ortne den Text zur Kamera aus." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Kann genau dieselbe Schriftart (\"%1%\") nicht laden. Die Anwendung hat eine " @@ -1662,7 +1662,7 @@ msgstr "Extrusionsbreite" msgid "Wipe options" msgstr "Wischoptionen" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Druckbetthaftung" msgid "Add part" @@ -1950,12 +1950,6 @@ msgid "Auto orient the object to improve print quality." msgstr "" "Automatische Ausrichtung des Objekts zur Verbesserung der Druckqualität." -msgid "Split the selected object into mutiple objects" -msgstr "Das ausgewählte Objekt in mehrere Objekte aufteilen" - -msgid "Split the selected object into mutiple parts" -msgstr "Das ausgewählte Objekt in mehrere Teile aufteilen" - msgid "Select All" msgstr "Alle auswählen" @@ -2232,8 +2226,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "Das folgende Modellobjekt wurde repariert" msgstr[1] "Die folgenden Modellobjekte wurde repariert" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Reparatur des folgenden Modellobjekts fehlgeschlagen" msgstr[1] "Reparatur der folgenden Modellobjekte fehlgeschlagen" @@ -2699,7 +2693,7 @@ msgstr "Zeitüberschreitung beim Senden des Druckauftrags." msgid "Service Unavailable" msgstr "Der Dienst ist nicht verfügbar" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Unbekannter Fehler." msgid "Sending print configuration" @@ -3719,7 +3713,7 @@ msgstr "" "Der Wert 0 setz zurück." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6277,7 +6271,7 @@ msgstr "" "Die Datei %s existiert bereits\n" "Möchten Sie sie ersetzen?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Bestätigen Sie Speichern unter" msgid "Delete object which is a part of cut object" @@ -6507,7 +6501,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Die Boolesche Operation auf den Modellnetzen kann nicht durchgeführt werden. " "Nur positive Teile werden beibehalten. Sie können die Netze reparieren und " @@ -11518,7 +11512,7 @@ msgstr "Höhe der ersten Schicht" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Höhe der ersten Schicht. Eine etwas dickere erste Schicht kann die Haftung " "der Druckplatte verbessern" @@ -15786,7 +15780,7 @@ msgstr "Voreinstellung importieren" msgid "Create Type" msgstr "Typ erstellen" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "Das Modell ist nicht gefunden, bitte Hersteller erneut auswählen." msgid "Select Model" @@ -15835,10 +15829,10 @@ msgstr "Voreinstellungspfad nicht gefunden, bitte Hersteller erneut auswählen." msgid "The printer model was not found, please reselect." msgstr "Das Druckermodell wurde nicht gefunden, bitte erneut auswählen." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "Der Düsendurchmesser ist nicht gefunden, bitte erneut auswählen." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "Die Druckervoreinstellung ist nicht gefunden, bitte erneut auswählen." msgid "Printer Preset" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 3cb23265a8..3ad19dc3f6 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -588,7 +588,7 @@ msgstr "Show wireframe" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Unable to apply when processing preview" msgid "Operation already cancelling. Please wait few seconds." @@ -655,8 +655,8 @@ msgstr "Surface" msgid "Horizontal text" msgstr "Horizontal text" -msgid "Shift + Mouse move up or dowm" -msgstr "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" +msgstr "Shift + Mouse move up or down" msgid "Rotate text" msgstr "Rotate text" @@ -988,7 +988,7 @@ msgstr "" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" @@ -1601,7 +1601,7 @@ msgstr "Extrusion width" msgid "Wipe options" msgstr "Wipe options" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Bed adhesion" msgid "Add part" @@ -1880,12 +1880,6 @@ msgstr "Auto orientation" msgid "Auto orient the object to improve print quality." msgstr "Auto orient the object to improve print quality." -msgid "Split the selected object into mutiple objects" -msgstr "Split the selected object into mutiple objects" - -msgid "Split the selected object into mutiple parts" -msgstr "Split the selected object into mutiple parts" - msgid "Select All" msgstr "Select All" @@ -2147,8 +2141,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "The following model object has been repaired" msgstr[1] "The following model objects have been repaired" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Failed to repair the following model object" msgstr[1] "Failed to repair the following model objects" @@ -2598,7 +2592,7 @@ msgstr "Print task sending times out." msgid "Service Unavailable" msgstr "Service Unavailable" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Unknown Error." msgid "Sending print configuration" @@ -3571,7 +3565,7 @@ msgstr "" "The value will be reset to 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6035,7 +6029,7 @@ msgstr "" "The file %s already exists.\n" "Do you want to replace it?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Confirm Save As" msgid "Delete object which is a part of cut object" @@ -6254,10 +6248,10 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -10780,7 +10774,7 @@ msgstr "First layer height" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "This is the height of the first layer. Making the first layer height thicker " "can improve build plate adhesion." @@ -14533,7 +14527,7 @@ msgstr "Import Preset" msgid "Create Type" msgstr "Create Type" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "The model was not found; please reselect vendor." msgid "Select Model" @@ -14582,10 +14576,10 @@ msgstr "Preset path was not found; please reselect vendor." msgid "The printer model was not found, please reselect." msgstr "The printer model was not found, please reselect." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "The nozzle diameter was not found; please reselect." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "The printer preset was not found; please reselect." msgid "Printer Preset" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 84d04a524e..a39f1db9f0 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -598,7 +598,7 @@ msgstr "Mostrar estructura de alambre" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "No se puede aplicar cuando la vista previa del proceso." msgid "Operation already cancelling. Please wait few seconds." @@ -667,7 +667,7 @@ msgstr "Superficie" msgid "Horizontal text" msgstr "Texto horizontal" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Mover ratón arriba u abajo" msgid "Rotate text" @@ -1016,7 +1016,7 @@ msgstr "Orienta el texto hacia la cámara." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "No se puede cargar exactamente la misma fuente(\"%1%\"). La aplicación " @@ -1676,7 +1676,7 @@ msgstr "Ancho de Extrusión" msgid "Wipe options" msgstr "Opciones de limpieza" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Adhesión a la cama" msgid "Add part" @@ -1962,12 +1962,6 @@ msgid "Auto orient the object to improve print quality." msgstr "" "Orienta automáticamente el objeto para mejorar la calidad de la impresión." -msgid "Split the selected object into mutiple objects" -msgstr "Dividir el objeto seleccionado en múltiples objetos" - -msgid "Split the selected object into mutiple parts" -msgstr "Dividir el objeto seleccionado en múltiples piezas" - msgid "Select All" msgstr "Seleccionar Todo" @@ -2238,8 +2232,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "Se ha reparado el siguiente modelo de objeto" msgstr[1] "Se han reparado los siguientes objetos del modelo" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "No se ha podido reparar el siguiente objeto modelo" msgstr[1] "No se han podido reparar los siguientes objetos del modelo" @@ -2703,7 +2697,7 @@ msgstr "Tarea de envío de impresión fallida." msgid "Service Unavailable" msgstr "Servicio No Disponible" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Error Desconocido." msgid "Sending print configuration" @@ -3709,7 +3703,7 @@ msgstr "" "El valor se restablecerá a 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6249,7 +6243,7 @@ msgstr "" "El archivo %s ya existe\n" "¿Desea reemplazarlo?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Salvar Como" msgid "Delete object which is a part of cut object" @@ -6474,7 +6468,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "No se pueden realizar operaciones booleanas en las mallas del modelo. Sólo " "se conservarán las partes positivas. Puede arreglar las mallas e intentarlo " @@ -11481,7 +11475,7 @@ msgstr "Altura de la primera capa" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Altura de la primera capa. Hacer que la altura de la primera capa sea " "ligeramente gruesa puede mejorar la adherencia de la bandeja de impresión" @@ -15748,7 +15742,7 @@ msgstr "Importar Perfil" msgid "Create Type" msgstr "Crear Tipo" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "No se encuentra el modelo, vuelva a seleccionar fabricante." msgid "Select Model" @@ -15800,11 +15794,11 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "No se ha encontrado el modelo de impresora, vuelva a seleccionarlo." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "" "El diámetro de la boquilla no es adecuado, vuelva a seleccionar el lugar." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "" "El perfil de impresora se ha encontrado, por favor, vuelva a seleccionarlo." diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index f78ba2011a..f7342ab1d7 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -601,7 +601,7 @@ msgstr "Afficher le maillage" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Ne peut pas s'appliquer lors du processus de prévisualisation." msgid "Operation already cancelling. Please wait few seconds." @@ -668,7 +668,7 @@ msgstr "Surface" msgid "Horizontal text" msgstr "Texte horizontal" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Maj + souris vers le haut ou vers le bas" msgid "Rotate text" @@ -1020,7 +1020,7 @@ msgstr "Orienter le texte vers la caméra." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Impossible de charger exactement la même police (« %1% »). L’application a " @@ -1677,7 +1677,7 @@ msgstr "Largeur d'Extrusion" msgid "Wipe options" msgstr "Options d’essuyage" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Adhérence au plateau" msgid "Add part" @@ -1965,12 +1965,6 @@ msgid "Auto orient the object to improve print quality." msgstr "" "Orientez automatiquement l'objet pour améliorer la qualité d'impression." -msgid "Split the selected object into mutiple objects" -msgstr "Diviser l'objet sélectionné en plusieurs objets" - -msgid "Split the selected object into mutiple parts" -msgstr "Diviser l'objet sélectionné en plusieurs parties" - msgid "Select All" msgstr "Tout sélectionner" @@ -2240,8 +2234,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "L'objet modèle suivant a été réparé" msgstr[1] "L'objet modèle suivant a été réparé" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Échec de la réparation de l'objet modèle suivant" msgstr[1] "Échec de la réparation des objets de modèle suivants" @@ -2701,7 +2695,7 @@ msgstr "L'envoi de la tâche d'impression est interrompu." msgid "Service Unavailable" msgstr "Service Indisponible" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Erreur inconnue." msgid "Sending print configuration" @@ -3709,7 +3703,7 @@ msgstr "" "La valeur sera remise à 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6259,7 +6253,7 @@ msgstr "" "Le fichier %s existe déjà\n" "Voulez-vous le remplacer ?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Confirmer Enregistrer sous" msgid "Delete object which is a part of cut object" @@ -6491,7 +6485,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Impossible d’effectuer une opération booléenne sur les mailles du modèle. " "Seules les parties positives seront conservées. Vous pouvez corriger les " @@ -11584,7 +11578,7 @@ msgstr "Hauteur de couche initiale" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Il s'agit de la hauteur de la première couche. L'augmentation de la hauteur " "de la première couche peut améliorer l'adhérence sur le plateau." @@ -15899,7 +15893,7 @@ msgstr "Importer un préréglage" msgid "Create Type" msgstr "Créer un type" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "Le modèle n’est pas trouvé, il faut resélectionner le fournisseur." msgid "Select Model" @@ -15952,10 +15946,10 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "Le modèle d’imprimante n’a pas été trouvé, veuillez resélectionner." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "Le diamètre de la buse n’est pas bon, resélectionner l’emplacement." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "Le préréglage de l’imprimante n’est pas bon, placez le préréglage." msgid "Printer Preset" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index a620210bec..fd8ad4391f 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -586,7 +586,7 @@ msgstr "Drótváz megjelenítése" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Nem használható folyamat előnézetben." msgid "Operation already cancelling. Please wait few seconds." @@ -654,8 +654,8 @@ msgstr "Surface" msgid "Horizontal text" msgstr "Horizontal text" -msgid "Shift + Mouse move up or dowm" -msgstr "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" +msgstr "Shift + Mouse move up or down" msgid "Rotate text" msgstr "Rotate text" @@ -987,7 +987,7 @@ msgstr "" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" @@ -1604,7 +1604,7 @@ msgstr "Extrudálási szélesség" msgid "Wipe options" msgstr "Törlés opciók" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Asztalra tapadás" msgid "Add part" @@ -1887,12 +1887,6 @@ msgid "Auto orient the object to improve print quality." msgstr "" "Az objektum automatikus tájolása a nyomtatási minőség javítása érdekében." -msgid "Split the selected object into mutiple objects" -msgstr "Szétválasztja a kijelölt objektumot több tárgyra" - -msgid "Split the selected object into mutiple parts" -msgstr "Szétválasztja a kijelölt objektumot több tárgyra" - msgid "Select All" msgstr "Összes kijelölése" @@ -2161,8 +2155,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "A következő modell sikeresen megjavítva" msgstr[1] "A következő modellek sikeresen megjavítva" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Nem sikerült megjavítani a következő modellt" msgstr[1] "Nem sikerült megjavítani a következő modelleket" @@ -2618,7 +2612,7 @@ msgstr "Időtúllépés a nyomtatási feladat küldése során." msgid "Service Unavailable" msgstr "Szolgáltatás nem elérhető" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Ismeretlen hiba." msgid "Sending print configuration" @@ -3608,7 +3602,7 @@ msgstr "" "Az érték 0-ra áll vissza." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6081,7 +6075,7 @@ msgstr "" "The file %s already exists.\n" "Do you want to replace it?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Mentés másként megerősítése" msgid "Delete object which is a part of cut object" @@ -6302,10 +6296,10 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -10913,7 +10907,7 @@ msgstr "Kezdő rétegmagasság" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Kezdőréteg magassága. A vastagabb kezdőréteg javíthatja a tárgy asztalhoz " "való tapadását" @@ -14729,7 +14723,7 @@ msgstr "Beállítás importálása" msgid "Create Type" msgstr "Típus létrehozása" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "The model was not found; please reselect vendor." msgid "Select Model" @@ -14781,10 +14775,10 @@ msgstr "Útvonal nem található. Kérjük, válaszd ki újra a gyártót." msgid "The printer model was not found, please reselect." msgstr "A nyomtató modellje nem található, kérjük, válaszd ki újra." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "The nozzle diameter was not found; please reselect." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "The printer preset was not found; please reselect." msgid "Printer Preset" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 1de55df5d2..5fe7273029 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -598,7 +598,7 @@ msgstr "Mostra wireframe" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Non si può applicare durante la creazione dell'anteprima." msgid "Operation already cancelling. Please wait few seconds." @@ -665,7 +665,7 @@ msgstr "Superficie" msgid "Horizontal text" msgstr "Testo orizzontale" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Sposta il mouse verso l'alto o il basso" msgid "Rotate text" @@ -1016,7 +1016,7 @@ msgstr "Orienta il testo verso di te." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Non è possibile caricare esattamente lo stesso font(\"%1%\"). L'applicazione " @@ -1665,7 +1665,7 @@ msgstr "Larghezza Estrusione" msgid "Wipe options" msgstr "Opzioni pulitura" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Adesione al piano" msgid "Add part" @@ -1950,12 +1950,6 @@ msgstr "Orientamento automatico" msgid "Auto orient the object to improve print quality." msgstr "Orienta automaticamente l'oggetto per migliorare la qualità di stampa." -msgid "Split the selected object into mutiple objects" -msgstr "Dividi l'oggetto selezionato in più oggetti" - -msgid "Split the selected object into mutiple parts" -msgstr "Dividi l'oggetto selezionato in più parti" - msgid "Select All" msgstr "Seleziona tutto" @@ -2229,8 +2223,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "Il seguente oggetto del modello è stato riparato" msgstr[1] "I seguenti oggetti del modello sono stati riparati" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Impossibile riparare il seguente oggetto modello" msgstr[1] "Impossibile riparare i seguenti oggetti modello" @@ -2685,7 +2679,7 @@ msgstr "Timeout dell'invio dell'attività di stampa." msgid "Service Unavailable" msgstr "Servizio non disponibile" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Errore sconosciuto." msgid "Sending print configuration" @@ -3696,7 +3690,7 @@ msgstr "" "Il valore verrà reimpostato su 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6210,8 +6204,8 @@ msgstr "" "Il file %s esiste già\n" "Vuoi sostituirlo?" -msgid "Comfirm Save As" -msgstr "Comfirm Salva con nome" +msgid "Confirm Save As" +msgstr "Confirm Salva con nome" msgid "Delete object which is a part of cut object" msgstr "Elimina l'oggetto che fa parte dell'oggetto tagliato" @@ -6435,10 +6429,10 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -11399,7 +11393,7 @@ msgstr "Altezza primo layer" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Questa è l'altezza layer iniziale. L'aumento dell'altezza del primo layer " "può migliorare l'adesione al piatto di stampa" @@ -15602,7 +15596,7 @@ msgstr "Importa Preset" msgid "Create Type" msgstr "Crea tipo" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "" "La modello non è stato trovato. Si prega di selezionare nuovamente il " "fornitore." @@ -15656,10 +15650,10 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "Il modello della stampante non è stato trovato, riselezionare." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "Il diametro del nozzle non trovato, riselezionare." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "" "La configurazione predefinita della stampante non è stata trovata. Per " "favore, seleziona nuovamente." diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 2a9c2b4942..2ef5610448 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -589,7 +589,7 @@ msgstr "ワイヤフレームを表示" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "プレビュー処理中は適用できません" msgid "Operation already cancelling. Please wait few seconds." @@ -656,8 +656,8 @@ msgstr "Surface" msgid "Horizontal text" msgstr "Horizontal text" -msgid "Shift + Mouse move up or dowm" -msgstr "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" +msgstr "Shift + Mouse move up or down" msgid "Rotate text" msgstr "Rotate text" @@ -1000,7 +1000,7 @@ msgstr "テキストの向きをカメラ側にする。" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "全く同じフォント(\"%1%\")を読み込むことができません。アプリケーションは似たよ" @@ -1618,7 +1618,7 @@ msgstr "押出線幅" msgid "Wipe options" msgstr "拭き上げ設定" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "ベッド接着" msgid "Add part" @@ -1897,12 +1897,6 @@ msgstr "自動向き調整" msgid "Auto orient the object to improve print quality." msgstr "オブジェクトの向きを自動的に調整する" -msgid "Split the selected object into mutiple objects" -msgstr "選択したオブジェクトを複数のオブジェクトに分割" - -msgid "Split the selected object into mutiple parts" -msgstr "選択したオブジェクトを複数のパーツに分割" - msgid "Select All" msgstr "全てを選択" @@ -2158,8 +2152,8 @@ msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" msgstr[0] "以下のモデルオブジェクトが修復されました。" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "以下のオブジェクトを修復てきませんでした" msgid "Repairing was canceled" @@ -2606,7 +2600,7 @@ msgstr "Print task sending times out." msgid "Service Unavailable" msgstr "サービスは利用できません" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "不明なエラー" msgid "Sending print configuration" @@ -3554,7 +3548,7 @@ msgstr "" "値を0にリセットします。" msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -5994,7 +5988,7 @@ msgstr "" "The file %s already exists.\n" "Do you want to replace it?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Confirm Save As" msgid "Delete object which is a part of cut object" @@ -6211,10 +6205,10 @@ msgstr "%sを送信しました、プリンターにて確認できます" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -10675,7 +10669,7 @@ msgstr "1層目の高さ" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "1層目の高さです。高さを大きくすればプレートとの接着性が良くなります。" msgid "Speed of initial layer except the solid infill part" @@ -14426,7 +14420,7 @@ msgstr "Import Preset" msgid "Create Type" msgstr "Create Type" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "The model was not found; please reselect vendor." msgid "Select Model" @@ -14475,10 +14469,10 @@ msgstr "Preset path was not found; please reselect vendor." msgid "The printer model was not found, please reselect." msgstr "The printer model was not found, please reselect." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "The nozzle diameter was not found; please reselect." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "The printer preset was not found; please reselect." msgid "Printer Preset" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 9e256b6c86..81bba4fe87 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -596,7 +596,7 @@ msgstr "와이어프레임 보기" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "미리 보기 진행 시 적용할 수 없습니다." msgid "Operation already cancelling. Please wait few seconds." @@ -665,7 +665,7 @@ msgstr "표면" msgid "Horizontal text" msgstr "가로 텍스트" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + 마우스 위 or 아래" msgid "Rotate text" @@ -1004,7 +1004,7 @@ msgstr "텍스트 방향을 카메라 쪽으로 향하게 합니다." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "정확히 동일한 글꼴(\"%1%\")을 로드할 수 없습니다. 응용 프로그램이 유사한 항목" @@ -1632,7 +1632,7 @@ msgstr "압출 너비" msgid "Wipe options" msgstr "닦기 옵션" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "베드 안착" msgid "Add part" @@ -1917,12 +1917,6 @@ msgstr "자동 방향 지정" msgid "Auto orient the object to improve print quality." msgstr "개체의 방향을 자동으로 지정하여 출력 품질을 향상시킵니다." -msgid "Split the selected object into mutiple objects" -msgstr "선택한 개체를 여러 개체로 분할" - -msgid "Split the selected object into mutiple parts" -msgstr "선택한 개체를 여러 부품으로 분할" - msgid "Select All" msgstr "모두 선택" @@ -2176,8 +2170,8 @@ msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" msgstr[0] "다음 모델 개체가 수리되었습니다" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "다음 모델 개체 교정을 실패하였습니다" msgid "Repairing was canceled" @@ -2621,7 +2615,7 @@ msgstr "출력 작업 전송 시간이 초과되었습니다." msgid "Service Unavailable" msgstr "서비스 사용 불가" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "알 수 없는 오류." msgid "Sending print configuration" @@ -3580,7 +3574,7 @@ msgstr "" "값이 0으로 재설정됩니다." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6041,7 +6035,7 @@ msgstr "" "파일 %s이(가) 이미 존재합니다.\n" "파일을 바꾸시겠습니까?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "다른 이름으로 저장 확인" msgid "Delete object which is a part of cut object" @@ -6263,7 +6257,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "모델 메쉬에 대해 부울 연산을 수행할 수 없습니다. 긍정적인 부분만 유지됩니다. " "메쉬를 수정하고 재시도해 볼 수 있습니다." @@ -10989,7 +10983,7 @@ msgstr "초기 레이어 높이" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "초기 레이어의 높이입니다. 초기 레이어 높이를 약간 두껍게 하면 빌드 플레이트 " "접착력을 향상시킬 수 있습니다" @@ -15007,7 +15001,7 @@ msgstr "사전 설정 가져오기" msgid "Create Type" msgstr "유형 생성" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "모델을 찾을 수 없습니다. 공급업체를 다시 선택하세요." msgid "Select Model" @@ -15056,10 +15050,10 @@ msgstr "사전 설정 경로를 찾을 수 없습니다. 공급업체를 다시 msgid "The printer model was not found, please reselect." msgstr "프린터 모델을 찾을 수 없습니다. 다시 선택하세요." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "노즐 직경이 마음에 들지 않으면 다시 선택하세요." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "프린터 사전 설정이 마음에 들지 않습니다. 다시 선택하세요." msgid "Printer Preset" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 0446d34be8..6831d65d50 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -589,7 +589,7 @@ msgstr "Draadmodel tonen" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Kan niet toepassen bij een voorvertoning." msgid "Operation already cancelling. Please wait few seconds." @@ -657,7 +657,7 @@ msgstr "Oppervlak" msgid "Horizontal text" msgstr "Horizontale tekst" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Muis op of neer" msgid "Rotate text" @@ -991,7 +991,7 @@ msgstr "" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" @@ -1615,7 +1615,7 @@ msgstr "Extrusiebreedte" msgid "Wipe options" msgstr "Veeg opties" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Printbed hechting" msgid "Add part" @@ -1897,12 +1897,6 @@ msgid "Auto orient the object to improve print quality." msgstr "" "Automatisch oriënteren van het object om de printkwaliteit te verbeteren." -msgid "Split the selected object into mutiple objects" -msgstr "Splits het geselecteerde object op in meerdere objecten" - -msgid "Split the selected object into mutiple parts" -msgstr "Splits het geselecteerde object op in meerdere onderdelen" - msgid "Select All" msgstr "Alles selecteren" @@ -2179,8 +2173,8 @@ msgstr[1] "" "De volgende model objecten zijn gerepareerd@De volgende model objecten zijn " "gerepareerd" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Repareren van de volgende modellen is mislukt@" msgstr[1] "Repareren van de volgende modellen is mislukt@" @@ -2635,7 +2629,7 @@ msgstr "Het verzenden van de printtaak loopt uit." msgid "Service Unavailable" msgstr "Service niet beschikbaar" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Onbekende fout." msgid "Sending print configuration" @@ -3638,7 +3632,7 @@ msgstr "" "De waarde wordt teruggezet naar 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6134,7 +6128,7 @@ msgstr "" "The file %s already exists.\n" "Do you want to replace it?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Opslaan als bevestigen" msgid "Delete object which is a part of cut object" @@ -6357,10 +6351,10 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -11014,7 +11008,7 @@ msgstr "Laaghoogte van de eerste laag" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Dit is de hoogte van de eerste laag. Door de hoogte van de eerste laag hoger " "te maken, kan de hechting op het printbed worden verbeterd." @@ -14861,7 +14855,7 @@ msgstr "Preset importeren" msgid "Create Type" msgstr "Type maken" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "The model was not found; please reselect vendor." msgid "Select Model" @@ -14910,10 +14904,10 @@ msgstr "Preset-pad niet gevonden; selecteer leverancier opnieuw." msgid "The printer model was not found, please reselect." msgstr "Het printermodel is niet gevonden, selecteer opnieuw." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "The nozzle diameter was not found; please reselect." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "The printer preset was not found; please reselect." msgid "Printer Preset" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index ab654ebdfe..34c2a6bc8d 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -600,7 +600,7 @@ msgstr "Pokaż siatkę" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Nie można zastosować w czasie podglądu procesu." msgid "Operation already cancelling. Please wait few seconds." @@ -669,7 +669,7 @@ msgstr "Powierzchnia" msgid "Horizontal text" msgstr "Tekst poziomy" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Przesuń myszką w górę lub w dół" msgid "Rotate text" @@ -1014,7 +1014,7 @@ msgstr "Orientuj tekst w moim kierunku." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Nie można załadować dokładnie tej samej czcionki (\"%1%\"). Aplikacja " @@ -1652,7 +1652,7 @@ msgstr "Szerokość ekstruzji" msgid "Wipe options" msgstr "Opcje czyszczenia" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Przyczepność do podłoża" msgid "Add part" @@ -1937,12 +1937,6 @@ msgstr "Automatyczna orientacja" msgid "Auto orient the object to improve print quality." msgstr "Automatyczna orientacja obiektu w celu poprawy jakości druku." -msgid "Split the selected object into mutiple objects" -msgstr "Podziel wybrany obiekt na wiele obiektów" - -msgid "Split the selected object into mutiple parts" -msgstr "Podziel wybrany obiekt na wiele części" - msgid "Select All" msgstr "Zaznacz wszystko" @@ -2213,8 +2207,8 @@ msgstr[0] "Następujący obiekt modelu został naprawiony" msgstr[1] "Następujące obiekty modelu zostały naprawione" msgstr[2] "Następujące obiekty modelu zostały naprawione" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Nie udało się naprawić następującego obiektu modelu" msgstr[1] "Nie udało się naprawić następujących obiektów modelu" msgstr[2] "Nie udało się naprawić następujących obiektów modelu" @@ -2676,7 +2670,7 @@ msgstr "Przekroczono limit czasu wysyłania zadania drukowania." msgid "Service Unavailable" msgstr "Usługa niedostępna" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Nieznany błąd." msgid "Sending print configuration" @@ -3678,7 +3672,7 @@ msgstr "" "Wartość zostanie zresetowana do 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6205,7 +6199,7 @@ msgstr "" "Plik %s już istnieje\n" "Czy chcesz go zastąpić?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Potwierdź Zapisz jako" msgid "Delete object which is a part of cut object" @@ -6428,7 +6422,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Nie można wykonać operacji boolowskich na siatkach modelu. Eksportowane będą " "tylko części dodatnie" @@ -11409,7 +11403,7 @@ msgstr "Wysokość pierwszej warstwy" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Wysokość pierwszej warstwy. Nieznaczne zwiększenie grubości pierwszej " "warstwy może poprawić przyczepność do stołu" @@ -15636,7 +15630,7 @@ msgstr "Importuj Profil wstępny" msgid "Create Type" msgstr "Utwórz Typ" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "Nie znaleziono modelu, proszę wybrać dostawcę ponownie." msgid "Select Model" @@ -15688,10 +15682,10 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "Model drukarki nie został znaleziony, proszę wybrać ponownie" -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "Średnica dyszy nie została znaleziona, proszę wybrać ponownie." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "Profil drukarki nie został znaleziony, proszę wybrać ponownie." msgid "Printer Preset" @@ -18520,12 +18514,6 @@ msgstr "" #~ "Jeśli pierwszy zaznaczony element to część, to drugi powinien być częścią " #~ "tego samego obiektu." -#~ msgid "Failed to repair following model object" -#~ msgid_plural "Failed to repair following model objects" -#~ msgstr[0] "Nie udało się naprawić następującego obiektu modelu" -#~ msgstr[1] "Nie udało się naprawić następujących obiektów modelu" -#~ msgstr[2] "Nie udało się naprawić następujących obiektów modelu" - #~ msgid "" #~ "One cell can only be copied to one or multiple cells in the same column." #~ msgstr "" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index b4c850cbbe..b888242785 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -602,7 +602,7 @@ msgstr "Mostrar wireframe" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "" "Não é possível aplicar quando a visualização do processo está em andamento." @@ -672,7 +672,7 @@ msgstr "Superfície" msgid "Horizontal text" msgstr "Texto horizontal" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Mover mouse para cima ou para baixo" msgid "Rotate text" @@ -1016,7 +1016,7 @@ msgstr "Orientar o texto em direção à câmera." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Não é possível carregar a mesma fonte exatamente (\"%1%\"). A aplicação " @@ -1657,7 +1657,7 @@ msgstr "Largura da Extrusão" msgid "Wipe options" msgstr "Opções de limpeza" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Adesão à Mesa" msgid "Add part" @@ -1944,12 +1944,6 @@ msgid "Auto orient the object to improve print quality." msgstr "" "Orientar automaticamente o objeto para melhorar a qualidade de impressão." -msgid "Split the selected object into mutiple objects" -msgstr "Dividir o objeto selecionado em vários objetos" - -msgid "Split the selected object into mutiple parts" -msgstr "Dividir o objeto selecionado em várias peças" - msgid "Select All" msgstr "Selecionar Tudo" @@ -2214,8 +2208,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "O seguinte objeto do modelo foi reparado" msgstr[1] "Os seguintes objetos do modelo foram reparados" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Falha ao reparar o seguinte objeto do modelo" msgstr[1] "Falha ao reparar os seguintes objetos do modelo" @@ -2670,7 +2664,7 @@ msgstr "O envio da tarefa de impressão expirou." msgid "Service Unavailable" msgstr "Serviço Indisponível" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Erro Desconhecido." msgid "Sending print configuration" @@ -3677,7 +3671,7 @@ msgstr "" "O valor será redefinido para 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6202,7 +6196,7 @@ msgstr "" "O arquivo %s já existe\n" "Deseja substituí-lo?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Confirmar Salvar Como" msgid "Delete object which is a part of cut object" @@ -6427,7 +6421,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Não é possível executar a operação booleana em malhas de modelo. Somente " "partes positivas serão mantidas. Você pode consertar as malhas e tentar " @@ -11363,7 +11357,7 @@ msgstr "Altura da primeira camada" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Altura da primeira camada. Tornar a altura da primeira camada ligeiramente " "espessa pode melhorar a adesão à mesa" @@ -15559,7 +15553,7 @@ msgstr "Importar Preset" msgid "Create Type" msgstr "Tipo de Criação" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "O modelo não foi encontrado, por favor, reselecione o fornecedor." msgid "Select Model" @@ -15609,10 +15603,10 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "O modelo da impressora não foi encontrado, por favor, reselecione." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "O diâmetro do bico não foi encontrado, por favor, reselecione." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "O preset da impressora não foi encontrado, por favor, reselecione." msgid "Printer Preset" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 4304f22906..2b50d3d9b1 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -604,7 +604,7 @@ msgstr "Показывать каркас" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Невозможно применить при предпросмотре." msgid "Operation already cancelling. Please wait few seconds." @@ -675,7 +675,7 @@ msgstr "На поверхности" msgid "Horizontal text" msgstr "Горизонтальный текст" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Мышь вверх или вниз" msgid "Rotate text" @@ -1018,7 +1018,7 @@ msgstr "Сориентировать текст по направлению к #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Т.к. не удалось загрузить тот же шрифт (\"%1%\"), приложение выбрало похожий " @@ -1657,7 +1657,7 @@ msgstr "Ширина экструзии" msgid "Wipe options" msgstr "Параметры очистки" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Адгезия к столу" msgid "Add part" @@ -1943,12 +1943,6 @@ msgstr "Автоориентация" msgid "Auto orient the object to improve print quality." msgstr "Автоориентация модели для улучшения качества печати." -msgid "Split the selected object into mutiple objects" -msgstr "Разделить выбранную модель на отдельные модели" - -msgid "Split the selected object into mutiple parts" -msgstr "Разделить выбранную модель на отдельные части" - msgid "Select All" msgstr "Выбрать всё" @@ -2220,8 +2214,8 @@ msgstr[0] "Следующая часть модели успешно отрем msgstr[1] "Следующие части модели успешно отремонтированы" msgstr[2] "Следующие части модели успешно отремонтированы" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Не удалось починить следующую часть модели" msgstr[1] "Не удалось починить следующие части модели" msgstr[2] "Не удалось починить следующие части модели" @@ -2686,7 +2680,7 @@ msgstr "Время отправки задания на печать истек msgid "Service Unavailable" msgstr "Сервис недоступен" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Неизвестная ошибка." msgid "Sending print configuration" @@ -3699,7 +3693,7 @@ msgstr "" "Это значение будет сброшено на 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6243,7 +6237,7 @@ msgstr "" "Файл %s уже существует.\n" "Хотите заменить его?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Подтвердить сохранение как" msgid "Delete object which is a part of cut object" @@ -6462,7 +6456,7 @@ msgstr "Файл %s отправлен в память принтера и мо msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Невозможно выполнить булеву операцию над сетками модели. Будут сохранены " "только положительные части. Вы можете исправить сетки и попробовать снова." @@ -11485,7 +11479,7 @@ msgstr "Высота первого слоя" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Высота первого слоя. Незначительное увеличение толщины первого слоя может " "улучшить сцепление со столом." @@ -15734,7 +15728,7 @@ msgstr "Импорт профиля" msgid "Create Type" msgstr "Создать тип" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "Модель не найдена, выберите производителя." msgid "Select Model" @@ -15789,10 +15783,10 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "Модель принтера не найдена, пожалуйста, выберите заново." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "Диаметр сопла не задан, пожалуйста, выберите заново." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "Профиль принтера не найдена, выберите заново." msgid "Printer Preset" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 11f935496c..77b55c8879 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -586,7 +586,7 @@ msgstr "Visa trådram" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Kan inte tillämpas när processen förhandsgranskas." msgid "Operation already cancelling. Please wait few seconds." @@ -653,7 +653,7 @@ msgstr "Yta" msgid "Horizontal text" msgstr "Vågrät text" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Mus flytta uppåt eller nedåt" msgid "Rotate text" @@ -986,7 +986,7 @@ msgstr "" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" @@ -1599,7 +1599,7 @@ msgstr "Extruderings Bredd" msgid "Wipe options" msgstr "Avstryknings val" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Byggplattans vidhäftningsförmåga" msgid "Add part" @@ -1879,12 +1879,6 @@ msgstr "Auto placera" msgid "Auto orient the object to improve print quality." msgstr "Auto placera objektet för att förbättra utskriftskvaliteten." -msgid "Split the selected object into mutiple objects" -msgstr "Dela det valda objektet till multipla objekt" - -msgid "Split the selected object into mutiple parts" -msgstr "Dela det valda objektet till multipla delar" - msgid "Select All" msgstr "Välj Alla" @@ -2148,8 +2142,8 @@ msgstr[0] "" msgstr[1] "" "Följande modellobjekt har reparerats@Följande modellobjekt har reparerats" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "" "Reparationen av följande modellobjekt misslyckades@Reparation av de följande " "modellobjekten misslyckades" @@ -2606,7 +2600,7 @@ msgstr "Timeout för sändning av utskriftsuppgift." msgid "Service Unavailable" msgstr "Tjänsten är inte tillgänglig" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Okänt fel" msgid "Sending print configuration" @@ -3583,7 +3577,7 @@ msgstr "" "Värdet kommer att återställas till 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6047,7 +6041,7 @@ msgstr "" "The file %s already exists.\n" "Do you want to replace it?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Bekräfta Spara som" msgid "Delete object which is a part of cut object" @@ -6267,10 +6261,10 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -10792,7 +10786,7 @@ msgstr "Första lagerhöjd" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Första lagerhöjd. Högre första lager kan förbättra objektets fäste på " "byggplattan" @@ -14560,7 +14554,7 @@ msgstr "Importera inställning" msgid "Create Type" msgstr "Skapa typ" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "The model was not found; please reselect vendor." msgid "Select Model" @@ -14609,10 +14603,10 @@ msgstr "Inställd sökväg hittades inte; vänligen välj leverantör igen." msgid "The printer model was not found, please reselect." msgstr "Printer modellen hittades inte, välj igen." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "The nozzle diameter was not found; please reselect." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "The printer preset was not found; please reselect." msgid "Printer Preset" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index e010bcbd95..0634a276c9 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -596,7 +596,7 @@ msgstr "Wireframe göster" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "İşlem önizlemesi sırasında uygulanamaz." msgid "Operation already cancelling. Please wait few seconds." @@ -665,7 +665,7 @@ msgstr "Yüzey" msgid "Horizontal text" msgstr "Yatay metin" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Fare yukarı veya aşağı hareket ettirir" msgid "Rotate text" @@ -1010,7 +1010,7 @@ msgstr "Metni kameraya doğru yönlendirin." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " @@ -1644,7 +1644,7 @@ msgstr "Ekstrüzyon Genişliği" msgid "Wipe options" msgstr "Temizleme seçenekleri" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Etek" msgid "Add part" @@ -1929,12 +1929,6 @@ msgstr "Otomatik yönlendirme" msgid "Auto orient the object to improve print quality." msgstr "Baskı kalitesini artırmak için nesneyi otomatik olarak yönlendirin." -msgid "Split the selected object into mutiple objects" -msgstr "Seçilen nesneyi birden fazla nesneye bölme" - -msgid "Split the selected object into mutiple parts" -msgstr "Seçilen nesneyi birden fazla parçaya böl" - msgid "Select All" msgstr "Hepsini seç" @@ -2193,8 +2187,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "Aşağıdaki model nesnesi onarıldı" msgstr[1] "Aşağıdaki model objeler onarıldı" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Aşağıdaki model nesnesi onarılamadı" msgstr[1] "Aşağıdaki model nesneleri onarılamadı" @@ -2650,7 +2644,7 @@ msgstr "Yazdırma görevi gönderimi zaman aşımına uğradı." msgid "Service Unavailable" msgstr "Hizmet kullanılamıyor" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Bilinmeyen Hata." msgid "Sending print configuration" @@ -3637,7 +3631,7 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6147,7 +6141,7 @@ msgstr "" "%s dosyası zaten mevcut\n" "değiştirmek istiyor musun?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Farklı Kaydetmeyi Onayla" msgid "Delete object which is a part of cut object" @@ -6371,7 +6365,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -15440,7 +15434,7 @@ msgstr "Ön Ayarı İçe Aktar" msgid "Create Type" msgstr "Tür Oluştur" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "Model bulunamadı, lütfen satıcıyı seçin." msgid "Select Model" @@ -15489,10 +15483,10 @@ msgstr "Ön ayar yolu bulunamıyor, lütfen satıcıyı yeniden seçin." msgid "The printer model was not found, please reselect." msgstr "Yazıcı modeli bulunamadı, lütfen yeniden seçin." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "Nozul çapı bulunamadı, lütfen yeniden seçin." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "Yazıcı ön ayarı bulunamadı, lütfen yeniden seçin." msgid "Printer Preset" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 2070a65075..6d2ef2fed3 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -603,7 +603,7 @@ msgstr "Показати каркас" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "Не можна застосовувати під час попереднього перегляду процесу." msgid "Operation already cancelling. Please wait few seconds." @@ -670,7 +670,7 @@ msgstr "Поверхня" msgid "Horizontal text" msgstr "Горизонтальний текст" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + переміщення миші вгору або вниз" msgid "Rotate text" @@ -1014,7 +1014,7 @@ msgstr "Зорієнтувати текст у напрямку камери." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "Не вдається завантажити точно такий самий шрифт(\"%1%\"). Програма вибрала " @@ -1651,7 +1651,7 @@ msgstr "Ширина екструзії" msgid "Wipe options" msgstr "Параметри очищення" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Прилипання до столу" msgid "Add part" @@ -1936,12 +1936,6 @@ msgstr "Автоматична орієнтація" msgid "Auto orient the object to improve print quality." msgstr "Автоматично орієнтуйте об'єкт для покращення якості друку." -msgid "Split the selected object into mutiple objects" -msgstr "Розділити вибраний об'єкт на кілька об'єктів" - -msgid "Split the selected object into mutiple parts" -msgstr "Розділити вибраний об'єкт на кілька частин" - msgid "Select All" msgstr "Вибрати все" @@ -2210,8 +2204,8 @@ msgstr[0] "Наступна частина моделі успішно відр msgstr[1] "Наступні частини моделі успішно відремонтовані" msgstr[2] "Наступні частини моделі успішно відремонтовані" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "Не вдалося полагодити таку частину моделі" msgstr[1] "Не вдалося полагодити такі частини моделі" msgstr[2] "Не вдалося полагодити такі частини моделі" @@ -2670,7 +2664,7 @@ msgstr "Час відправлення завдання на друк закі msgid "Service Unavailable" msgstr "Сервіс недоступний" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Невідома помилка." msgid "Sending print configuration" @@ -3669,7 +3663,7 @@ msgstr "" "Це значення буде скинуто на 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6197,7 +6191,7 @@ msgstr "" "Файл %s вже існує.\n" "Бажаєте замінити його?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Підтвердити збереження як" msgid "Delete object which is a part of cut object" @@ -6420,7 +6414,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "Неможливо виконати булеву операцію на сітках моделі. Будуть залишені лише " "позитивні частини. Ви можете виправити сітки і спробувати ще раз." @@ -11333,7 +11327,7 @@ msgstr "Початкова висота шару" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Висота вихідного шару. Незначна товщина початкової висоти шару може " "поліпшити прилипання до столу" @@ -15506,7 +15500,7 @@ msgstr "Імпорт набору параметрів" msgid "Create Type" msgstr "Тип" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "Модель не знайдено. Будь ласка, перевиберіть виробника." msgid "Select Model" @@ -15557,10 +15551,10 @@ msgstr "Шлях до налаштувань не знайдено. Будь л msgid "The printer model was not found, please reselect." msgstr "Модель принтера не було знайдено. Будь ласка, перевиберіть її." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "Діаметр сопла не знайдено. Будь ласка, перевиберіть його." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "Налаштування принтера не знайдено. Будь ласка, перевиберіть його." msgid "Printer Preset" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index e3825454a7..d46ccfef31 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -588,7 +588,7 @@ msgstr "显示线框" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "处理预览的过程中无法应用。" msgid "Operation already cancelling. Please wait few seconds." @@ -655,7 +655,7 @@ msgstr "附着曲面" msgid "Horizontal text" msgstr "水平文字" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + 鼠标上移或下移" msgid "Rotate text" @@ -992,7 +992,7 @@ msgstr "选择文字使其面向摄像头" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "不能加载完全相同的字体(\"%1%\")。应用程序选择了一种类似的字体(\"%2%\")。你" @@ -1601,7 +1601,7 @@ msgstr "挤出宽度" msgid "Wipe options" msgstr "擦除选项" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "热床粘接" msgid "Add part" @@ -1880,12 +1880,6 @@ msgstr "自动朝向" msgid "Auto orient the object to improve print quality." msgstr "自动调整对象朝向以提高打印质量。" -msgid "Split the selected object into mutiple objects" -msgstr "拆分所选对象为多个对象" - -msgid "Split the selected object into mutiple parts" -msgstr "拆分所选对象为多个零件" - msgid "Select All" msgstr "全选" @@ -2133,8 +2127,8 @@ msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" msgstr[0] "以下模型对象已被修复" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "以下模型对象修复失败" msgid "Repairing was canceled" @@ -2567,7 +2561,7 @@ msgstr "发送打印任务超时。" msgid "Service Unavailable" msgstr "服务不可用" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "未知错误" msgid "Sending print configuration" @@ -3492,7 +3486,7 @@ msgstr "" "这个数值将被重置为0。" msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -5893,7 +5887,7 @@ msgstr "" "文件 %s 已经存在\n" "您是否要替换它?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "确认另存为" msgid "Delete object which is a part of cut object" @@ -6103,7 +6097,7 @@ msgstr "文件%s已经发送到打印机的存储空间,可以在打印机上 msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "无法对模型网格执行布尔运算。只保留正体积部分。您可以修复网格后再试一次。" @@ -10564,7 +10558,7 @@ msgstr "首层层高" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "首层层高" msgid "Speed of initial layer except the solid infill part" @@ -14291,7 +14285,7 @@ msgstr "导入预设" msgid "Create Type" msgstr "创建类型" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "该模型未找到,请重新选择供应商。" msgid "Select Model" @@ -14340,10 +14334,10 @@ msgstr "预设路径未找到,请重新选择供应商。" msgid "The printer model was not found, please reselect." msgstr "未找到打印机型号,请重新选择。" -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "未找到喷嘴直径,请重新选择。" -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "打印机预设未找到,请重新选择。" msgid "Printer Preset" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 72efb0f894..9fd73bb224 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -606,7 +606,7 @@ msgstr "顯示線框" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "處理預覽的過程中無法套用。" msgid "Operation already cancelling. Please wait few seconds." @@ -678,7 +678,7 @@ msgstr "附著於曲面" msgid "Horizontal text" msgstr "水平文字" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + 滑鼠上移或下移" msgid "Rotate text" @@ -1012,7 +1012,7 @@ msgstr "" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" @@ -1639,7 +1639,7 @@ msgstr "擠出寬度" msgid "Wipe options" msgstr "擦除選項" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "熱床黏接" #, fuzzy @@ -1928,12 +1928,6 @@ msgstr "自動定向" msgid "Auto orient the object to improve print quality." msgstr "自動調整物件方向以提高列印品質。" -msgid "Split the selected object into mutiple objects" -msgstr "拆分所選物件為多個物件" - -msgid "Split the selected object into mutiple parts" -msgstr "拆分所選物件為多個零件" - msgid "Select All" msgstr "全選" @@ -2199,8 +2193,8 @@ msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" msgstr[0] "以下模型物件已被修復" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "以下模型物件修復失敗" msgid "Repairing was canceled" @@ -2652,7 +2646,7 @@ msgstr "" msgid "Service Unavailable" msgstr "暫停服務" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "未知錯誤" msgid "Sending print configuration" @@ -3611,7 +3605,7 @@ msgstr "" #, fuzzy msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -6107,7 +6101,7 @@ msgid "" "Do you want to replace it?" msgstr "" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "" msgid "Delete object which is a part of cut object" @@ -6324,7 +6318,7 @@ msgstr "檔案 %s 已經傳送到列印設備的儲存空間,可以在列印 msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" #, boost-format @@ -10919,7 +10913,7 @@ msgstr "首層層高" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "首層層高" msgid "Speed of initial layer except the solid infill part" @@ -14679,7 +14673,7 @@ msgstr "" msgid "Create Type" msgstr "" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "" msgid "Select Model" @@ -14728,10 +14722,10 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "" -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "" -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "" msgid "Printer Preset" diff --git a/src/admesh/normals.cpp b/src/admesh/normals.cpp index 488d382fd6..f74ba01b6d 100644 --- a/src/admesh/normals.cpp +++ b/src/admesh/normals.cpp @@ -189,7 +189,7 @@ void stl_fix_normal_directions(stl_file *stl) if (head->next != tail) { facet_num = head->next->facet_num; assert(facet_num < stl->stats.number_of_facets); - if (norm_sw[facet_num] != 1) { // If facet is in list mutiple times + if (norm_sw[facet_num] != 1) { // If facet is in list multiple times norm_sw[facet_num] = 1; // Record this one as being fixed. ++ checked; } diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index fe8f778647..f59600971f 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -715,7 +715,7 @@ bool compSecondMoment(const ExPolygons& expolys, double& smExpolysX, double& smE //BBS: config brimwidth by volumes -double configBrimWidthByVolumes(double deltaT, double adhension, double maxSpeed, const ModelVolume* modelVolumePtr, const ExPolygons& expolys) +double configBrimWidthByVolumes(double deltaT, double adhesion, double maxSpeed, const ModelVolume* modelVolumePtr, const ExPolygons& expolys) { // height of a volume double height = 0; @@ -745,7 +745,7 @@ double configBrimWidthByVolumes(double deltaT, double adhension, double maxSpeed double thermalLengthRef = Model::getThermalLength(modelVolumePtr); double height_to_area = std::max(height / Ixx * (bbox2.size()(1) * SCALING_FACTOR), height / Iyy * (bbox2.size()(0) * SCALING_FACTOR)); - double brim_width = adhension * std::min(std::min(std::max(height_to_area * maxSpeed / 24, thermalLength * 8. / thermalLengthRef * std::min(height, 30.) / 30.), 18.), 1.5 * thermalLength); + double brim_width = adhesion * std::min(std::min(std::max(height_to_area * maxSpeed / 24, thermalLength * 8. / thermalLengthRef * std::min(height, 30.) / 30.), 18.), 1.5 * thermalLength); // small brims are omitted if (brim_width < 5 && brim_width < 1.5 * thermalLength) brim_width = 0; @@ -756,7 +756,7 @@ double configBrimWidthByVolumes(double deltaT, double adhension, double maxSpeed } //BBS: config brimwidth by group of volumes -double configBrimWidthByVolumeGroups(double adhension, double maxSpeed, const std::vector modelVolumePtrs, const ExPolygons& expolys, double &groupHeight) +double configBrimWidthByVolumeGroups(double adhesion, double maxSpeed, const std::vector modelVolumePtrs, const ExPolygons& expolys, double &groupHeight) { // height of a group of volumes double height = 0; @@ -794,7 +794,7 @@ double configBrimWidthByVolumeGroups(double adhension, double maxSpeed, const st double thermalLengthRef = Model::getThermalLength(modelVolumePtrs); double height_to_area = std::max(height / Ixx * (bbox2.size()(1) * SCALING_FACTOR), height / Iyy * (bbox2.size()(0) * SCALING_FACTOR)) * height / 1920; - double brim_width = adhension * std::min(std::min(std::max(height_to_area * maxSpeed, thermalLength * 8. / thermalLengthRef * std::min(height, 30.) / 30.), 18.), 1.5 * thermalLength); + double brim_width = adhesion * std::min(std::min(std::max(height_to_area * maxSpeed, thermalLength * 8. / thermalLengthRef * std::min(height, 30.) / 30.), 18.), 1.5 * thermalLength); // small brims are omitted if (brim_width < 5 && brim_width < 1.5 * thermalLength) brim_width = 0; @@ -902,7 +902,7 @@ static ExPolygons outer_inner_brim_area(const Print& print, Polygons holes_support; if (objectWithExtruder.second == extruderNo && brimToWrite.at(object->id()).obj) { double deltaT = getTemperatureFromExtruder(object); - double adhension = getadhesionCoeff(object); + double adhesion = getadhesionCoeff(object); double maxSpeed = Model::findMaxSpeed(object->model_object()); // BBS: brims are generated by volume groups for (const auto& volumeGroup : object->firstLayerObjGroups()) { @@ -926,11 +926,11 @@ static ExPolygons outer_inner_brim_area(const Print& print, double groupHeight = 0.; // config brim width in auto-brim mode if (has_brim_auto) { - double brimWidthRaw = configBrimWidthByVolumeGroups(adhension, maxSpeed, groupVolumePtrs, volumeGroup.slices, groupHeight); + double brimWidthRaw = configBrimWidthByVolumeGroups(adhesion, maxSpeed, groupVolumePtrs, volumeGroup.slices, groupHeight); brim_width = scale_(floor(brimWidthRaw / flowWidth / 2) * flowWidth * 2); } for (const ExPolygon& ex_poly : volumeGroup.slices) { - // BBS: additional brim width will be added if part's adhension area is too small and brim is not generated + // BBS: additional brim width will be added if part's adhesion area is too small and brim is not generated float brim_width_mod; if (brim_width < scale_(5.) && has_brim_auto && groupHeight > 10.) { brim_width_mod = ex_poly.area() / ex_poly.contour.length() < scaled_half_min_adh_length @@ -1024,7 +1024,7 @@ static ExPolygons outer_inner_brim_area(const Print& print, // BBS if (!object->support_layers().empty() && object->support_layers().front()->support_type == stInnerTree) { for (const ExPolygon &ex_poly : object->support_layers().front()->lslices) { - // BBS: additional brim width will be added if adhension area is too small without brim + // BBS: additional brim width will be added if adhesion area is too small without brim float brim_width_mod = ex_poly.area() / ex_poly.contour.length() < scaled_half_min_adh_length && brim_width < scaled_flow_width ? brim_width + scaled_additional_brim_width : brim_width; brim_width_mod = floor(brim_width_mod / scaled_flow_width / 2) * scaled_flow_width * 2; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index cf5de0f3e4..bb7c33e26b 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -3115,8 +3115,8 @@ double Model::getThermalLength(const std::vector modelVolumePtrs) } return thermalLength; } -// max printing speed, difference in bed temperature and envirument temperature and bed adhension coefficients are considered -double ModelInstance::get_auto_brim_width(double deltaT, double adhension) const +// max printing speed, difference in bed temperature and envirument temperature and bed adhesion coefficients are considered +double ModelInstance::get_auto_brim_width(double deltaT, double adhesion) const { BoundingBoxf3 raw_bbox = object->raw_mesh_bounding_box(); double maxSpeed = Model::findMaxSpeed(object); @@ -3127,7 +3127,7 @@ double ModelInstance::get_auto_brim_width(double deltaT, double adhension) const double thermalLength = sqrt(bbox_size(0)* bbox_size(0) + bbox_size(1)* bbox_size(1)); double thermalLengthRef = Model::getThermalLength(object->volumes); - double brim_width = adhension * std::min(std::min(std::max(height_to_area * 200 * maxSpeed/200, thermalLength * 8. / thermalLengthRef * std::min(bbox_size(2), 30.) / 30.), 20.), 1.5 * thermalLength); + double brim_width = adhesion * std::min(std::min(std::max(height_to_area * 200 * maxSpeed/200, thermalLength * 8. / thermalLengthRef * std::min(bbox_size(2), 30.) / 30.), 20.), 1.5 * thermalLength); // small brims are omitted if (brim_width < 5 && brim_width < 1.5 * thermalLength) brim_width = 0; diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index b035c2bdd2..927ab47f9b 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -1322,7 +1322,7 @@ public: bool is_assemble_initialized() { return m_assemble_initialized; } //BBS - double get_auto_brim_width(double deltaT, double adhension) const; + double get_auto_brim_width(double deltaT, double adhesion) const; double get_auto_brim_width() const; // BBS Polygon convex_hull_2d(); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 1dc18c1711..809368d38c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2344,7 +2344,7 @@ void PrintConfigDef::init_fff_params() def = this->add("initial_layer_print_height", coFloat); def->label = L("Initial layer height"); def->category = L("Quality"); - def->tooltip = L("Height of initial layer. Making initial layer height to be thick slightly can improve build plate adhension"); + def->tooltip = L("Height of initial layer. Making initial layer height to be thick slightly can improve build plate adhesion"); def->sidetext = L("mm"); def->min = 0; def->set_default_value(new ConfigOptionFloat(0.2)); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 52d1ea99a6..baa53d4564 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -268,7 +268,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con if (config->option("elefant_foot_compensation")->value > 1) { - const wxString msg_text = _(L("Too large elefant foot compensation is unreasonable.\n" + const wxString msg_text = _(L("Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n\n" "The value will be reset to 0.")); diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 9a79fd96d8..22ddd98e4b 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -1641,7 +1641,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_printer_item(wxWindow *parent) m_select_model->SetLabelColor(*wxBLACK); } } else { - MessageDialog dlg(this, _L("The model is not fond, place reselect vendor."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES | wxYES_DEFAULT | wxCENTRE); + MessageDialog dlg(this, _L("The model is not found, place reselect vendor."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES | wxYES_DEFAULT | wxCENTRE); dlg.ShowModal(); } e.Skip(); @@ -2121,7 +2121,7 @@ bool CreatePrinterPresetDialog::load_system_and_user_presets_with_curr_model(Pre varient = model_varient.substr(index_at + 3, index_nozzle - index_at - 4); } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "get nozzle failed"; - MessageDialog dlg(this, _L("The nozzle diameter is not fond, place reselect."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE); + MessageDialog dlg(this, _L("The nozzle diameter is not found, place reselect."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE); dlg.ShowModal(); return false; } @@ -2132,7 +2132,7 @@ bool CreatePrinterPresetDialog::load_system_and_user_presets_with_curr_model(Pre if (temp_printer_preset) { m_printer_preset = new Preset(*temp_printer_preset); } else { - MessageDialog dlg(this, _L("The printer preset is not fond, place reselect."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE); + MessageDialog dlg(this, _L("The printer preset is not found, place reselect."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE); dlg.ShowModal(); return false; } diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index bd0d5ff856..067fd45e35 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -263,7 +263,7 @@ std::map SettingsFactory::CATEGORY_ICON = { L("Extruders") , "blank_14" }, { L("Extrusion Width") , "blank_14" }, { L("Wipe options") , "blank_14" }, - { L("Bed adhension") , "blank_14" }, + { L("Bed adhesion") , "blank_14" }, // { L("Speed > Acceleration") , "time" }, { L("Advanced") , "blank_14" }, // BBS: remove SLA categories @@ -1441,10 +1441,10 @@ void MenuFactory::create_bbl_part_menu() if (!split_menu) return; - append_menu_item(split_menu, wxID_ANY, _L("To objects"), _L("Split the selected object into mutiple objects"), + append_menu_item(split_menu, wxID_ANY, _L("To objects"), _L("Split the selected object into multiple objects"), [](wxCommandEvent&) { plater()->split_object(); }, "menu_split_objects", menu, []() { return plater()->can_split(true); }, m_parent); - append_menu_item(split_menu, wxID_ANY, _L("To parts"), _L("Split the selected object into mutiple parts"), + append_menu_item(split_menu, wxID_ANY, _L("To parts"), _L("Split the selected object into multiple parts"), [](wxCommandEvent&) { plater()->split_volume(); }, "menu_split_parts", menu, []() { return plater()->can_split(false); }, m_parent); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 5ba1751daa..30846abf51 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -5412,7 +5412,7 @@ void ObjectList::fix_through_netfabb() msg += "\n\n"; } if (!failed_models.empty()) { - msg += _L_PLURAL("Failed to repair folowing model object", "Failed to repair folowing model objects", failed_models.size()) + ":\n"; + msg += _L_PLURAL("Failed to repair following model object", "Failed to repair following model objects", failed_models.size()) + ":\n"; for (auto& model : failed_models) msg += bullet_suf + from_u8(model.first) + ": " + _(model.second); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index 87ae609d24..bee454af28 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -3117,7 +3117,7 @@ void GLGizmoEmboss::create_notification_not_valid_font( const std::string &face_name = face_name_opt.value_or(face_name_by_wx.value_or(es.path)); std::string text = GUI::format(_L("Can't load exactly same font(\"%1%\"). " - "Aplication selected a similar one(\"%2%\"). " + "Application selected a similar one(\"%2%\"). " "You have to specify font for enable edit text."), face_name_3mf, face_name); create_notification_not_valid_font(text); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index 32f1591248..1d9171e3bd 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -367,7 +367,7 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi apply_simplify(); } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && is_worker_running) { - ImGui::SetTooltip("%s", _u8L("Can't apply when proccess preview.").c_str()); + ImGui::SetTooltip("%s", _u8L("Can't apply when process preview.").c_str()); } m_imgui->pop_confirm_button_style(); m_imgui->disabled_end(); // state !settings diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 411ec8f2ff..8cef19ca0f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -278,7 +278,7 @@ bool GLGizmoText::on_init() m_desc["surface"] = _L("Surface"); m_desc["horizontal_text"] = _L("Horizontal text"); - m_desc["rotate_text_caption"] = _L("Shift + Mouse move up or dowm"); + m_desc["rotate_text_caption"] = _L("Shift + Mouse move up or down"); m_desc["rotate_text"] = _L("Rotate text"); return true; diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 338aca9842..a54310c234 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -114,7 +114,7 @@ wxString PrintJob::get_http_error_msg(unsigned int status, std::string body) return _L("Service Unavailable"); } else { - wxString unkown_text = _L("Unkown Error."); + wxString unkown_text = _L("Unknown Error."); unkown_text += wxString::Format("status=%u, body=%s", status, body); BOOST_LOG_TRIVIAL(error) << "http_error: status=" << status << ", code=" << code << ", error=" << error; return unkown_text; diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index f0369beb99..6566060546 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -78,7 +78,7 @@ wxString SendJob::get_http_error_msg(unsigned int status, std::string body) return _L("Service Unavailable"); } else { - wxString unkown_text = _L("Unkown Error."); + wxString unkown_text = _L("Unknown Error."); unkown_text += wxString::Format("status=%u, body=%s", status, body); return unkown_text; } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b3bcfb2f7f..2d7f4433e1 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -4695,7 +4695,7 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type) if (boost::filesystem::exists(into_u8(out_path), ec)) { auto result = MessageBox(q->GetHandle(), wxString::Format(_L("The file %s already exists\nDo you want to replace it?"), out_path), - _L("Comfirm Save As"), + _L("Confirm Save As"), MB_YESNO | MB_ICONWARNING); if (result != IDYES) return wxEmptyString; @@ -11458,7 +11458,7 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st csg::mpartsPositive | csg::mpartsNegative); std::string fail_msg = _u8L("Unable to perform boolean operation on model meshes. " - "Only positive parts will be kept. You may fix the meshes and try agian."); + "Only positive parts will be kept. You may fix the meshes and try again."); if (auto fail_reason_name = csg::check_csgmesh_booleans(Range{ std::begin(csgmesh), std::end(csgmesh) }); std::get<0>(fail_reason_name) != csg::BooleanFailReason::OK) { std::string name = std::get<1>(fail_reason_name); std::map fail_reasons = { From 4ccbd38d2160cff166394bbf7683d1a9a0b22f93 Mon Sep 17 00:00:00 2001 From: Aidan Date: Wed, 10 Jul 2024 11:07:55 -0500 Subject: [PATCH 014/151] Some flatpak fixing (#5510) * Use fixed commit for wxwidgets * disable cache * Fix imports * revert some build stuff * fix python builds * Don't build OCCT docs, a constexpr borks flatpak * fix thread import * Fix import * Fix import again * remove git commit --------- Co-authored-by: SoftFever --- .github/workflows/build_all.yml | 35 +++++++++++----------- deps/OCCT/OCCT.cmake | 1 + flatpak/io.github.softfever.OrcaSlicer.yml | 16 ++++++++++ src/libslic3r/CMakeLists.txt | 4 +++ src/libslic3r/GCode/Thumbnails.cpp | 3 +- src/libslic3r/GCode/Thumbnails.hpp | 1 + src/libslic3r/MeshBoolean.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 5 ++-- 8 files changed, 45 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index a21bb03c94..b36d1990db 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -60,20 +60,21 @@ jobs: arch: ${{ matrix.arch }} build-deps-only: ${{ inputs.build-deps-only || false }} secrets: inherit - # flatpak: - # name: "Flatpak" - # runs-on: ubuntu-latest - # container: - # image: bilelmoussaoui/flatpak-github-actions:gnome-45 - # options: --privileged - # steps: - # # maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd - # - name: "Remove unneeded stuff to free disk space" - # run: - # sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY" - # - uses: actions/checkout@v4 - # - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 - # with: - # bundle: orcaslicer.flatpak - # manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml - # cache-key: flatpak-builder-${{ github.sha }} + flatpak: + name: "Flatpak" + runs-on: ubuntu-latest + container: + image: bilelmoussaoui/flatpak-github-actions:gnome-45 + options: --privileged + steps: + # maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd + - name: "Remove unneeded stuff to free disk space" + run: + sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY" + - uses: actions/checkout@v4 + - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + with: + bundle: orcaslicer.flatpak + manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml + cache-key: flatpak-builder-${{ github.sha }} + cache: false \ No newline at end of file diff --git a/deps/OCCT/OCCT.cmake b/deps/OCCT/OCCT.cmake index 651e40ec83..096da413d5 100644 --- a/deps/OCCT/OCCT.cmake +++ b/deps/OCCT/OCCT.cmake @@ -22,6 +22,7 @@ orcaslicer_add_cmake_project(OCCT #-DUSE_FREETYPE=OFF -DUSE_FFMPEG=OFF -DUSE_VTK=OFF + -DBUILD_DOC_Overview=OFF -DBUILD_MODULE_ApplicationFramework=OFF #-DBUILD_MODULE_DataExchange=OFF -DBUILD_MODULE_Draw=OFF diff --git a/flatpak/io.github.softfever.OrcaSlicer.yml b/flatpak/io.github.softfever.OrcaSlicer.yml index f5a148cda0..c5ba50f02c 100755 --- a/flatpak/io.github.softfever.OrcaSlicer.yml +++ b/flatpak/io.github.softfever.OrcaSlicer.yml @@ -44,6 +44,22 @@ modules: - type: archive url: http://mirrors.ircam.fr/pub/x.org/individual/app/xprop-1.2.5.tar.gz sha256: b7bf6b6be6cf23e7966a153fc84d5901c14f01ee952fbd9d930aa48e2385d670 + - name: python-flit_core + buildsystem: simple + build-commands: + - pip3 install --no-deps --no-build-isolation --verbose --prefix=${FLATPAK_DEST} . + sources: + - type: archive + url: https://files.pythonhosted.org/packages/c4/e6/c1ac50fe3eebb38a155155711e6e864e254ce4b6e17fe2429b4c4d5b9e80/flit_core-3.9.0.tar.gz + sha256: 72ad266176c4a3fcfab5f2930d76896059851240570ce9a98733b658cb786eba + - name: python-packaging + buildsystem: simple + build-commands: + - pip3 install --no-deps --no-build-isolation --verbose --prefix=${FLATPAK_DEST} . + sources: + - type: archive + url: https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz + sha256: 026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 - name: python-setuptools_scm buildsystem: simple build-commands: diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index f49a6a405f..9897bdfe63 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -580,6 +580,10 @@ target_link_libraries(libslic3r opencv_world ) +if(NOT SLIC3R_STATIC) + target_compile_definitions(libslic3r PUBLIC BOOST_ALL_DYN_LINK) +endif() + if(NOT WIN32) target_link_libraries(libslic3r freetype) if (NOT APPLE) diff --git a/src/libslic3r/GCode/Thumbnails.cpp b/src/libslic3r/GCode/Thumbnails.cpp index 43f2d4b2a6..526ba82498 100644 --- a/src/libslic3r/GCode/Thumbnails.cpp +++ b/src/libslic3r/GCode/Thumbnails.cpp @@ -2,6 +2,7 @@ #include "../miniz_extension.hpp" #include "format.hpp" +#include #include #include #include @@ -594,7 +595,7 @@ std::string get_error_string(const ThumbnailErrors& errors) std::string error_str; if (errors.has(ThumbnailError::InvalidVal)) - error_str += "\n - " + format("Invalid input format. Expected vector of dimensions in the following format: \"%1%\"", "XxY/EXT, XxY/EXT, ..."); + error_str += "\n - " + Slic3r::format("Invalid input format. Expected vector of dimensions in the following format: \"%1%\"", "XxY/EXT, XxY/EXT, ..."); if (errors.has(ThumbnailError::OutOfRange)) error_str += "\n - Input value is out of range"; if (errors.has(ThumbnailError::InvalidExt)) diff --git a/src/libslic3r/GCode/Thumbnails.hpp b/src/libslic3r/GCode/Thumbnails.hpp index 38a939b74c..bcee02fea1 100644 --- a/src/libslic3r/GCode/Thumbnails.hpp +++ b/src/libslic3r/GCode/Thumbnails.hpp @@ -3,6 +3,7 @@ #include "../Point.hpp" #include "../PrintConfig.hpp" +#include "../enum_bitmask.hpp" #include "ThumbnailData.hpp" #include "../enum_bitmask.hpp" diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index e246c16d49..c412553a22 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -6,6 +6,7 @@ #undef PI #include +#include "boost/log/trivial.hpp" // Include igl first. It defines "L" macro which then clashes with our localization #include #undef L @@ -27,7 +28,6 @@ #include // BBS: for boolean using mcut #include "mcut/include/mcut/mcut.h" -#include "boost/log/trivial.hpp" namespace Slic3r { namespace MeshBoolean { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 809368d38c..ddcb4bcbf8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -12,7 +12,6 @@ #include #include #include - #include namespace { @@ -6071,7 +6070,7 @@ void PrintConfigDef::handle_legacy_composite(DynamicPrintConfig &config) auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(thumbnails_str, extention); if (errors != enum_bitmask()) { - std::string error_str = "\n" + format("Invalid value provided for parameter %1%: %2%", "thumbnails", thumbnails_str); + std::string error_str = "\n" + Slic3r::format("Invalid value provided for parameter %1%: %2%", "thumbnails", thumbnails_str); error_str += GCodeThumbnails::get_error_string(errors); throw BadOptionValueException(error_str); } @@ -6080,7 +6079,7 @@ void PrintConfigDef::handle_legacy_composite(DynamicPrintConfig &config) const auto& extentions = ConfigOptionEnum::get_enum_names(); thumbnails_str.clear(); for (const auto& [ext, size] : thumbnails_list) - thumbnails_str += format("%1%x%2%/%3%, ", size.x(), size.y(), extentions[int(ext)]); + thumbnails_str += Slic3r::format("%1%x%2%/%3%, ", size.x(), size.y(), extentions[int(ext)]); thumbnails_str.resize(thumbnails_str.length() - 2); config.set_key_value("thumbnails", new ConfigOptionString(thumbnails_str)); From 03a2263b57dd2ad05cecef8676d4c9d2738eb7fd Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 11 Jul 2024 20:27:45 +0800 Subject: [PATCH 015/151] Revert "Some flatpak fixing (#5510)" This reverts commit 657954901f703841441c8b7621309c67f33be529. --- .github/workflows/build_all.yml | 35 +++++++++++----------- deps/OCCT/OCCT.cmake | 1 - flatpak/io.github.softfever.OrcaSlicer.yml | 16 ---------- src/libslic3r/CMakeLists.txt | 4 --- src/libslic3r/GCode/Thumbnails.cpp | 3 +- src/libslic3r/GCode/Thumbnails.hpp | 1 - src/libslic3r/MeshBoolean.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 5 ++-- 8 files changed, 22 insertions(+), 45 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index b36d1990db..a21bb03c94 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -60,21 +60,20 @@ jobs: arch: ${{ matrix.arch }} build-deps-only: ${{ inputs.build-deps-only || false }} secrets: inherit - flatpak: - name: "Flatpak" - runs-on: ubuntu-latest - container: - image: bilelmoussaoui/flatpak-github-actions:gnome-45 - options: --privileged - steps: - # maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd - - name: "Remove unneeded stuff to free disk space" - run: - sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY" - - uses: actions/checkout@v4 - - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 - with: - bundle: orcaslicer.flatpak - manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml - cache-key: flatpak-builder-${{ github.sha }} - cache: false \ No newline at end of file + # flatpak: + # name: "Flatpak" + # runs-on: ubuntu-latest + # container: + # image: bilelmoussaoui/flatpak-github-actions:gnome-45 + # options: --privileged + # steps: + # # maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd + # - name: "Remove unneeded stuff to free disk space" + # run: + # sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY" + # - uses: actions/checkout@v4 + # - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + # with: + # bundle: orcaslicer.flatpak + # manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml + # cache-key: flatpak-builder-${{ github.sha }} diff --git a/deps/OCCT/OCCT.cmake b/deps/OCCT/OCCT.cmake index 096da413d5..651e40ec83 100644 --- a/deps/OCCT/OCCT.cmake +++ b/deps/OCCT/OCCT.cmake @@ -22,7 +22,6 @@ orcaslicer_add_cmake_project(OCCT #-DUSE_FREETYPE=OFF -DUSE_FFMPEG=OFF -DUSE_VTK=OFF - -DBUILD_DOC_Overview=OFF -DBUILD_MODULE_ApplicationFramework=OFF #-DBUILD_MODULE_DataExchange=OFF -DBUILD_MODULE_Draw=OFF diff --git a/flatpak/io.github.softfever.OrcaSlicer.yml b/flatpak/io.github.softfever.OrcaSlicer.yml index c5ba50f02c..f5a148cda0 100755 --- a/flatpak/io.github.softfever.OrcaSlicer.yml +++ b/flatpak/io.github.softfever.OrcaSlicer.yml @@ -44,22 +44,6 @@ modules: - type: archive url: http://mirrors.ircam.fr/pub/x.org/individual/app/xprop-1.2.5.tar.gz sha256: b7bf6b6be6cf23e7966a153fc84d5901c14f01ee952fbd9d930aa48e2385d670 - - name: python-flit_core - buildsystem: simple - build-commands: - - pip3 install --no-deps --no-build-isolation --verbose --prefix=${FLATPAK_DEST} . - sources: - - type: archive - url: https://files.pythonhosted.org/packages/c4/e6/c1ac50fe3eebb38a155155711e6e864e254ce4b6e17fe2429b4c4d5b9e80/flit_core-3.9.0.tar.gz - sha256: 72ad266176c4a3fcfab5f2930d76896059851240570ce9a98733b658cb786eba - - name: python-packaging - buildsystem: simple - build-commands: - - pip3 install --no-deps --no-build-isolation --verbose --prefix=${FLATPAK_DEST} . - sources: - - type: archive - url: https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz - sha256: 026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 - name: python-setuptools_scm buildsystem: simple build-commands: diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 9897bdfe63..f49a6a405f 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -580,10 +580,6 @@ target_link_libraries(libslic3r opencv_world ) -if(NOT SLIC3R_STATIC) - target_compile_definitions(libslic3r PUBLIC BOOST_ALL_DYN_LINK) -endif() - if(NOT WIN32) target_link_libraries(libslic3r freetype) if (NOT APPLE) diff --git a/src/libslic3r/GCode/Thumbnails.cpp b/src/libslic3r/GCode/Thumbnails.cpp index 526ba82498..43f2d4b2a6 100644 --- a/src/libslic3r/GCode/Thumbnails.cpp +++ b/src/libslic3r/GCode/Thumbnails.cpp @@ -2,7 +2,6 @@ #include "../miniz_extension.hpp" #include "format.hpp" -#include #include #include #include @@ -595,7 +594,7 @@ std::string get_error_string(const ThumbnailErrors& errors) std::string error_str; if (errors.has(ThumbnailError::InvalidVal)) - error_str += "\n - " + Slic3r::format("Invalid input format. Expected vector of dimensions in the following format: \"%1%\"", "XxY/EXT, XxY/EXT, ..."); + error_str += "\n - " + format("Invalid input format. Expected vector of dimensions in the following format: \"%1%\"", "XxY/EXT, XxY/EXT, ..."); if (errors.has(ThumbnailError::OutOfRange)) error_str += "\n - Input value is out of range"; if (errors.has(ThumbnailError::InvalidExt)) diff --git a/src/libslic3r/GCode/Thumbnails.hpp b/src/libslic3r/GCode/Thumbnails.hpp index bcee02fea1..38a939b74c 100644 --- a/src/libslic3r/GCode/Thumbnails.hpp +++ b/src/libslic3r/GCode/Thumbnails.hpp @@ -3,7 +3,6 @@ #include "../Point.hpp" #include "../PrintConfig.hpp" -#include "../enum_bitmask.hpp" #include "ThumbnailData.hpp" #include "../enum_bitmask.hpp" diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index c412553a22..e246c16d49 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -6,7 +6,6 @@ #undef PI #include -#include "boost/log/trivial.hpp" // Include igl first. It defines "L" macro which then clashes with our localization #include #undef L @@ -28,6 +27,7 @@ #include // BBS: for boolean using mcut #include "mcut/include/mcut/mcut.h" +#include "boost/log/trivial.hpp" namespace Slic3r { namespace MeshBoolean { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ddcb4bcbf8..809368d38c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -12,6 +12,7 @@ #include #include #include + #include namespace { @@ -6070,7 +6071,7 @@ void PrintConfigDef::handle_legacy_composite(DynamicPrintConfig &config) auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(thumbnails_str, extention); if (errors != enum_bitmask()) { - std::string error_str = "\n" + Slic3r::format("Invalid value provided for parameter %1%: %2%", "thumbnails", thumbnails_str); + std::string error_str = "\n" + format("Invalid value provided for parameter %1%: %2%", "thumbnails", thumbnails_str); error_str += GCodeThumbnails::get_error_string(errors); throw BadOptionValueException(error_str); } @@ -6079,7 +6080,7 @@ void PrintConfigDef::handle_legacy_composite(DynamicPrintConfig &config) const auto& extentions = ConfigOptionEnum::get_enum_names(); thumbnails_str.clear(); for (const auto& [ext, size] : thumbnails_list) - thumbnails_str += Slic3r::format("%1%x%2%/%3%, ", size.x(), size.y(), extentions[int(ext)]); + thumbnails_str += format("%1%x%2%/%3%, ", size.x(), size.y(), extentions[int(ext)]); thumbnails_str.resize(thumbnails_str.length() - 2); config.set_key_value("thumbnails", new ConfigOptionString(thumbnails_str)); From b9d1f42ce3f6d2f4d86800dae38c28edb93a675f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 11 Jul 2024 22:52:58 +0800 Subject: [PATCH 016/151] Fix crash on printer UI --- src/slic3r/GUI/Plater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b1812aa6c2..0a8db799fd 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1385,8 +1385,8 @@ void Sidebar::update_presets(Preset::Type preset_type) /* update bed shape */ Tab* printer_tab = wxGetApp().get_tab(Preset::TYPE_PRINTER); if (printer_tab) { - printer_tab->on_preset_loaded(); printer_tab->update(); + printer_tab->on_preset_loaded(); } Preset& printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset(); From 39e842156646b9c59841387ff06f4d23208210f3 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 11 Jul 2024 23:48:51 +0800 Subject: [PATCH 017/151] Fix some utf-8 related issues in Cut gizmo (#6050) * Fix some utf-8 related issues in Cut gizmo --- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index 011df0cd34..32b0e20492 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -631,7 +631,7 @@ bool GLGizmoCut3D::render_slider_double_input(const std::string& label, float& v float min_tolerance = tolerance_in < 0.f ? UndefMinVal : 0.f; const float max_tolerance_v = max_tolerance > 0.f ? std::min(max_tolerance, 0.5f * mean_size) : 0.5f * mean_size; - m_imgui->bbl_slider_float_style(("##tolerance_" + label).c_str(), &tolerance, min_tolerance, max_tolerance_v, format.c_str(), 1.f, true, + m_imgui->bbl_slider_float_style("##tolerance_" + label, &tolerance, min_tolerance, max_tolerance_v, format.c_str(), 1.f, true, _L("Tolerance")); left_width += (slider_with + item_in_gap); @@ -699,7 +699,7 @@ bool GLGizmoCut3D::render_reset_button(const std::string& label_id, const std::s ImGui::PushStyleColor(ImGuiCol_ButtonHovered, {0.4f, 0.4f, 0.4f, 1.0f}); ImGui::PushStyleColor(ImGuiCol_ButtonActive, {0.4f, 0.4f, 0.4f, 1.0f}); - const bool revert = m_imgui->button(wxString(ImGui::RevertBtn) + "##" + label_id); + const bool revert = m_imgui->button(wxString(ImGui::RevertBtn) + "##" + wxString::FromUTF8(label_id)); ImGui::PopStyleColor(3); @@ -2534,7 +2534,7 @@ void GLGizmoCut3D::render_groove_float_input(const std::string& label, float& in m_imgui->disabled_begin(is_approx(in_val, init_val) && is_approx(in_tolerance, 0.1f)); const std::string act_name = _u8L("Reset"); - if (render_reset_button(("##groove_" + label + act_name).c_str(), act_name)) { + if (render_reset_button("##groove_" + label + act_name, act_name)) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), GUI::format("%1%: %2%", act_name, label), UndoRedo::SnapshotType::GizmoAction); in_val = init_val; in_tolerance = 0.1f; @@ -2574,7 +2574,7 @@ bool GLGizmoCut3D::render_angle_input(const std::string& label, float& in_val, c const float old_val = val; const std::string format = "%.0f " + _u8L("°"); - m_imgui->bbl_slider_float_style(("##angle_" + label).c_str(), &val, min_val, max_val, format.c_str(), 1.f, true, from_u8(label)); + m_imgui->bbl_slider_float_style("##angle_" + label, &val, min_val, max_val, format.c_str(), 1.f, true, from_u8(label)); ImGui::SameLine(left_width); ImGui::PushItemWidth(input_width); @@ -2597,7 +2597,7 @@ bool GLGizmoCut3D::render_angle_input(const std::string& label, float& in_val, c m_imgui->disabled_begin(is_approx(in_val, init_val)); const std::string act_name = _u8L("Reset"); - if (render_reset_button(("##angle_" + label + act_name).c_str(), act_name)) { + if (render_reset_button("##angle_" + label + act_name, act_name)) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), GUI::format("%1%: %2%", act_name, label), UndoRedo::SnapshotType::GizmoAction); in_val = init_val; is_changed = true; @@ -2640,7 +2640,7 @@ void GLGizmoCut3D::render_snap_specific_input(const std::string& label, const wx float val = in_val * 100.f; const float old_val = val; - m_imgui->bbl_slider_float_style(("##snap_" + label).c_str(), &val, min_val, max_val, format.c_str(), 1.f, true, tooltip); + m_imgui->bbl_slider_float_style("##snap_" + label, &val, min_val, max_val, format.c_str(), 1.f, true, tooltip); ImGui::SameLine(left_width); ImGui::PushItemWidth(input_width); @@ -2655,7 +2655,7 @@ void GLGizmoCut3D::render_snap_specific_input(const std::string& label, const wx m_imgui->disabled_begin(is_approx(in_val, init_val)); const std::string act_name = _u8L("Reset"); - if (render_reset_button(("##snap_" + label + act_name).c_str(), act_name)) { + if (render_reset_button("##snap_" + label + act_name, act_name)) { in_val = init_val; is_changed = true; } @@ -2690,7 +2690,7 @@ void GLGizmoCut3D::render_cut_plane_input_window(CutConnectors &connectors, floa const bool is_cut_plane_init = m_rotation_m.isApprox(Transform3d::Identity()) && m_bb_center.isApprox(m_plane_center); m_imgui->disabled_begin(is_cut_plane_init); std::string act_name = _u8L("Reset cutting plane"); - if (render_reset_button("cut_plane", into_u8(act_name))) { + if (render_reset_button("cut_plane", act_name)) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), act_name, UndoRedo::SnapshotType::GizmoAction); reset_cut_plane(); } @@ -2710,7 +2710,7 @@ void GLGizmoCut3D::render_cut_plane_input_window(CutConnectors &connectors, floa m_imgui->disabled_begin(is_cut_plane_init && !has_connectors); act_name = _u8L("Reset cut"); - if (m_imgui->button(act_name, _u8L("Reset cutting plane and remove connectors"))) { + if (m_imgui->button(wxString::FromUTF8(act_name), _L("Reset cutting plane and remove connectors"))) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), act_name, UndoRedo::SnapshotType::GizmoAction); reset_cut_plane(); reset_connectors(); From bd01e0518f98d1d8e969c2b23c5378336b94044d Mon Sep 17 00:00:00 2001 From: davidjuanesb Date: Thu, 11 Jul 2024 17:49:10 +0200 Subject: [PATCH 018/151] Catalan language updated (#6053) * Catalan language updated Catalan language updated --- localization/i18n/ca/OrcaSlicer_ca.po | 198 ++++++++++++++++---------- 1 file changed, 126 insertions(+), 72 deletions(-) diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 1b9d913cf4..bfb8efd99f 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-30 15:44+0200\n" -"PO-Revision-Date: 2024-06-15 11:02+0200\n" +"PO-Revision-Date: 2024-07-07 18:43+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: ca\n" @@ -2869,11 +2869,11 @@ msgstr "Primer heu de seleccionar el tipus de material i el color." #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f)" -msgstr "" +msgstr "Introduïu un valor vàlid (K a %.1f~%.1f)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "" +msgstr "Introduïu un valor vàlid (K a %.1f~%.1f, N a %.1f~%.1f)" msgid "Other Color" msgstr "Un altre color" @@ -3304,11 +3304,11 @@ msgid "Edit multiple printers" msgstr "Editar diverses impressores" msgid "Select connected printers (0/6)" -msgstr "" +msgstr "Seleccionar impressores connectades (0/6)" #, c-format, boost-format msgid "Select Connected Printers (%d/6)" -msgstr "" +msgstr "Seleccionar Impressores Connectades (%d/6)" #, c-format, boost-format msgid "The maximum number of printers that can be selected is %d" @@ -3371,7 +3371,7 @@ msgid "Printing Failed" msgstr "Impressió Fallida" msgid "Printing Pause" -msgstr "" +msgstr "Pausar Impressió" msgid "Prepare" msgstr "Preparació" @@ -5887,7 +5887,7 @@ msgid "View all object's settings" msgstr "Veure tots els paràmetres de l'objecte" msgid "Material settings" -msgstr "" +msgstr "Configuració del Material" msgid "Remove current plate (if not last one)" msgstr "Treure la placa actual ( si no és l'última )" @@ -5966,7 +5966,7 @@ msgid "Search plate, object and part." msgstr "Cercar placa, objecte i peça." msgid "Pellets" -msgstr "" +msgstr "Pellets" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." @@ -6590,19 +6590,19 @@ msgid "Choose Download Directory" msgstr "Triar el Directori de Descàrrega" msgid "Associate" -msgstr "" +msgstr "Associar" msgid "with OrcaSlicer so that Orca can open models from" -msgstr "" +msgstr "amb OrcaSlicer perquè Orca pugui obrir models des de" msgid "Current Association: " -msgstr "" +msgstr "Associació actual: " msgid "Current Instance" -msgstr "" +msgstr "Instància actual" msgid "Current Instance Path: " -msgstr "" +msgstr "Ruta de la Instància Actual: " msgid "General Settings" msgstr "Configuració general" @@ -7706,8 +7706,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Quan graveu timelapse sense capçal d'impressió, es recomana afegir una " "\"Torre de Purga Timelapse\" \n" @@ -7791,7 +7791,7 @@ msgid "Prime tower" msgstr "Torre de Purga" msgid "Special mode" -msgstr "Ajustos espcials" +msgstr "Ajustos especials" msgid "G-code output" msgstr "Codi-G de Sortida" @@ -7901,7 +7901,7 @@ msgid "Volumetric speed limitation" msgstr "Limitació de la velocitat volumètrica" msgid "Cooling" -msgstr "Refregiració" +msgstr "Refrigeració" msgid "Cooling for specific layer" msgstr "Refrigeració per a capes específiques" @@ -8357,54 +8357,58 @@ msgid "The configuration is up to date." msgstr "La configuració està actualitzada." msgid "Obj file Import color" -msgstr "" +msgstr "Importar color de l'arxiu Obj" msgid "Specify number of colors:" -msgstr "" +msgstr "Especificar el nombre de colors:" #, c-format, boost-format msgid "The color count should be in range [%d, %d]." -msgstr "" +msgstr "El recompte de colors ha d'estar en rang [%d, %d]." msgid "Recommended " -msgstr "" +msgstr "Recomanat " msgid "Current filament colors:" -msgstr "" +msgstr "Color del filament predeterminat:" msgid "Quick set:" -msgstr "" +msgstr "Configuració ràpida:" msgid "Color match" -msgstr "" +msgstr "Concordança de color" msgid "Approximate color matching." -msgstr "" +msgstr "Concordança aproximada de color." msgid "Append" -msgstr "" +msgstr "Afegir" msgid "Add consumable extruder after existing extruders." -msgstr "" +msgstr "Afegiu extrusora consumible després dels extrusors existents." msgid "Reset mapped extruders." -msgstr "" +msgstr "Restableix els extrusors mapejats." msgid "Cluster colors" -msgstr "" +msgstr "Colors del clúster" msgid "Map Filament" -msgstr "" +msgstr "Mapejar Filament" msgid "" "Note:The color has been selected, you can choose OK \n" " to continue or manually adjust it." msgstr "" +"Nota: El color ha estat seleccionat, podeu triar D'acord \n" +" per continuar-lo o ajustar-lo manualment." msgid "" "Waring:The count of newly added and \n" " current extruders exceeds 16." msgstr "" +"Advertència:El recompte de nous afegits i \n" +" Els extrusors de corrent superen els 16." msgid "Ramming customization" msgstr "Configuració de Moldejat de punta( Ramming )" @@ -10857,7 +10861,7 @@ msgstr "" "freqüència d'arrencada i aturada" msgid "Don't slow down outer walls" -msgstr "" +msgstr "No freneu a les parets exteriors" msgid "" "If enabled, this setting will ensure external perimeters are not slowed down " @@ -10871,6 +10875,16 @@ msgid "" "external walls\n" "\n" msgstr "" +"Si està habilitada, aquesta configuració garantirà que els perímetres " +"externs no s'alenteixin per complir el temps mínim de capa. Això és " +"particularment útil en els escenaris següents:\n" +"\n" +"1. Per evitar canvis de brillantor en imprimir filaments brillants \n" +"2. Evitar canvis en la velocitat de la paret externa que poden crear " +"artefactes de paret lleugers que semblen bandes z \n" +"3. Evitar imprimir a velocitats que provoquen VFAs (artefactes fins) a les " +"parets externes\n" +"\n" msgid "Layer time" msgstr "Temps de capa" @@ -10944,7 +10958,7 @@ msgstr "" "la qual cosa és important i ha de ser precís" msgid "Pellet flow coefficient" -msgstr "" +msgstr "Coeficient de flux de pellets" msgid "" "Pellet flow coefficient is emperically derived and allows for volume " @@ -10955,6 +10969,13 @@ msgid "" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" +"El coeficient de flux de pellets es deriva empíricament i permet calcular el " +"volum per a impressores de pellets.\n" +"\n" +"Internament es converteix en filament_diameter. La resta de càlculs de volum " +"continuen sent els mateixos.\n" +"\n" +"filament_diameter = m²( (4 * pellet_flow_coefficient) / PI )" msgid "Shrinkage" msgstr "Encongiment" @@ -11459,15 +11480,15 @@ msgstr "Velocitat màxima del ventilador a la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocitat del ventilador augmentarà linealment de zero a la capa " -"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer" -"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a " -"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " +"\"close_fan_the_first_x_layers\" al màxim a la capa " +"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior " +"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " "la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" @@ -11755,10 +11776,11 @@ msgid "Klipper" msgstr "Klipper" msgid "Pellet Modded Printer" -msgstr "" +msgstr "Impressora modificada de pellets" msgid "Enable this option if your printer uses pellets instead of filaments" msgstr "" +"Activeu aquesta opció si la impressora utilitza pellets en lloc de filaments" msgid "Support multi bed types" msgstr "Admetre diversos tipus de llits" @@ -11884,49 +11906,59 @@ msgstr "" "funció." msgid "Use beam interlocking" -msgstr "" +msgstr "Utilitzar feixos d'entrellaçament" msgid "" "Generate interlocking beam structure at the locations where different " "filaments touch. This improves the adhesion between filaments, especially " "models printed in different materials." msgstr "" +"Generar una estructura de feixos d'entrellaçament en els llocs on toquen " +"diferents filaments. Això millora l'adherència entre filaments, especialment " +"els models impresos en diferents materials." msgid "Interlocking beam width" -msgstr "" +msgstr "Amplada dels feixos d'entrellaçament" msgid "The width of the interlocking structure beams." -msgstr "" +msgstr "L'amplada dels feixos de l'estructura entrellaçada." msgid "Interlocking direction" -msgstr "" +msgstr "Direcció d'entrellaçament" msgid "Orientation of interlock beams." -msgstr "" +msgstr "Orientació de feixos d'entrellaçament." msgid "Interlocking beam layers" -msgstr "" +msgstr "Capes de feixos d'entrellaçament" msgid "" "The height of the beams of the interlocking structure, measured in number of " "layers. Less layers is stronger, but more prone to defects." msgstr "" +"L'alçada dels feixos de l'estructura entrellaçada. mesurada en nombre de " +"capes. Menys capes és més forta, però més propensa als defectes." msgid "Interlocking depth" -msgstr "" +msgstr "Profunditat d'entrellaçament" msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" +"La distància del límit entre filaments per generar una estructura " +"entrellaçada, mesurada en cel·les. Massa poques cel·les donaran lloc a una " +"mala adhesió." msgid "Interlocking boundary avoidance" -msgstr "" +msgstr "Evitació de límits entrellaçats" msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" +"La distància a l'exterior d'un model on no es generaran estructures " +"entrellaçades, mesurades en cel·les." msgid "Ironing Type" msgstr "Tipus de planxat" @@ -12656,12 +12688,14 @@ msgid "Spiral" msgstr "Espiral" msgid "Traveling angle" -msgstr "" +msgstr "Angle de viatge" msgid "" "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " "in Normal Lift" msgstr "" +"Angle de viatge per al tipus Salt en Z de Pendent i Espiral. Si l'establiu a " +"90°, es produeix un Aixecament Normal" msgid "Only lift Z above" msgstr "Només aixecar Z per sobre" @@ -14895,6 +14929,26 @@ msgid "" "cause the result not exactly the same in each calibration. We are still " "investigating the root cause to do improvements with new updates." msgstr "" +"Trobeu els detalls del calibratge de la dinàmica de flux al nostre wiki.\n" +"\n" +"Normalment el calibratge és innecessari. Quan inicieu una impressió d'un sol " +"color/material, amb l'opció \"calibratge de dinàmica de flux\" marcada al " +"menú d'inici d'impressió, la impressora seguirà la forma antiga, calibrarà " +"el filament abans de la impressió; Quan inicieu una impressió multicolor/" +"material, la impressora utilitzarà el paràmetre de compensació predeterminat " +"per al filament durant cada canvi de filament, el qual tindrà un bon " +"resultat en la majoria dels casos.\n" +"\n" +"Tingueu en compte que hi ha alguns casos que poden fer que els resultats del " +"calibratge no siguin fiables, com ara una adhesió insuficient a la placa de " +"construcció. Es pot aconseguir millorar l'adhesió rentant la placa de " +"construcció o aplicant cola. Per obtenir més informació sobre aquest tema, " +"consulteu el nostre Wiki.\n" +"\n" +"Els resultats del calibratge tenen al voltant d'un 10 per cent de tremolor " +"en la nostra prova, el que pot fer que el resultat no sigui exactament el " +"mateix en cada calibratge. Encara estem investigant la causa arrel per fer " +"millores amb noves actualitzacions." msgid "When to use Flow Rate Calibration" msgstr "Quan s'ha d'utilitzar el Calibratge del Ratio de Flux" @@ -15029,12 +15083,14 @@ msgid "" "Only one of the results with the same name will be saved. Are you sure you " "want to override the other results?" msgstr "" +"Només es desarà un dels resultats amb el mateix nom. Estàs segur que vols " +"anul·lar els altres resultats?" msgid "Please find the best line on your plate" msgstr "Busqueu la millor línia a la placa" msgid "Please find the corner with perfect degree of extrusion" -msgstr "" +msgstr "Busqueu la cantonada amb un grau d'extrusió perfecte" msgid "Input Value" msgstr "Valor d'entrada" @@ -15296,7 +15352,7 @@ msgid "PETG" msgstr "PETG" msgid "PCTG" -msgstr "" +msgstr "PCTG" msgid "TPU" msgstr "TPU" @@ -15396,7 +15452,7 @@ msgid "Upload to storage" msgstr "Pujar a l'emmagatzematge" msgid "Switch to Device tab after upload." -msgstr "" +msgstr "Canvieu a la pestanya Dispositiu després de penjar-lo." #, c-format, boost-format msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" @@ -15632,8 +15688,8 @@ msgstr "" "Vols reescriure'l?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus " @@ -16099,10 +16155,11 @@ msgid "Refresh Printers" msgstr "Refrescar Impressores" msgid "View print host webui in Device tab" -msgstr "" +msgstr "Veure el host d'impressió webui a la pestanya Dispositiu" msgid "Replace the BambuLab's device tab with print host webui" msgstr "" +"Substituïu la pestanya del dispositiu BambuLab pel host d'impressió webui" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -16557,7 +16614,7 @@ msgid "Could not connect to SimplyPrint" msgstr "No s'ha pogut connectar a SimplyPrint" msgid "Internal error" -msgstr "" +msgstr "Error intern" msgid "Unknown error" msgstr "Error desconegut" @@ -16976,9 +17033,6 @@ msgstr "" "augmentar adequadament la temperatura del llit pot reduir la probabilitat de " "deformació." -#~ msgid "Current association: " -#~ msgstr "Associació actual: " - #~ msgid "Associate prusaslicer://" #~ msgstr "Associar prusaslicer://" @@ -17002,15 +17056,18 @@ msgstr "" #~ "Associar OrcaSlicer amb els enllaços bambustudio:// perquè Orca pugui " #~ "obrir models des de makerworld.com" -#~ msgid "Associate cura://" -#~ msgstr "Associar cura://" +#~ msgid "Printer local connection failed, please try again." +#~ msgstr "La connexió local de la impressora ha fallat, torneu-ho a provar." +#, c-format, boost-format #~ msgid "" -#~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " -#~ "thingiverse.com" +#~ "There is already a historical calibration result with the same name: %s. " +#~ "Only one of the results with the same name is saved. Are you sure you " +#~ "want to overrides the historical result?" #~ msgstr "" -#~ "Associar OrcaSlicer amb els enllaços cura:// perquè Orca pugui obrir " -#~ "models des de thingiverse.com" +#~ "Ja hi ha un resultat històric de calibratge amb el mateix nom: %s. Només " +#~ "es pot guardar un dels resultats amb el mateix nom. Estàs segur que vols " +#~ "sobreescriure el resultat històric?" #~ msgid "" #~ "File size exceeds the 100MB upload limit. Please upload your file through " @@ -17019,11 +17076,11 @@ msgstr "" #~ "La mida del fitxer supera el límit de pujada de 100 MB. Si us plau, " #~ "carregueu el vostre fitxer a través del panell." -#~ msgid "Please input a valid value (K in 0~0.3)" -#~ msgstr "Introduïu un valor vàlid ( K en 0 ~ 0.3 )" +#~ msgid "X" +#~ msgstr "X" -#~ msgid "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" -#~ msgstr "Introduïu un valor vàlid ( K a 0 ~ 0.3, N a 0.6 ~ 2.0 )" +#~ msgid "Y" +#~ msgstr "Y" #~ msgid "V" #~ msgstr "V" @@ -17058,9 +17115,6 @@ msgstr "" #~ "Hi ha més de 4 sistemes / pràctics que utilitzen accés remot, podeu " #~ "tancar-ne alguns i tornar-ho a provar." -#~ msgid "Infill direction" -#~ msgstr "Angle de farciment" - #~ msgid "" #~ "Enable this to get a G-code file which has G2 and G3 moves. And the " #~ "fitting tolerance is same with resolution" From 09ea50c8e2e47a145c87371889e43886109b68c4 Mon Sep 17 00:00:00 2001 From: Bernhard Koppensteiner <36260775+koppensb@users.noreply.github.com> Date: Thu, 11 Jul 2024 17:50:18 +0200 Subject: [PATCH 019/151] Prusa MINIIS custom g-code changes (#6067) * added Prusa Mini with Input Shaper to profiles * Merge branch 'SoftFever:main' into main * refactoring to more reusable settings * Merge branch 'SoftFever:main' into main * added more processes, changed settings * Merge branch 'main' of https://github.com/koppensb/OrcaSlicer * Update 0.15mm Speed @MINIIS.json * Update 0.10mm Speed @MINIIS.json * changed to cubic because of speed * Merge branch 'main' of https://github.com/koppensb/OrcaSlicer * further changes after reviewing prusa slicer settings * simplified machine settings * retraction speeds according to prusa slicer * Merge branch 'SoftFever:main' into main * changed max flow according to prusa slicer * Merge branch 'main' of https://github.com/koppensb/OrcaSlicer * after clearification at the prusaslicer repository M900 got removed * Merge branch 'SoftFever:main' into main * precise wall per default * Merge branch 'main' of https://github.com/koppensb/OrcaSlicer * enable reverse overhang on odd by default * added settings from prusa slicer * changed cooling setings * Merge branch 'SoftFever:main' into main * changed default to inner-outer-inner wall inner-outer-inner gives pretty good overhangs with better surface * new profiles for bigger nozzles, changed some cooling settings according to prusaslicer * profiles for different nozzles sizes, better speed settings * initial layer height was wrong * wrong initial layer height * set the correct accelerations * Merge branch 'main' of https://github.com/koppensb/OrcaSlicer * changed firmware version number * using pressure advance UI setting instead of custom filament g-code * Merge branch 'SoftFever:main' into main * Update Prusa Generic PC.json * Update Prusa Generic PC.json * changed max flow for PC * added PVA filament profiles * bug fix in filament loading * Merge branch 'SoftFever:main' into main * Merge branch 'SoftFever:main' into main * changed line width according to prusa slicer * Merge branch 'main' of https://github.com/koppensb/OrcaSlicer * Merge branch 'main' into main * changed heatbed temperature for Minis capabilities * Merge branch 'main' of https://github.com/koppensb/OrcaSlicer * Merge branch 'main' into main * Merge branch 'SoftFever:main' into main * set default support to snug * changed default filament setting to the correct value --- resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json index 38ea5980f2..a37cb8cc08 100644 --- a/resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa MINIIS 0.4 nozzle.json @@ -99,9 +99,9 @@ "printable_height": "180", "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720 ; Move print head up{endif}\nG1 X170 Y170 F4200 ; park print head\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+50, max_print_height)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM572 S0 ; reset PA\nM569 S1 X Y ; reset to stealthchop for X Y\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", "machine_pause_gcode": "M601", - "machine_start_gcode": "M862.3 P \"MINI\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.5 P2 ; g-code level check\nM862.6 P\"Input shaper\" ; FW feature check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM569 S1 X Y ; set stealthchop for X Y\nM204 T1250 ; set travel acceleration\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0\n\nG1 X0 Y-2 Z3 F2400\n\nM109 S[first_layer_temperature] ; wait for extruder temp\n\n; intro line\nG1 X10 Z0.2 F1000\nG1 X70 E8 F900\nG1 X140 E10 F700\nG92 E0\n\nM569 S0 X Y ; set spreadcycle for X Y\nM204 T[machine_max_acceleration_travel] ; restore travel acceleration\nM572 W0.06 ; set smooth time\nM221 S95 ; set flow", + "machine_start_gcode": "M862.3 P \"MINI\" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM862.5 P2 ; g-code level check\nM862.6 P\"Input shaper\" ; FW feature check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nG28 ; home all without mesh bed level\nM104 S170 ; set extruder temp for bed leveling\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM569 S1 X Y ; set stealthchop for X Y\nM204 T1250 ; set travel acceleration\nG29 ; mesh bed leveling \nM104 S[first_layer_temperature] ; set extruder temp\nG92 E0\n\nG1 X0 Y-2 Z3 F2400\n\nM109 S[first_layer_temperature] ; wait for extruder temp\n\n; intro line\nG1 X10 Z0.2 F1000\nG1 X70 E8 F900\nG1 X140 E10 F700\nG92 E0\n\nM569 S0 X Y ; set spreadcycle for X Y\nM204 T[machine_max_acceleration_travel] ; restore travel acceleration\nM572 W0.06 ; set smooth time\nM221 S95 ; set flow", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1000,1700), (10000,1700))} Y{interpolate_table(extruded_weight_total, (0,4000), (1000,1700), (10000,1700))}\n{if ! spiral_mode}M74 W[extruded_weight_total]{endif}\n", - "change_filament_gcode": "M600\nG1 E0.4 F1500 ; prime after color change", + "change_filament_gcode": "M600", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MINIIS\nNO_TEMPLATES", "scan_first_layer": "0", From 82ff02f483b29c4ec218e00f2f840768a936e1a3 Mon Sep 17 00:00:00 2001 From: artillery3dlab Date: Thu, 11 Jul 2024 23:51:38 +0800 Subject: [PATCH 020/151] Add Artillery's new machine config (#6068) * Add Artillery's new machine config * Merge branch 'main' into master * Merge branch 'main' into master --- resources/profiles/Artillery.json | 148 +++++++++ .../Artillery Sidewinder X3 Plus_cover.png | Bin 0 -> 32197 bytes .../Artillery Sidewinder X3 Pro_cover.png | Bin 0 -> 31070 bytes .../Artillery Sidewinder X4 Plus_cover.png | Bin 0 -> 27172 bytes .../Artillery Sidewinder X4 Pro_cover.png | Bin 0 -> 28759 bytes ...lery_sidewinderx3plus_buildplate_model.stl | Bin 0 -> 164184 bytes ...llery_sidewinderx3pro_buildplate_model.stl | Bin 0 -> 157684 bytes ...lery_sidewinderx4plus_buildplate_model.stl | Bin 0 -> 155284 bytes ...llery_sidewinderx4pro_buildplate_model.stl | Bin 0 -> 158284 bytes .../Artillery/filament/Artillery ABS.json | 70 +++++ .../Artillery/filament/Artillery PETG.json | 70 +++++ .../filament/Artillery PLA Basic.json | 58 ++++ .../filament/Artillery PLA Matte.json | 58 ++++ .../filament/Artillery PLA Silk.json | 58 ++++ .../filament/Artillery PLA Tough.json | 58 ++++ .../Artillery/filament/Artillery TPU.json | 70 +++++ ...tillery Sidewinder X3 Plus 0.4 nozzle.json | 229 ++++++++++++++ .../machine/Artillery Sidewinder X3 Plus.json | 12 + ...rtillery Sidewinder X3 Pro 0.4 nozzle.json | 230 ++++++++++++++ .../machine/Artillery Sidewinder X3 Pro.json | 12 + ...tillery Sidewinder X4 Plus 0.4 nozzle.json | 229 ++++++++++++++ .../machine/Artillery Sidewinder X4 Plus.json | 12 + ...rtillery Sidewinder X4 Pro 0.4 nozzle.json | 229 ++++++++++++++ .../machine/Artillery Sidewinder X4 Pro.json | 12 + ...tra Fine @Artillery X4Plus 0.4 nozzle.json | 14 + ...xtra Fine @Artillery X4Pro 0.4 nozzle.json | 14 + ... Quality @Artillery X4Plus 0.4 nozzle.json | 20 ++ ...h Quality @Artillery X4Pro 0.4 nozzle.json | 20 ++ ...2mm Fine @Artillery X4Plus 0.4 nozzle.json | 14 + ...12mm Fine @Artillery X4Pro 0.4 nozzle.json | 14 + ... Quality @Artillery X4Plus 0.4 nozzle.json | 20 ++ ...h Quality @Artillery X4Pro 0.4 nozzle.json | 20 ++ ... Quality @Artillery X4Plus 0.4 nozzle.json | 20 ++ ...h Quality @Artillery X4Pro 0.4 nozzle.json | 20 ++ ... Optimal @Artillery X4Plus 0.4 nozzle.json | 18 ++ ...m Optimal @Artillery X4Pro 0.4 nozzle.json | 16 + ...Standard @Artillery X3Plus 0.4 nozzle.json | 283 +++++++++++++++++ ... Standard @Artillery X3Pro 0.4 nozzle.json | 283 +++++++++++++++++ ...Standard @Artillery X4Plus 0.4 nozzle.json | 283 +++++++++++++++++ ... Standard @Artillery X4Pro 0.4 nozzle.json | 284 ++++++++++++++++++ ...Strength @Artillery X4Plus 0.4 nozzle.json | 10 + ... Strength @Artillery X4Pro 0.4 nozzle.json | 10 + ...mm Draft @Artillery X4Plus 0.4 nozzle.json | 11 + ...4mm Draft @Artillery X4Pro 0.4 nozzle.json | 10 + ...ra Draft @Artillery X4Plus 0.4 nozzle.json | 11 + ...tra Draft @Artillery X4Pro 0.4 nozzle.json | 10 + 46 files changed, 2960 insertions(+) create mode 100644 resources/profiles/Artillery/Artillery Sidewinder X3 Plus_cover.png create mode 100644 resources/profiles/Artillery/Artillery Sidewinder X3 Pro_cover.png create mode 100644 resources/profiles/Artillery/Artillery Sidewinder X4 Plus_cover.png create mode 100644 resources/profiles/Artillery/Artillery Sidewinder X4 Pro_cover.png create mode 100644 resources/profiles/Artillery/artillery_sidewinderx3plus_buildplate_model.stl create mode 100644 resources/profiles/Artillery/artillery_sidewinderx3pro_buildplate_model.stl create mode 100644 resources/profiles/Artillery/artillery_sidewinderx4plus_buildplate_model.stl create mode 100644 resources/profiles/Artillery/artillery_sidewinderx4pro_buildplate_model.stl create mode 100644 resources/profiles/Artillery/filament/Artillery ABS.json create mode 100644 resources/profiles/Artillery/filament/Artillery PETG.json create mode 100644 resources/profiles/Artillery/filament/Artillery PLA Basic.json create mode 100644 resources/profiles/Artillery/filament/Artillery PLA Matte.json create mode 100644 resources/profiles/Artillery/filament/Artillery PLA Silk.json create mode 100644 resources/profiles/Artillery/filament/Artillery PLA Tough.json create mode 100644 resources/profiles/Artillery/filament/Artillery TPU.json create mode 100644 resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus.json create mode 100644 resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro.json create mode 100644 resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus.json create mode 100644 resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro.json create mode 100644 resources/profiles/Artillery/process/0.08mm Extra Fine @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.08mm Extra Fine @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.08mm High Quality @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.08mm High Quality @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.12mm Fine @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.12mm Fine @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.12mm High Quality @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.12mm High Quality @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.16mm High Quality @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.16mm High Quality @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.16mm Optimal @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.16mm Optimal @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.20mm Strength @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.20mm Strength @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.24mm Draft @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.24mm Draft @Artillery X4Pro 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.28mm Extra Draft @Artillery X4Plus 0.4 nozzle.json create mode 100644 resources/profiles/Artillery/process/0.28mm Extra Draft @Artillery X4Pro 0.4 nozzle.json diff --git a/resources/profiles/Artillery.json b/resources/profiles/Artillery.json index 26c7d7b115..c763238129 100644 --- a/resources/profiles/Artillery.json +++ b/resources/profiles/Artillery.json @@ -23,6 +23,22 @@ { "name": "Artillery Hornet", "sub_path": "machine/Artillery Hornet.json" + }, + { + "name": "Artillery Sidewinder X3 Pro", + "sub_path": "machine/Artillery Sidewinder X3 Pro.json" + }, + { + "name": "Artillery Sidewinder X3 Plus", + "sub_path": "machine/Artillery Sidewinder X3 Plus.json" + }, + { + "name": "Artillery Sidewinder X4 Pro", + "sub_path": "machine/Artillery Sidewinder X4 Pro.json" + }, + { + "name": "Artillery Sidewinder X4 Plus", + "sub_path": "machine/Artillery Sidewinder X4 Plus.json" } ], "process_list": [ @@ -81,6 +97,94 @@ { "name": "0.24mm Draft @Artillery Hornet", "sub_path": "process/0.24mm Draft @Artillery Hornet.json" + }, + { + "name": "0.20mm Standard @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.08mm Extra Fine @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.08mm Extra Fine @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.08mm High Quality @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.08mm High Quality @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.12mm Fine @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.12mm High Quality @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.12mm High Quality @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.16mm High Quality @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.16mm High Quality @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.20mm Strength @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Artillery X4Pro 0.4 nozzle", + "sub_path": "process/0.28mm Extra Draft @Artillery X4Pro 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.08mm Extra Fine @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.08mm Extra Fine @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.08mm High Quality @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.08mm High Quality @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.12mm Fine @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.12mm High Quality @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.12mm High Quality @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.16mm High Quality @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.16mm High Quality @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.20mm Strength @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Artillery X4Plus 0.4 nozzle", + "sub_path": "process/0.28mm Extra Draft @Artillery X4Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Artillery X3Plus 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Artillery X3Pro 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json" } ], "filament_list": [ @@ -131,6 +235,34 @@ { "name": "Artillery Generic ASA", "sub_path": "filament/Artillery Generic ASA.json" + }, + { + "name": "Artillery PLA Basic", + "sub_path": "filament/Artillery PLA Basic.json" + }, + { + "name": "Artillery PLA Matte", + "sub_path": "filament/Artillery PLA Matte.json" + }, + { + "name": "Artillery PLA Silk", + "sub_path": "filament/Artillery PLA Silk.json" + }, + { + "name": "Artillery PLA Tough", + "sub_path": "filament/Artillery PLA Tough.json" + }, + { + "name": "Artillery PETG", + "sub_path": "filament/Artillery PETG.json" + }, + { + "name": "Artillery TPU", + "sub_path": "filament/Artillery TPU.json" + }, + { + "name": "Artillery ABS", + "sub_path": "filament/Artillery ABS.json" } ], "machine_list": [ @@ -157,6 +289,22 @@ { "name": "Artillery Hornet 0.4 nozzle", "sub_path": "machine/Artillery Hornet 0.4 nozzle.json" + }, + { + "name": "Artillery Sidewinder X3 Pro 0.4 nozzle", + "sub_path": "machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json" + }, + { + "name": "Artillery Sidewinder X3 Plus 0.4 nozzle", + "sub_path": "machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json" + }, + { + "name": "Artillery Sidewinder X4 Pro 0.4 nozzle", + "sub_path": "machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json" + }, + { + "name": "Artillery Sidewinder X4 Plus 0.4 nozzle", + "sub_path": "machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json" } ] } diff --git a/resources/profiles/Artillery/Artillery Sidewinder X3 Plus_cover.png b/resources/profiles/Artillery/Artillery Sidewinder X3 Plus_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..cfdf05958069b4787bfa03aac89091a78eaaa392 GIT binary patch literal 32197 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Artillery/Artillery Sidewinder X3 Pro_cover.png b/resources/profiles/Artillery/Artillery Sidewinder X3 Pro_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..8df3febadc450c5b7ba75f4917f079d94be9ae82 GIT binary patch literal 31070 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 z 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 PJx&Dm(`p4OmqY#!V(1c= literal 0 HcmV?d00001 diff --git a/resources/profiles/Artillery/Artillery Sidewinder X4 Pro_cover.png b/resources/profiles/Artillery/Artillery Sidewinder X4 Pro_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..19633e8474afac99262d32fbbe32a5b617248f5d GIT binary patch literal 28759 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 XfkCHoD?x7JqyN;DwUr7LFW>t=wm|h6 literal 0 HcmV?d00001 diff --git a/resources/profiles/Artillery/artillery_sidewinderx3plus_buildplate_model.stl b/resources/profiles/Artillery/artillery_sidewinderx3plus_buildplate_model.stl new file mode 100644 index 0000000000000000000000000000000000000000..c4856c67ff9b81506907db80a28c0fed96059cf4 GIT binary patch literal 164184 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 W@SWpX)Dg6hxNgmq#^Mhu@&5o{Bj^4A literal 0 HcmV?d00001 diff --git a/resources/profiles/Artillery/artillery_sidewinderx3pro_buildplate_model.stl b/resources/profiles/Artillery/artillery_sidewinderx3pro_buildplate_model.stl new file mode 100644 index 0000000000000000000000000000000000000000..cf32749a32a7aa3e0053e4baea2a1d143c65134f GIT binary patch literal 157684 zcmb@P378ed)%P1z;zAINDh8Ko%7ZnpXoZb8lbB#AQHHj6@JwBBHEHR7BtLt5c^>&A+;<5uWGkN3Q3YbAI(d zRb5@Z-CN~(|9`jhT4Q-(u54J9|NLd%f<=vIpVH}P*BN{N=WG1E2e#CI*F?x%m|MB; zss4k{wa^~2Tf|YFzCFX(wnlOJsOTqeG2wr7SG4_Pwp&~`E)v?-2(CK3_|k|yv_|{e zIu+~w#CFL`8>0cSZEI9lpA<>HE%)zd?BKKtBz|6Blco@&D#BVcSV4R1wf7tu9|(=zSDxV4Z9Y^dK>ApEZSNOPJ0kFe;Um zs)MKgg*o&fQSs=SLf=C{!%1KiwxKHBY<63rUPYT#g%2O+c54o&tZ*Mx{A_LEv9B^( zH)PJP2NJE`T~ipn3N)MqMz#9wn!?qMK#+u@!W{1BakEww4j#8VSs_tz+4923J3zyk z6-G5&II}RPEA&J|pa+SH|9&|`!y+K6;j4LtX*H0QsyNpi+oV--bz$%;yHj%{T5Vrd zIPV$IF!jKmfl=ALq+-#W!Xv%7tcLMV7tY@+wq5n0s^qYSNL0KsyKvDmXkDtg+H3-& z8m^pGm^3Rvgqi?P!-F#muU2ssYU{$|4_gC?iqmHnM)!4UKn*bp_pH&-S+#oN#X{>* z+&-9uBUjO}D^ zk1?eIo(3Q)-k4ihbtu!e1`-(6Q2cA*S9<^vGN(qLgC`c+E@ls%)np&gIVyEFP>{+B z%BtA-QlaqG_gp8)b|+Z@K}YR7TbbSo0a19|7$T&s(1Ybx7rZE?ks>fE7}hRYaW7=0 zqG?k#KkLQ9s%O8`wQcpxbA`q{+tgN`_jO>MIW>VEBr1MAyYSdrrm1Wid1woBbl#S- zD67V2GBiRBC;~N*sHmP-5Sn9M1V&-~62$VEg{>RnUb1;s;jzE5js49g&@&E+aZeSz zyPzk=SfaN>6dpIW#?bE%jJAHu?Nfc<&!UY-@Lt2cX%pzNh{^+^!UeF;O;#2GQK?>H zh;a>*3pdW;vKq=BEOcoVw_D~Bg~u8a4bMDK=y-*ztt-3VSnNK|)kAFY@R8lf{Qh{9tfE?)mnwG|w9SZ=ZW(C9I&d5qZvMq%$sYsk2SMDf;x zqYL7Fvl9ZM@F?I4Fc;=oOVnIzAc0ZOcb{t4Tt(9s=Fo%0 z*b}Bi`?Ud$Py-19qmJ)7CAxKQAQ(`D)jmI+5KY;GqnvG}vqDbskXg z4hRMmf%&!@IU$;J#O|~e5+(B{L}PmXSX*I~^N3P)33HflyGJKS4{Yb$cdf0En0VTx z=(_n(b7xy&)EAv5MGw3L1htjUs$@ZJ^vYB0iRRWue|U0tvO;3`jM`}46D|!@Z?U5` zTKdB7XdtoV!`kSI=Rm_*bBx0JQKe;5qfd2hbVtwa`W}buK39Ir_AZTZ7IC+#(``&k z`SgE#go_|*^%J$xp0zHbWZ0z0d!IctwlDjbZ5q2ye;Tg(v;b+K2MHR-R-Bk1bXG`U zl>Ym^uB&kLAd%g7k-(@DHSTUdIH3_zJuqtcr?t`Kk2q?0t4Y!KOA~~y$B-$Lqq*m> zXUT%e(bCh{#*(O+^cE&HkQn~ighr|!7=`;u zC1bWQhpkBGlG(j>D=Q#|sB`UOU4JYqjB@rwm75x=8z)3tSMpUV9;pKlxi4z_4qUy) zH3@U*v52TPT0hfuoFg$1qN1zri~e_^O9MSf)NNE6e{*Rdfl+w;H}4GHOJI~iVs*Dk z(ZYWuG{Pi-Q8{`kVwt(G|{* zU%etR_QVO%>4zoy6;;K$-o+@qa<=P%N9WjAYNP&N?oMwh9W`F z7Uf-WHi1#&j*K!0%(vo#M3hx$6q zA=Sew7l^7`dX;zRmdGkiK-9LcyO+1yH$f<|Fo&M1Uw0|Lehc3Zp!QC(0;1}d9m@Au zoVc4vX9ZDJe>$Xm!&3=DXN8`sfd`dOui34vfT)^&VEKZ|gho0mh@zUy@vm#HqG=0r zeg8eRT)qK8w)B!6gXS2UWBD`8p(jbm)15RS9waC$`MV}U^{M`;J-GR_@-y$^8g9Gy ztn%%XV!L;F`LeK$^=ZtV>1!Z9r?pY(C4DMI*c8Pih+E(8sEF^+jR6Nux#iqYoZ~`hw5+_AyIS;N=XRH(f4VT}wSb72mjIzE5p zq^R^SJaXa_BwGVLNYr(o6m5LbHSQvTQFLAU#cM#Atk6SO$io|UCo3d|{JA#z2+v=N(G7kE6Pey}FcIfADl%f2cL-nU3(1XO1ccw?J z_hdSoz$hAHEDgd!%4+pqv&^0%du|2Sma>)oq&4CXu7`M#SpDV9sJwNetw=`K+z=48 zdj8C)+j~$C(g<}{;A!{!nbH3|&QZIT6%t>ppAl`m&ZU86VHEBsN{BL|&EA7Z3>i2h z>T)V*gc?W?7=?S2V})p^YCi2a9$&|PF*Ew`K(;9>8IKJSN><`Qg7(eiuVGA7(X^?3 zKKaRL)7{PG%GD(GnB@<{*dA&?5$K^zgrFWOwvKfY7)8&M|6If0<+Ta)ScK}kDGjB= zPqw8j>fsVaB`y5~>Y;^_HE(zBjHrG@x)tJJ6;1@!771VVt9C;Z8Yu#!QhQKEH*3fq zM50dh{FY~BX$XN)*n3pzyoFScVZ*uwp0}6&KJ~e|9zosLdun@Kbx9!Ktrmc@TKt=1 zf~spds;Qx8Fsn-jp~|N%%wbtbH2u&kxaRM!eQpsDb?mdp2C_G~bP^y9EBDq%2Csg& zJ6Wv*qHN(&!HzjhYYkOCZFW5{3R{F@`BQx_3QB$H=olz==B}j&U$DK^dK>= zrd#mwvCvkrkb0H@o`H*pk}WHgjvYal@-U2$UK_(%~Lg)L%hpa+Sj zt9k^jZgXiMfl=5OY>kzNwl{6^!&4i4X{)9m4l}J_6X-#LY-x2vgw$53v3O|vpi}(B z18GgDXxhRYdXN~iynV2|1MI<20|^47&b_@u@Xg2YR80$z271cQ=os{y!%?WMOLuA@ zact?~!G+bJ;UqAs&550YYcF*Xblge4wAZAz*pGEq@kf|L4-&NhrKPh8jKZTp6Crcz zTa)VOlzi!^mD-|qwgwV3Vn|D86BvapVu(;5gV2iW&gdM}oVPoB5Q$;Kx&+KNDXa5$Do{}uztVGx7T^FCI8!Cs~D5 z56l+{f5M8iMw);qD(U{>20JT5hzHBPaPCK@6-+%+1V-Idx6-tsA(Rp3uuU$x=v`BD zY(tws4-yAO@0q=sO<>fb#?S0M7*a}<)j_X)UR*ew_bo~k!4xc|QC zV@R8VbReliz$?+}iI; z-7|KrmmqQXyB`;yJZ9UE^ec=y?Aleu*S`aT>Y+B(+aGzWcwp`;UDhSnHx?&7_aDw` z?wiH(r}*z2sy~SU4-!k}y-_^!a~FY8cOJ9IWRfCSLTR7}iFW^3WY;{DtdPK{*XF-o zOg)oPP?$px5-*l5Hv2}GZZwdMJ**y_^gMZZO=6$|v;}sH3t4;4Q^-%4_qo|BR*`KwD0EP z_4Bsr{xf6HrsAs?|3}+5&DvaC_`Pe~MGq1s<2DxO{)=f_0||`6u~HN9N0>to5;x7- zQ0&&nbp?O~M&WtI*1%T0uq&awPy6R*7buG#0*W8~S1 zAwtqX4-yN8FG<%tMPL;6O0A)ydAvdo64M8~WA8yHfl)i@?JXJux%MeN-x$NcnntcS{%rA8y?L%I8>kNpM9JokTSL6Eu%S4v?H35*&x?A)|QNCbM2 zaQ5~Tfl*`bJv&(OFdR`-cTJ!N2|T(en4)R3+sdv}^XST<`cn~jY$LJZlnp_jYapx8 zMPO8FWMDvRG>^zNZ8itp4&u>y`CFTV{)70+AP(05qpa4MGfuyXPmE33{`k0S5vTpz z?un!jQd^<=A1~h$%)NoHMR4TP>BJxQn21E}Keq(G82N?c3K`47C_Hx=4V@J}3tQaS zKj^>X8(l7re1=elJtiWtc(00JX+NfSLO>Lb;F<`Tvqx$yw`urkL7&-tM$INL3eUk@ zx@h3O9n^YjAXhKg7mP+oHAfE;Z%y73xUWT#z^GTYd>Y90wXK03Bo;jJS&+J>R;bDf zdR*y%wPtL``e}{$gX+=Tt1aU4HRdd_69S^9-?uvB{DHZbuGk#Nb$h=Rn*zC>w>7Y= znx(7ESq8JU3G^Vbq0cIF_Q@tN3a`6t0`q-k>c&8>sj+@GfgU7EOE(1WdmJP%Dz(o; zRtj^ycN|lc_opo<99@+6s$E~|VrI6ovqBFNH+*ws(Ryo1SV;Zqkts*0J4JrO`^c2e zMQp|fiLY4@VM z`+d5pZ&9w*TY5c;^0wC|(1S!uL)C${Foy(2k#_2Bh9=O11lEZQ*Plw`fU^%X^}ug$ zkS%qx3G^V5{aqX+Fp6wTgM>n=Ikqn4F7F+&-R!K;g9Pn=dFPo;U=;N?d1I;x`Uoj2 z^ibcG_l~Ho2^CFSm_rW|bgalbPY%_e2?C?&*pxS>HbJupif8Dsj;35}buL{r(1XOt z(H%^kvI&f;exbeHR-tI1=jAr-%|1ZwYz-v#edsW=|Fa2CZD?y?oAjPhQIz`uEGb(9iIyjyT6EvBU|ASNe@~5~O3dyhNVN3&7v-KR zot2b@QP`(#f{s)dXS)!+~+|gFe*DM^dLdw zO6r=yw64?;qp(Hnnq&LWC@NP-sBIJIL4rnYxjM@xFbe0IwF&%1O;x+uugPdYw)6!< zgw(I5-}iFaj`R5YVq{B{lTfJoRSJ}a1lg(I$~Xy$!fbU`DkIwX_k)rih2#KOrm%ke#l>H$dB&gkl z&L%Jl_pBk55$1ZG{gb@>9{iBm-&nTP$q*qC6UN_G5Q1#kYpGu^t7zJ60;BFd@8_l@ z4%MHEz!|=fAX|D*f&dQ^m|-@7QPfs$4fG&EZ78k4HQ-M^qNFU0+WG#FvT)yI6X-#L z_GW4is>JN$9HXct>2K+JhzAL>Q$5jWAR$q-Z{+VrBc!a*gXK~$5jvZ|DBS;=Q03Fc z8qy|6kS%}bSpG~C5=Dd@1v)kqV(4+VnVE)${%dqJE1ofF%{_n2xB@^A5-sl^9bJJl zG?9eTQ8SXNvg8+TNEg2w6}58Ce}!eW95^~!6VDrkG}nMXSwm`zM0MBEQI&JXEG!G7 zQdyBiNcAXoyW0FZuj~3hnqSV*EbTJWn9fH<)20aUSj3BeG{4&8Q2nWh;dj-TIbHk* zYRv2~m@UT&fgU8nzqFL0AkwB zSEqk#nIbR>`+_b!{!kjwtJka@6@44eB1bJEM}bYC2Z>ZYj0O@IHSM84nqP+68t6fy znAsDt-AfLxiEfVP2g5yUYoG^-fg7vs`N*t#$WeiYGVYW6w?IRjkZuG`o>A81wR_H-u$fD|K&v>>jqmd#o zYHXXD=pE-wI;b&mQcbk=0iJJX;!`zI!8yB_u17pySMcvq(Z+aQt?Zhk2MOxaj}4+ zdBd)mm4fUM4xy^R#;X5QS^5?Kc)%sATe#*;Ph|970M%n5EwOW?BI;wpJT6X zIqGUNUqY&vP-fF|tICH$2scy-z@n(KNJi}=sWKPXO3uj9tN;;0WXAyJ~7=@!N zm##h)rOuoO-fd=SZt;KP%}jOlt8eKGh9JnAwGN4r55{NArDx5TfODoQ4Y?XfYlw$_ zb1rANR931Ev~gC3fZVYSIaGft0zFu6sve<>z$o0a9E*fJ9l+JONKgK5h*0Vw9wbUi z$46_D^K7RGj2b&?d^FlQ^YD;1cSl3x`I{$pzdL$5zIWcWtdJ<_b$5DZ?sQfVg)OaX zuA*tP`xTb!AAYx)JDg+r(W+=;WMEic-I00Z%l%CaR3*joP)WkQjJcO|(Zn{3_m= z6-Ht2;TlLihTbvQ%yJTZHQ3C4Lai<>ViV}Gh&e;j^JOTMuNkDQ0HScurZvny2cqS} zL(}tq7!4sX3VV#LfmbZkemmIAy+c{K&uZvFg6v%*BnsQm&I&zPF4@+6GBIYiE=J*= zH5wu951Qdk_Q#GB=bO17ceI~pW_UD&GSrNVZ5Ek%Is0Dsx|uT*OEN@C1Bt%JF3gxS z6U)M=zSk5o=FCLT$j4tZb7o>m*;yema{pH{=FG&hFbdnvXedLqF0|sy3;t$iy~L6X z5hnLXl8_#gO;EWKg|j`{1bUFb`3Mc6411PMj3QfRk<>)UT$pP*`X|2ht0x}a&-`wm zZ23FK3V~5bQ-*Rh8zPjp5)Tq1FM2;c-)oA%sMP*Y(R{s&9wc7gup~VTtMBfWn*fXoD@?#BX zcZ_;@?4pb#3Oz{R{?`c^4J0s%{x1E^5R_OBJxE{=)dYQnNdlv&Bzcc(2!eEPmpd;y zy2Pf@&P|{P39>Wl0cBwnm1GfdYO3boNfHZiuHul9FgND&_U5Q1yE0yfmDXOiGz@_r zBr5ki)zEQ5`hQ^#35+6pdc0CJhpNwzTDNIsNB`XTIInLw-2Xm4&MUXH_cu6?bMzol z_C_avne#YD0;4KdclH-Mk8|`i?OWo@Ou$%@u1EY4=FnpigSwjWQ3tD9bIp;cgeYq1 zL*ki^4MC9JgW^E~SJgH|m?SWYG^RWE$I31p{Pyt(S2?bOe_1@jVYXT${;+F~#LA8x z{Q=Gq4$HzQ>&hsoQ8e1g3YnabWQ86i$aWvKNkXEimslDmEA(Kwv_FK_`4FN0sk!u^ER4$T ziJk82;upT*{oFL9vp;Xo-DzDUD$nfX|K|{BU7Z?bg{_NGcof9J`hRL{pWEKQG+xu9 z(-75{;`JtIjFIbkLxiM(9weH|5B3jrt~Y@MM$u8w*16sUdY<_90Dp8mUpSVOofQ&e zUTEjHcCI&pWnomOhPM7D=Xw+9S$R@h|Ir$r0TD~e&I$=S+r5O>aD;`)*2O5&NcBX5 zta~*i$hHX5P+OXiC?ez>%(48*=MTBBr5-LlgR+vp8zK}9@gPB?c53C56oFBx)>YAt zwt{k3b~@a@I=LQ;(U9CR3XcL+y4ln(qz}HswBnZ8HNLD2M1Pl(Ot>i_R~+gZcaeAkqMH7Glm9E{>RjjH-`K|9lOUj9Aoy`3Xe^$GIQ!$6k2iRz+3#rJhv$BCtCwONUR(+%71LFYkyb-L^b{Q7++RTx3fY| z?vBuxRnoDf?5vR3f7)38#yPJ04=f9#eyFMTyR>q(ZduPt|C}~FYi|8vmHv%;v5m)y z$tt8Hs;v89|LX^MO|?!h4)$B$6Wht_-568H;0Ytm7+(KXrQiFgW(_&p*&3uS9wh3g zSNbm{S7g&!Sp-DY|EALKcPQ%_4P_+i0lANv`Uij6L z4`}3*C+W5ZdXPvxRU=GmAc0YI_c9%y`xwIN8J#Nq$zNscb5*{Etg}HUAnMC1{gJDn zb)5u8m5r?QuWkfF3(y|K-d8_ph=1_7-N_1x%CCm_BjYEYTmk(_8qhN^DmB8HdY}gh zIw!g{kie+=o>l&|8duG+P3jve{fl4Ot(pT-f6O2Jv!4MCQxB{;MmdiUMTNQg@>~7K zdc~PsI?_LXFSecaPz|gIs9`4{R-Q4+zi6539EAi%HGMhCpEN5$=&aB)=69q0SF1P* zOH#?0&CUvmvYOH9GiR8r2S(wZZ5AM6%(5H(Hlw(GDu>_f-+a~Xv=tI%n@0E-4Pe@6 zD8sG?M&W+43EJl}?$RhBHvL`h$TSf$$H#{&3dj5e0cQg&m(E=&4W(nBKQIcf=WPx2 zAVIcd%QaA+S|dqF6yBE@4Nag2%T3+msA$^wicGHhwv4{RTpQxde;lemiGW!zk?4Hk zJ%&yYaHhv=M#@mMxpboeo+M$Nqe2%!sNh)DHBg@(DLhD2?d`jD*=vQn5s50*=NR%jjTCLoFk$&gD|pNdLoKon_P zt!rtB2g@Z}_GVfG35nYOg6SDO5j|Kg*{PnW>yacRYRjm{Yz<0H6X?NmQ^yApYEx|m zWnol)eXT!ckZTmhHBzf!?OpoKxU~nh0BN8nNx1hQ68Kwm`VFsJ13gK?t$_soHkf{2 z>()R|l5lGvLAFFWSA-6!tA!(o|Nw`}V39==M#(9}BFQEaR zBq8)p2skg%m6KZoJ$S~!Yb{#?35=qr=WY%3BnfvtkRV&4_!}^;{ehk&A+%i&B*>O1 z8Xw*DKu?ko+SWjVY>A@r(XD}=Bq6k|fdttSMdPDe13gJXXj=mbvL%YfF}DVKl7!H< z1`;?v(n#diKu?lzYal_kMA1m()<92^5ZbN>5@bshucPYfyXZ+0LfaZh;3}0g8R zIxu-;MPRb26)Yko0n(6JHYrNx=p~7FY#(C>Pk0f%gG>|S zK6$zz9=WQaC^=RPVX|s<`RW2a3)N9THHUzlRgbaiL2aeBQ1@!_AkpgJi3NH$mDZrXBm_n^Jo7+- z-fX1_Y|*ZZyGO_UdMB+LQdZdRNKBjGBU*7U)4Bq>5=jE1TJGO3<2Y})WmE6}^Cof8<9I-*EJ{o|U81`-Wty;z_(ik3!- zz$iSLRq4EiT4Pu{(~5YUuUWfaMsG(C5@gf2sZ3TPlTQ*7g?%~>*8fvS6dWH|ZpDAU zTo5{&z^DosmAG)`!aR-uLF-P@uhjPwDfiU=ARtWc4=>3xm_MvYrO zv#?dYU3L&KW;B#NSfF>C6oq4qofUd4qG57@-le8BkdPVdL_>}=tr4;kkBQ&?ECR?79XLGBg~#)+Qdu$sBH1zH@M$!Z1ZyCHQQ3PCdxp$G~BPsNMIC>W3d9unsUS5+`sJR4zQ8M4JAsA2uju|q0>#k>ogv=akG@Mys6t;*?hzRvB%*$La zR2H3=gNXY!6J0~zo z=Cia2ofUdy2FzX03JIBU)6$^ITlK&wItFP5+%$n6BShBU#1s#Z#2bROuj~ z$H@$_&a9j@N1|mshpj^cu0=6QX24AoIF`tqyA&mJ@umqJGw58q>|-8ruq1nbpa%&$ zx6|C=X$>SWN@gc@5a03a*yNE}v&qK(W@m*SB(%1gu{*7S1V+){X=YtRgsjAUS3F2y z{d8cb_1@BQyLFAv4OQ zv%<14O6H?8L`c=vHHU8w;Jftd>XXuM6g7b!BuHDH2dL6@`TBo(i-4%qTg#B*DJ%3~ zxmZ7r<%2(qOlBcKfXJq~{ti{I*ENj8CH$*Mi1kxifn39{w;6ShW@kSKajmAc9Z zll8!IWwj&9&}gIxjKX(eHi0dQ8PeZrogYg>p`mVf@gPCA^f9fWGU9%PWnmO$Wf6oa zihGH)5B3;mJqWVi93mlW30d{f8dw%aIkPevk}ncuON*#LvvF2PNEEh+30Fp#mv3xQ zzVe+bvgNy2Ry{N!D<+diR)i)SzbBQgf#u5g%PftMvO*0kS5|Sh2%QyXBC97mvr^^L zrk=yaYhF_n60#1n(Fiq=B;qxlDJu1?FhgLAVoRg8F5M95K|d&4Yk<>M&WnyIF`bRkX0(FEb2=#YRmeQ zX$|xsLAD$>T0@mj8}|}g-<8Uem1)VA)i%=_vZiw~O4ds@M5rZ{24*6w!%`F-E27P@ zLSR|40yPn+Z4>B0LRO^+EttZZ#*kc`z!FbaEUT)h6Dz0YMm zVJa8fkVBcXTNepgzu06Ix(JMt^^y(2fT{<2WbNf$&k6}y>)B{Hv%)CsF>ylre|F!+ z{wnJir!}yL%gWXig|yL7nT3`I30Xk-s_?aB&0NMMVoWXu*?Wnt91)<*`fe(2Ib4-(F{ z3aPDD9@;**;zYg&SUj|S(CRj}u??G3A_AkvEN>ssD%VtVC!tV#e;{%0?HvMI7dzd$ zSQbW=ozXF%)uAmy*8@GrmL49^D$u*06%uVu>=eitV``qN2S#C!(S*u~Hr3nD=p4w^ z1QFL>$|EY(Pp+IemOsOMn|{3mIR+Ou_6TY>@ms{3-}+@>5up(1L1Nusdj$1Q!aGPO zfl*CY^$0qtS?jFURWj;02T#Qp-Gk*Fb|))~IH!9c=M`N8XI3{u)VP{%LBBb!Z?~c6 zp(#fM7glo=wn(-H5)BV^HTx!;z$iMpWY20M{;>Bs?q@pYyPcV+M<~aK>|5&X(mr&o zNK4yUVPB%YD>X+wlT}Is2|8|4t(zh+3Ny5`!hC6zkiN8QSs_8AlGS%fD3ujPk%k;M zIxCA14-!p39A=I#LnuSt(W@ROqYU*#8KaJU_SitK3^Wl^c#^;<>SHnzX(Ijz^H?q& zA2Ny}Z4>B0f{slYwX+F~!ZAh@A#?WVg9MEda+a_)uq=$ik;o?SngP#ISU*jK%!PUM zAVJ5Yd!$AJqq6tMqQ))7^1)m5GfT4XFK!5E9K3MuN5$hF*`jSz50zPHdHe}0immV5 ztfR0bLntH6qX!AU-}2&tGd9^8X#%3|T=uWx9Uc%WBkqZp?6<^Za@DZ9VwXF=DpEZz zx#(S6qnQ8?5(h=^*&0fMwlII{XK$M}IcodjV&jUfI(MQ|PdPP#9wc5YTU^}Q?@PPp zA!*$G?#IO^kJ+X@pZw-y6NUSRvXPBjSN0kbH`T2)8A>$$-zG3Bd!HY5@v`FjM>p!M z7B&8}*mk7YpP80UYBYP0z?QZN^dK?Zf8S_l6By;(gCW(t-9HwY)?G61jpC7?f2Hf> z+#gCT%%ca1*XF-&@AEh{o4_dS3#J}At0n8#6w9CDOcph*E*_YRZ8#ncp^Pwp)2t1} zZhg3imyFw3ocpi;6sfm=GJi|)yoEn2CSX>f)s5 z{uA&2=25~B1nJ{kdLj~sUAwCI`gh!?vk8pCqrfI`58ipqB2zBz8%>1FshY!nM&gp| z8%>?E35;4a_f4~(Yyv$N@yJ_dZ*o48)n_xd6c^sjBiS{*w-meeGH$5l4M{Bx*i)+4aCPj!iU=N}5o$j(fXx9&C5Bk zYo8Yv4(DUj*1)nb3Xf(@#2;ZE_wDMNHWerRn$H>7(ndoW)Vj_62MO#8*#t&ia`&gj zp39(@gql+t=t08SuXI+M_T5~(e%>}cF5NV1b8+GKUut{CpiRYBFXpj}OBW6FAaQy3 zEyW9tW;&a|C>$Sc0zF97jonf_yW)%HQ8dQXGcp)!F$(vr4h|XNr)qL-(0S4l#lz6ASc3KkT>IcP3Z7BpVEsSVkSnAlA=zdVnBgN+&dIm} zKo1hx^}u%!_}rMD=*fK|SAcV~pSL67e1@zbo4_d2uxcKnhIo)@>Gd!6-|cUQ-kB9fVIPYVVlZD?x;2pV z`FlV4IFRezv!ag!>+02LjQaV~K(5d6?)Q~f-wmuQeM6uJi3P)#1afD=>8MXdg?Y>b zGkoRXl|kx`g`oTqUET;}50-X*GmxvkwG$Tw?&}itAW?eATY+4u>8#?9FmDkMwcwwP zfm}J+1bVRC(iV+@Tmfn#RG;dftx?r$aUk~zSU*j~A9l@==rCh(dJk$1EDNJ(-$)zU z8t6fyw(@P$V+^4+kiaP1|AtToKS`Al0Ey`X-pSbKSQbX5`c*6x=I^Or7RWu$hO!S$ zKc+q=cgS{D=t1I{r(s5@YT?J8+)|@!2Fk zb=(tG8L&m{tk8qRguTxQ ztg}Ik*{zFFn4!@KlgA(uO~X$MlUrAqw|wQlohvyt3ufK<+uRTNgb@EO_Fx zAa!4>#KJrh7*$%jA&|RblT}E>J>?sN{yq3=o9ZNIfYQ=U!DTNb?pQQ|9we4`*cuET z4$ovrC`DjY?LW5!zZmJd|G<$N&sR7GQ}MEedGsKG8A>!~g#<=zIAuf7=bFU*M@Vgj z9we|0jfOJ9Jl61!mv0H?-oSTs*oKDC8t6e{`CFTV{)70=GMm7tnl_t*ZU-gypw0?= z!z)ua2J-9#dymo31bUF@w_;Nu_v+aMMwPDE99U0rLgvD}zkY^ZeVv}~(fxqDiK+Yj zOuh0u{awcz0zF8OEpLQ&PDoU{`7`y}^l1(BV7X(zn5kE`Hw0Hh?eo=N&Wy@i^RFFN z?={Q(0+49Awu^%~IqQ2?NRXW(Lh4so7Di!)X$`3@5@gfL@9BDASs0aF^DopM+<4s% zeMi?$?X~}ToNdh3WRb(Soc z94$SKZE6uI$q-a|YxYJYhD@0p%{|BUo1cz9ejGJx^^dQlq z^MvR?wbEz0Cn8ZYY*OUC&%dZz-EC5|F!_5r1pRNL|Im3FP>NR;?fqU{H} zvcj@3YRCywqQ|y&7AFK$t6bwen_?z>1# z+-FL3-bt?gfn{M79ydmVvx4KG*~dA~Je(pzhQd60kRV%reX3(K35mjNxpdLM z+{c!yIt|XKhf@QIC7tV{*@KwYr8^0XiWW|deo^Kk(1S#auctX9+?Hsq=@rvXuFK{EP03wx7I{eXa=_!=*PMG2FW^ zT3hPUKmwym=1qvk^h^-C9$4Fw1+~#DPjQPb`LH&+;yGwt6-}F(Ne9|J+ILFyQQUX2 zB#xzUBG7{bU2EOC_m5?TQP|R2LzPdPYF+4~!)Me+^Pb?`QJZ5aJed^|kvh8m@Fdin zuoQt&*lrXoo4VVEc5gRwLNw=y-Pz|zv^Z-*^n2$FX1LEW3db0oQOJ3z@B6^MZLve$ zO}wx>ZH2@aohC&Oy!2yjg;6+Sn5Z(uOXZ*Q_znf2WlBYPd2gT+Zs83DcbDwtS z&WP$q@Gl1F-Z@1OWIY{1V)f)FqfK|aes6$fVU#l~t$`jS=y?FGU6ejYA%RiYBC2S! zse2q4WoTTHxzun}GU3Xw$15aoRN6TqV;5bKw|v@F5A)h=hWxoU`sF(=4fN1m>hK1R z!jiaf{h81}g6@jHcnvf{7lBdPHLvPiUf$yb9&yN)rz*5oj@VqfXrKoPvgH@~J0~QH zN|NVVnh2Rwt9gJ2%jLCsc&-MH6@u1qqt$b1uVIE{%lT2qhC*Nz(xfLXVhBZrdGuJs zg5MkMY@!OHw)HMA-*yU|)l~UBUZKY#{(N!yf;m4%Y=fw(?Ssl2X91y8)Aaz)wuc9l zzyD{BLT$Sq=&^`<&nn+O2{fGb*alJCHlJ30=3PLTtk6^SY5($bM(j>j7IAM-KJ0SP z$jGWWYTNem^3LZ2L0KtE?eklDm3QdI$6D2n6UyK2!#4Fqt6wz}5LMMDS3c~toe(6G z$Fh*9+ID*RH3Q%{Ck?eF2#Auk2-D{eOXE+6ly7*7Yg_fp4&{3+cGi6Qfo24#Quc!Q zw_R8g=fj_gtbnK*cu@KDnuJEW9uQRp85)gH?+?hg>epS$uaEEOb}=g;wtd~byxqP( z*18yleL-iXGKzbNs;!J_)K)TbQdVMXf<8jogW^dNR=-lwX##8e`6GAcWY!QBtD|EA zJV@XSE1HNuc!a}xh)uLLQpY;H&&5OaKtk%Lix1VO`ezf^K9rS|q>1=L5m*mpOSwoV z2xxbr4WVqwaOZ?XrLqbYr~aw7f_zCsi0SveTqd^BND&xCB}s;cPzGy=2MMy}?}jiM z;=w4=u=-Vuv4(h%AlvF!nS?~)ell4pL(M~f#-oL@Z+W)zR!2Qt_|tT@cWoveBr3kF zEez|InD<<3U|AT2v-s$&Lj9?-LJtzH7ECP6TMkb@oCHSU>PkjKQEDxSwa*t$8q9Y; zxMmow!SnoOa92bcnm`W{ktwZznEI+ z?OY22%fcw!v$h6a*OruykJiLbBXG80n?Mf|{zrG2Cn4DcM$t@jaxY>N_#_SAE@HL` z0KIJxKV6-)-J`8X}~9j>N?7cSld}?CGFF?K>7EhP1gm z8X7-mG#V)aqsFcu9}P`DXV6)pXX5e z<4ngmPp%wt=3PpQ{~N#aw=$vZLFr3K zj6Lw~^t9v_||9 z=3gGW$lQ&RExFTrxnkP{dXOMHbzP#+FrOqOivI4dITB>c^+VIqKk?-*TxS)M0BN8n zNeFESf~>5N#uhPz)<6#ueJ@;*aes~kMvc5@QTZ0<{W*FpqWG`!qVxV7iIEUB^4br| z-*n!eqi5tP@0Y(5-=AYicFoa)MBhH|m4E5HKSu(ic3ionyub7Q96fzMdAqzKzCXv3 zva>?s<#~(C2RrZ2u`G=0yLnN0hvfaa661a){RjIM+1B%2)kB(lA`%ic@}l?4Wp!6w z5Bdm6qwjUEoBRI0Z5Ek3`s`;*NMKaoV;7pI2}XltbZ?hTh!8uKmCA^=FpnN2P>*Bz zGfhY=a=%#Dh`0)>cT6Ezf6E zoy}&qE=J*gY7VEi!ge3|_-p0~%dTaGMBi%)8BbWSER1p~|WBlx`a&CM7 z()g(w9`m{$Dw;N%z^JD3gZ)F}Cwd&qpNjbQ3^Qin_)+SqxID9RqGkytsctv`A1#CO$F1V-V0qT=-yiiWfa z5|!Om@3}ZjLkNtby(#@IR$!U@m%V|+0;-H?3-jnf zV&%w={?+F~R-pzG1V)WH?{I%1eskFnogVDy4}PA%XVp~J-oJkV+qCp|2brLYK}zHkk0%E`H$~SLt5Hvo{I~i)O1(I1|6ds#8o%n;#YBF9? z&C#~*)eJG_^Y;EB@jGF%r^nAJEB8Cq*g7~=pX#6bttAkoA?4CICblNx4>h(!S!7qn zE9v4mrh`@av~fMmQ40iV%ilScKWze|aCFtNp%Cang6uhKU41u6NE9Cbwg!5z+?B05 z_~YlhG?2h39F>fQs*Alpa354|Y42}v-q)fBiKcx^eD`~2BrvLSb!UIE^S%~6Wp8xy zm&NzBSdv{2^dM2+aJc`y^S%}djA~lh(LdLDUyGiV9Xt91;`>@GDLX5R7^lt>&ih&{ zs}iDCcIn`^ciz|DzE8C;Z%I0TQ0>b*j~@=c!yLgntN0_#W7L+RHNL#T$R^N(#Fp7L ze#h(J{fE)82#BJ;TgPC?h?;W%JXr4j&)4{)`?@q%zBAhIQpRsHD(}7Bm-i8<9Vev! z#~L!KA@PS6V|{t+luck1wz^Gp`q_29yss%6R%L9ehjnidV__aWNUVJEW?$Y2*&0Y- z)XEQU_2vDJP2k-Gj_ovx$`b^eKu?m8Hq0i7mMGdEmPW{2n6Do+#Fus4JH0sAZym4W zo;|kLmsR>B<8|CSb*l6y$LqMK2$E1b_SlX@{b7~etIkK1>{}$The|uq|7`-JQb%pboPE?Hk=@&|ER4btgG;BBC@VU@%9RXW zao{zIAqdK&2MK3SOc5A`t!`_e2MK52)fz}(6!vMY5weo%yKvlJ zpNg`NC?v*A{e!>k@x&YV6oFCo$Na%R`xziqG;ON4gQvcs(!cnX-N_1xvXPbk)s3K` z1yc2ZC>&#SI`N0=D5@j``)8|^&fEr>HwunmKZ0a5d+Gph%qx_4O?WC-6%v)hZ}xA# zDxs0e3Zup>yU}km3J4Y5d_>7}k(C2)@f-7ehdrjnP5!E9U3c5LJ3@ceZ~4Bj>A%PL z{SRfEdW@8$>*3TuV&$k&{$p!F!%1KiW~epd4|RMTf1_XcD$eTfH~GJce*uVnEI~jG z>Dou`uy?H|O?m1&jJuiWA38S7^ajQT6w@v~)O>0N` z+sExrR!B7cWt2bpZ%z%!3ZtGld9=TNgNw)?sqSU2V9yUV)qa;&Y-8`yl@8UX`e*km zB=(;+*1vHMJd<$}7==f(DxJ45rJ=5)<=Dn-1)%?jdGyeAkPu|2?!2@{l8~tXno#4n zU7TnuO`r$MrK_{ly_zO)7JOU_gyz4J`vjFfZz0tKJxM~YICZ#+=KX;L*%Gy7>O;1M zA<%;a)k$chK{9!ZfT;V9n`mojjEMa&m~O_UEu$VYHtri+1Ixlp$WFDD&MHYr6#e~! zKPA39XbACOxn#@!kE_7R<*_V`+A{hMQzs5(PPG+ykRV%nrLB=9B&zd;_t+XSrk-Vh z2g}8lHX0%A4n+3bCe1lg(94U@eDqo}{hevK|1}X(xQmb|?9+xIC{N#LlV3a0H{Ilz!0%rgLTjK03HsKP(1y?&NMID% zlA$5A26`+4e)DGttzi)mMc==Y`e`Emu)mFq-veAxu907gfu=k29`iAJ_nk5F;yAD;)sV-b23Wm;!^MV7b(fg*JrNKmw!iC@_T9Ko1ghq`5Vaz$iR6Z4LAwK_iA+0||`6F~-(F4-&K@ zxLX4Wj3V2;&(VVfombo%NMID6uk3oD2MIc_xHXW#C_G=;8t6fSzX|L*K9ImDvfXWk z9wg{@>F#HNcDo+vK>}BYHiRStbqi2Tm)*oFQ`?b12Yak)E)`-_*VhxJ`kBeZ92k&~Xepty>tbqiq^CT++ zu?7<8!8N1g@2s(7=GgjgXN}Mr;-Rv{rYKp7h&7NvkBeZ9cjr9!+VSmf*BVHOO;NHw z5^ErV9v5LWP7w_x#HJ`&H^pce0zEE*HB`;Zq^*z;o1$c87t>aTK#z-H4Ydc$WS=7; zHbu!QW2}J$dRzo+sGgXUzKev|S|eTujWsL+JT8JY)De}FV^CH|qq4-NC|RA0HIP7$ zi(rkHetJ%BUBF`r5@J)7tOmv!NTA0>#2Os5Ik5TQg-Sr{cYYdrMN<8s|Q z@VJW}u}K40(egYXLW!cXFiLFJczMMBxvIT*+(nPrq=D;vc^(j-zk z@Z2fix8-pcJz|pvu2G2iy|K8&Y zt$`k~Nds3k^Smqqqr_&7=Z`rkKe+XIaa-{UY2=Y8(!dq2JTHsDD6v^%|07SzpS!%b z)kK?4WnSA}i0271IM4O~mi^Rftx5}P&F?6@+&-|28ZI?u}@FiLFJ=ybsC`QKdhoVp(OJoJc7 z8uog3Sp-Ij%^GwULFKD0l(p!{gHiH#($j%Lc<4zIva*ZkU6H#z|GQ5fQ}^F#4Oy+g zUY86Aqd{3=l-OL4f1Gk_{@VJh>PZ7VVpHz84w~ly;Yk#gg;8R&#(C#olmF(syw*UE z*rb80vw0p6oE-`NMDCgIYL5kJzMvtIT;G5S~O)Sr{cYYkc`||NJ-G zkI)+E5t}q{9X!ti!jmW}3!}tljp5^u%rAVQTx+05Y|_A$^E?j-Pok(Sj1rqQPHek( ze#5ehwFY{`CJkH%&+~xrB#O$yD6v^%*_MCQKQ!l$S_3^|^ZsaF*m)`IdNpa9K$LS7G!#Ak_Y7CNN5D*6?qA^0k3IZ`T^=5u56PYeRY-5S~O) zSr{cYYfzt6|B;4=YwC$jQLdH#m_UzJZg?pOl|4?Qk|H6Hq8VSUf@uGae;39%_k z*4JYVAUyQA2-di+q*Z=k>)&V%B*dmDS@n-Kfbh`cB3NV7fFAkai9l;0AvQ(Hx`eC& zgohp%!5WR{1o`#P_Rtzgh^;l^bre|x2v62dB#(<=jZ5x2H-AU}Ls$dK5}Kl9-A2{` z!b6XXV2!^hjW)3c5@J)-nKvI_q<1f@0fdJh7r`3smB#W|0|~JyYUrw7MS7CT8bEmH zaS^OBaQwOXUn>CJnukN)&r%@(BmS~8c2w(HQ)^=LK zuiHKJh)o)03y%t#&*xbLMv2WD>IxtiUo&{<5t}p?|K^yW`MM;Fz$mdW(EB-{W{lh)q$l&M<2rfgTsZ8tTp~7vHOSNQkX9;+1<@!y>@r zB3MJ+LFVFnPES?=rn1DQC|N0(HIP7$i(n0PC!CA#ojoMPrYKpzm^F|-FGZC7J-@g6QDVOaSqt9y5UC*>A>)LUzyM{Lr-HF-TRi@+$cS>uTF2jwohy{*vxa(umD~6DrSxvXLyy>`fomD-cV12cqr_&70Z)&}^>}cs)`fh#ww_a7MqMv2WD>KM;a`LvOT-c*qX zqvY?TM{#KaGeMe(0SDZkySG2TyOXjcO5Tj&YVDo}M2G}NiOuzBtG;J&zWVMG<%b@z zDHB}x+4F!1C5p57MnFrd~8M8d3*AA4bUStY2do?>YZ0Jq52iCB2Q&ul-R7Hz5!7t-Zsz_EkW(=K&E)6qSW*-iyr|4;EiKWqkbI5A=x5ZM80tUkrI35TQg-S*4}T zQDUi@;2fWkJ314a%PqjZ6ZfN@JTf*8R_W_5T%rHwrysYmLj-1PA6sBa?ur z(%5E=H8<^_|7-l+TJ(rb8q@Dv9ZY)eKXJdxA}~s9*0}q_k9sUB6`FojSYQP1y3F$8d(HJiOm|DZn-o+b2Wc=5Itg( z##zzF!Pb6X#`VY|FiLFJm~oT(UifC#K#$m@@!n594jNZ%)#pdgLjpZ6f@shCdE0aH zPv*F-kPw@qUO9MWaNHwXVhtqF<04pN(?5^PzuTVoITB)1)b#(X2wLB{Io3b|JuZSZ zPQG>j{B?Ws_Y;v2o1&h1YI$(rj7_ly66kRetTE%x_v+t|zZZ^#*c7#)?8D#=Pc)D~ zkBeZ9zs(q1-z^?XkPw@q?x|lEtbcT4Tn{AB<04q2_POU?>luG990{>0s6xCquzJuxSJ7YVT`YQgX&aC{(v9v8tHgO?tc^AG1^5DBpfQyb5`&zZx20Ulg8SKi{Ly6L?}^I7DkE9 z8tTlMlXES4#3qde|7?WwIS`>lQCS!zHfyLWfSg=2phs-dC~eUQ*CjxN5=CWUl-R7H zu4Ky0wNG4Dia6vgxV{1+#Ii~uN^I6pS7c@88ZM5~8c1}06Rs112(heEh!UGM;9K4v zdc>x-I-<)Pa7_(FC{a`vMv2WDc!m7h{MXfca$YG?Y>J|9R>|L0yx#QvbBG=nk=8&$ zY>MKyK=vw?tbraEk=8&$Y>MKySuPFqxQMg{5@J&nzm;=opvOg|HINXSqWJBiO9MSF zBCUah*c8QYNnIM~aS>?^B*dmDe%tHPK#z+^Yak&uMe$o}mj-%VL|Ow0u_=n*zPmKg z<08@;NQg~Q{4D~P26|jXS_28ODT==h;nF~li%4rAAvQ(vw>n%J=y4Hg4J5>-D4eCl z9i23P5@J)-xSDQ3zd51-gohp%!5RaOJ}KYwU;4dTh=kY_b@MshgKs_- z4In)9xCqvmuYODRCBIh-kr11rD!%9*Ebq`F{vI+A9(r5^YaH|KmHGSo==W+N5@J(S z(^Wl!PHN>7?ukHn=y4IOal+Fh@?Y?KwGauhDQewcdj$1QiUtrKdRzo+EN*vueqxn= zuNER9HbpIN>=D#%5)B~Kw=9}HE`l}QP#W8A;&)z1h%NQF;zarGITBQ^cw7W)>`=eE zoBc4q^Fl&wilSC%b(?4)fgTsZ8WXo)nLp{5{QE&9#HJ|Po2TbR0}1rF2-aA3{-FFh zWB7NFNQg~Q)GK>^CmKkg$3?Klzj~aMzh?!%^Fl&wilU?I<74GJ^hlt`MX*MnV-Lzt z+?RisiiFq{MWe*q7mEfG=y4IO5sz>=x~4%wY>J}M?xhi;fdqP71Z%`2wbnpFY>J{$ zyUzTk0SWZD2-b+tI9dY_I`Fs% z*7)D5yUM)P{F`bd#HOe=Cw7AUfdqP71Z$l5_=>WF;`f|Lh)q$)mL3lM3JLVM2-Z+N zF(-W&39%`v?2L|Zd?0}y7r`3ph|0+^h=kY_b?)sQ;5bJDJuZSZ)X0#Nu>=XRDQe8} z_Ap){fgTsZ8Yh2uW$uCh;xQ2ku_u*NW@vGtey9Tp_SmU=Xw&yk>V#p5Da z<2Kb+2TbSh;vgY5MNum>UzZ?(9v8tH@2P#hp(lT*2nn$%iuPvn^%WB6aS^PcuE=un zHJpcp*c3&*viUj@3G}!K)=*cLx%gVtLqcqdqNA(%dKU@wxCquzSID{en%YA`Y>J{$ zqWQWV3G}!K)`&;AJRKiMh)q#6+BM&QAb}ni!5Z;Mtu>Gko1$pcZoZE~0zEE*HR3al z)<8mRilVcR+{5X6H9ALW0zEFmXqfxKN2YWxN?Br46wR2{T#xu%t2NN$B3MJ!yk4CL zi3pJpo1$nYw&wi-gohp%!5V50)~oZN)<8mRiW)ksW3jnk0pX#?MX<)&o(JXc*pKfA zkr11rMvm@KY(74K@X+HTSYv^@7Oh*s_k&1?O;Ob^v@bRv=RkPqaS^Ps$AyFPM~u?n zvkZ|Co1$KB)4td|UIF2u$3?J)8sYNsm>41=JuZSZ7S0@z?>$$K z?I99kQ`7-xA6AsJgy#X_p~pqAMw6ObWWb($KZu0b6xFx%uwwK5AP^pUTm)-;t2F-7 z>i<=CCU82HefYmoQxx*1jj@cEvTC@FeN zd&zU2qh4#7I|G&?t_q{&ncU|}Q+-F~&Ik%o`IRTA+ z;I7XYPDs0`#3ht*Td=IYTcp`1*I_k*0^N?bx2;StV}^B^an#U)3(-2EUYxDuC8MtG#Q3{F6c zOOD#P`$0}{B`%>1zPsZDw7BH#6MsL*mAHg5oTs1b_-uGT$O&k1wRx^J^@9^!iAyLW z=y`NM$O&k1ZF#+j)(0oJ5|>a$a7UjCo{QS`!3k(_y|KIvZC9M&N?bx2e0RqQXmP#t z+<~-zaDppw31tL(l!JYc6VT#%$~}nob53w2E};y*yW<43xT+6oOUElta3wCG48FVL z1hlx0y}vCTcR9h8xP&r-CwC5>^>G4PT+O~|8=WPL;RILW63PgkKstD4$q8t2)inpx zd5{xaiAyLWc#`Ub&t8Ksh2+|TMn7`rb52ORsKh0d5j+ug!e_{a6VT$4rI5QW;RILW z63XDaJ5E50OV(!Y`ic`=iAyMh@9sDOEiTzAbJvNS;7VLV8NrpM6JCoNPC$!G_O9IZ zE+@DWmrw@Z-Ejh1Tym7iUAJ?BD{%>Bghx2JH!z%l7MC3Da`zvc;7VLV8R3!IGB^P( zE;(xF?xQ%tmAHg5!ZVI#Z~|Ifa`wSJT=0u{J*(LSSK<=N2yW4=Tb31%T_O5`8vWZ~ zOxNc=VZ!BvRB9(At%>EU-$|`KQ@=0Du2pZ(^*_0%uKoLCOy4Qta)lGnnrL!BmDA#X z3*?)C?&rHc;?MZAj%^oOT;qP7=YQN3?+qwn;F4v+E@)j=TU%8)XYXDq&*5CIKntVE zi}U*ouF-Zw_K`Z0KON*RWmvprZu0RW;e~*X# z)?L6zO0WxB8HEcS=ZB{bvkb043**;d|M+1D7)c3sK`UeF)?Usj*VVTSu0RW;NwA;a zc0U+N33fp%qx{D*=e}-UTBm!7gZJl$BOEb2p5z46Z<1#&7fd z;ytllB__!Ad8n0f=b=^3d*457|MrzD(3X+6?ItG3g{@r~;W=ujZCB1dU?e5j1+9!j+EsZ?&VSf$ z#aw~5jBq;^9sGq`Qi5E(9UJ4l^G@cX?s}bw?N#W%-tnOS>4`d?ET$_XE+G|8Kx-ni zPnCCFoyToIrd~VSUwFH=3oWiD184ig$KZIClwcRME~~YN2kYbP(RO`s1zH$&`povH zUk64~f?d$cC|^_N?X^g^E3QBbV_b32kA7ezCD;Y6j2TONc^m$x`v+H`g|VvDY=3@F zFp?7Nf>y@)BU4_TJr1|~Iai?VvikEuf0u4xBqi#Q3tAbk-qy<7`?zkF!4+s>_^&?b zAD;pvDZwsiWxTX@bLM|9=y8`T(89>y5|a|_f>uU&{&0ic+~w^RT3n)WH7Lged&Y?p zsKh1W8JxgXpQQJE7r%$A%|Hcng1M6E%9v1ZYi3$2y-t)K4%n_0XjxW6UwhEMb_*Dk zaN&}+*afYOJ6jidbAQt7M6N&!qiFMk{>(qXpo9yTw8buHWh|WHcwes4>qM?VTSn1r zf7Q=mP{M`FGRRdFYGpK;+sixUFTGCW3bb8T&TRjyZ^5913zxJtlw8otIBj5=w`t`H zdkx1GXkpCmJ==eAJs6a5;gYu41+9#a52*0611l|qE6~C?COGcy{RtS9aN&}+*afYO zhnrVHP;+poJmVK|_~;K?xTwX^UOZ$_TH>?E2se zv@qm)?$;$?P{M^v+F}>9GP3;~@9W*#Sq4|2Eu-yp|A%M6po9yTWsqxjsFktf(AM7J z&z+$Rs=y_TMFXe%$2|cCC0w|qEp|aGW8*uUGZ($A$6c;K3nPC^q=XBXw8buHWdvsf zC)hPy*+0tXHZ6W7{QWnyxJ2W;BEI|tDshQ;1}AWilJxQgIG@*Mpn^HUT*-7W?3~&4 zfwruxRk3ZC6SCaIE&ucm4+*K1b0XA8pxn7mOgEKpm*^r3&Eg-3zxLTE@)-c z`>7`Ld*2aueQ*WZF1O7+ib)oh#6`ANQPB{N4j# zP{M`F_Jdp-L#>P*A2jlg8G51igDP-Y#_eYnZ=MbYC0w{HgIpU!t&Azlj`Ak8=%5U$ zz-1Xfol)HVW-ut>!etrc+8AnO%q%$D8}nc@Wl#k!yFR|@Tzt+5Feu@|C2f_H3tAbg zA1(Dx{`*IJ&A=6CT~?in2V4aPC0w{{KW@*tHilXmUv?<>u6*(V%is#MWo#}kZgl|| zln9oUwrd&W+8AnOOldI2JNdNc%Ag8dmT_!x@y3o|P{M`FGRU05S{_2F^_+A?~z zF1|jxkD`Qu%QDDS9%^Nrf9L7WV@J1D236n^#>PL}7B^{t>nlnaxTGz1K`Y~^#fLbP zu1Z@5SDh=eYGD{fy*+soKXDM$zV{zz-1Za zDi5_XhX1}ebw%szltC4^EaPOSc)%H8P{P1v8RRMtwKA5!e{QPi#Zk(j3S5@4v0L%A z=Yc^91D9oxt31@oxUK2+9WT7YjtA*-1==#gJy^6clrV5v2Dz}GD}#?d-~Ib02UnKR z;u4K3wO|{kXEI!gOT;tK7SdpBIUmcaHUpKo1Q>SC?D`OwB&0I;j+au0gZ&tk&sZ49*TbEmu+@gVR~M|~I=SbF`EB|pNE`fEP&p=y9gMmG5 zX9g;92{3HR?or~xes}x%hh(8K9X;PUAr($QBaz!bxB@M6A{zb6wJ(Y*aS8MzpMkcJ z27}jmegc)a1Q@wF6PF~UBKrh1rlaROC#1p&Xe8`h*%&Hd@IHvS&9yHI2{1SzS{Xxz zE?m-OKYNZcU8`TnF1pg#<1Vzg3cgsBJ*gkQ2auFt7ql*`YqwWr_F6kawkyLGXkm1n zxggu2Cm2Zyc0ntndQ+=TwG6I6TgI99W>bId2-jd@f?Qogt&BQvb@$Fa zxlkEYfy*wd!|uu6G8c@bL;<;=m2u>f{@!JyewFKX!xd=TkKd+c2b>N@Qlcxlpq25( zUBkQ!r_8ksu0Y#sr_HC(5IMk2b=ha_3VdsPr zNXv9%Dn9S#{qCG9dNy2{n$)+< zu5+$H+kWh_Hv8wDU?e3bkPBKFeJAKIwx?P1XyIoPDYom49kM9Q~DZwsiWqdNC zy>n;h(=3B4(9(~B&Fiw~F90Jc!7gZJ9N*?d4-wv0>GX9q6_BQZg)f>0~t^7_|1Gd3?$236p)jCa;&E7yUMm>^d{ zsFm^4C8M3!_wS?(s=y_Tu6uuxz3&e&k`nBKRz~@ERn9?;-+5V<6<45bKMKFdj@T9F z^Q1%pxuBKdeKW?n^rgCT{&2YhEsSNG)@M660)r9;E@_Kh(8?(Nelus;}-FmOp*UC9NljK}XC;9P(H8q44cv@j;rU!Q$Ey7r-jflJzA7ql|ox~Qk~ zr~a*_%N1z5KEh+LXk#d0;F7lZSPQKTS=Yg;(EXf`yJauM9)s0iJ7Je7Cqk`r_2j-) zPW60!f8Mp*JbT_2I<&Z!-8C=!ayicDNeOmAYd;1ZP~prUqVLbS0&N)sAIVOC1dPN4 zxt4`m8KobVIeV_q_vc)Jwo760{OrXaf{~QyN-k(+96YX<)BeZ?x;{deT~?G>Hu16S z1-oKDPfD;0S{buWN;!=#Jlrz40&V-TVqx~*?ZHS&bR`$GGR{i3a#|1Rru_(AwjZ1r z{zUeI^T0?Zc5o}$N}UCN{;213s=#IY@zW#O`<@4b5(X~Y4{}WiwK4{tRPNmO-v=y%E6|ql$-L|@ z--AI31D9oxYeJ}%v3##FPM?|0ltC4^?6SIOUUp#{oIfaG;F7kMkqcTGU%y}FY--R% z?wwt(KnsJ=X zPwp^1FX2jrE4353XMN(tl?=P&c>pv1IboM5C6Ly+YSq5V+j{6jON7KvAfUxnug;#??2^TJDi(Sylcz*UE?_USL zW*J<8wv5zW+13SMP{M`FGRU9GFHrKmw9?ncB@*pNQD#7n&4w1Dnb|Cu30`WFX75uApr&_L~Ekw?^{z(d{Sc9d6Ro* z_;+sB=X=oNn!Rj>KW{7Uos$ymg4SjA!Nwxz%})Ba09=6VD1@XkqvbX8NDiL(h{E?1EOt*oM8GUKiB2%Ze+|!Z@bQOn>C=U?e5j1+9#4 zz9@5kxkv9gxdJVWaVO05_h z@zH@*&LuBBV$XwIfffd~W6{PWCD;Y6jBdkMr>1;AaHnl|>KW7hAusN{9UBvu5IQHI zb*^4ItjgIiQvddK=CoGGqk--pT!9wG zs*k7nSN{i$qy)R5!+ta?cCI{8_j9g53!~1K;BPjb0%N~~1iPS>vF7L^=laj}c*PZH zVf@;1x_{?$U?e5j1+9!!#n#kw+x5816=-4PZ;43>c0ns+&W`c#x0)acm53wN*K7LEp|aGW5CD?r~Zf=Q?kyv0xgU>!SU+Tzrmn{flJzA z7ql`ekEn7^ANWwPg&CJC(89>y5-DNelD60dt&HqZt5Ubm*WXO=me_yh4FAbk2bAx?z-Cky|XK4uWk*rU1)I?1?Sq$`(jy9!d}B6!7ga+$F`Fy zoCdd#vg?B@&~^@kYli#UfI$fZm$cQNT+qrmeN~zB>5t)d6}oCC4Okk+|+^QcvsTjpP5 zui@C`Uvr25%&YpFGE7fSNQD#7ni#iZtoP6^&n}UHpPOHg&)1$FI zDB;2-%Y9GR~`M<=xvs-$!u;S{Oa{yTjk>Z7?X| z!X<673tAa7+iuDnb)3GB;tI4d^0!1vxNu2Z?1EOt>>X9!wJk1NTzlIsDwyowx=HUv zu!RcGn7D*gI03DR(UZ1iMl33k>yo@@8T|ZWsJX-c;yBz7CMDPft^Me}e;aT6LHf-a zu0Y#4d||Rb_6RVN5=G>KR)*>c>8!)!me0xgUtqbB6X%S{V6TVp4)#(8~Dt zDZ!W)r#&DHx2XN3XrF)<#?-cx{KukxP{P0^ZLtel8C$9=oPM9)V6U&Z0xgXGjVAe} z(fXi-flJzA7ql`?YCFgobB$f+E?1z1F>b>|zckveC}H4|w%7%&j1Cv~b{<-5w_TSj z&~{n9IMJUU?H`mda7kNJ$px(pb55~y^R`1}|8ThiZTm5LqF)*9=aevT*?y2~T&R`t zTjMs)yNBCjiOUseVH6!V(O(}OuP9;QlD60dt&A==ZA(4!lszW8T!9uw`m>wub6?TM zP{P0^ZLtel8FPdC^Mw=p+G9I!iRl)TqH7dPS4LdI&Iu)u*2LA_H>K(yrspXC^_!z> zDrj*P6;7n{U{Zoz(AtmS%<14<%N1y0tQs(p&gV%9c0nuSv&kuE`)_*9z!hj=Or1B8 zu1k^#YCMDPf zt&HHx(uuA`!?vUXmoUaPokZ8WNeOmAE2FSpl`|pp^b$F?a|K!$`CDRAf?d$c7=6U5 zRJTX<-T>RHRF-}++V2+Le_*=sjEPG~g%i-42o6)8^g;fi5;4MibxhAoxSWU>oCvfg zZkY0C=9EkAy_#ur!kFmU0<^fQ*H!xKqWi(51iPShSv_0W$~)?|ZuYu_E6~DNKfTiL z7v0w;CD;Y6jLgj`@5e3n-q~;kS{S7lR{B>)_vc9oc0ntn(IdUQzkjpO01Q{4g;BRn zrGH!WoFOT}E@)+3`d*p0?PL9R8&{x(v2^Qbe`55!Bq_lzXk{#JU*YvQO20wJ6=-2} z`f{}YL-gDyDZwsiWjuF4mG|)^`^{y;6=>TJ*;k@1F)3lU@X!UVjKuWGB-IO_y&A4S3*(rpYW#lD^WCHbyP%bk zuI%N#eS&?4Y`6j~j8$jV_?6Lf>ZAm_pp|h%+mv_H!0?-ZVOvsxOBlZ%5v-5sd3#cV zUC_#K#6E6~E|QNM=X8zd#z1+9$k1)DQ1|Ilv&as^r#`CDRAf?d$c2;P`@ z(K{B}cGGv(;RLiyH)c}nzcW)O=)0mGKU7EWHlf8;v~P`nWAr|X z5-waazwCn6e$2nAjd$^zUF^A#E6~F5JJk43NAJ}r;ld?tu?t!m^9s^lpF9poKAeNR9t(^q!LvE?m+UyP%cv&PQe5 z^~>}fJy)QG(Z9OJua4f=Qo@Bx+F}>9GFlW=c<0X=W1lB-1zH$QCfE3HM(>>|;ld?t zu?t!m%bQhsJ=!c-BF9~>Kno*(OQeJgm$bz$Xl1PLyE@bNSA9p%TVmdC+jT$Z3bbWRsr0Xoe(ysG7cR>n zSKUx6!*AHeo7G<5(Q^e_7^NRo`j14vTcU&um$bz$Xl2}1u`P4@b9&t63bbW}+p*~2 z`z5)A3zub(3)`+TYTtkGwu|49VGC78m~dsU<%(!dh}Oi&iK|n;hrd;07e9@_^qmrR z|3F)ufY!wL^_x?5UeMns7P-~Yw>Y82wdl=i|MckliAf1|LF=+=HMh01y{G=pk}J@{ z7}u!A-yVGjGAY3>Xl1N_#BrW|UVmT06=-4fIHSg|m%+DQk`nBKR>rVay`8;J)P0aE z(8BPC*7zmScR7<1?1EOtx385s=QP!030I(nv1(e4-!A&TXi|b*(8_qDu)?{&gZ>Q` zSD=OQ`TQDxLiC-~qy)R5m2uAgRn8NQ^>4|z0xgVjPX^bCUtxVDCD;Y6jNl8gDST5F z+pARCoN;aRZDdRrp8clmP6?@S0$LNnmu?+=8+ZM!gY5U4g#j(DId>1D@9!oh*afZq z2)@|s;2XbOffmNnX9v-Dgp(5Nf>uWGTONoTi#rOwv2E)79IRmLQ;ZU*mji>oN?s2l0D<__6jX7 z(fH1coSE_ysKh1W8JrLehKv`W{iw}A1#`j)WdvV*Plexzccq6I(*Ro9t^RBQpWCtf43&Q0Jv@q5O$KBj`6O=G;Nn7lKRz@&Fg%gfx;c^AqGJ^dB zTc|OVFmPE0xnw)W=oofvjugh`;4M+kOBiDY(}kCph_-gAZ~|HrWx;RmJ{qFGxsx*_ z#>9aZ*VIRA{A@Ii2_+0%(hqh)>$2)t8I0j}rv7%2E6|oPy~h9LPK=d82?Lj9kZWqF zm9bmlAgA?oeV57=XkqjiR^z`NjVnV51DCYLE@)*`*6r=gyF!1f#uaE`%9GJcujIR9Q{f6w4@1zH$#UHW!3&JQIFT+$Z1pq24Ns>nI*{qS9C*jDXC z{}t8#F41^JlrY>DyP%bE=~Y`&+s?Aj;asjjOF#0rL`oRAq%C$qD&#y-Dd*V6wEh{jsO^yGw8I03DRVB{hS{cDeW*){q z;|jDeIz8T>##f_+3zxLTE@)*0BeHoI!;LG@!l=Hhl*WmpgbSCn#V%-NoHEz(HodIZ ziClpe#?n`>pz-b~;ld?tu?t!m|GBEjyXQH5mcbQhVXQysDjK(s5-wcQ7Q3L85sdVg z!PtOYfwuh!w`0+EY(OMjxNJYjg>6?E!9FPahAaPJOO&>t#U&coc6J}kOP~^$h-YvD z*NKvr@kg~EwdV>I%n9ZSBbFKyj3Ai_$DB0MLyVCMZTob>RWz<;QeqCdptT>tNSIzY zcBbJ9v@kloc?FHnnUr7`v@+WDcD%_=^nEQ?poLNQo>CfTG%3L@Xk`Q=lX~G;riLrf zwjT@o(|D;#iB9B#R>ta;CMDPft&CvATQ3|V*Kh?|82Q_7Qi5I3$_URu=~WJvkv2PC#qo_|u>2*m*boo9fcN3jHU;ky@a| z)oIU`{%MPFf1Z?J7qrZ+F(v=2PBpI9F-EuoEsW|fTKUVfU?e5j1+9#pyT6+{Ii=Td zT!9uwo4G}P;m2SkCD;Y6jB%qHI#c>y6!gd#u0Y#<9DJaE@)j_X64m5_R>qo-+B^Gv zcdBJ@1zH$$?m5Wca1egqo|Ir0v@%Yd*WEec+Ct0V3bb8TE8F@<_W~m+(S}^m%Gl@X z{*JTwH~Y?uE6}zd;dU(An4|=6uh7cq{7XM?`mot%a_Su&tdEckJ!|a3C0zaJj8&azQKOi2m)p8~f-t8o2^3{V3hm z)c@r#Y*&hEL z2e|@m8O8hi_eJ|TC0w{HgIr5Pt&C|a+{{I<>am0?&~}}-ZRUUaB$gE=T)3pIYH~p< zqkX-FONQ*P$3(6`+w~D1D@6xidCw(WxTGyUib5-+OK^_bJlP)Gqb*U|;;nN17kkh( zH6;vJ;u6ZZ|AsQ}FFk(*Z>n=`L5piy(RcRyvf2+y7_P)6lp)7LoClGRN~c*SIuByH zGU5`p=afKN6Mu~;b56cl&*!KJ1J?=6+bQ89Ar($QYXW_cxqIoA=cDn}poJkC_a)-X zJqzbbTtd?SoWMPfr1?8V`3zLR!(8DjN5YVQ`rB8uWnJS|*mgOAp6{HH%1fLGH4?e| zLAc@)dCN-r@5+CYKm}>cA(lckN3jXGB#lwjc21xI9vHdt)h=50%#vfn@zpw9^l3D{ z8npCj)Y6ZNmqz2OQNo2w+GQ8COgHAPziKiA`{?nCE6|p4-3P^QMB}Sb!iCE+$Tcd| z%4pDFb!KTjJ??S^+A=!6SNwJ~z8WQ5xGaNQqe88Wb*meB-OF`+HLgGlqr=JX7XKEF zuSN+ME@_Kh(8{>--J`s+CLQda!WC#?Y#F$!xN|hV8YNt~q%C$qDg_XtquEMhnO1N-ITkL{X z#`PzcdzW}Rz8Y7cZ9jfmQQSNlUyTwjT(%$N>JVyW^k_83JM80T_WFt|(83sX>x$x^ zqw&=!;ld?tu?t!mvx4!}e%q|$t8oR|E~~u#oDwcv(iR^Lpp_xV1{@Q4uif5mw=~97 z#B|}Qzji_@oPb6mcTD68w9JX<`0>@a5|_|^45IPXkdVr#i{C58eJ!TzT*W1%!Uy?>G`<>Fpe^J6B?;rJ!DSib z8Wn0~&}eBcSD=N_;o5A%_-b%TTkL{X##_%E;xrkgoX;s?;Ih3X7ZTc!3;T_9zP(nDiClpe zM$2V;rGJdZoTP+-OWI-=v@&M@HrTo09UXI$E6~Ci`&5(kp3#_-lrV5fTkL{X#u>pe zvGP_ObCN62!kG2fztWY_n3I$+a7kP2f>uVoyH9tzAE9GTas^r#nSM>vdqrbTQo_I` zZLtel87I7Sh|_<79uv6&EsX8O`=}f?d$c=+IzTYEwqX;Nc3iFt(?frKh}t=Wt00c0nuS zjpeVW)^;7_$x`DAv}H61_K(lONKBAxd#IJM6> z(8{Rs4s$j?=vW3NmT$uUL}%Gh{r7iU`Gfy$r?T*7Gi#=p|Xj{qYn z!7gZJlwNn4vrC1s46Z=ieoSbRUiUH>Nr?=(pp|j%y+fQmx;|s?Ik^HYj5TxiO3&CG z`$tlOUC_!XK5De{<>Or}gDcR&C}|t)gT28>O0WxB8OQy*%DM8SE0@T&%N1zL$lK2o z6Xe2?K^f9^aCETi1N*jAsXmW*0$$CWW$fwt=-+~-9bla%0n8(JCR(ajB3hs*mmw75je zm6I}RCs2t?#4|V{8jO-)?8A5lDwq>afFWCy9^1tw38|Fq(IwKD4#v(2sc-@s32k3; zsDLpy94{Bs^Aav6z~F>vB*d%7c4-SPnRjSRPfkdM6VOQH`hg0T=zb^Y?~5=!FJb$^ z715j!t%+NIerCy%;Cqv{=k&Zpwmx}=EUxVhiqfw{?}{kl!Xm(Y8+m7r(04^#ffhz)S&Q_x=v@&dT)3nyc0ns+%Ce)pNiFnU5m%t?`dCw#J~w(- zLUoqJ#^V?FYF^Lahw*QI(hOrtgZl0xb;e!J>nGHJ5PV zlD60dtqdLoJT;&^jd8=F?Xr6I#&rC+;c!V?Ysdwyj4yt#%KRrBH=HZbmhth(bZ*@6 z#00t4gjyLlT<~`0kB{{GK3svejJGS(xpBi26XaSGYGpiF)X*DnmyR3G6=-3U++LN= zjT@enU>CG9M)f$-YdiW>dtJg6XklDlXIwfrZg^6HUC_$7?v3tVDy8Fwa|K!$RrRaW zxpBjj66}Ij#(sW(Z|NW%H=HZb!f5qDbvie0cv6C0(8}OZz_|h~jGs$u((&Vl!zFF8 z3tAaG3OHAwEn|L7I)2=6xGaNQKZjZwJPJ5hpoP(RQB692+;F(0Ep|aGL(b#4F5$hl z<=#VL_j&c#PRN{a0$Qf$j~k8(<_hm7Fg-be-XbCW5UmNFFTK7(MHnql7!|$$!1UyV zR5$^xiR;#NbIyFKrQRD*yO}>q(ik^9G2wEB6VS@wQNT<7=%2>8;n3pB^z5IGA2%E> z={dWgb)65qr6P4+Z+<6==H@p6!?3Ga5HMDbbQ#(8}0x^2*dt=a<>*M6N&!Bh|KF zIyY{3Qi5I3%GiA6p3Xf@blh;RKnr8+gO{g2jK&R5O0WxB8TZ$;cb1%@ze(i^v|S&E zU!FcY8aF&Cks%kfGWIz3Oy|GdTiRvC6==&?R+8==jT@erAXg^T%IH;cx%1J1I&L^u zpzZn?Rg%t)8=jO%kqcTGqYJKgj@$hyd+oy&XxooeNqST?Zg^56LoR4#>>Z37UfoW| z4d)89Fj}@ONzaJJ4Npq23tAaNf^ow?Y@_3ba|PP=<k}`t)era7q}s zq^%6Opp`Lg;sEFV2Xx$Uu0UJH+>-Qj(YWE1FmPE0xiXmju=A}+;tmB4r1zH$mKOCNJ6pb66lwcRMGOjtHP3o3cb?i*8K-=|kM0q+l zZg^56LoR4#w7#ur$MviAoiJCREhBHQO-zsr`?)g4T>ebQ3&U~4rGj@i&~{lJGd!Ie zH=Gg%E@^8lxuBJ?{HL1KM}0@wV7jphEu}8C2g?_S{VhOyqg-<$lg1< zT!9wGtWG1+pGM<`Q^LR{ZLtel88iyG%N1y0teIVrzA|>)aJZx`c0ns+=;EWC-45+w zmlao_Z9hI8nVuMp8%_xWm+c3+W`$ZAGzz%O6==IYz8IC>JOS@NC}H4|wziWCS{css zrOvfj5(X~IAlIx=hl~%aoSvN<$+It)E6~Eg z8CA3~!*dA(m$bz$Xk~=g40gNXy*Bgpxv~3vbj^^L5PDuBOzT_)voCJ>=hk-N-8QD@ zC0vPcMKmWwBOzYBl3|xT5BPsiNL!qMRtAj%ZukiVw78C%T$7F;Hykcm?(Blr^+BV6 z8?HbL!#gy1CUZ6RK}xuANn7lKRtAj%Zny$1j2$)A>G*NO;gYu41+5Gk1>A52S{RMz zj7!Il8xEJW#V%-N&?w-BE6~Dl#=GhGal_$~w%7%&3>pR8a0OZz+snqLwk302x63`*g1G`Mj5VW2r*q?mQ^JKy+F}>9GTJYGEVD}=9XFgS(3a7oBApvI zoDwcvmO-vHp;iWs0&chhEsU{sZb-+E8xEJW#V%-N&?w-BE6~Eo-)kx1!X<673tAbe zcQ5s}j;mvjS&c888y!D>e(>(}2e;^WUYIUCW8xB0;RLiM!ef;ita6tt&@v~Y<9|=h zmAHiVL$;@&d3&TrLMnG0J=L}w$JjX`^UDe7s2{d{$#Df5JXvn>2~^?|+K+mxE_IgO zr0YXmSO-5>j*r$2rYnOIE>}1Kjk&TtxBDO}LT`1^tq}v$lM_stPQ%@rl;E-v(kH;-fRT(K*EOT6sv zQtyH@ev)UehL;tz?5S7^y4NNp*afXy`(ZWbdlfe|m2-&U3beFa8ZI|wBqi7dt&HCX zo#K5k?r6*43bgG-gffol+{#-$Sbv`gmsFr_B3w7hNKBB6*S|53Tx7g+ zt1r`KMe7+ZX%}l#8A%CtL2EyTT#?OO*6~`);0m;~i>*W%NeOmAD`V~W;h95bR9FUA zpru_LU6qlPU>CG9?%up|$*3pC>N=+*HC)mzj;_i`O0WxB86Wno*RlH=`x{7?E6~y| zj={>Hgn>)iVi&YBsy??1MW@D+gvWo%H;~Q zw2NcDGALo-lD60dt&G)IuSr4$9qu$7p0W(CKufzg<0yj?1}y@ErG1@ert9DKaRpl1#aTiblrV5fTkL{X#+HEtoU_`jweRk@ z0xj+0N=+G*FmOp*?1EOt(26o=@0;{{GJKuLE=*SjC0wp>0$LMtZjx&&`Cq=8L|Wzq z(~}cY;RLiMHV5AjT5+rP1Ls$6*Xr=PG&vy^%n7G8A)Syu1pnuN!3oj%bER%gV4aH# z+n7y+S7)Mgeqms*l?sj$HW6NN?wr6nubseg?4J|t!qGJ*5#CKmh1WALk*FVT?PbLY zp4;REyZEZcCW7|uy@A6OPVhBK#E_7~>jTFX=@X~(6I|g0j(jo8iq;gnc+KWBc)9br qmf86Uu5f~{29gu(;%k)r1XuWKiP`xHu5f~{=l&r@!B>BO+G^pMHpz6Ovhui2hN3>$}$eu6eJs*Fk)}{`)0o zzMk**y*}${ul;oPTBXwezgxoyrk9qxUb{az`-5Y99=Lz{)W$RZ=07cZ7CU3+$*4AqGbySMzL*Ntb_}} zmYOhga`wY7?j~0S4HBKbld_d3zFn>uHDki0Y~+F++4^v(JAp$0u9IzN43ws?O>d&20XWtMis zl}Bf%jC;G1Gw&qkEYP3yWe|i)Gj^ML|h{vOu8Di;i`kOp$%2JvLz>R zbKB5t{-`mwraNa2%_hHrHkS&s#QIk+%cga>T5SLOrP*C)I9tZ6pv_IRY-yPu5_jCS zBx|3F_DC&Y2)5LQFJ6#6d6c|Fsk9=H`b2$ew3K{m$frjyOxq8j<%qr zq(_N7dHW|V(?ep`cl*}PDZBQsO)#qA^lfX`Ul}7hUmB4uXmYulP~I;qeZbkZ`_+Vx z)@7YPaA{3Abf4_HuQ;1M)D^(x&5XO)b4a}O&7oNv%aO(iMzQC64MUlph;lIR^-m4Y zT28InKMZQd5|nnv-TP-d4%$u0Ex~jH;>=Om58oBjAkm2^)`%^Ke58^q?rS?wU7U>_ z=lT-&O-q<)*}}b+#QNvHo&9uQ^u*KxRRp7U{@b^*!Gl0p0nzBZb7Z#s<-DDjzAIb# z*gI+Sxga*&I4qlgo1<-he6Cn0jADOtB`}|cO3TbIk3NOE%CWGnNN|j?!6tp#stAlk z-2Yvu{WJtUO!uYv2h}(Zl3)~%+Mx!=zWT47lf86>Yc=Y*{AjM|Au(aZ*;&`^Rc&sd zaNK2-q!gTG64+);B6?3HoqY7skUV|PIg|ns9A*MYrBF`GJW9_vYTxnVBVXo*Q zG3!Gwt^N7IvHd(C5Vd8?3u~9Q$B4Nbhh`f#IM3W{pX}?`Ih!L!m@9e$V(hT&s7qoR zBsvil9TQD`rDdLfy!6Nc+3eBoT!j0k&6SCkEgaiP-2CDC?7U%BXEFtXQ5<7j;`Y;M z$o{NXio712e_uzj@20xf>h&P6)p%v;Qa7KLpohfV+h=9ln%y;SZGus47kob?O!~5= z<%MSsuIQ1z@1k8EP?`%3oXCt~*i=pixr({K1I{ZNAhqXw@UT$y%{yEhOL^pFty-WgRTPo=J^35{YM zh8nEJjyL+VQ-9~~ge-gg3Un7qYP@RS~I_ocV44>#ppZd9L=Xu1M6~xhtD|C^Ss^ zvW2zFDDICg)_taB_NDa={n@=gbNy=c-u>ADKX7(Pu!PG_dLjG7tannoBm zlp_}k+k;UYC2Vl&khILavrLU`{n?zWQ4UYgL*kA*`?H&FdOLzqlNa`9S9O7qOc|ZD z%vzlMx0kamm$@kFNw98VdyrVx_j0!B;+O{0VpL&dNS%rseJ)+@?q#s|jW&Dml>7=w zb0mLFdp!4Y_V}kp+iUX4PrQ&_`u)-3uaSy|j3w$JA!DWH))U4E2}Vgue;!jcUU@=2Bnl-rIm(ZmDBdgxXRIVG#jMB8co*_QRlm0$&eQ9C>Pv!}BvLLk%TyRv&ucAmz0yRyCWV+OS)dAp@T&_km4 z)?L}wwknMR!KnE!?8>f4K$vJ(4j#RDR9k=Nwrs`6stAF~^pFrcxVL1YoklgGQEW{K z*3Deqp%&Zk@6YPmrpdp2=1b@Q~PY`paw2JPy}tITqf5 zWRz&=6ZEyy2Dovc_@F<}UuT#;D*-XAyLv!&{K zuuu+0Enjv;bIZ+dM>LFC(tPh;E^7HXi<`fmKf$hDSB#PxiSHj&Z)jTD+_J!Funuc$ zkXT-SS@Wjy+m(Y+ER)qR^(33Qt9I(}M0>-G=MGHtzJ}QPy^D39hF}zEDTmTULhD5I zzR=?GzIzQ-4+!X4jnsUaf2Lm@@juOH?d{TSIC^FC^`o7=e05iI-FIWxIP{Qc_`$8s zU-(c}?TSn}AQ06s>CWaElVXIFP)pvhqRaOTmdPaTH`g9oKP1GyZDFh&Op8$sXJpNq zk{2+B8F%3!!SdB67}fBeyPIcM_e7@wPe4@HRVv{&S6})~^OhT22^)TQeRI=&&L(YQ z{Z`c;AR4+>G|%pf)fLlX6nl>sFow}EBY-|%mby|~T2{|8LxLXJCp3yFg#U3ukS-K;+Ag=soZw4 z8vzDS98&36;p`{(A5wYgR*Vc%4)ZT9PdsNxW!+NenRe!o%H%7Z&6L7i(L-X|i9;%X zz6KgOmX-qoQOsee!E5sI|2m{HtK#kyTyAps^aHWG28<&8+)+a+J8q8=^pF_w{NT#B zuX{U!Q6uVyR2JR@!qlv*UDo^fZG$Tt?tUk=OG0uO+;#REtX)RQ_qwOq+7-fVu07O4 zqV}0S(_)l-|Doq&C8vi3Yue>UvZT4vv=}wU^w6D~p&^(h=pj+NmrOrocxBFwF0D}` zhF8{IH9lj=?T*`Lt^{5VU>li;|kJikYLpKYw9X3y&znsOgZS8J+iLy_$n90lxpXS#F%sU zsq|h4jcBeIRk$bP33^Dh-}-Vk<^%7sqjp{dmpS`%No$c&weRB4LqhDKjVMPhl$NUr zjjDaGZ~L>uDu?awjzuf>8(vxctQ$+DU+FojFGs3LKymRl_Q?rqt3G?#B4M}G$dngfbbQM{cDQ=q^!y1e z6V7t>#G{jzyUs*=C=?Kkx@XlVT9&qtkL>64keEH8x#iDkOoIfYrmbpid2v-tgB}w1 zm|Fl_UW^g+kXSsX+%oG&(Oe-dMr}G_YD=kfXjpPvyY!G4Txx2$>St9N1%gqFpPf=8 zSI;eNZMpw`*Q-Z8-_p{yk4u-WnKz#Ola}crG5(O2mUYKg<;pN2!6>$-OWY}?ZGutk)0Rk8gL#*ILQBish8pycki9FY-5fJdkx?g%Vwt=~DlN!* zzxJVz`P$vHHYXvYkG7N5FzL${_7X-hw=UFv8iJmHFk@o-9P|JY7~1<9&ECt zxzck3sRccfNw2Ii!oefGT}M%=D^01k1_{~IbUdz2FiPHOijNHEt(@e?r62!nk{<`T z|62`HYT3e(frO-_W3UUgpH&2-_@u?ugebN?SrcEU}kS zE|m_n>XQ}@?y0-%T~_1jM+W!YHqY6f5U9+&|KQ3&J>!PIT{)N&5`TDNP|q0;$23SV z>aDj9FuAR&D_ahFNc1!g?m6yPF%6dRjKhcc(y~T;$*l%GB>u2yh_AQW1fxFo*pM2z zqUYH0Lw)^FyS4_2ueA^LZBv_IlxUcGwC!(+)O?zMX_+1ppY1=W=Zi}Y93U(v1p6-g z>qA!$^*uiiwtvzxJtWRpF|y~#>(Sf21_?$zKW5*a^Ebzc)0Q0Ab4tJS+%R-h&u<@g zHp}F)V?I+U$4A$_TG6!FD~E30QJKC28YbEi^pLpiPp`;+9;qv8H2r#KMN3QCr0%!0 zOb>|#7ra&pMuwaT2}VUn21BJ~*5XA!+P6nb%UbtYvIIROJ}`1W*=r*uC&8#fd-!tD zLn7b*BN`+a#lB#ZPo)r2a_Jd2KYUP+jMRCQwWYV8YI;!dO+9)@a8wF4NHD6fpG&UH z=Jr7ysYygfxU`yJ6vug+c>a-=|LJE3^_0?4wuC27Kd9&WzdHLj=I>|B{})Tny=X5( zj`>-QJ<4maJxGYgDbuk>MF~dbIczQFinaScrX^RH7L_QrY*=!7NU%m~6O58Fz1P%Z zF<11Es9n1(p%8Cf;?5sfhheVhAt7bDaj2tf6O58NjF0U`qg9Xk=7`g($8ghkTeXLV z8uWbW@FA^wW?_!O-VO<-d+cLFTJ;#tltO|Y5`SDYq*c#qY7>lN4ntzxeXqCZ8QJwm zyxyYcRAxkNiI2OIE3>!SK5CAMtx7Yup$0u99=LjFtDZB~CK$zbvP9~*v~1e8RY$VD zN(Y)&bLUhyn&YAFD`TX-KBz{U(?jC8 zU+-+u^9NsYt3iTMN3DCcMbB_NkxH(9W5x?T4w|v6RYx_pjVG)IJtWKs*BU>5kYH4_ z&8^0Hi_dP^cbI!JGI83uE$3b7YLqo?bCudpQx1Aa+%oOFmIJ1tJ)#7o3N0vv`InYI zIC4MPi|l^ReLn9!_Ind+qa8sH3E4M;ao40@Bp4-oT6}D0t}g!3zO8x=M?J}uZuTt0 zk5?rAGG^b_LN75`NHFTO6(d`No|rn7wEX+V!G1jFU6o@N4h~0ZPtZexcSUUKQG!wI z3n4)diHW1X+OqK{coOF|NHB^$)N14(X_@=l-kW!{XnSzq3<-Kjto+j}GWrbkE3ZL< zQ9rqIkUwgN8uXBmnvQFbVALO<8060eLJjr?b9L9MN6S6yi6qROkXAkJh8j$ZQ9O!< zgdB17oJvMJy&kN+N6|wfAIBo?L4r}-|7+(e9|vu^)U!ltKFvQjQfuA=!i>AYIdznf zaaW^c)Yfx&le$gc{wbR~n-zWT^yCRs&9$t1c60yz$5r%BVMx$JLZ00zZHfHD+=qjP zxyxD6CrYF}kxI$wA+hVNsg=UBB7=qmqs)`7O5vH8)u4xjxs&R180Lxuqo%KFtrVWb zSq*wfoI0V|*LtWyf>GuvV5RUx(Uk)p66Q{N*n%QdAQ*M|MaNh4`KJWiEtT4(hs6EQ zpHR`KqufbhFv{H1ujn0UuVIX|OpkdsQPDfiOvw`k4H7>eG_6v& z>s%lhWuBf@3eVLnK@SP@{Hqdwt|n1BkJpI$vnu+uM~L7)bzT_rq#7O))V9GUN3w+k zqs)^(v)AHDTxtPB&_g0x4nw77mP2Y+pC~bhHg&H-4+&{meVSF9V3hQj!m}cqD|)0S z>hmaS*VZ5*dzU_yt4%OU_WAg;A{lY~vl}xeYLtwk`lQin-SXBF4ld9y`9AN(Z_}( zLym<6qeMf02UOHh4~a47PxfP1ZGur>-8IRN;2|L%J+cU)$0*5F;aRFdT{+Z4LUI^C z4l*r9NxcQf+SKJOEi=ChS5ERrnLVp366U#Tc>KtV@5-UI%P8hH54L~8l9Ld<_>q%o zF^aVwYLxyyrd!_{Z=O1JEp6R5Lt^<8-}X_5pS&?wQ+J*`Nn zM>ITP>=o5>${I9$4^jvpWolYe@*1gaL3jef)SIUjDG((_u{DJ-(XzQV*SrUWq5bzR zxCY^)3=#B_oT}=H7$u~?dAha+2pL!2o(Q5)hmgoiuJukr>_Y7t)YTOUjgoy+zxNuc z5cDuz8Tpj1O)!f4za>oivW4$ElMp*zS4@jhV(X~w61Sg5WAf$=ezvEs&JEePd={wo zLo0p;A{Q%Jl3bBsR9$_qpXDed=pnJ}fX&6ZkVK|Tf>F!HZw_ZwF*%aW%r=d@&p&xX zHYJ~Lhk7p7eVSi+ql6@Oj@^)TFKOdb3eiRn2l^%R$flb-mfRd`=&xR6AEB?)YJEHoJPZ9;?B$7`5!Pz1gLl5lDnm z+a5pd$@J~4Ws`d{eb0-vF2Mt%C_N-b|D}=@-qaH?XhBA?FN7NGKRX|LD67lo)nX5| zME()>T@pKc9?EXZ=k(eQfhf_?HxY}3dYCS2q&C5*nMYJIeRnY==pnJ2-v0Rw*-QCM zGaWzOkPXl0tSQu0>Xgh_(tl^BZ)e@{xjQp`8*Iy8Jh0+;$wbJr}h7`r8q}QYWEL#NVGrsSoXtw zb||k=AQ-i?tvA~ko$-X~?TwqWd-Hj!=AW=RyFB`vZMJROJr89Q^Et1i=U-PnXN}38 znHL9X)qQ@mf47U;z8sdIhlJRLx6cYCXOyfx5Wkw}F#CbNA=&lGN~UkfN;~N+S3Xx( zgB}tcb1Rv?Yg?OORNb#DS>gR!gPIx4uosPfYJ;BHFY?x)Lm{E;)%intHPM`{zuHQS!Zx$39nHLp>zcoAZ^zTzUn9Q5?0shA~WC zVP9K+kr|!yIpJ9ARRqqENi_aXZ??XA4mzg+f>9ltd$ULLIq$4S>XghGGDb^|qTHKZ ztP=E)==;!`EO-|=$HM)bQ5<7J4d%CZXRn{TZ_nzA#N-j1vm>hK*fL^a-(?i9cfwrV z@n6sQ*&91P@=T_)Iheck)(0M<3tk4s%5h ziQa$NTAXpwpl+rRJ*F~h&q_|BYx^^PPRKAIo=CME z>IsM^wq#xTY|6EXnTXnX@-x{lqjRy|(Y7^f%ICnHdCu1C@ZHU(TgVlOx`kV7%sk8z zGD^PJzF^B?(wEJ(pn6Cw`_k6pT*U=~QS31`@%+OaaZo4itDec4b~n>)s=3nkAhB%N z)@*!qR$!K#QLObaSG~(uW%@pN*Zr$AeM4TxF@0v?37e}vbME}^zq$8a@7VlUHa?$8 zM|!B{))FS#9iynhbZ1_3S5|nNT%h18RgO!#ik2Kp^a|N(mR;%%--Fe+NRRzr?UIvau5I%@#S zWOHSrWedj=5^bL{S4EsdD78Qp!Kld}*qq%|Jx`ILOq;{g{$g*oI-d(^&vHeg>({;6 z_~?8~Op8(M)2;+s4!M5SSuT42dPk=7Ww32Rf}Vi*_??-~yiuEILlj#xB)DFY=;_fX zI?KO7%{3?H|0f}~j(nj;HK9=~pC?l7yX@gg)V>G6v>3%&_Zr49Yi*S#BszQJjDrtP zbY8~j?0Ys>^pL2(s4>y`8ofq=U{q&vXi}J?(dLSt4e7W<=VhdJZH<69xgpWH6l)VR z5Vc|T*d&-g(Ud_pvqDAZm;LO7Vr$#TiiK*sSodja7oKXOa5S(QLa2v?lw7~}8mZ)p z9uoEYe>BkA0C~EehWpTY-`xS}$uO5;FGZhL}AQ&YYI-*Lj zM9bzh)I&mS{ocj8&my5wLKL2*rlKJ|Lp`$3>k+3mK@SNjhtgrLNHD5Ua=~n_=pn(m zEkg|wj1pUG!4p=aaprY?v}`=@`T^T~uX~y$OtfriSqSw6grRF|kkF_OlhWt%Rcc-0 zA|M)VPcKf+&PSh)|6Y=;%txQLWKptfY1Pv{n=5)q^j&aia(Z<1A;GBjS(hcJL`NUy zw{7YopLf=XEl2(l))fh{mq%xaWm=4?JL@~X)>%20y@qr}!a3<;LJ{_FFTWj7aV!4f7%vY9=Kr3F#{ z#)4$;i?Q}VYJqA3QT0QV`y3~K~Qa7Ke5cH5}ykK!MY6vt; zv}|T>!zoLWDN|f;=v%rtIsFu8cfHz?tgNf*C6=IvMEe_ylIiEX9l@xspDaq!%VPxV zq-|xIj633;vxWUb>x%j9J7rPQal<>RD-be1ZhQbGPo*`aJy^Sp zlF?PyC3Law)3iA}B*cEPdgWfLQB7!+jQN2^sv7h#-3~)2?P6mDqomg3`yf3e#NIPP zql73N&rQb6Ui#W1chZ6+8b@B5)K!n7R)a0bDDG*#u2RXBj8}U0 z+BbhuvN~Tkp<~Inl8Mn35$KumwM&vq^A!=8Qf-ZZn7A*m^{@L@MFc zMAs#&6J1fBv?l~A(?g>1#ns7!hhudWlfG;r!KlVLcPFPG2Ev95(e>K>KEHjRdfJ~~ z70TfWdPwkSC&9Y8Txp#!isP|H7wak@Odr#fJYkHmJ)~c0l-R)$C&$c_(H}i!t^wTo zK^PT!oTl9~M7l3(P^76wBulcS@!O(SPbb_-L~C%y-gv1LAYN$%yaA zdLny6AEN4xemv3Dx_!x0sjK$Q8xG8xs|0Phz|2~q;%~u*{ zU#Q9z`c*(2_DC`zy3#n)>O)ktx2IBaj<4<0A57-tD~+?(ZLUnTY~fx@qW!-gN-l`5 zG|sdb#opsmcb}$T9lt8s_;YtGsyl8~a@G~jjvk$DuIjGa=+D*K|Gp~u>G}ae&j7tf zD&>&0)I*|gh0$A$DKBndkvRkJ|w;cU4k%BQ&B!BcfO%CUv)^QV!Nn$JABH z0T&OHT(xbuiIy!qFCnph=Bnhm|E$VYfnZeo(pAY1zX-w#hz324_pVA-ocK<16%b=r zCqHk7Mk*rJsH+@vBZGQKbUgid5?`y4X)#K^ z*ZvmfiXIYehiy)Dg~Zwfqq+`$EQzm**!S?JL{~p-{KCdW*M^icgTghA5p(AZ>LJm# z>Y+qelMHjkv=}Al^YIlVnP29RH42(HS{No|0DMH89hu_>|pdsosww}q{S%tJ|Oa}IYK=o z#MVA-g98l`8r3!7jZniA^e|m%bEQKKwv^CXKkU<%$Unl~PJ-H18d&pzQKF&cD{82x zny66@q{Y&5M*A>V^pL1MJHD)hskv&v>bLT4c#ta*N@cI5r<%}|Y_6h2@Xon;dpWKl z?@p_ynuu$V5L=_v8YINl zsOYLzHdpkJsJ*VGnPbVXGGt~?@~bm(9V4GBW0;kJu=WuNuDVg1V3h3hg}L->Iq0b- z;Y#(LD$GC=!wd$!RJgp+B^mY;)wPk$NloW7B zoWNuBG+p^#?b-yRWE_iY&{IvsHArxLl#wW|K~FUi*B~LbM#)GN*Py4GP&%wD5@KtV ztP>d5pr@KpI@BN`wnoW3OmPi*stKh-4HBH+iSv$HA~m1ppPOAw=PD&pnE%RRhUk`+ zVr4#nqmTZEwdE{aY{{Y8d9c&y*42_EO2=KXb$k@t5++ABSKV`OpOtNE{%4!+gi)W# zA@cd9B>J zu^NM3Tr2m0yhcE%I&&4(FjU%24~dulct9pkngWdi!6=r`mB4%!2z^gO(iLqjUy)D` z34H^@=SncIp#-D!eWQR7sC&ju-^ea+btT;J#S5}04|6taM3R^EWlOtvp1L?2JI+Pj zao3WpeQFKDh6};8NVNa`((JA?9BmVi5{zOkSRyr_=3m-9cfa>!@?2I*D7HL<6kGb3 zejgI_keIvlC{J5LK2p&L2t;kT^5{&S-4<)N0e!UL^lfY9nXp93{-N#UHAE)xkeKz| zzP0jnIii8I7$tkHJXb9evqtP#E6;>%PA-09tvpfET6=3{dHPyx52m&A-@cU%9#o?oUV|khvHrPlXFuH+<%klD;)o%^x~1LhqdIe-_QXBd zKk~T-h0r+&eaUl?aF1eC;TV-VB<$@ZW_{?TwemdDYeWe~aZk%Ll(!&z9DCw~5oc#z zw^!A!LCqNeJR~?Og&Ng_j)QY2pISWPSPk|ij;Nh8hi3A-3}5nGDD9>vAkG|>$@BBw z6P<{farge&4)eU;6R8tPyVg5@V>>ng1e6%i;-#K^*>*q()Xn@(DDRh*%=|tQ#Tt?1bqnh%AYK}gEik_#DQYmSPDIr|H9TuEzknzb z^mL9LmK|lDHSc+@NX*Ul$-Zu$a~Cz3D@M)TI5gW}o|1bab!AVxS&MU*zAIa4erq66 ztaYuYVtbJ2ymMr>-27_6YY3KBw;-c#{&0PEo_V(I2@@?_+D*?(j~tNAHqX!ZJXa(( zTy;<;zjX2%R-igpjFOV;If~1U{WQ7a*~En96SG<7cXpC)?fsk{67`+OWE;%y`ii+C z!KmoSklJ!!%m|3DeKeC_9u_s2)?7r*m@p|@Zk`Ey!lW;o*`roX&i-tkVT)(O-zR79 zHc!LFW=bwr!mD#dqW-nX*jbYMxk{@EM)A5$f^|!~=?RGMPRiu>6M=@oLZTi~ywbDjr%uJR z2U@DLcT%>}{0>0UWgWU$^J%EC@}fTX4Osm0cNCq)hM z$bDn+=$r#e%Nz#*Aw>z&qK2Fk$-RssK@SPNTfcjPQTlWsAZ%Ufd;j7QJuQ>Y=nxRL z9Q2T2Zf)(F^j!;96IxoGtHWz}f*z(@D2EVcOS^S;5J^jCSP+}-(K#UYT!VzpKjAebYlU1fihWFiC0e$$TW4aDv~=!Qv2}LZK*JLB=**!KrSmNn z37z#)JUYv!*wl8}v7c4BBB3*UdW}>GodHukI_ss_GQ*0@5bFs643!2R5;|M#+YtFI zv=XH=k_LpxbThv?)2&49Vaf9ubcN8Fb-jiugKS|7GK#I~V%=xj%~sR-WhGsmk=AQi z0nuO!GVjsawYj2)gxGrb)8{I!ZVyJWWi4T%Wiw-9J}a=~S7(S7o7yf`!mBk%=!~?! zcr@<|bNOS^UUUr9@61s0pV zN2BF$*sn6Lt{7E&gwxqOB`uu?RBZPAupByv zj3vy>Ju+9V*mAsz-)EplXeD&kTcJY@5{#1X^?r~gQpbh&MM>!Fy3)dPcTa77YzuT zD|&QBQi-Cr$&BB^T#?WjPy-Fag#@EyypowQiv&F+bdJ{D6O7V%i;DzXO6Qc7s6Fc? zBy_GxuaQczZOPH&7$s-2GM}X<3?Q4St9yC)dM5yRz2 zvLw0Exltu8on=*QX(yR$wx~f537xli_XMMKZsa1tQB7xsl_=JTFNYK*@Q~2?Ws4e2 zi%~jCBC0F#2VEJ6E`z#V#qeAGOW@A(HY5uu0GW9UsXk7^u zoIx^5Y)#1o`Yr9&b;)eK=c|EP+x$){AW{RFf95G!z7CE=>H0X<&etfjv?!S9oPdW! z;kmOAW-}Tf7^Q281sa~vUviKTThBNpZQYy(2_MB;&~WqD)m4Lzpa#>`wWR~XYS2SM z*OT5o!Kgi}T@t!3c2R?AF^VlKg|=HNCD-+qB`saKS!`Xcxv0S!)fK2Es!+Qoec95$ zL!zLOTA+$xl&(PSbL9zoNU%&cbx-Iz#gdk;axAv4yy`UsGgKOQNaza7yC)c>D>oMj zdPwNn(g7hE>!wFnhn6U&Bt_6I4Ll@t4e3B56%D4vDAu&5FMrdZ|B#R}$;zvNMuA`y zd#Kk)MMFj$Sz}q!lJP@FHC@*>(69tOBy=rXPnc-g+*qO-y6Uty;M(Il00b%P(f7vS@UGY|I{q=8=pofI6 zuv;W_m0R)Xdbz5hM>|_hsjIBis;h^Dt`uCgxOc@8%o7okzmxc zRjn;Au8L{ULt^%XX8Yz-QG*1d%u%~#X?skA9uj8kYLVaX7d1#QYVk$KxBO!Vh*VpU zztiV$^ZQ31+ajxHdks&>JC)nM;m)Jwy~{0kI9q7lH}j@2L#T|RrZ1Vdv)qwI-_(?J zsTUHA(swv(5(YI#9HXxL8j11ePi~Pl#CZkc@SkW1lar^ee4}!S!dg z>@w^2`PwyQkS*<|hlKQFJ!-p9`&mUWO7<>2qE-=R%xItE+CatjV2}YT-^OnKuVxtc|B&40jee&%HMzNi2IZ{`e zusukaD+@m!*CrUn-s4hNjj{K=UU^~Fs8;Et*B$YCW!b?8S$n|+uT^gTinBeDN-ufq ztpj@Wp4A6N?&s~jO7HG5K1+uLJ?CCEqDS@Q`%>w^$o@eOiHEKp+Vkj%BSH-$mUfe1 z)YsaF_KX`IBYt}DAIv*^@3!iHSTv-k?y`5;bk8_^NY8EaoNdctN-bMha+c||B?tDL z(qC0qB&^1<z$P&uaC6{2}XT%-K&-JH^+$o zdHA576+=ha7W{1gK|QCMww8V62J_v`#utq3wjA6iF8a~FJ=1r%blGFVx}t}~^JDhy ziRX$0qs~|{vZqjTn=6)Z=;j?2%@u1T%oRN(Zu`?Kvfs28OHP7OKe%#GjeU?F5_x}% zXpmskAD$TG_pY!U(tSII zXh+aPA}>cog9M|Zdz46ZOM86Aw3hU^yw$8Ntywa)UF?b64}L#wWRD)nSnIYN`G-4x z=+TSBjeR3}^q5$iU=)v6mPj4v%HjJJj+TX<=m~n5cd5fKE;+E(mpn=^ihF_0j}Ycx z+RYJ;ZBVFPPtZd`dj5M&n*_PC8YCFSmNoftTPnHYzAg7ibi|o*?!3yl{oPSp0r{JD z^T@){fXA+opeI5M)NYRXT-g#bhvRQq;LjyO4SGn_F2{L`&#vq{%>9mR%CvJU=UwSa z%UZA+sZ(-yihTWmxMkXTl>?@suA&5^YUhe~gw2&#MX%K)S9-l$%$0gb@SdzI0n4ET zqxP)iBqomjYGvb3Tpbp3rFF$9*1FGCD*fswR}N~`Gf16LPI~yBU8R!X)l#Uzv=}9K zzw`<@BqiVM~>)jk*TlLJTcJ0y=5b3Da;CL=sOQo(znB%#RGUs!x=1Mqh zb4$=e;y32ZJboP|eOJ$MWIxxlvtu6{;`c|%kZx%=JtR0vXtXPbsO$N;jt^Zs&KzZZY^XsGi7y>K#M8A2Mn&7hp!O`>kLM)*xM)c6Xiy*+#lGNkm5K)U z=Zk-|Z>!cQ_kT}V4SGm?aO8e+Bx?2NyMm>nL4r}{8qS|fNU&~cH$5csT90UuU=(|( zrZ0c1`mQ^Q+H~`MGt?*$jN*RdHB!-Fk2~(yJ6m+DWuNwh)u4xjxuerkI64;yM)3^C zYowAZ?w$GgXiK|ibwxssaC!$J)L>eSiuOcX4thw)aaZqHc#Q(VD2|nuNFA4U&pu{Y zMOKlQJ}T$Y`i$+ltA3%47B#fAB*d0= z(Tn9^T8t``+~i0$bGCF%U8SYhJ)_$`ZdhgE>&}*x;-e2eBrd;vSf%fMv0tl`V3d6S z_H{*K;uFIvvrnw0p=mLSE$hlG#g>xy-nuK>+U9;q+Bk1lw)dx<9i6q#))hS@+9&MF z?m0R3o7DEsZQ0qQ-MhMzZ`hV?%{63xK+UbsmDQk!#QHn8Wh*{brD4l4`O|Os_X@<; z-|REDp$0u9Mz_6@P043isZB7dec~J0Z4;_;Wy>-7i5IeKUvqQpv`=^?yCQY{s`10kQm+YLYBU#N+XpPr270(Z)7Wvbx|xIBn&|hiTN+=%C1PNG;BEn0#WQe zUc==IyT0SHj-o%VA4S z4~fygeZ{}iQk!7Z=x4TPZO_H#TcU>q+dtGG!Kn40-=1~+HKsui3HDI0kxIW}Ew-K3 zpKV$HPFj$}{GH%LpDEIa9}_-Sm(s)NYhul#HRAcfm2Y1cBj^c;`XQBtH-T`OG9`a<{~?u^ZguCJ zgC`EDbgXbT=l;!u?H^OSh?;idkjkI0sX<6N%)f9RVG`3!`%k_S=euzNQ4>w?S+}%` z5Si{SbH-9X)t!;eH|IO6KjCcl9uw%cR0w)VNIOltC#FGyQH8oP=@&~*V*Iwjl?``S zY1mvbEk?1OOzM6!V|&lG?1-`}ZR0PtW%Y+UTSg_l%CO<7gVOGfH~Oc{ie@s4l zS2pIo@1(9s^j)+oYxrkJ4`ivjb{SQ7=dNt>p;d%I&3mcl9M{iAvUYoR#o`*}$c5av zt0i0pqT?gmv+EbcG*~B$s=M=r?3%M<#N@xdoNc+x)z#>|`?CXn;B3~R%~0yHW#$$^ z3ETg=EBj{N9_&4N5%OL_4+%Mw-FsqHu8dAq-$fMnf>49!AHAjiY}~W&lP8RkcC*#iH}q%s{;Wm|3YH2% z4HAuQ{n?zW-!4~-y5r9N?53My1U)1sFYM2*>Z&4aIoL;+o%BNXiCOPx{{S(1&)arXR7MFxKiuaj3AyUB| zC=yc|>MA>ag*!z#77~n#=E`c&Lqg7jWR02lwVIZYQLK@$96ZX%Xs5G%@yHMo^pN0K zxqCuKRJjWK@e{Ff(8F}u7raI)?LmT3%O<{(4SlXk!xHq6*m+NX_WFxegb_3M08GEq z`2}_L8EFI3HdiKn*}|g%iP3+0IlK4Z*l%m;k!ypehqfdcG@bnyBqkR}Fedh^=pc@1D>oNlC9VERj+}JxtfFp;GlU!$4*R zOtaS37h2po4s$5B9<_@aT0+vIr#0eTg)vir6AZq#QuI9S$VoWsYyAh5a z5)JRUyLomwb`BR1h-#R0XY-6nAZ*rbIpAsd!L7|-_>hZYN?|$ZA<=O3%I51wLnB@e zL@ht!f11zQ8-&jlJq=wenrHX9`l0r2as{H{ch@&J-S@V&i>QV#{ib=#4Iq53bQLz) zKcx3*UuwALx6R)^KDH0i6A;UO(|lJG2+>HTJ(j=s$IbU_$=l$2S2Zsf=AuaF8M1%U zAScT~EWh{a=EFZ&r6DpQfvASsxjJXD9}Sip`|E36{p?|`Ks1b5(tPh;u{LK~j9OlQ zS@S0Lb}4si>k6KRrlrj-3tYNPNrH6?OHN|>GV^lZ&2N`0MzNi2`l3E43{lAC{n}n$SLG2@_o;SlZ?VrDmOTqKbfr1m}jZME>DMIF>_gp>;g=L@Fhx zhqWNz2PHSr1Le@Pf+#a%g?{ff1nOo9#nyBK8i>o4k0N1gEfave93*^Hb*@s$lH^Ki zQS&Rg^29!~%HCFy0#Ra=NlCR8kiSmDdq^1Df3HXyBYc$62>Mk{ISub&y2cLrRZT*p z*iJUsl(clsNwHa`JlOtm<&ow6a5mJCpoc``^ez70No|5rGKZL6Cxis=C-Ipla~l%$ zR1-nJ%CYdgU1*J}Te#IfV+}RvA+hXBTm6$*Po&c30ddaO?C@Im$l|#IaYx(MtSP_S z<~58FmV;5thHcHpS6^-0T+!3M>Y1$R9bM6r*m?3Z*)OB_uh<@pVvh;S!RH@B>xjyl z4hecl)SbMw#|FB<)t#=K>TvZbq zRlom76I~V468VSgi5ew$Rn#sJsY48bv`7^0$qZ;z5n86scTY^>SKIV3-TKmmB!0Es znH-wv)pq?wjfq}ulg=|_|CoDAxQ7%F2OplqueM3dKveBq)qnMnM6a-CR1Qh>dYLKJ z&J~FbtH&nsYiD|9oZOJ;weucofY^|ZOXAngOp8&h^{^be3bdTpvcJ}S>(a0%rj9e` zSMZQv&kr@K3GG+w7cEH^NAKd$!*u)RFG^NN@8Z-?T$uFccX4KX?ULlu{4NgZFjw@D z=veZtWMcF#4hcrp&Q<44=O!N^aE-HRvHB_Nn>Z zFHcyFYC@w}Bc3pZ8%4GEG2IQnJ1}KzEjkYjCI$)u^`#|V)y&K`mfJV zmff7&rp>h$e6AdUs2TGvNEU3XK?s&=3u;;Q`Ez6JNwu_~ClJ+n?s>`dvp|^i zWi#dA(SS!E^S#!z3$>p)p&pLGV(a%VwicmLq8;>-l!SViuGm_>q6P_#Dx6d2m^*uo z5v;>dgK05JY%Nnr&_klo9)hLX=9(6xWDnLcCe&bmZJWBtk5RSzE9|*Bmi3zMDN~ zdH!r$Y@TtbZG%(uY5s+TXlS~!r>R|=U{qVODA~0XPZS3<;0cJC9m$;NwKLOdLsa{$ z%aT)~*Ut3xU2th~dVcN9l&Z>sT#@Mb?)^){y|3PO*yco^F7$osY2U}fT#;Z@-@}`d zTeijS&^Mm($3&kfbiH=Jx9hHcD!j(ALedlIA_U6mY=uPw`S z#*k=yadq-wzItxgC94x%<+eZwmP+l?6A)upCqIv_c*~sB9k(huD_^sgDcM}*AE5?` z_TyJ28@YaMlwefj+*L{4jaB{1mV+Z)hZ(PQRO8rHl`D*D0b$xk&v0rJEUnnJ+gv>X z5i5rgs~X!8)wjabbaWkFdfNZKD$$j6_bgW=>aN>ZV;^K%j4Jfqyu!>`26{CK?#*HC z1_VX}`CjYL5~<^yhI*K8?fsl-F{&_Ld5uQw2aWfxN>=3S39~g_e$1z#!ro4zed($s zzMe4CVifm(t6|cY%^aP#-JP5=&g}<{bM8(~&)3`T`2J1d^`HZUznat39ujOPm$?0`CNO?TN_r++B-F!n3nh0F zxdsWX1vw___j$0B>ZXV3Hpc2Im6G=zalh|BV(V(}tPz*E`LqN*B>LvA@w6r6qevi% zecBTOb@zR)HyQDL*S2*Zd^Fj6rn9BLX)Rd7q%WK6yXqlPcl#sB_z%Z=3DaT}`zfKx*mHl=|2dBF9%zy>;0RO>%Nk=2U^zElKC{0sVjI$H2&8kN#_r$+Ppw8s_p-7 zOy=KKMTkr{Yq8^oCz78Z?DD>6El8s7=*N?5H@t0cM-=xolNrC6I}@nIu6J)p-aIVN z723&%8^hEUJS5gneK?ulg!ag>kYH5DCpRX|r^X0+`VM;}nQ+NF$rXu?|9vExdtFR} zIkhu24!&>xgV)2E8ye)O5M^sOwTD$5Y(cZN)IqbEnzH3nPjtM+ic#z_CUw8LHrHb<32Fbu{}H=uz_b{}9^(a!;o4kV zjcqP=T!XE~DEVGLDS&rc&AyR)c9VN^DKZ6IO#B5`}lkOtfs_uMHW+_oiH|`wV|u z%iqBASF<5O4+;LdwKl;hv4gtGG56bA^^n-jFXEXNe?x6-O)1Qkq~$#z+s_Xj_&v1{W=p$CFiPy8u2KoNxq^p;8yR96 zOp8%s$2I67;jVFG8YCDcc3guV67G3aOoIfY#ExswLqd8(yA>rN&iIsyy5XBKACG_4z%BLPYzATuoG4R0s z)2FH}zwzTb1Obt1ln{(kTfQ%q_J8XG)-i#^70Fi2xq{S$; zordX7srk=pA`DL++QZ0f}YD-F` z()kM(uQ{S^o-GGGYD-SI(n@WDQEEGl5Bz)YnlBA%w;J@QEgEK4Xuo1isZ@(#l-f?? zm;ZY}_Xln{$!gG}wrH67Z2bx~rBW?|QEEGlmj@ryZT?vedejyTu02vJ)gl27pkEIsDD7Br&*+Vbse(n1!O)oB$=uulV%&gg1U#%9wD7Br2 zoGVEBW=q8*>n4bYQTn~;*+3;q^i&f%Gkd9&=j!g52G(itt7rv;*N|LE$#pdcwOu*( zGVRg4Xz?1+phsl}(hybFb zQIZy;)OH$Qx%H&(haWjWYB;4wZPCd0mHavigzfF3E@?4JZKpAO&@tUl4L!zc(4)3! z$Ud)Y1e8i3N*X0;F-mQxk&ixBgC4a-L&mOwl>|VPG)mH9l-f??ggL!yt~2|(?N@nP z)r5?}11kxDC^0QYsqHlO`R3v^x0t>q8uX|w<;agEd3%5;X_TbJD7BqNepIs>^r$Tw z`SCH=08!E?NsCcxI}ORd`A;-TTzyDwiQ>vf5+|D@=!p?U4H9Zs=g=vrhUQmF8zY=X z*V13#{n_!C*t%j))D~LTD=H8rdSZmorP7f7FI@A?r{`M@5^777u8-t2K$Pf-5l*A0 z_r5i~|9h6zAfdJ`N4{#4(*RM@6`;fuBb>(RPY&Z&reA$&l3DHnnqV9kGgv!8r!XScN zF-mP$@?X{;-hIgTTzk-?wrE^_(eagmb;CiFG)mH9l-f??SC0?xKH>n^ujo-*G|Zai zm4WroL6kH~(qfd_PGifH_pNz(liNS&QCl>ouWGFftm6)%q*0OWneve5G9SW0$AW6Hc=-~F9@yrM^K(RlKNskoN`qNGuh7NgX5 z8Zu1lD9Zb-YD*OFkxCzz&5iB!#E7B>3AH7P_eh3AH7P_eetxdSXOTgM``=72G4uMO>TH6C;WmB-FN1=1yvGAI|7F z4cvM;dC-6C;WmB-EBD z-Xje)=!p?U4H9Zg6z`FS8uY}7q6P`IC5rb*Lk)UjL{Wo;+7hLssEom(20bytY5bq_ ze?9ebH@25Ja;lvlKUxNkAGHWG&ig2}okqu)3!6UZj!|+nuuoVuaJE|IV+c z{#!mKl2BWs%$2wN-p5{Fl}aS&i4ji2jMZs=mSOH$x^-VASETj(+C+6uly-#Nca{5= za$L}~L_=+fGIw6Eu4OHPQEI!|{re@0o4(=hEy-ORo0fRg7L9Nv%vuDa)OH%D{d;fI zXU%;}DF;1ji-x%q=GW>hm1+@;Qrl^mJ9lOCY{J!5o|bqt%9aCbj@oAvQNrB!^DC38 z?KI@MggkAq<;bJNqfw&4HBRlbi73G+wVj5!lUmO2y_V=vTQsmt`87^Sw;F#AT?^mw_a zFL%#vTH;Y#G|UqLziy|!rynI4rMA;B`*>N>mrXq84q>Z!7^UBfp2QUi=7h8(@^aW` zESi=^iJnABnRLxrUk)M6=rfQjMyc(}@vo*m7Ie60Mf9jG8qzict2=^_rx{jV(qfd_ zPQyIGD(f>ZdejyT>0<-W)j*^gC228AZKq+L#Fh2g9X)D`M!v7udMlMcq#7k@F-mQx zVV+Br&C>?k?)0cF8nVw1tf~tl)hJ1eQEEGle7v$6^r$TwGIr^@zka+DBGo8Ki&1Jj zjbmr^Hq{Sy&xGkw+m-|C43|nEQjN0ZK$MKyvNEyLIAh`BroVo2o+}4D8YLR}u_SK~ z5UEBbQR&~$SRc=X$t>25DiH{J> z328@|UqIZgznRdqs?+5vzVek;z(WAC#a1D9;+o&kPD7Br&n}43s{kNS5 z+WkYQLfR3ZIkB~S^0yByXfRz}_u1u&1U)grY1~tJfA_(^pJp{k zs4Y>tma)?yK~Icu8kOtbT+{fT)2#*xwXH_Jj=R$c2zX+I)A+}6H?6tnj=4^Q1lEVw z6~Ubb33|8=vwrV1p8Mm3HQPV1&}yhh(o$QZbe(diL4uwb;WX?Rm!Hj$P+OvOy>+KS zf}R-RG=^6uG_^Lma*$A4qI5-gr$K_A7~wQb?KWw9kWgEqe&0B_^|)WXD?h4{peIH+ zjXQ3Bv+2Z9u3wQ*TcZB>#GuwQ9##z!^u!3KVS0O6_YV?kOVm%U9AwvVcXdUAo*3aY z%wAj8{hWl_5_Qb!gIXUwaYSBMBLS3#&%iv`FjswTbGSDD4RT zCRNjtI#FAq!d2Npq#7jzqtte_%ipBZqqb;p75MNssTw6|F-mQxvGwEolu!G-I}XyL zwrFr|`cer*s!@^_qttd9-Je<4^v6N&cutSnqH)x^S6j~Ctj9qRsYXd!j8fZa%zE|Q zrhi)Nev?X%+M==d<{d55cc=!4RHGy z3AH84J^71i&=Vty8YI-VQT7RDOv615b)Fbe)F7d@M7bxiF^#~J=Y&L2gM``=<(??V zH0X&DMGX>aOO$&u9@C&FMiezjs4Y?M34ct3o)}ToAfdKIxnC;8H0X&DMGX>aOO*S? zMNEU97*W(9p|(WnNG;>M8+G$5`jnm+;WW(A;BGyBaCBB%(jB^aM`hp`Rf}Mh+D^k9 z)z;{7kRG)~zz2CvWQ zQCl>|-uHS%&QZkt5N1r~ZN6(!ZrQbV^7{Q!W>y=6$n$g<*|yhzrXwZKe+325^77-AD$T0GjNSVf}R-RG|W}e z8oiDpp|(WzG!E_=xK<-UPmFLH-#_}MHSfL4U7wRsTcRc{9NbfPnO>`rpeIH+jaPp^ zVask_OOO&}{?YV89YLK8OMmP-4~m8)}$OH)Rw66hqSaDw@x)cl<0{OP9uMd&T5cQTcSoi z-_mm1PSpTWq9;Z;jj_Kwsrx;Tx%Y}ls4Y>?Ep2T%>ge~`zECQGDA5xmoJM!4y?fr- z?)@kdYD?6$gQm4?`-WyA|o67<9fry={FDT~b& z3AH6kMhTf!#hty9peIH+jeLZ&8YI+~C>iZ!Mi-|+f}R-RG#&Y| zjBpyJT{8(Eep|+M|;CN0#(p684a2k2Z<-P3^ z3AH6kYGL5Kgakb?!fBW@nR0&aQzD_ZL`iE7oL`ZkCq_7pyeD=`IY_82QPL|1&J#({ z6C<2P!-!+b>))7YHAtu}QL=XpobQsLCq_68bB0{bl!)Rrh2B?ivhNzfA`oJKyv z*>aFjTcTvN8@T=;K~Icu8s>_nDZj=kkx*NrWYiwGjv_%%jBpy}%4=$VtyUtTwnWL% zN3Y@RwVEgBi4jiYf+JSm{muM(aMxQ?E1H(tc{wTrEq}%LO zcD@V}YD?5tcTK7cjJqI8^u!3KVMgk1a~!l9B-ECug)1jj^eADEgG!X>i4ji2oFjJ2 z*`*nFQxa-RlsWpC=h1qN1452!-V-C7#;Hc*OFwnjgCx|}ats{LNl3cti4jgCuPb{! zNJ4Fil3EzJ9wb3ejBpxqKgL{9SPc?tOO&+c!1W*rdSZmr$a|taha;i3L`koVUk}m~ zBb)}W?ntODQL=Z%uLtRg5l(|wcO=x7C>bT<*Ms!L2&a*caJH^Us4Y=4+6`O}lAtF> zI1OIikx*NrWYn&4JqS;Xa2hk0ue`fiuLnVBx)LQvpMmQ^67<9fry={F*{f__kx<)~ zV@w(4AYraEy(dOEjjx(HqmumEnS|OBb?Ss>vrPJ*5o;WY9yWLsAx)Rri7 z*9hYk33_6L)A*aYHn{O?ZcHShwnY7W&@_y@BX^c1-^AfdKInY(!YC{Zer zpeIH+4PM=mP+OwR-AI45E0svl6C<1kukJ{wt>qXvo|BMt)e|F}MqY9`XOKI>o={t& zq!tFwOGwZYBb>%1<~^^Q-CSX|Jv1$)B}!Uz;QWdNJu$**9ELT!nXQG4JziUd6|!f7lSzjEqT?pjTr#QC(;mMA&; z=rvraM1r0e;WW%?uB|8OSDbG?HV?hK?~@ZL3Gq}D_e|BhwJ-ke!KTf}oMp#dMvXal zpGw`D_w`6l^n0fPBBh6f+Kw31bV+&G1;4Ow>PT@*^ zC5@7tFiLG#SCh8RFaNCP92s|0dejz;?avOY9Jaqcj{;HBC`pS^YCDbF9{JDmu8;n~ zYS5#$Xgqh-u*$3{ssW;;QIZy;)OH#ZPnlVMY-^pgM@o;{qA~lJVU-25RRcsxqa-ax zsqHkD-``Xoanpya20dzv#`xRnD#JTe14K!qBrQg%?KGC$_0Q!W?b~KG=uulVrZm)5 zcKk{;K$J8}(qfd_PUG+!b~HV6$}FovkJ_RU_CydRjgqt&rMA;B&0y1)JxY6`q^q_> zi7jh$$oCQ#66%Q&aSal>=7-R8Zalb#hI%w7nk)I^H1f&=AK|R=uulV#$QucY3WssS_Grib{hB2JFfiT zoFlCUJ!*@__Hn~13tv}_S_Grib{c2@_LTC+=ev17=uulVF28(OrSE;(9<>NYsqHi- zwtS_0%Z`oq+=m{uMPuR9I2%c-$A$T^9S*p+_6}W^k^PNV&_HHoZ66}Ij#*D`byjwH+8U|OOg;D>z zM*oXaFya#If>y@wZXDwM?q7!)23MekQPr){Z+A5qaS3)oE91;#M|xvUTO-$Vi!0E= zDA~Nz|MUVd;u7qFR>srq%e*Cd6AXhZ(89>^clxu=1S2lNE@)+}?ON{581|Cci@5?V z4D6MnEh{d;E@)-6du?^~_|x@15&NrD4qbd`&D7a?mBH)ENSBZbC!jTv+qT@>^5|=3 z9B@m{_L9V!4+s>%(%W)%@?b{h)b{w zS{Z}>J;J+ZiSAciffh#3i(AzUs{tb}!7gZJynOZ$@9m!L&GEq%XklzVwN=gT1z^M_ z*afYO17-Q%=0rck;0m-b+Gn<^8UG3xaS3)oD`R6`H}ATP3k-uR(1x+)(3*SafDxM@ zSNl*a!wpU)F7L0<;u4K}J2~f=D^8R^C0!yt zgA=$y>G!LyM29@W<{xB_jq`G8h6 z74yKLgbSDSI+R?{%2=H>#H%ZAuj?vwHBX#7s8!9so(F>xF85*=v@*6#9N~@r=0kH2 z#}#N9$GO4zD(?v}DB;2-z1Rhb5 z-L?4DrLtdf1zN_Dy6;lLg-d#|3tAbMtXy4PmaETh<2_NXOOI{T&oc13@GL7`LMohq z*2Hb?%e{HO*ZW<$LSl|XXp^ql=|9y6-$7Esd|rY?XL3R7INtTfdR04gdvFEXFuvaD zuQ(PAO1N-Iug>IxRz};V5#E3g)|hS16=-3|eb5(e!Jvc-m-J#6v@*UPGsJ7N;xKc3 za0OZzazEF4A3g)1gbSDSVi&YB9z3nU`)afv=UjmnM$_^}|EKT3po9yT^kNsZGM+vv z%RA-Tfo2?BffmNh0lWOxo57%j3zzg_7ql`y7|>XK*dhAT8f~9Ic z@2kFFLoab<&#N+hIRS>@m@SBeR5$^RMDps)6=?7mQS z-A)H5Pyr81C9f-E?v3-8mIdc5$!1^Y7hZLaUeBS;TIjU2@J1Wwc1pN#nZD%84z)6# z=`yLh-`o0mJ6E6$A)y_fy-U}aDRF2m^mdf`i*!Jvc-mtl}AJJia!r@Wsxqaa@yRDnwv zvrm4taAXTGDB;2-z1Rhn(GHwpbg{iFBK*}0D}@PT!ule>`*JC|DW&hcHQ`bGN=NVVGRFk;g>IiK?xTw z!ys37sFkr`+j#G}k}PFV1unBamQ)pHJOBnIT)3pyY;r*>fGlK`B z&j*7N7F=c=`*JiUB4^w&co(&2A3<)hOy$g!oI!1po9gNVUTNf zsFiU+x4DVBpKdqXgDcR&$e#Jv!nYG(P{M*sda(;y8Am+ZEAiyx=6Pf;SD+1J`D=yu z4g`Y|7F>owuIx}NW8vLB3T|6ze&gkG1==veBUrR$QNn`DFvx}DTp7VG8ytz|e%CD= zXGQm%(Bcw}JGH>uEP+b8M0y4%a1STxd1=pyT)~oHsU!i0Su(TDkua4u!)&oTJ;g#o)(Iz|v96Md*>A2`7WMt1s|StO;}fPr2`kh{=(XG|RWsKy8C`VG zNSAOq0R|^TgJH&D_7b7PRaj843>vS;C#1p&Xe8(u4Ev@_MEgRpNT~@_(AR9upi{KR z{Ko`bl8!kBsUoiC3GBPcb%kD1nZ5B|(-%v{jDr(0a!x=;>q@sp5abFpcvvIJ{-VT% zO1cEbkvs;QCopn(o%fQ|1S&{lsiHkb7AE*dQ|M(}!Lb4tUdPA}PMCGYiBKb9`kR;> zYf;}o^D&5}P4*Xs1Q?tUt&B%5uUdLuaIYwd9c91pZ|j|9jyq^^)$KaM&*_o%UlQzs z*6mT2HLkibq0a>53bZhGENJIv91ccYf?d$cxU$E}>W%-<@9ww)EsVXn7_;r4mUVT( zh)b{wS{X0wF7i%#Jj*b+0xgU$uid%q`m?}@ORx)C8C~uh<}GNkTkhK}u0RVTyXAMw zdT#F;?pJXMc0nuSqsH64Z|%8;!4+u3xOVHZ+9$w>O^_=))XEtCr}4qN-d@U}3S7b% z_CUk3n`|)R66}Ij#-S_Ay|cUh(!BfR3bZh0U(v9vtRon433fp%L$(9XS2(t%lKV>6 zw8y;qn3?obOFL>oQ z^;;jWeWA?~KGEO5q6dz_xI`Vfpmm#<&%877*EwcxS&J*s!pNOHz#rBNjJO25pp|i4 z%N2<;&%Rl=dDu%Ta0w%`@-)A$FBowNc0ns+)nV=IzE2D_46Z;6WAv@3`}0l%BQC)% zXl4B7y?yD@WPSJolzya0S||tHpW#zitL2 zE>TP_Xk{$uc8}fe$ny<@E6~EI`ytOiW&#*-33fp%r##G zUvB?l{&PzuJHM#4FV}6MLyK$2#MXXMbk7i%U>CHGW65)6_PT~U&GEq%Xkp}@(8ixL z0{0AY33fp%B;o z3uDK+qx>5?gAtct7ql||HLPFagF)jBgDcR&sC()ce(P*7;u7qFR>sb^PAPc#9lgKe z3bZhA1d9&laEnQ>3tAaJEqJcrn&4QM6N*$$4nMPkmcEtOck~}U44+0(!h%bBu?t!m z{kq?k`28&N-r3~}v@nX79_jD?1sIgD;F4bKf)2;g>;1$vBX2h2;0m-ba_u90>qIbq zN+vA0q!+uOl`(C2Tlr{AMRvpT?uNk?Xfuwiw*IN*U{Jz>%Z!6um7!L~bKZ6K zaql&mYb{rxg)!Q1TjNq(Q*P>UXS`4fr`*YJip4^`|u|a(BjH2_-0wj5^QryxNynH z*#)iJV_HF(*Xguz=Dvh0(8Bog%Wcck%5-wcQE1O)<$|!p(%PZKazjfvcv@nW~Yw5Qr0fQ1QT+)kO z(8>rtORVk^e5Ppj-LO~lMDEXR{GR>5poGi4*afYO9;eQ&K7Ehg`)~zX#*umM;r`D@ zfI$ftF6qTCXk{#GePZ=xkLtY-SD=Nlkk2g5-wcQi(Syl*faC^r9TCqDayLy z3bbK_$Gm9EqJ#^VVUP>QxiVJXR9AiLMYu9aL+zJ zyZe7junSt()u3m)+ZXoKE!pK;(&(AvnjJO25pq26Mc?rAExhI)z&J}23lzzL< zpV$|SxCFbPm2u>}A@;>(`deqNKntU+<9@%z05IYb?1EOtt3QmeKiHzb+2#tgFscUZ z_cIH?h)b{wS{aKEjI{@}m}t)JT!A*@DBABY`3)Fxi869QD`U)Y<@T}Xylk$6T!9t_ z_G8hO6_;Qav@&uA)g^jv)ZdHpzFV=s(ZA;J`aK?AS4O&oR5$^x2{-s|uqj`!=QA62 z`s*iXUubdVeZSNHavHw7i%YNzTF3GFp0W1x<+?q%0xgWrEgJo!9swgR!7gZJY`Scu zePZrvv(32zEsWaiMt{YVV8kWZ1+9!8jYI4c+UoJa6=-4P6gB!cJqJcyf?d$cxUaFm z9z9EsbFM&}?J>U5f2shyfY6=-2BT-4~l@(LJn33fp%p0Theu4SBRF^Bz!pP{@=)bW6y@FPOB2PRO)XgQuf5$eg5*x58jV0ixSb^F7#4LKt8;J_&5u4?qJ+7JLxNqO%J_S5U$S6}?pIua7KYrTynZGal(68EUhINa#@bOs>@U}w=K;7}fi{e7 z`}~I-FeqWcWfx|5Xtfl(68EUhINa#z%9z*&n{9 z=PRy23nORjKEK5!U{Jz>OM0;jS{Z+N^v6VtJM_HE6=-3k?unGJ;F4bKf>uVb%gTC^ zf6V(2?1{4P-tqIX<~tqUkB!l+Sy5bRo{+RGp=JHH3E zrxW!#EL?#WM#Gm|{jA<#P{M^vda(;y8TB(qc%R>`e<#cpXtNfwxA|@-Feu@|CA~V6 z3tAa_w+{B+e^&qAnJdu3$hm!+pZv`oC0w|q7rUU9(dOxVum0G6o@@`UKno*p<2L`r zz4#1(5-wcQi(Syl7}>jlZiQcS|d``nPos->cJp96XUSO+x6L zfYzltcGaHh9}XR6j&*!yA#`YQRs3qZ|I#?TAB;<|3tGqV%YStDjt#y$ka2JYS{NCN zw)xNB21ZQn4eP#_;poP)7 z&U@-nloT&_S1V`0%(ej?f)l(68EUhINaMvgtw zesj9n<}O#Dg)y`3SANfEzoLW%m-J#6v@%+58)D~o()%l}K%4Ecc$1%qjt@#$a7nLH zazQKOwZRGd#Z%2O=yC;G7)_UN@@GZIIVCK(q!+uOm2vmt?)Lh__3ym60xgV^jbHjz z(fNuJ7F^PcUC_#C^ZuU1k*&=+(d7!XFmf*X(tPeKI{34aWWs_=da(;y8S-xX*{82F z=XTx`XAb`=x<|q5%1D=x3MZg7@!7wBO#E$dc#S&g%jlk}Hq_$Ec=JoT4#p+e1+C*a za9TI}$##0JQ16QDhvGD0lbYBveU>CG9?mTpe z{d1Y#`)~zX7**Rh(fw6if?d$c2=2&i+{1ANS{U^weMR?)aS3)oE90;!W9{nsdN0Zq zXklbr{uSNt#wFMVt&HFf*~UFJSD=NFx+lgZ*afYO_l{VV==!L>H^BZXmAs{EqW2$o zU3iw2E+G|8Kx-nnY?ymQxkjM^M)ZCszUC_F&n*Q0omidg#;tI4d>i4YipNT$ah)b{wS{e4X5nj!q zb>`lOE6~Dd`ecniC;Gf3F2OEnWxN+WE2BlHNru4{XkipBU*ivmKKF@BunSrlA7++& zSJb^??ytB4EezSGlY3%Zf?d$cI6h}p_4_mQGcxS2QYriCljyTvye>S;N|%rdC!jU4 z;h1u-<&*QwIA$KTA^F*KsLeRqZ}3l!K2MBGgjXQ zxCFbPmGRG0M|wkiy>I6Vv@j|*)cYStpYO&c*afYOotp=H-&g7J!4+s>v7H%XkpaeQ}3^hK5vgpunSrl`%doW9g(T$E3QBbqqMNzZy$Yc z5SL&Vv@*JU^<(v{YxKO!6=-3k?ul^;c0ns6xFhqT?^t->?YSZOT_Nqq<~x>y60#&S zIT31k-Ln4tX;XFoxAk|g8JYFbcbm{AJ-FVV8hsx{2^TI|-kIcr)^XG&vc12(sK4Lk z3bZg5K3ebJ7=5os2^TKu#V%-NWOlW^V+Qvz*ITYY3#07adcQ~X{U9Y=xTF`mpu=(W z8|u})+RiYz0xgXCt@VD#r|{ifT{7XqCB4`Mt&F{EM|kUQud9|j0Iom_Bd6U4|Dx#o zT1vQZNiTLmD`R!_SnsGNeLfslpoLM38(JC+2Oai+*c@*OiejAr($QYhr4ba_`g6 zUNYm5t5@_(mr#qV>76zHThZ?sDB*H~UC=s?b)S#*KFHAR!4+u32<{m&qTgju!i7tE z$sGV((8}1jZiM&ot-4=v1zH$IO>6w7{`lO75-wcQi(Syl*fVR0S2jbxqvr~=8An!~ zUlDy?LJ1cxGY)b!g<2WMlq9^pr|5U|T!9uw+2wV9e)M}EO1N-IFLpsIxU0xjc6-4iL{!X>@f1+9$c?>~6o z#qY?lhYC-QRr8L;6~z_NoDi*v$v4y`dVf5^MglJWGy>^^66W|oFHS&fV$TDOiEF;0b5^DN^M?1ENC-JgcoGoI38kSox_DE+S9UlKi+ zGcLg{Xk|2gI>P>Xke*Ap0xgWZ6F2y;M9&wEORx)C8FT+J*1r86JtuMnS{OwaZ1879 z&q<9-unSrl6Auf12T-lgV&w|7FfxX2FwbZe9ehV0lVBILGJ+?>Ch$yI?5|R(ef%9C z&ql`U%1D=x3MZg7G3&^3`_d_|m}^w&2{k^R#tbd4l9Oxvaa^a}i76BGyvr46v#!GZShQuuC3t^@Rz`5ek!y!5*AL!bp~WQ{ zPo@!HY66vXiS!Ik;F&d&miYp79L*W1U`eo4m|?)Of+xNw!e_+0GD6I004;qNCf@Or z&!MM;1()F_<0qe|PYDYy>BTN+Wvrc%Z(r8iygzrj z0xgV;xix-rUI0p1a7izAK`SGeNx%;09&ot=EsToMHGXn_14>wMNiTLmE2IDR5%xsO zd=BSw1=_5u^K1O%JPnkv;F4ZdbgV%*;S(J$OcB#mf z3<+pWoDuxy?$Q$d&7E8!F((eRxXLaJuIFcB9urDfaLMwr3tGo0JHoAXlJ; zQJS;CUlGm6LJ12lv#!X6gfe8VyRE^Tcd|XW0xgV^@9X`>t1u2qSa3-%c0nuSikU;~ zS0C5!Qn>;xjEXt+{*Tf8IFzv9l3whBRz~aKnVI>=_ciBUu0RW;DY)NV8_n}W2@5Xi z#V%-NT(mpOe*UHKyVS5(^F--qpZJeP^A%CT;$G~6R>oNeb|o?=>vySKftGQk?unGJ z;F4bKf>uU&H87VR-V;S*o+rF6JY$TmYFufakhCT)Ubwn?(*XTGid_wTs(sA0hS%d0 zQsD%&CcX>i$GPX?@H3gU3w_M)RuO7(W$aq$C+G8`gbSCf6LvxCy1Kt|toQJh`u!kR zpoOt;$Ra;EFBv6VxXkt-7ZS<{W-{|I_Ze59%{Uqt`N{d!DB;3o#zC%(P%GoExmS37 zrgbpy)wlvJjMDes_LK9(QNo2wda(;y8D~v6%WFOS6vN;Ov@jZK7yHTi?kM5HCB4`M zt&Dqb?&5X3Y3bZgveq7=w=k23}3zzg_7ql{hnf|IVHy~G_%{apSShQtP!iCF> zgIw5ml@T0+G6q-v#hxg=pv5H`_jcwOOi7@UE|H$W3EU@2TIL_saWr2lRInsiD$H1F zS-}jF)#03zmW&W{q(V#Is+CLpRYKi!0E=sGq&qPtMO7mtYsP zGJ+XBy>Jdti!0E=D0%*EKRM56T!LND%IJ7yiTBHm8MbUou0RW;^piz?a=z5K1iPS> zv1-lDo;%RY$!c*0S{Oy=E%KA|zQ!fk1+9z)o6Ef3PmMC)*K!5gY>#gj`pNlg;}Z4c zf>uU$LAm$Chh~mki!0E=NZohi66}IjMtF@f+XMTnROGrOGXjgo>%z0FbP1_&0$LNn z5oP+zagGWYnE3{;rzBk2OSmGM6QYq2ufB^Myxa6{sc%m0 zQ4vPj2NizR0{sm=UXM>mg%i-4xOV0f1!r8Oe^Xt&w%nf?JV8|$(Bf*ka*}^&OZ=WX zF2OEn>10_$myAekDfmO6EQ>49!l>PRum5-lFya#If>y??84cSR>sB$+t_ZOD|H;9ODb>)W8vFV{L%t2;u7qFR>rqedfVI9*@nRtXknE8 zFx7wiIxylA?1ENC=ioVzPqx(OS#ky1Y>z$D{BtY7h)dLx3tAbKldrS0pWbUev*Zf2 zFjDu#xCFbPm2voS!@cSCI}IbZ{cX`P0WFNoTSxgj9>O>%;ld@o*afYO%{N@=oj0b7 z*&bYh7Dn;axBF9X0)rART+)kO(8}m?<0;-1L>rG^A&LgS{S469`B!fC>WG*;gVkLf>y@J-mfhk9DE}#=PRy2 zo9z*vD@9utC0w|q7oSC;mC^XX2ye)%dT!5Lmx!(z&}JNY*O+_igA=2vk}jc3)ndj7 zuT#k21hlyLD6lL}a3x(r8M2OWJ;##B^5%BDEbW-o-#lTKgc3+AW8Om}>@#1`>p3dI zzeiqJ^bO}lS=LFv4NSdEhl*&K_ zJS-KSawH7-$Gl%N<3OeI{!>g}PGIB*C#1p&Xe5&F2e|?*4ACj;O2+TXzg$U|h}KnX z0_#fBm_;obL&QJ@JS>&Gu8bB(&tH1w;d-1`etmW{*Alc@3(L-QlJl!k!iCH9C0Avr zmGO&XCsp4Y&acK5Xv0`@hI3IgzZxZ6xD10_m7!L~n1(gg(|^$OE?1z1QM~Uo=dx&i zHA=W}NiTLmD`WA4?Y)n8>-=h5fi{dm1Dx5>{A!eN;W7+z6^B|GZ65CDopDOOIa0U+ zZ5SV%>I{qKSEGarmtl~rIMm8mk$-{r`(0g?K^3@!ky-I8rzDzRjS?O4bbd9iKntVt!CYrRG`|`pT)3ncyP%b^_r*KBg{SNMYFvR9M&0I9ocd^fHA=W} zNiTLmE2AWsU#;EsS?2zVE6`>fkDlVRh~`(LgbSA$2e~Rkt&CltlzUxzAF))9U#>tK zM#^zc2^TKIAQ#RI%8=eTC-PBSSNXfN$GrNRC(Ih91k&<))ZY~lSDr$mlNQD#7nxNUz+~!v@Toa3Hx;g3RSK|b`pmiLp z&M32YK0Hp|pSxUvmL;iMlI0}lSEGalmsz9aLP8lsmXEZr?yd8yaRpi!#g}J0$@$eN zVZkN6*aaOjx(v1NTG`Gv;|O~-Pt>_RoaFp!Ly`%Ld$9{z8GWV}*uUwl-xYBMTEm=t_ql5*Q^eQG7v@&S6G?y#TW*k0&T_-9`m9tixL)GW*p?gajpzG|KJRlF>-oz z9?U736KTAzjC2X9Z~_{MVFm2?Rm$343Xqd6y$kV?j+snIzR zuj^8!OGt$i(3*HM`2PIX{`&oS(fitfVcn0vGHt$8s9;I3RPwqq@`hFw6a>#JmT|}k z@fiTLj45Z#WT#^*d`1?RU>CG9I$u35@yoMy4j!&R3!`evz0TVm!H7$+3tAaxpRzJ> z#5?-C46Z;6qv&2Wd`aS3)oE90t<+SyP3Lg(P&3bZgXTTOJDiou9WunSrln>zKi zr%Wv{+k-36hOvK~(_#V`u?cczhFTfVS_AD#)3cO86}SxJjxuNFd@y1YmmKrS z<6MsK=pK%abGhG1cg(B5c|w+i6VUQ{vcD))WE`R~F9cpsNw}N)AK!Nn)$7>#T977$e-fm=YtWOAXh`El_8(= z1)tuTac~7%7&(VebuyxJNnCfwP+eH zCV{>c!8s8c>G*_HI021Bv{Wuvpk*AQasL=Ckt+k@O1ebKx=NeCy{M#z1as%6Un*3< z!&1rXV3;M7eb+1%Dzbi{n==kh2%QtqDN7|WvpvvPT(iS(d(tLcPJqD)(aJcz)BL4_ z!taV?kGtv|oeKckq)RHCo1*vUlyKpaby7qwXkAz59X_f0uqFE4Hdmm9Q95jzb4B!B z5hYx>q!+uOmGQ=kHPt6H>32n3ffh!?n5oXS(RW3ZaN&|(?1EN?bx(V*N6R6etX-}^ z3!~!MDbDNBcSV$N;gVkLf>y>#x1V=KzJ6E46=<_PzL@OX7JXMl2^TKuRYWdmWi0J? zfwv-~n;8dJpv^e)Cp$Mq-xX29h0BbCTos{K#-)>odowQ9?~1qrEsPxRKIg3HyCO=s za7izAK`Wzj<{jQBSHCOb3bYx=$org+qwk6+;lgFcL9U8WE92TN(1sBn^P(+_5-wbZK`uT^Sk}9jR4u(Y z_`FZ{-KxDS9n2dJZ5WH!ILUd#;}S*Wg4S_#>^ZLb$#C9qu0RVT=c=_%a^CQ`1iPS> zaY)w6>NW3CG9 zWIF`6ByxPXIJTvdbKU!Ck9lK1C?QM2321pe_%&6=`QBOKyy2(_LzV>J*W&f~1V)Pl z(wfla(s7_-7<1M}47?tnFbqzFS`**5Ip4nQkmJp{B!gU~KP+}IZ#Z5*DB*I26VRHN zdhx7+ZD;FemJOq;9n2dJEv}-iOP%Dr;c*FeLF+c3f6kqWhL`m-ORhi*Bj={2&b86J z;c*FeK`Z0x?e8bL6yEH~cHs)NVSKm5Ssl$A9-AOnPN$(bEQi01b zRxEbr4Z=IG*aW$9LamJLzqr=!@bb^*vp%js3#0V@#ZGeG@VErKpp|jvMWgJ?8{RYw zu0RW;wq&uhIhr>-F2OEnWjxdM9(%}%I&U~vpoLLUu-G{&nm0Ty!7gZJBZ+-Xk~=g4|5FSTx*u<y>GtGnBG|E$j)+_>4X1s-%ZJMqXfuwF z);Xi2dBZ7T!DYrlu8L4AgJuDDxdJVWj6v(2)zLG4DPh4Sz1Rh1gZ5^d z^HE#z@GEJLdG$9>n5{+$q~-OfzY(YiT{OPi#_K5wS0Y?#o{%&WroD#*`pV}4&`8H8 zq{0bkP0%dhmb?#_&n#pd(Bf*i>2oLjyy0+3f?d$MJ-$nnd8@N@-f*r!3nQcYGbcH3 zI3--T%ur>K$~&&|I|r8 zZ#Z0L9OTLfwK9%;qQINmN}mJC6=<_PhSWRBdBZ8;!X>>L$OWwong!hA3bYwV?~k4I z^M=D^#zC%(P%C58{$16#O&(_UU9LbI#)5TDa^7%CxNsQ;xiUhnjK7^WxB98wdhf#( zXkp}Z{Lo3x8%_xqF6qTCXk{GP^2F-0aNcmPKpV!TtDWS$;goRUG7NI%gjyLi3%JD< zXknxtwUlt-l3whBRz~fZtG#ZkTFN=mda+;Ib8!Bs%H8iw{=I%1ir0k~yc0^3FiS!S zq%{$oL1lZp@-J7Q%@PLb^uMPT7b@uzI*y>Xw3l%hh9sntk=rwE^LF^#xJ6CJ6=}?C0wp>0vbzYMlRdLLd7im zZ?{GaydIyBN(LpMHL>N6tGz$2YiSs$2&1&B$?3H>yq1LN_=HqA0j-I~U|mgEtqfFz zG5HTIqx~4K$0wx13205oItq3vGY(XQfn$Ps@d>GL0-6)b+0moaza>wPyNYEGL^{`< z;4csEsfDMDWd0j08CN(_cI2egga(==*tO${34UEL=VZi)5;>QXY_AzC| zCD;Y645!VR-c8$b4TCGth7s<&%7{&ni}z5=^15{QewbmN(P(i6TKZzIR7PBaUC=s? z=g&FBD`~pMjDsuC(ii)&GU5{Kf>y?H@4r)>|G+J}J?O}ROZwvYP)1yWUC_$ND80A( z`G>|D23Me^FV2t3h)b{wS{W~1wR>rH&xwY?6=>;;GpaJ;66}Ij#?znNmH$eUen!R> zXu}B4)XJcQ1()=~d4&_o=$YL$vGR}!G7cB6<_VlvltBrL6YPRk#>%T6O-#7-Zo}XT zwDiS!MH!T^;F4bKf>y@Fmp)4T>BUlI(76vT>5DUwGALoeCB4`Mt&G~4?d&=E`Z*j| zprtR)aLS;B1()<<7ql|AuRYQJzSuG2;0m<##T8B&l(68EUhINa#zT)f_8HSoGz_jl zOJAJ9l|cy$F6qTCXl1k>H`E?@W;?^+3bgdal}H(su;7wj?1EOtF^g}sx9s@Zd`89< zXz7bPHDyr3f=ha_3tAaZ1<#YYKYX4H-zTyQuPcKRE>}1KtqHj{;eMCzCXtpU!Rzq} zsc-^X696&Jvm=7re5p8reIbQ$P=Z~2|6mw_TSo8NT;T-Y4VXmuAJ@j-E_9rU z{>#W|op1u@%9L@)g4w(z?Bcbax>URk_^QU8QWIR^1YdXK6YS!?Ij>b$jg?a+CiZ$HWD zdd_-(wN_nr?dz#ZlK+3VDZ?;7(;V1xtNhIOzTNux$IosyrtR+2=F#`(-#Y(I`@JQM zaHfeCBpNr22npw?K%nZm_vdrZ1s|SBX6}%iFN>uyVTZhbic=K{j*9-9CK3s#x__}l zzROo)J}}>bop#9Isq)c|3i3swV_^GyWnjdJeDIV_i3*9v|Lu_Xel_L;qe4~K6L0wMuQq>l-D~5y8L_T3 zy=vvrhiWa@bW%kGDy+9;|H~#dcbc$Mr|l|eacP^ct2gmcNubK5dBjMPMN>c7+;PDH z;sY%}XswHnDgsrS79WGRj%r?X?vd69S~Si1YTJm9O2V}{65^xx!+&4?_e)O{AJ8)} zUu{kCQAMCi)8gZ$mA_uT|CqC^5432S^VMD=KB@>*XjN#Cw)wiz zReV$tI-(*WK7M!lihDoUoN0Zi%32^_9bLso6@e;Ei;p879sJB~&tJ$s3|chJ`RW)f zK7dG6#d)Dh)8fOt(=mRV2QRQb(4uM1S4VB}0YsuI&I?tV79Uq0`Tg;;ubyswpheT1 zua5cR1BgUboENGzEj}(eI4@LbT6{dV&9#z z9&lVz73Zr*2JrzzqAJb{Rhkwby}Rzy`Sbm2(jIX1QWfW`M;!41M4~Fr3sssHA1@yD z+0OsFWKZh@Et=+h^=KzPfJjuud7(uQNpUQ#{gnFwatr!j$>sX zNT5nb*D`@6#CFCS@j)3b2U?Io-_=B*nk8qMJ}S!JUK?}?H)B+%(4?R*d9h?nR5~#v+6aY9XcP7mF z;@Q&BqCx`C=RzNtSD>nF!N#XANT>bvuPu(sy!36K&UT%hzUS9}x8GYIMm(9$+Q2bs zHsc*@;q*JpL}gYV=hId=D_4P z9MzJ2#@6rMO47;s>r$U)gw(v5PIJs&^|9R&$^0$$s*id_(o+}jUyu8!EnJ+Rx{atf zz4++=CsDolicd@K@=3k@r(<)ilg6hG@#%qQCgwp@4x_04dPb%e)0~khogK2kr$ZlT zseSu#ufm){0xd`+*KF`~HG!(?awNw*m@V#-UQ+w!gW0z_CEaoS7UjA!+#cBptFj|k zye0kTkd@iImZYNug+~O|$+8EsLoRjxpcZ^NtdF3yKqO!3&#pXI=#3DdDn&*4%a|Bg zfG~so*^Z}xk0=qSpbmXh>?Wuy^jAB1b+-OtSBHv_AKC|@4YH{ZW{rI-+Jn@*QQw7@ zLZY_!gITg;p&TUwRkfx4+0@N}unyQq0_~i=vm(3e-ikIijFh4R!u;y~Z1g=)a$|u) zIRe#Bdb68Pl0DdJJ&}L~iCS|>g%2bG)lomnj{7x4#g51iwFlHmZKwXM_1dPC9EsX7 z4`kav2R?i`umw?7-Al}e7iN=Ab9p^IKYOdwrDNsbqI4!`0m2ObezwgBh>Fy_g+!oQ zerV?afyH+^NvF&0Ri19|;iI^}X41=SO`&UV#ewf_GtT3;y}0Z14^# zp~)NB@uSW<*Xrf=KubW}c3n1X|CkRxZfjl~)!etmALb!vug%7O)a{*zU6<|n_NKIX0z~%5?`M50-mT4173?<<7WI<7 zhviRBkXo!Q+a`bNKV5so+MGzLE3hDu%=y=R_KnaU&QD07s?Dg9Wq?0|g)mQU}HPjkH;eS3nTAgTn2j;{CT zGtmd-&s#{K3ilP!%BQrs?srIZpRrv&;P&}y0#(@G%7l)6NOa%4ZT^mHn~e~tg1x{J zMmQ=5jxwv~W#^qDt%f5;!3U0HKxEfkk(pbd%^gNQfCyBu7kD2=+e5FTidSC2)g7sM zlNMA9616oS3`c4!FA}KYeih#b(Gn1Ejmp<9DwN!)56x=;RHeR4YTm-0h(xWmYyR*w z@L?=aAW&66Xoi@nm|?enmx+|2iDpDWUs$# zP}{RFzj&ff{O)sPM4tDPIr%%^b)z%+(7r%IztJ%YEJ#dSI42)JGUfw`KvgUU zdodgp))l7*zU1!7Ku!CQ80y3}Kw{~mz4_{63sG4gNCc{1FAPggYTl^iU_qjPMQ?t< zVc^49pg^F?{IWMc{!>5*Km^uL$4ztcl^=7eSY1g}U_qjL*_=F^5c7dO165rEbMpF> z0zqY=F%jY&-ssJ{#yJ(#h%ExCc?;_biH7OTuiG1Z7z-2#R1JQqH=ob}gaAZfyxrT) z&8MH`R8S*MZ2w5#)o~YzX~)dXmtGk2fpvwd=pJRbQ$6{c zH@qDgORy)Rs&;2jK6wEUTy7hcncR~fX2ddlLQlT>9H$ymR7hlp^yK%Q9`k|TyLx)^ zVb^Sm4XeS+GBl;Fn{aGSB(9$jfBVclRhPB9=nGBHFjo+79@Ba`{L{Z zVe1MBRPp!yU9q!pv><`~%@*89@nxj;c|l(?H12+a-u()$Ac+cFu>XRde81h~DlA(_ z{c6X;{StCxI+u>^&2PR&^6EIDH(z_D%NP7fJS;EzKq8w-qtB)978R-nZ|KceTo5C0 zKgbU1$?rOGBfY&86%zAO+EQN-+lhkl8;yxji+n7ZLhq5;o-wqjfLKb$+TN+L_P{=hs%TH7*eI&6&dq1; zC3)eVy7acW`I|cxd{_c4NHqSP`tD}32m4}|2viOK=iL11VKE_^BTY7Wr`SDY%nMcgy`Fc03+jnz z35X*u&aS(l%7^ApR1iUu0W74sw=eo^s}|I-jR0#0^ik9A#wHi+UQ?9x|#r$dFGJX z;^_rKqC(4$4z3OCvq@1Q@z+n*o_w}&jblo+iz;eO-T!SdNX;9aWn6VfP2aNMwDuD7 zk9&PuwDL){3zj0`@9qF1gj$f`_R#MwVCa+n6LHuXwJrCT`Z3R+Ra%LWcy*t((0RbvA>Dx6kEkzyZ&)UGtX4k;MF(Y*|`0D-=} zoDu~B%k;)~Y6tvREGmN*B#PxQ?7-IUq*H49-S28~&DU!E>s=aX()ul|-2{n4r`A@y zKNeL`LQrALdIyw{UZPKzxMyHG=(~&=Cb$jM!o5<{{Jq{IXECdJ6GAOWaN7G5G5A2j zt7z}i?-g)SfhEYdavw~9;F9}t(Dy#=o!D}qr9cEDgAt6byzp-3KYH@Ne9PV09MT<@ z1c*U8v)s|ZeNh(~)h^_PDn2i5^#I|cLJOZEPibsQR7fnP>+|z|0Y0Kpp=v4J1GwdX zW5mGb*XM8DC%t;wU48k!e|PEc_T|&x14kS#2mPnM`}e;5mWM?(xUMhneO}U-lMBfH zq5JLN1Bs;%_vJr$P3UR@RTyDN;B|lhBYpW>OXc1|*ZRKvzU77c42H{rDx^F9yDz`s z<`{vNfcRoxep%1E5gnlFx}q;1wEzf;NNRT))O+^jzI@I5r46tS!;+%~364pQZi_FuL*H-}4_qtdfXPZ*6#EdfDoqi@h!g4DdxeTK1(e9XQwhI77pHpxBa z#KU21Hx?iQEl6+=RoZH!1gf&n_k@JFC`8r$d?R1HbvZ&OwrwKqq27_0H)Byg=_xqk zFlMx_lt5Lfc1hhPw04mgq+U7UXH`CwKozzuzXhBhT`_m z$~i9fP+ty8gnc(4PTi}%{=wK8GUhcERQQ{Xf)Ciw&%0x1|H}^C=RIMxJ#;icV*Y}i z%TbkxKn3+?eUO?r8WX{S1pCu^6RG_y5U7f_hhZPs<~)9M>oYI#UF`!29$o)ySo8@m zm1dzL&hXiwy^M0+3h9x1by94$!j*!Au`5mng7!jkjIpz-opqNPRO)lnhA zW0$XKK>sGY8u5VP7Q|ZQ{d~WlxEh68w*;wq3;R_-(0H}%hFE)GPvr4RRT!=0 zE}vmJkl^vrM+itrpbBdp04m3nD;{rsVe^;j{M_;G_deOW_7q7c$zW^kgD-_ostG0H zBM-EGvCmpdoHwe!^`rH#*mU25MXmJ@u8$CCLE_5s54JWRc-hinR2a$hbN|>naw}Cu zqB6EUAYLS<=TDV=l!-t!*!sZO7sIGLp%%<{_Va)8wcyK9B2cyD;ir8adV&(B6YJ#4 zIe+ja$2trNv>-9@FAqU$wi(ljM5uZtY(c{zaa0orUukXG)V6J_=1<x1%_a)j}=>4)#!(CWSIl}I_TrAA)$ zOzX_q>s-$mN-sg;o~;I2cbvZdUHTQOj$Sm-dgH(iZGy`|8;w4zf8V9tYnARy5JV#!Sde(>o2#L1SgJmdKo#!=aUWs-!4aq3VbX4+D8S&A!1jGT)`QB4aB%s=I)bnA#au~Ha zT1KpazSQ=;5g$Md-{Jqt?NKU6sCuDHkTb5`w&luuUTl5rU$lo0B`PF(&v?1@^Y6hP z#f2$F6{=os?fMw(wM@`vI!F9?U2EY&89(0hafSFL`o(>%PfrBmD|3NF4vGwXIqE>Ig3Riw`7F6^@lQF8e{h^oCI% zi6u|I+R82i9}Wr$RE5VC^pPa(TAcljwXHFa>Bu>h7DNJT-Fq-xyS%6Bo`b4UPi$yi z|B9XmX(5F>o_DqNt{ineS3B?A zKi2hZiO!bI( z7#kH_%OEjt{Db9^mxw?Gz0!IhwHp(`g2c2@{b3762~=&Qx3B(vUC({!tfsE#JM(T@ zS@-8bHZ1v|-+!P5h@~g4st4y+jtcj|+S{w@dfpc7&8#-^-=3HF{Tzvsk0=qS*4|$) zoskhmeHSbN0cE0i{AN0F1ekoqC#Wl|1>FBb0xd|~z0Irj>y|-O z#&X<(FqWXIG%^TaiS}61^~ZJfYfg7(0Q1+^$Nw~T20-UNz9-Vzl25a59bH}a_K!rR zmVg+sChUoIbZs zqi8jODm(^D?&<^Ew&RHn_4e6IyDxYj#+Dp<2@>v~Qdln)R(Z-?H11f8AN|MY5FtI%T<$dbU?Ih_aLFJ+2Ipl@J)W7Uof9T2B(7ZPY8AFXyI?VLg)N!k`9s7x)bg=zv-RK8ZJb_un0hPc~Y?b7x0|1ghxHeJlRlneKUe3q3dR`7YgOY)hXH`=AV$ z94$!DGX!5IPf)@>H}F2_DL_k~a}KTKNYMTLR{S|(CRFpuKjBy;?9|TT7qgy)<{vR{W_xTIlJbCrag@GVn${5%NOS$QMWZ{w7lUNd#Ju zsBXc=f}QD}w>$x*r+qD*kFNCYhqxdgXhCAyJ3IRtabgKBAW#*yY?}#tI}#n|>{3y? zm=~&W-)wu}+NEc7Eqwy|))Aj>=@Vso+Usj1B+wEN(3(LKOPf0~;KMMq^xWDN$R?)Hp_JJ1eefp#leOrRm zyoFIA!6T7AB^9atED)&Ty;h&GidKnW{zQ0}5Bszy3`d0)PHQjWp0B;f6O;%ERN08AUZ-9^19F=uforDLyn3B=}gOHC;`hiuaG81&#VZ3-3|dGlmuw61)d%udI#= zRakGHpvY)$TxeS!sr5PV(E1e;d}PpP(AEd#&s*3NQ8l!ZBf&>FjZkuz&#(ni#m95) z3s!5Cpey>8UhC6Ud`s^@a#VU(RkTW=1qr&2YU#a9t2IjC^C5iBUHz;GEkz=@!{U7) z!D&@tv|&_eK_W>ed0I-KeScjnxtP{HCZ0VJ0m{Z$}w4l~I5_FB*ieEcpUZ~>l zb#HEa(6K}+9GJH2zgn?aY; zUKJwk2KHFQt9015zfuifX;&!)SYW3+7Ap=4tg&CQyYfs|5X}sA~CV^w-_VKbAHz z?Q0<<{j_rrJ`oU=J^}(& zR9Bi)=!5qUwQxCn>{N$7EkzK}?omo`O?%Zw+rz7{ZK?^hAVIAeZ;xOczIlrOwOp2*;(vFCwQjQ~HE)IX0HS-*$>m>8mIzc~U$B|G59%e*tIhk)&VT3T zgyXu>y&xpef<&nt-Ukw>s^us7-+6{U(1JvDPfVcRvwxqF@8xFu8d{qp(XqvhaCWhv z96Cm!Dj1ctAVynIXRYG)*ZHUh_PxN*Y^8wolExJ?{j6L#zhsS8UGPUcj}(1izQezA zNqHt68x>lRsQvbWe6^c<%eyEMsA?QBBY&YdFAky7cXj@&0qR%#x;d|g)*eW34>iS^ zjjWIC-)82Axmm;pX3Wg5adVJi`Krr-1lPKs|I8y?4%0k4zeQ)pdhhi7EjP#3(8`ej zk$q*lpREgAun!m$QH7(cCyb2>#$6=3U%sGXZYsFo+4q6oznhQDF)vhMe}iIh3(`oYzXxtSbCUl(IFDVr|9isvKnoI$;V1iFmT!bW)o~}6 ze@#xPjP1JTG>$$yue;gBu)ld9mOu*<$%SXv&A5mAjVBBfXhEXZnvoB8bN5vfs2bRR zX1=^QYn}Ch79^54X5`DF^Isu>s%)2;dAH8D#bHtYyiv(vU#n#&_+Ld2Z9fl)$0qw< zWJ~Vy8Sdu;pkg0-L@g6)L8A7d$>raM+j3xDsH)xe9~HkpPhih!{P1KyUjp_wAC=*{ zLJJZd?>VJneg-5^g=Yhy4?Gs(7>uJ*NT3CY=sANe2NI~7_VY{1GyGWsEl7-e=Mq0x zU>H^Zk7xNAl)J8()t*I;e!Z+M>j_HGbuCzsn0Dr@ih1skKvn;zXZd;cLLWH$0slf; zXF%ng;^$XrDH1_BjChiA_`IM@SZ`MAiNFFxsT@%PRnhh!XViCL-7Z|ui^~_kYk(Fc zrv2`ce3#;^*%X;sDk~5a`zkUQB)_| z23!uEYjopvr9P0rTCffbebRqw!5yBjy){nWhs&N@Q@h>G7Fs*#nc6+k*+S705HGz@ zdnGzsC=xYP?fi1>0-PnAQ#rvI4)A$%C zcpOwqK;YQrBC>xvi-eYmzt=Pb#U%#|`%o2sAD=CBpt*08nL9El86*-7s<|FO#kr67j^h6|3#Wj7Nn}wJG zOYomgv>?GNY5Or)2~#9c#W}^>qxR+=X@?u(vM-HJSGo}nqh%Mm(MSy~g+%RjqN5`m z5~#wyp!rK(HJ%-rE_+DU7-+mbGJVhWZoL6G5_y6WvVZt}5ch4^n?oYl&kIC+|3D%b zOK309QNsH$92Lf1J8$Q7zhmF69GEW>9aDBmKeJVA)deI_#d~uQ6-C6G?B{9;h#PlJ z$K|ng;xI1*s*Zy`n2x>_2ysC^x<~Ahw%#umbNZg?Kit}hn3IGfNEj6oja&ClwPmXb zRB_Lb69aqhm7aR8)MBk`&veT7B;B}i-}K6ZW3`JGB+M)h-S8qdWK_I#ZI?{$%Q&_tgZ|$i)(l`IMNp%GTk3JvT6V}b} zQDN<(ibp$Ly;4e`e7kdOFYTO?G)y(IAAqe2V&Py&ySHXbJEKb>DeUZ|?>iRP4j z(!0k?jdp)>Oxk_arqnJH*=~EM`<@u&d&-V4r*t_2ZT9@sU#OxJ>doT{TrfEc)Zm-G|y zwICobRGEc4r%U2%L4c)u+nv*XT?+zos*VZ?KH6o^7G_*5)o!37AKELe4^s0MUaKL& z>3|R*La2%fJqA0m{Ual_Ue|ID*Y@YWpx=AKXjE!Jf=BJrsw5>MP!(&J)Upp^Peh{j zmp#)Lifg5K9~wKVa4(?T{YJmkyJ)tr#icvUPIc8D{$6wPa!LrH79<+0E>GjD_F!J9 z>Q66E<7@DsrDOVKsjj<&IaNo6M8}zzrn>UYMhH-K?LRAxuXfY%(8Z~)YBPNDMX9d& zlkGaY+~&5f(1JwmiVIU+B`Ayv2~;&ceL)&u8EB9q*|#C1<-A{;^ttaydT`0bY2zd~ zMmb0H>wd5xkqk5G@aP&jp| zKnoJwuYz(&P;Nihyihgp=!~@Yox-g0wj9&GcX_I-uMfO+dAj*<>3!^5%jB}Rf5OoR z3Em5yJ3rQUF)vi%NEG^*cKOBWn2)+h>KCWO-`6`=%6G zVxuczsKv(jOgh4?l8)^ZmIEzF%o}rYI&6P9Lw1GGpvwcFV2wDis{nF+SG;neiZPD$h5<)bpZM>XD_ znjX1A)@n0zzn;!(xisuuo}dKH*?;LpehlyU{b}hTm$rTA(asar2YXiw5*_ECmiC8c9;zS8l@zqNOfj#5Tr>1@Twp%bL2SsGv1V;k{M8}BJ(sw=p?GYtV zWsW^9ow_*?)`6{E=zYmPr>A$_ThSAvK9FdvI6WQh?s#(cT(i7|M>SO8s3cPRNd#Ju z;A3Lk2NJ02*!+U@xL+4~qOnmyopkh_mM(j3Q%a6Rvf0%1eb0dp%AdEe5=@0a0;Cw9&6?piWRV?v#tuv(^-jYK954 z49>qeUHNlSVNN!4_YwL)qU*Mc%STS@1M@-^wygJIiGiQaNC)qb5@r)FOk0aKrLK_Z z`l?B5v)`?*P=)Q}qoPDOUh%l1V=#{^dPQalDg$pJfhrvHMQT5}J>Y171Rn=WK8$Ta zAW((p^Pvy4Ai-%Zlf*-x)<=<06<(KkAC^E1=3BbPAvJH|IYZ;c+3j;fn2%7T_LB&n z$4k#LkjR=nZQ5q81Rm+}oRK5coJ8vhuoQ{-*p7K|T2&Zf=mRZC)D~WwzW&+5FOdkP zdt_iK652MQ4<^)t1gG`;jT5S3qSO<8R58`O_bv>581Y22I)Ww0ms&RN0|{<_ucEa2 z_T?Zyp${fh#W@AF8${(TK;XP_Wgkdrn`g^^RM8Uy3;9q2`*i4|NN9hZ_d+A|!I-fn zM+^B-qO^ZFM^slppsM@d=BJacjE$nf`lYxoF8u=Bw~fnRqT=6%drN`PwoxEL;4jPR zSF}DSMGTjme_!h@1){{Ax|(3xtBQAoy$`%sTqHcrPND?Us=_l4 z2HHemDG*9m6HKcr80P~YXekm(hdz+tv{%t+7jF+dW)ule2T>uxX;tAohhbEK1qhn? zudeh)2vFe+hL&(2wAaF0(B0ir{HlMvKL#al6JSAtf9Dsh4Hzdth5LLVDi}X7Uw+Tl zuYCuIj6PZ?sN%O<^?MH(9s(0g#@Qn#WfNy zd0+vedd*@cw8sT2Qx?}z=rZMHS9~8W2ssFUD`Nef;BRH~GF8ruj^kzYhtm zQEPD}=d`XrS|)g{U!K2!Eu8lG67AFM#K?cs)OiP)(76UVt#c51AD-yGI?4Yq@oy6E zH5)R1e#)xuHG8(dr|jE40t*lwKOLJZ&46yEnH{pg=c{LD>_g9@d{m4W`qylH>JXn7 z=Bs0SKrqxq3la%L$l2=_5~zwsMHtntI}^6vA>Z1!ANS?c{P}N4pbBdwB+!CHvh0D3 z?~9j9ZXUbE&NRdp^XLYj<{IJaod}W4%=lTeCFpFKpZ3@^m9NyVd^yy@EvQ8D*vyQd zG(~)1UZ~paqKuzYm5J_~x6R+#`weU9K4ZIlfS$^*s#FfcA!(ay36bdNdVfBX-VpOX zqC}wj^bYy7w}BuRyip6LKg{l<=ck-kZRFzYb$a4z^ZiM0b~8QU^*#h3B3V5z<0m|9 zF}Gcp@$(^@rW(;`C38Wfm#77aT5^5H&!)T&6C+SHw7No~w&Oy#&AG(Ga8llL{wp)c6x!D35;a5-b*rme#))J zM+wa-B+!C{&SqC`b0kp3-|N09;fSYjEI}f>=8BA;D0?3!Mg%Gt$3&|H?g!Z)zn}Hd zb9tLD^tX_}eiaahU6<`h?*#a$92WN71XcTAn~kM63d+O)?1Raif6Zs#Sl%CP_C}mg zUBS^3iQ2Ml@~8eYT30}zs?^)r2mKFwI}*v>!}2F56nvBjRN?WFa<}>0Kh5l&6&XL< zv~_aG%8Z}5a~j8(kf`nbV3zDCXA{}f2eSq}uZ0N`s2T>uBpsIKdXT%Bhc4)QigjE^8KT%n7qQa6RQ9F5cww~Tj2%;(x zsHz?FK(;+S;q`=%3N5vr`m+{2MIL%oNYs}0XZ(!b`{06?qXHH7P!{V(b@gg*#?NSN zUdyk|&ZMWhHht8OGJYB!_#lk-bLer{{(OWBdZKeeEeIAQa2(T!T;ByEP*p~ipan+G z?E2pJ`L#MRTn;1x71oFn^p^;zA2a;>89y_xtgDibfOvX-_7**_4{EnWB%m@MUYJdy zr~Lt8qe6?h|N3k^J)Pc!sDLneBU?^S#seRvs8Ch=^Gz8)S1%KK=Y}o%8+T6gT_e6H zvvC4ddI!l96cKN<*S2J40=DR{)H#j5Mayy~&=L^t_wHpM`b&7W=y}z2NF6DtoIQo+|0991-0%15?4)~QlXC-Kdv9kJEX5IbZBCR&9g{#}XuThF~96lt7iv%I67jLA8tHlFs)!^r(=~ zxn{kOXjG`ez1an1|4^H|nT9wooq>qc)z{~IwB%XKSjB0cx0KU5ryHk3A80{BXF%OJ zfhwH=Ga#t+G*Y{{SlOa;W^x*RS4V|}&gvQXAk+kTp^En?p6#(rpaqGBn?-cv1gdn_ z+cKduow9|`IP~6v&SzRC(1JwiN|-CmaLJKCmCoH*_Mx-FT8o>7meZwukbTe=?t?mS zttH$HxZa0hITPpu^VRuf%LH1GDDAcEgEl%wxfyM3ByQGQPV0P~-iH80;9jKjK(Z>j zM_C_e2?#e+W!VQ3Iy2~<_Lxz4$2^Kvt`avEz|;?bxA z3lKW@tB=ZIVJ|_I&eB{aa39p!ZCRzW-UbAfp8A!WtJGTDOsAaIxlIFtBBR=MGpH5` zoijBctPdnmRqBcDl0)x9Lg#)BeAuWkFH~)$@46YdIWIoep7g0d+ffbc&;?}w$T@?K zeMs=Joo5>_M}>KzN@pi66WF#oGdHV(-UDHUy#xvN&9j1+ePCXw;_rEmUr!iuBtF!F z1eQ-Ksfy5g(^-KdKHR*{Y{7i1`!3d^&JbIqB_53`$k)w6Ya?;9)B30!7Ph(0VaqDq zyFwp210t(*{zOjmIL7Z!lzpHjAl#gg5dtl4uEC-E(0M1B(76pGJ|JFH;dpFIZlwG& z?&=c-Bsi_#hjoQ{p^DS1zhCHy?Ihc@i`|G z^q<~=Cr=IR`!7wByzi%?L7|zzf`qOoy>S9ny7qEF*r;?xV773Xw5E04-+-`Dp#=%75fV}X)7pbih^j=OO4k$j1gUwGV-&Ao%@$poeCSaj!6PcKQ|*0N2gP!r z3TxVi<33E2N?Y&#{y%MARF3+2hf8|NK4a^8Eb)Y4ACzx>)GM+-Q)||BKOdO8XZ^A> zVo#CLf<(y&h$()z`EWyON`Y_FCUI=-U&esF0xjyuR!qY0YW^RWyp$Z+|OF zBpvm6o68lJ8MV7tVNHiV(1HZ*n-x(Zfhz2w)`t;KbcRgv@~Y+BQd|yRkKDEzwUZv< z!l=0K>Yl@WjMs{1V(^Gh*8{@)KnoJw-*j)bKB5GwxF__>dS73z2k){-p{pX@F<~u%=++AVSnYlR!fdK z`KXAJ(MKaef=7%}zbX-^!U(MoQu9W~D2SKGN8MM378Me7-WB!|>!4VUKt(mJ#}XS( zK&SjPt7tn;2a`}se$ezg7-oA!iZ zA847LKh@fN;AN-6oIJx(fe$36pZmwwky|NUNr39^_deOW_LP^}QBg#4&)5f+U2lvChpm4pmoRT>#b$vRnLH`-8MFJ_aU{bt%k&shoANlRuibg zmi2_;sHR-;c*R&@n!BL^5O<+xjL}+OfH&1^Ae76~?U2SJn zMO)BtRENF2%Gd6eYwvG0N4{ojI@%t#9B4seaP9BHHg|#1H4d~bs<1EkQrM`r9QAx_ z$`gaq8xDA`b^AA6n)VxQSx-=c?kzp}YAd@;die3bTHBhnucSw=+t50w^>WJ}Ybk%; zOf&F-`HooQYeBRuXCi?}rcZgcb@iGJ5+Twau>@Fx~1IZX;peMHTJ^Z9V(I z7QFk!RX$&A8%r4BsN~SjNL+c-N+=VlqeP%uv!dNjoV_O!umr^F-$QFMBAaQBdSXNC z`d4I+YJ6=&>xT<;tbHNuS4N2>XHk*{gHA9A4s4I_hw7D57Wf99r5FJ zt%VEqn9;6jD>j1g9@VxW5%vXAM+sD2dC!ZjkNt~`k2ZHtpaqF&zhYO-j`8bT!-lW3 ztgo_fW!tpWmffghlzHLZeUJ0vUT?^8*IL%qX852KRjnZV&vXOw+>kY{YqRAf#*JW zjuIYGot)j+^AbIB772~EtuGQ`?2{_b0NNHLs>>1H&1~O$8`?cfzE7=JDbYJ#w&a)> zs`&e$ zPi&2tE_8KNsKP!bWtLC6cK*x0t%shJyC3tr_iH_Il|E~h`5F9KhQoODXnS&$c}gTG|oP3^c6=zVdDas?05Wx2`^{ zKyYA9ofk(+D0AU(8t?9q(3ZjeDOlPBUvrl3Kr$E-fvSC%iu1;?9V|dp-|@n7Pz%4us&q!6vJbQ%K`mPk+T8m<0#($4^`He^XdKmG zUC&Dz4?kVkt2?@;st4Cx{a;8l~FRyA-qM{GlFP*Lotb05Na;gZ1`xH093( z{inA@AQFs_uGQ+L>vM*hbj?xsBiY*f>w1l|^u$&5_*r;h0fNqI>;Afg^45)>T4G+H zns?L6diy#-^&C}T0U}xb`+EC&hX^D8Lm#!bSJm~ZI4ED+MWN(K&=py^1<6lXSAmM! z#@AusgZECgAkqDi2Yiq5fc1eypn~@I1SO~^f(40bqxvh_90^pF`jvBJnv<`1yslUD zbbj6L$Fvu;&x6}>$^M}hB+fhck6~~3KDfUs5vtmITHAvyIqZW-Ov|4N_m9Ab?zN~Y z?H`5^`p@NftgiPj-umaubSF*Dsg_KC#Mg+;-VkIGWw(rmm?H)3nEw%6ILVtsxc>loX1E8X_ntJ@)C$J!K`v!mh4ev>-9>jF;=ByEx>G&PAc6Le;Bvy$9r@GE7X~c5VI0 zbM)G>J!&V(y87rX^?S!yBDA!LB`N@f;sbGF1>MM8+IO0e{JB2zybtcK?c`ROwdN}en4KR>VCeF zFWws7vaoU{`Y&6Yo5SVZkM2o}^VWAH&9pvmvzfaOxoe;nBnDq!lu!6s?5!}&3so3l z*@u=8iFq>?<&&N&_#jlGQUX=cl3QZj?8W)=6Xh-F+QP;DHwGM)UhkBnQcFM(t>1gX zXjE!p!l#E+y8%J;soPYQT-$>QRbk8es3<{oHFHtE{r|`>oTgE$HC}hWc8Zm}R1PG@ z9lJPxb1$hw@1sPZ3TxdHl%V4|^>DrZ;Q2){t@Y*!>m!@ln_qXSyj|aMLT|qIO82IH zajr>+i4V;SiKSzE^P8`Uy{FHSC}IBAldl*nbv15TPyW>IlJ-$if_wlm?h`%vAYmTu%|G$wXgMG+R4rZ6oA*wQ5yK%~o|jdB z?~LX1zC60#GX>g%)VziL3RS$H`#vUOk~4u8BpL@b z^6vA&hjmaSP!%0ZybtYHNHkt(xHoGtY+z07qk|Xq_ zjeqaS@7t^p6`^5oM-}#b@53;GJ7=@@{ z1n7RbC-2zC&Cmond4dw*Sb~IU(kQWAY_>Oy3RT%cs@)ymji~L}=YLs>BSsh%T98;e zai0HGYc+wY;s2bQKRql~yJ$fI$H&kI5~x~w+uZ!konk)Fg2dog=jJo_DiDU-18cGW zf}VW8-8Q8Kkyv_iPk#59cWVz+^>_8;Cw@Feblo{8zxy1CxBvHZ@^f|W&mrxDNGyGA zPJaB6g_2V>hx;I^u-?&4_u`j=@Cq|$JiLNX9@=*(bkf5kNII5d>mNUrg%YFHp_e+}V zO6U5qVvdUb(=S=Ug2c4%_T|&x1LvYq0#(!Q>dW{2JG@~^E_kCkw!pIV;lBI_uZaqM zid7rj>TyI|6#r3nzfu?51`6(0w6PN#XV&dvX^ zz^Q25)vKj2Dn9p73liD2bMp^f74v}vs-_(?H(z>TjOboAC(kB`rQ@bK`O1%NN>oTp zTR0~lKQiV6qY6~TBaV^shsO^j=KW+&{?2#b?TCXaJlgr%B|l+LG?RPs!;JLfj%hvl zsdL~RdLI?`xZ#c7ylb2*E%dQ!A4u>yssdE4nO_8~=u z#PA6{`Ra3^gn!dH+}8csDNA4u>OYpVx*7#ma}DpXaM zJUQp&TJJo!A5dDaCV8bUO-t_TBd`F$ImKsNC=#mT?}IxNz8rxC^QAS)0>XtxS4CId zQR6k1xz*4gr*&_(;=qTN5b2;s7-53`Q=3yHT31Nat~A~^X)B08HRt5oeT!i9q5Pc> zupnXH_)hJB|AKS4D1j<7>Dx6k4G40<8~yqWEN0!eYOi-Y75Ek@%b7^Pf`obgtlF}p zzz3-#1gOkmXVkXb9|!_?qo~kw=+xSZ_isv62@-3*R_kB?Znc|$%1kaCn4>>eJ8Rs#)o!4|zQ9pYM6S0}X?0Xf zu-+&t9b*`jm~b0Kh2@~MuQ#MsPJg8*dKD6s_GQ{A;Z?<`3_Gws(1Q8) zonH1)CQwB=`DiJ7-KZRBL4wjH!e~_9f-1@>=vU5(`0y4aC>`{xO2VtC7JOO@L4Rp% zzhO?c-&pzmX>I1E*#%F^Ebq}-hlGInhyvn>i?i!4D9jOGA`GZX^As79(?(IjtV2lD zMw)E$PT<2>pg^F?z^YwV%LM(WdjJPFvZaGk@?d>6S{ZEGU*Q+Ip5Qf{)Ph7d<7fVR z%H3~N4!3$PkNUdyu00QeI`nc%NXfO$17glq*$>Wvs2mm&22|Lx-iKiye6FrN(X?i@ zui}g6yWR($-6JuuY*xNr?;v<5>O;$cs--v0%KP2@2M^e&(9%C+R(`Zz0}d%FBnBqU z%Fop6Pw%7@6{z}$&&qF&-Y@C8W|qHW-v8rS{!Tj9p?6`+ffgj@-7%|tFQY`D3TxW? zpak97rr84ZStHLVr%x?;4!Y7vZGE5xiP9|1q~?wG56CM}QG3LFaLLtz#I&DZ5F!+D|~LiScwQ!gS(UA zsb0f{L|`cpN_&Fc1m!>)Ys3?V3A7-QB4%^ONnX#$P?{uLrB|Odt`co_M5vEo#G(59#e12@{$wMMV+uM&mBTi$vg0 z#1(|ro4M}!@G8{^Mtc-kf_$MCybGeJu6}#Jzf#PeUE!}%1KJ}@paqHAvX$X=E#=Rf z)Rm4)II3|@`n^b5u0GTf5NF+A9uvz1sMtq*+(nB)g3=|z`%nuLK3%-yMaAGPtgC<^ z+F#v^xPnj>wvz`8`@njyO?<##pJO|Df)Zg=NF*cwP;q@8F(TQ zm+p}sp!Z~OpXabh%^O7pL~xASakq4W-VYM76047Ej~Ot2G;ZBH4Mqkd82vH~EkK|@ za6wTO3Ec;4f7vsA0q+!fAAto*8`J_gk^MvSH4Ar6m$*Ac1DEfTej<9OD6l-RYkHa9 zlL3F=g31w;5QvV0KA4^vzb6BEp{l#s9$a$zPj&U|$aL95@>Gx0x__{5pN6m`DzzZN z=}hl_DPetJUV#dtRe=A7B}bxr+nv+?_&qYn3su-Qp^t$vA4zou+8V8eu4zL(RLd6< zXhDM0{(KG)+CLyKRPpyZR$9OaM#PP~rsHy1RkLHtF6n2sa!*{Td;!4#QBqfGL85lv z&gp)~7M|CZh(Hx6Gui8-c2UJ@-maJvT;})AvmO;Z_9h9T<-oc^l{saf^zQL70{bZT zUEZ6uzu97Nd(i)|CnCY)acTc35vamir`&D+_7ANl)~>~lM?aK~nY=0Ofdr3_qc1JA zhbfi=Rk&|*G`h)tu15ndIi`baHHT1}H}^=-b59gGeZ0HN)gW5aR&3~#{)Ytn(0q9u z)3hbr2kjq_7pI50HEVHHvSP}gw{W~df+N(uS+w#Q5~#w_)oP6rXbA}N@u5B8-Ka`J zRoJIPA8278O4Od(BYpF4vEGgZs&G{DJ}9!VJ+KY3`}Rohh+fyC1qnKtPd^d8u0;Y> z*AN1P{P&HOv zp6dPYY62|*vBT_i!cU>Mdml(F1r>iE?1M%SdRqi6NMyUtPMNAUK0##V+Az@zncB=RE8=tEqP|kGon6Jc{ZagwO|CiiFbD1kqar`yagfg$^z4Oue*C-yEl5OrA~~b`C6E`Yu-1K4mOu*<(Y{+EP=$Tk`Y`sB zdkO4!jkl+!y5>Fl6D@rb74A_;44gAHT^n8V9`g!Rn@vsM7hUr{0ZT{UY3VYz<~`YDfCPPsTe%dL6evH1mQe9e2@pV42(#P5{% zbL#^wNDMByIBlF%I1U<)3JFwIM}-z7x^BC;e5@58P(oB;jZpZ0qu*^q{mk3$;#AkX zN8fF^EeH5OVqD)v>D$pY?=de_4S(-NX;*a3d$e?Y)uc7I<~`ZLXdkLy= zFJM47DhI^dcRkelJhCVFDM7I1#e(am~Lc^z-)*ci3z`W20r%QEZqbd@r;_qMoEd0jANLX|( z3Kqk&7RPQC(wfVVof`-YjY$})%|bt z(@9stn}CcNZb8hK`<0IhTGsnuC}?veIIZ>O3F`xU397ii1uf_>>51Ng`BGZj--;>! zc5g>QRoJIp_Kv{c%HSJ&{C%*0ILtHy3%w7eKA0{M6j_;273ZWYq57yOA%wSJzLbv7 zLL1}-s_gTHa!^E4SAhix{%vQ;hm9&AP(^7i6A5kp;)C<@79elXB7v&tiiL&=eAjW>?=H!Axyt=|fa=Y+zs+4fXlw@y68wf>iLgG92vn3) zP;%!-e5eHpPV4tRDDOipfePE-BV2NhN?QsEPV4soaP8td!tgFHzWo~#Xu-FCH}XDp zb4I3j8d1e*EnmS0Sdid%(o5|@D4qKN5vYiW`(Tx~V7~Nbf80kvpo-EyCnyND2U?KW z=x=3wUZCRlPW<9`Lh0u}BB?1b`nZH^Yqm-ffFk6@2N74FTU53~TmBSwV} zAW#*IF@X=XAW>TXoJ&qyI9{QO)4pY`l;upI1qoblodH|B{3jq##qZXic)0$Ccigcj zHIMkhhVhK*>O-qm9(|~$`PUq}`V@bkBuJnoM#!%Le}B|b&Huf2*G~3tS^J^}(P zF+zOo{cB|eZq3$9+K-;0k`3uY|;`qt-JA8O&eG|ehq6H9y` zftDB{KBo8Gdhf?aU1)tEp=nXcN?qau37Wmtt`o+V7~y>!sy>j=G^=z4AMe8xp{2cM zn0_xlsO00duGGSLX_{5K#*p|x0xdB@d{7IH*EUB&)2!0u5+lS%z3ZgT&d)u4D#;Q5Abf zm8K=CFC2ALXZLkdS7^~R`@ogck^~5&D$Wa4nid~VEgswX#gECjixy3@4_wbJNq{h_ z;=E9$Y4Ne_!`pV=+AHHOS~P8I6jq!|5+IDKY+k5xY4LFy?Sp-8+|||VibS{$9uNiz zRB2j#JbK-X@eACzixy4Was(@x0bx{S^FozNi;u0B-g@Xic9n6L=7_iJ^A(9;<+KC{ zg9NHHEk5WlZs?yK+jY$_wuGwoT4H?MFB4o^Bs6VnA^D}b;weV|3tTn=0_ zE=j5gRB2j#obrp$H~;(5?X3^AXqtWCs&+|IMW9O4;$z_!Q=12!^te6WMT@4{2drf=g2M)Th`Q4iv_r`qa`Y+)Mc|dp{ z92KfGEzuse?!4yb-}|4-*#}xQ&2@z<@+AoniK;j+RB2j#+;GX6%{A+OV|}1S)9eG+ z2}}|o5>;_tsM56f`0|7=HrKSa;x;j8(KP$O^$wE+h(uMK7pgQZKJK}--aJ0t%lbfz zrr8Is$e1KRB&y=PP^D?{!TB@AW-RbRcy^kAwrALNR)jbp=nWJgc6NL)waY4q5n6z;ohHoM(PS<*EH9a zu2NYdlF-tw1^r%X`eVnOvHaimI^VX3S~xFFvr1Q96dyn&Xo(Txqib!p{F>drVSON> zX;$er2)L5}Ia}u0JV0fJo31BgDs-w;tWR@5;lh48y&612n!@iBYl(akrV47T@a^A3!8i!4f0H$0w;A!?YYgD9tK; zb|*f7NYD}^#K*7iKe~Cx^-@s=zUTa?dnzT6*nzlZIbxnZ? ze9*dPKec(E(NdiQoDke~+Y4HJjltGK8*+;m>DG-UO zI4@LbT6}CZm@R*>L&g%cXqtV5tDgdqsEYGKm8Qi>}?`Z z73YO2O^c5|zyF4NFLGl$S~Sf*aMjo(0U}YAxH+32Ae*#E7yFBs6VR@V-V^j^djf z{G<|zvJWIQZB_6lPr(OTTqH?Vp=nX!h$>$6yuEFS5kk{Q zeW)AT35Jmq-c+Cwyxv~ZyNW=Srd>G>KV!T*M)A?W=EW9GyW=3PAzeYx@ye?-Ek5YT zIo=&>`KV@9Y|%9Ppd%`*Y+Xg5O4H(l&Hy^yc{?ASZC-5AH2a`416ZNEia?d7#Rr|q zbh>jNKFhFqu|?DDgU)bZ4e=@hRhkwbbVkzltO2&&;>yqI}lpEt+N@x{iC9Kue5ZI!V5}^61X>a!#Efp=nmp*>b&o-i`!X zVubkkE%~_F`9MO`tkM;Ir5s40B}Rx3;yQoed?2A|TMoB6u=qeiR|jTGj1V7m<<;q~ z)%eQGt~AVqrmYXRs;>A52(ZKm@j+LRo$i{GuORITz1D|Ivx=@J?OMO$0|~S!jfD8X zJqig;vx=^Y?V82n0|~Um2=PHz^yA$<0KTI4d1;zebaii6RTdvepe06#54tlk-rdXK zI}<)HO|y#bQrLB>#Rn2-i4o$1?#UeL?#b{S7N3`XB zR3(;nzTx_{RRpRuEjewo#etoF+WJ8211*~7a^QNoNm50iO4H(F?>j%=dBY>yTOVlA zH2c6+e3PV#K$WJ&$8YKROdGIP^D?fY2M-A?%ez;c?O9VO>-pS zYRy0xRdHUZ(zN)XC!?MEEEO%9wxtbLYX-uo%I1YCmlhxA(f;v~N937sf)*fx)u9t0 z3=*i)wD>rA>jOJy(Z0@YjuuUGIp{gJU*(#fv9t-JD$Wa4nie1Q#Jy9W(W6Dv(lgqt zYTIY@N*Gm1UZ|3^eE%GcyL)aa?;7X|-9;i?(;W!vSM9t|rD@5D-hddd?@XXY)3&Z) zZF)Mowh5yu&I{M0*R=RJ_ToDZ?RD>dpheSCS1-^i;IGvs4TMpZCF?H7ZRM-@5M)qz(|mm@9E8&d-Yu$&8w8}h&A=*NG(SdLGR_XRW2?5{&~%e<&V2} zid1DSNQ`>EKIMr)S67t;s$5!pe0k~v%m1>iypx)s1&ITmtKa@j^-)Qn%B97}^BvnZ zpL6fl(%V!vFKYo}+LUMOSFhRN%27q2O4H)wiCe}t8y}H()zG48ZndsO1NAo!R3B9Y zsx&P=&O73$=9vq3wPOidG|fKl-fEzJ$LZ@`IjRU$X^AA7X4eV+{Y0A=TU5n98V^5R|HVFQ-LVS^w8RLe>1^qkqndm5 zN?jqLX;#r&n)M&8f5rJg0xdB@eEfRx*yj1}{X`@*&8lhnQ}xXUUUoi^Kue4eAA5}6 zwt3I@G|j5>&i!Nk$gR`|5@?AL;^W|xA6PzeJJ|=3&@`*)?ce&fr@Z9KfdpD& zg!uTk@6T9%wHr&2&@`(iU-5YT3!AGCB+wEg#K%W&xb@z#?!9m%G%c#f>Jy*Ub0Q?@ z&2Ddr5#Gn4>H`T)vueroN1z4~f0I0%GM73YO2 zO^XjYa(3#m7A=})AM29do-?3D)3!!e{~pdufH11Ed7;Xs z#Rr|qjQ8h0XhCAl3OK(4!X!wb%B95zoso_A=Wu92V(tCyGr$B0lOTaAmlhxJmUoh% z1&G15zk_pXAPf?y(zN)%Gi0)~^!!}Ytl~GT^n23V&7OrDw8V(A4ZrUx8Z7u5oI4pXxggi z>AU7sXmhkUe@H}pAmP%i;n4<=Xr0?~TMq6@e;Eix2v>({lg&D3=#oRAuvB zv!d0$mr+H~F|n<3X;%)smw^@}R{y?LaW4Z2RJpYHpkJRg_4jIY24M5D79g&?X=ST@ zFQbY;m8QkVpBiJE2f1@h2R)wc7VGst8nRT6}z#uFs$Ro}5#oMbqr#u(wyW z+V?W52vliWe9*5NoBBIQv}l@r&{=J(eJ`VmK$WJ&$C{aU+_5T|7wksbH30h)=`1skw+c#I;X`ibZBs9&cjt`Emcb}*}fJo31 zBgDsYdZspJ3;SHnAfahi4S#WT{foa*A3!8%i4o%CXez^0d9G%V&@`(C=I&WP{@}m4 zx&k6WONH`RR%c5qZo zt?!;YAC};J)ei;Y3T;RN#^Z)-5 z>sCmTN|$jdNs-;$oA3F4U6L%a%hb{`s>LLvFwsnNN-iZzat}i`t?Mk-+Gx%>gSFZ& zV-ah^pr6HBl4@h4|9OAjpV#@mzBA|SzsJMF>+yZRo}btGoXh82zTY_?Il88tw9WN{ z39h6Onz7G2oq}HO?^2n77MF|?m3JY739h6On&Cz`+Yct7#U-QN(l?R81Xt1s&2S^N z&0qprTrz4uwFMbWa3zh<40pz{8B9Q{tL*rB?Tr2s)G#4uHB{1wB%?e&584bSplv@s z=|%mBGZMltsc0S(nlT~%yVrvIn`$PY#kFL0Pud<#a3zh2(^B@ykNh3-!>~C0@fJQ%x=W~}~ z327IVG(t1JiPzQ9H|uY4n1B|StcBur2@_mNBQ(QpLHm0jCZNS7TeEn5#RON<2+eSN zVu1Y$ZGje-?3KmqL?*bBMrcNSW$C$VQNskZxa8<6Uhgu&l{7*#;wxm&T~iw-pv5Jl zMDeTo zQ*nC`VYre;XhysR8{_k!&0qprT=CXyD(+WA7_Oudnz8%4oq|cv==~rQ(Bf+Oc;BYt z@j-;)N*bXVa{S31o~$b-pv4s*T}{Q~oCrB;lS&$)8BhH2%;278`#VdY321SZUDdq_ zV~jCG7_Oudnh}q1L3|#x_i9W)i)-T6ZcW8;mk7g^G(t1_oLC*)eYf5ZG65~Fc+_sf zS;8113|G?{x~A8uUFyOhAiE zMv3D6AQN0kBQ(Q}aCTiW0WB^W?TYtq#F~|h8xVrxHKswHu;7S^y86|gj)D~!QeKxxfjaN)?C5_OGc!W#t2bq8tSN!yg z#$6`3l16Ao{N&EVvpy!E#T7rrOU@F;Fu|2HLNnqgkY4;;)ShvefEHK$G?LDPOmHQQ zD9NyQcT7N|AI0;z%dmvBi%J@y8SxWg&pktyC&CEs=8AZIEU#0WB`{Lwo*tkuY3IBQ&GBL!I~7xCR+_{rr6oM;Gq;LzA=xEw1Jp9*+Ez z@I4L@1}-7k1+7apr>WXIgn>)iVi&Y#44+!z4STu0C;i|Gv}DYyeJDD8Ei#BOa7kP2g4T>j zhn9Oi&KqDexB_k0)hG4Q!#m>pC?X78(pDw8pf%&d?|XU!t~kYJa0Oa21|3=-_3Mue zA`D#87Q3J|oPlD60dtr_uVuCec>BJ$*d){HwQS9sl5x3?KwftHMk@o`?i0U22YyP!3rE`B%lzvH<9WP5N0 zS~3Qm@o==cFSdCW!7gaccw^@&-ho%v+6=Bh+l-qYjvCKHMkYb7K~8JN!|`v(swX{W zuU@$VZMR3szMDm0e`P{5raiYR_rek5+w8k?_Q}utrpIw^0{mUynQDA zn^9_4^qf~V*bIDLLioaRr8Ob665+VbjYnT>$1Bq?Y+f|x7(E7|#pVBZZnXSR>{nR? zyP$PlJ^f{`Aot8LPnL=+(2_A|>D*}Te#poo*afW_YiE=PU+inoABHQ?lCggJ+^Dh> zGO`GEL2E|yzHYepI&6(*pSxO3OKVB?;@ zxBX~ocYjp&zP1Z3uF4-4M#ENOyvicj1+DAquocxor`zmxqTvd(WQ_P~Vf0EPGO`GE zL2JfK-&X}Y2D)Ey1zIwi-(DDPX+TC6!7gac@DHyDP8{699_L(vmW;ALER1R%K}HtA zE@;i@R5v6z<>-MngDcQ>UERDe>TwS;vWOAng4T>3$Mp=tPwjQ0;R>|v$2kk58|ES- zizp)(v}RQF-`M!k_7`YBoJ%TjNk-|Om_@J)S~J}F!{^j0eTLRIa2E z=^1DXG%~ilg5UME&OjxN(2UQ9ZEjq9xn3tq4* zaRpj3*8h89wBQqD5aGimZLtelGk*M2b?}p((`^P5+n{ob|JnvlH`d#Eu)_}mt|pf%&m6{{N08l=~WyeG2DY73~BgW`V{}+ zTnb^g8WEtCxT$?zux4q4?T4Hp<=K*?Lt8pNpD%t5_q9YMPosorAQ!au;}2nVaLwnw zZgb~qL&R4cQ=UZz5k9xoKrU#_So~d8u>NJe|KJL=^h2(LM%N>Q2p=wKi(Sx~(PKhI zF#kQhkKzinWXSbg(_CZ_;lm|uu?t!=MqXSVbUQ|mbFM(!jQD!Di;oNm5qtd4-QjVC38z66&(4M`t%#(5Xx|qhL{dp1(2vp#CX#g( z(+lR|?+siZl8mI{@~{@&bMuy(7hKud4^O;htfy%u9T5k6ef z7Q3J|W4k@4H_m-g-$BO}Xq$0*b>5$d3?h8EYzDb}r!}MewbhMZY^k#S;0m{eg9slk+ZMZ= z){L8HUl5#g)CPNwLR)Q!b-&3se}#RQ2)~42m(!XNJuoSF=G;Y^!4)F>)5qlpyp9Ya z;=iNUbZLuS(3Vx^0VHPHV>VZ`B3wz1!Jd zGZ?NgQF5FU;g=BXa#}OuQ78VVBOD*KJf|~0w|!Ee6(JQSpg|PJE3QDxl87$8x0c5% zuA~v#j}CW@d?BVhSv(N7k}?;zE>#*~D?}KlmDp)$op<%Xd*kcBc%+Wc267&>8BSZ* zqetgk4#x38L~`b|1iPHpew^L$8t@a|5sJ$%CzCZ0SYf7w=K5MfFP zb~&vXkK9-AUZ^=pGq^&8|MOGwmkq-GAQ8q8!7gac_|KJnyqiazU^BP^ZP(SR5&7X` zkwJuk%eKWXr#0hvxh%kl;b~&vXyFOV}e!?C0ZCW$CnCl2|9#U2TY@l0s-dT4ykkT*JlmSIHba zt%;=KmIO;BpCcn)FkFedwrpkLc-t-$I>L#+HDN1EI1PfX^tsZCNcvZ7U!r1HQb{4u zkJ1b#l64i+$#!a!kyKnB)dWY$91#G0l5PDUnoMo^96=$e^B6MUIJN zziO4ymXLMA1a!%|vKT6oE}DYQsEe|Fpy+3tob&~^#Gx+na_JIF8@gikJL&G_Wd6^#eH ztl!;n1={wb-GZ>kQ^?37^5lZnjC0=FHOO@tsr_&+sla9XG3(aw-m8$2Mfl``){LL* zIUoq;l-mrhK--K5W`zR|MMfq;F5hX**yG1xLDQUGnn4w~?7EtEeOU9}7PpsV5qWY! zYexH7mBEhx-Xz!UhAYsvA1BWU@2o*a7U7c%S~GUpdPQ(lmq%>|SDC|Ih{jCXE5+Ez&~?e+_VMaA|b zUXq<()GIxFo=u>)Afz9nmC)tV(Ha%ok7MsiGVpmeA(fB_XeG|w@nr9$?f0|C2P$?g zE?pfSd%cd2_`D6_msE%_PAf6yxd+PseXKsS^#AmFc;HK0bli2?F5%YY;q%L|?`9Dp zxuEURn&-}+oZJ5~I}fkn3bb94V^@Upnvju27mlCD6LL0#E6_IM zwAEp!kCBl{kSp)BX1sLy$=;KGnPyN0E}OAWbJ+9^GBOEr<(<}yx3~Veq8ZJILSjs7Lg|xv}UYdS?g{6 z+fU^D;d2FAGR$djgb$BE1`!4>+ZMZ=)(n5#RbJPB+-5V-R%^mv-yC)shYTVN6YPT4 zjMEqY#=GA8*k*7A+V&N>2x#0>C ze#g7QT{~mE$|BeWtr>s(@oaDDbp3q^SD@{>`rz(xi-(LX!m!I}&3Jm?5U*k0Ks)Zj zWh+GZ``;Iyei1UV2zEhh#zmWZcsmRkZZo(7E&cFczdy{~gp5prTp%>#umKx#H{YV) zpK}G;W<>R2<3q^EB*^7Etr;6nSdR~s?vTqS8F2d^OM8s2oX}Ywxk5zAdDjqO3=!;t)(pJ{(0k63qjt^LsmFYB&7en=8yW0qK!oqK z-I_9lh+F>os7Si#5ZK5-^jGTd(b+>bNbr*(UrJ7h`_o_uYi?G9I%*lv1w_2W1`i13ka z+hUi~nsIbEJ~(~I3eDgO5%~qzg^fQ)1`)m?f?d#>adEGa!5?1RHIROA1=_CB9yf-A zHf?fGKZx+*vTd=;Y0c;}w>%iLyZ(02aD|9){>`Dk7#T$POt1@DGq%6ASFqO)?zhga zEvdj|`>|?XIAt6%i16XEZL!N~&Di$YrpCUrEA6^6Tp_}L;?A(c;m9B&p3_3pr7doBPAgyCZ`LA1-N&UC^4b_1V6SFU8Lk?KXF9wILo_6fW3` zC-g-4+*Y1k(3&xJ-2Th1jh`vn4Ck^LM94G1;&D!d&uy^_S~IpE*W9?<8hg!P=KX7S z^y5AH`;zAO7DT82L4SXT&vj%-Bc#Fvv=Tffq9W;{Th1-bDIv=9P2UnmaquyT--FXl)vIurT zYsRmR$$9(#;t;#dxdJU29qSiFBL*QOi(nVDW?Ztk!fQ9Zz0KeXv}E{yTo9dg3^K9^ zc0p@K_iwAb3qR6(POd;pM)UFo(N9lAMi#*?XwCR|hbi9uzt_JRVFHKS*zI&VXT{w)Akplv_gek|IUECPEw6Phu2SaYs?t^QsV`>Ryeubmrhe&Boi zJQ<&BMj9a%CZLu0UGF+?!5P1^=kxH$xzY3SJJcluT3q3=@!u$p$9vB+337qZemwO< zwRg<^)9ksHE6|eBap>G=)m6yIBG?738AqNt-djFtmCfJ^v}E|B=0+#_$jBnt1+5vM zZ?5p(+d+>Hu0Tsh*~Gcgg|m>6MX(E6Ge#be^KKol$2nJ^C1b?gxlxDt$jBnt1+5wL z|Jchbtkv;~E6|dWe=h!;(R+}QMX(E6GX~7~Pwuzfbll|%v}Ba-iCF}@pf%(EZFOGn z2P==0vjO&3smv?H>u0$BP9L93o-suDTwwxQiEkHun>(eS{kuEA^7FY-*{<3yw7C2r z{(I*=aJ@@}flHQ(UC`Q(=IeWU<5t+eAB?Y%wXN1fcwc-Bc0mRa@w3h%!7gac7&LB( zcm3J+?;w4yKubTGYvx7+dLx4f1DCYLE@;hIz4mNx#2-3%@#gTk0xcO0W9LRM^g{*_ z1}vEg^ zW`g&`hC>%bkIdKKU*U7fGlqy{ZjrQ-IeL0ggkI;6Z#pTE6+QGlZ zeH0P)8V&@zptT?UUa$5hEz$Sla0S{fVSLT7;9_JDVc?Rs8ps8$8O`geyoUXn?KbBM zwCzWH?K65ZGKes6Nn3Iy0~fSr>~%wh_orv{y*ONfmW=feEQprZAcF`4m$bz$XwA54 z-4O4&*9X{RkSoxV5l)M*MXyH&5e6=4i(Sx~al_?3z1QE@@ro`d9`ay&bm$bz$Xw5j$R0O}S)9<6W0xcQ&{bxtT z-`o-5!zFF83tBTCykkhPwD&-JAH@}D$yk5E>}XnF^n(Z=E@_Kh(3){fpPs>Q_tEd8 zxB_k0)f2O$&HEsO2p=wKtASk5n$hiV8ydf^)bFFX0xcP(dm<4&T+$Z1pfzLRwz}Z$ z)5pHpdf%OR->fLtRqxfYhe}@jGwl>YDoj8t@#e<=G=BTt`7$P!Jj>wc7vUYVqh7b- zelUw*7qs@{^k;hqBRdbX8C-$3OL*GssG$xSS;RzgL2JhPLN2&#*daE9E6|crxyS72 z%FB?EMX(E6GycA%B3QefJx3X?KugAmmRZs9qmhwCunSr^Aqg0xcQMwKJoiC;Jr<1}tdv3|?zQK-( zK3AY6W8S3e>~mky#t>oPlD60dtr>E+{jZum4$59+lKSD@{>nlO{Dud;}VQ9XZ1FyH|Dj4WPj+LlzHZ9nQJM;|2j=UIedm(!Y2*SjJJ&#=$P z3|zKCME%bvN5?168L|j=L2JgXUsnZVzH#pabZtomF6l>Q-^r1mJTJ*2*afW_3!AHh z^_RJK(7Cpx0+(d8>^?c_pFH=;BG?738863kzI?s6zU!VV(2^nhZgEe{BG?7384vec z+4$rfeMW};)%N4_n&eq8KDXQ7q!D(F5>e^25~p>o3!dKN345LBA2Tg^HVrMVmcyq- zjmh)GEP`Fo+K)Nirv&f++CH;1T!EI1u=}*AGI=hVMX(E6GvX(yfqV99xB_i^yQwx> znmpglA`H8n){N!tDuU~$y5oZ@MC6-lqmIdQ>MVj?(3)}1z#&2V+w?f+3bgd2er9d- zeDb_Ki(nVDW_&cFXYj-(`;5$R1zIvH%WI=QC*K=n5$uB2jGl8hG;W@x<1SaAZAQtS zm`RWe`>tlhS7ZUcW5NC^m9jIYCEpd|bG!ZJJC-(tRG5HPV&xlK8XtY>e0!cM+rBpW zZWCHuVMT4!H~Bt_2p=w4Dt19@Ki;h@3o2%vY%{n5ZI`6JHd=lgzVjl&hs(CbE~hnP z`SxCL#>D=5zU2xLWgpZ=U6StyiSP{(?1I*eaQBhH<_~w(b>-TU3S82UmR+Vr44+qD;cgpOGfFQNQ4iUw8buH&A9*Y=Ejpg z((mYbPb@q4%H+2u_+0Yh?;ukMyCh6Ft;EiI)dhQPr@u9jvlo8p0xd2-KG*&w`8@*> zK3uZA?1I*Qe7~VOD0^MMqvr~=WXQR_fAYHwB7C@{Ep|a`#zj$8FfY{oiYw5Pkw0y6 zG%Wdj2@yVA(iXd*HDk?V6~PhL>UZ>9ftHN=sgtA8$?s%{@ZplS*afW_Hw?=KLks#H zJy)P@#?r~r!sPcpMEG#o406>wtr=Zc^bTg5VfHxZ3bbUH9j=UqCBIuD!iUSY#V)5c zqqf7A#tXmIaTjg1Ca@pdJVS)f1iPR$qxJm<@4NUN8TL@ka71$df!}h8iwV(6yja&wZ`GXK3kPle~))T3lsKHBr~eczVFHRFMME4+hlcgLV>ODb^Lb+!AnXmIjg&McygT+o_v&Hq(-FZR;0ge%atAHSFu zjY{4xnnmQv1+5v2f@<%{Z}c3+6==z*teF-qNZym0MX(E6GdjnAOZLVg`nP0UftHN= zo2Mo7{}_`+unSr<;y1+R@J?CmuTlxG7?->o8J|m@eWz?2LMlu^D-plx)=S=v`}`RD z4qVCbofcO<8bj~j%_7(Zt^J7K*z4gPzg&TqjLMcV^d8|Xf?d#>F?CjzH+rdl2gwy^ zyB0c)rS~Cc5h1ytHRI|Y72cS$^f???plv_S7)$SU&LS$w1+5wJo1i_sJDMxdHshhO z^nU70f?SnOYexJ=YY*?h<_ff3S7sc&XFH1s$px($@te7Gc$YU(l10oC) z?1I*ect!-z&7t6P1=_Bw5693v4MZ5Yq^){#L2E`lvxDd6g7CQlEg611?iS~pAi}^U zZLtelGvXO4JU6F>&lPB!QL^t6Vc@bEZum=Iy$lI3L=wDw~{*D2nqb^6;uu0Tsh z_{(Y0iOGB{L>RcFEp|a`M!TcNdrv>5-=%T|S~Bu`OpBgK=9MABz$I<53tBT)-C5!N ztfUlIHUw!Y?7n1wz+VJOfyOIm5UD zZ8Lg}qIt=P@ZqvcMXtQln(@I-K3ujR z*AJ zY2(Jm-~PjnS4Mhx-bp(D2ee&Rm7{51%S?h?l}>BM%ir`2HdO2PA6$W!jFwI3(EOZP z1iPR$Bc9PSaC3kfu0TtMAN`8v8OY5v+QqQvD0&G=@w zy5O#VJRKif@jtFmyQTYX7QrrP%^3T_s>b&RyT56meOJy)n01){!7gasuc~jT%dPlS=P}_5v|Ym8_lY{}fxmIjBJ$*d zb{Xqd<@P^BuM@cfZTqpZYt(d5l954#&k5gSD&kG2i2TxBqqUbKgNS&J5lxr2*afW_cOHI7 z@JNMw52S0WHDM0w5WP1P8ASLcZL!N~&8Rq_eQ?+(y6>VbTOp$Ik=>%L$?-vi&jh=m zH6!@Ts>Z_MdJJ*}TDC{!C3{3I$-69w@ZplS*afW_Z~SL!<4*hO`$f3|Eg5Aa_Kc<_ z;}sD;T+$Z1pfzLgflHP}@jGQ?jOPlp-LGhTG=>NtF54Encyu+tySXY@++fG{WKWcK zd9N%xYkRtGC&F+gjnICa8=nVndr~u)fEHK2`dxa{EfIz*X@q9*c@TuH%>O!hH!eQ6 z>rDZ7<}9fYVVqWC?5$Ov|A?N?QIQP3e!%B#2%jrVKx3(jS4;k7uP1Z3K}()!-1|s3 zN(ofb2&}7Y0{2lu7vGW6Is+9f36@GeM}}Q8yYHec>l*N(ZI=o3ye%OWp9!Zy6z@6V zN+YmFlJ@;r`9h!q8cT?^@V^PTgidB^lcuHDzWm1(@*VF|&|7Oo+cE56MwI=vzHiihF+hP~AW=Pv^bcp|7JkBdk#{%YU z#OKl{Yi~nHg$Za7#nFc=(6S_=)8}yGN*ba4=zeE$4mS{XU2XTzd~#n~l95K(twu!N zY3;|R6YIR=9?&`5TA#@okWO5rzqNL2EyLxz{z`A-7JD`*WWw(6S`qN6Tpr zHzEvN(iXd*-MT89;DvwHIo!AcZP&um6*Pxi_ab57vTK)Id8ajlW@L-6!nLh7#IV&F zbGVfd~dN&K6$O3_fDtLo@{f&6(YiJ@6jA?L>MO61+5v!b$TIJ{_$ltgDcQ>UH$0;n!}9< z1D9=!T~51o#dElEg$V!7PqOB4BZ6Jfnz46dRrz2yhZ|R*?Y>)b)DmIflD7ERhSm%n z(-Mu(?Rrx{udx!sE(sB!K@`VCu0Y!*jOp|-QCz5`5!#R3in3&0 zOAu12f9#+F#zcIsOO-}Qg$ZaSy2fMTec$PrSpQMiLg?nTgceujZruva$-I_C7`SAq z*ahwS(fJxLoTg(USD+=szpqq`y z%iVQMI8wRHw6;%ZH3 zKc+u?Z~2!e>V2*B5Kjl7rBD9&K7}8XXJlCfyP!2=(b5UIhK|?R`zWqJOGahq0}4%h z;+bU@!7gacD0}tQT+MzHYz9}LZAMF3Vc22F$Rx;B>9l54{bMI@`|n3-236pajIuSo z3jIbQBa2`cv}VX0yzzCM&EN{O&4|aV1FuI$CP6M4V}#I*F~2#%TlJehnn4w~B*TAj z-@>2>8Ce9opf%(AuA{wQHny`FT!FUz7~Q=vrZHWo=r%F31}t0kADa7=)3wmfR^BZLa#ph&P-@=<<}li*!*8C zRTjZ6Xx$#qyjUG<+GD!h*BY)s+a)~sz{2xukdZ~SkPBKf-uY)$(7CgHC!pa9v}E{; z4=gl1i;OISUC^4bV26re#gq=7-72mvsla8|)rdZY(YGTbi^!7;S~GqaJS2GaCinNw z&LtJN?7HgHw{YRr$jBmE$OWw#M}5^JIRAKkKLb~wB_r&8P@(^M$jBnt1+5v6T(Y6D zuExD*!nGw8xFnan9mNc6)FIS~C1`2Nzz*AtQ@m7qn(9 znbE7UQ#^Nu-R7<>slX)}^$+$h%sCnvSp>VFHA9~B#ZT{S23MdZqx7iFBG?738E$m* z<9_&jY(tAnG_KTae*5c4hcy0_WuK1y7VQ}(Y5fMIIvQ+GX zmd}mZt<&_zOX72gWN-yqGQ#Kk6=o*i6%paXC2g?_S~G5ccXi{QoAkRPu0Y$22M#K1 zNxmy0!iURdkSlarGj6`TL-6RX?sqa&flD&V7WOSPCEpbh;lm|uu?t!=D&o1-wmVe6 zE8+^YWK=%ar?Bhc_^yZuA1-N&UC^4*@6h4F@jLgl+k-36l9AtVU|~h_T@evJT+$Z1 zpf%$UwHE~YU!>m^aRu6Lk8|UU;4*_$&8>2s6AC2g?_S~Ga2ajrm1#)!jb7SiV?hfCUG z7qn&^+hIV^?KYj8oGZ|_9}})G6z3+-BFe}Gtr<((of53MLFXpt3bf6*@`gfjZt_fm zTxCvc2G2Ck6==z5F5Fm1pPL*mX^UOZn!z)Ta|K#5>Q~-aNS~V=E@_Kh(3)}9f|_9a zH99vrSD+=MVXvDC#kt9|2zEhh#^RNA!LS?4>~#}Ypd};R_ohN|Zt^UGUC^2#=h)=B zgpPCnv+C4iUj3~JSrR6o<@3_H$x)GXSrU9VfzPuE^cDnYC3Ly;`U(}v7hna`mQ>)9 ze)wlxR4C3(o<*<=S~I3pUhXZf)w#*J0xcP3oi8eE-5YmBSp>VFHDlNTQ@y$ML$x2S zE!z)j*Z=my!op;3@+^W~(38 zKmB4yc}C`Q1zIxdx4WqDTrxK~5e6=4i(Sx~@yW2Oyh|6%w;5c4w%cRSMTLIJ+~hCoa@fA@?+ac=S~f?d$skHIfhd+j^u+~iz=mW)B;W)v<<<|fY~*afW_1HY;A z_W45pzLqP{k}+?O8HM89D586DeCFN{c?n;b4_i(Sx~!846>1zIvjT;Lb-sdJOVC2g?_S~FfAz9Dz^^*R>> zSD+;$99masO6DfdBG?738E@~mC|9#Y=O*V0v}CkASz9R1O`b)t3tBTiyth}bmz$fM zE6|cr)~=>doSQt0U>CGz^uDxXx##94=L)pVa7VCcV=@VH;W*cfrrr(ZN5=1tk^x03 z`0fVUuB#nu3r)$~1u7fxEhqLXvGF%~I-iv*egDcR|kM;3$hW^Rin7;jk8>}lQY3CXw9IR#tm1X zr62S9%_yYLO%9i|#V%;gpqa)ESD+=M{&v5RJ~ugB(iXd*HDlkUeH&}s+~iz=mW-A) zwT0r`X`|hyqre(AxWO Date: Thu, 11 Jul 2024 17:52:09 +0200 Subject: [PATCH 021/151] add new feature translation for de (#6071) * add new feature translation for de * Merge branch 'main' into add_new_de_loc * fix de --- localization/i18n/de/OrcaSlicer_de.po | 72 +++++++++++++++++---------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index a318d283c8..4cb5df317c 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -2891,7 +2891,7 @@ msgstr "Sie müssen zuerst den Materialtyp und die Farbe auswählen." #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f)" -msgstr "" +msgstr "Bitte geben Sie einen gültigen Wert ein (K in %.1f~%.1f)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" @@ -3335,11 +3335,11 @@ msgid "Edit multiple printers" msgstr "Mehrere Drucker bearbeiten" msgid "Select connected printers (0/6)" -msgstr "" +msgstr "Verbundene Drucker auswählen (0/6)" #, c-format, boost-format msgid "Select Connected Printers (%d/6)" -msgstr "" +msgstr "Verbundene Drucker auswählen (%d/6)" #, c-format, boost-format msgid "The maximum number of printers that can be selected is %d" @@ -5941,7 +5941,7 @@ msgid "View all object's settings" msgstr "Alle Einstellungen des Objekts anzeigen" msgid "Material settings" -msgstr "" +msgstr "Material-Einstellungen" msgid "Remove current plate (if not last one)" msgstr "entferne aktuelle Platte (wenn nicht die letzte)" @@ -6020,7 +6020,7 @@ msgid "Search plate, object and part." msgstr "Suche Platte, Objekt und Teil." msgid "Pellets" -msgstr "" +msgstr "Pellets" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." @@ -6659,19 +6659,19 @@ msgid "Choose Download Directory" msgstr "Wählen Sie das Download-Verzeichnis" msgid "Associate" -msgstr "" +msgstr "Zuordnen" msgid "with OrcaSlicer so that Orca can open models from" -msgstr "" +msgstr "mit OrcaSlicer, damit öffnet Orca Modelle von" msgid "Current Association: " -msgstr "" +msgstr "Aktuelle Zuordnung: " msgid "Current Instance" -msgstr "" +msgstr "Aktuelle Instanz" msgid "Current Instance Path: " -msgstr "" +msgstr "Aktueller Instanzpfad: " msgid "General Settings" msgstr "Allgemeine Einstellungen" @@ -11040,7 +11040,7 @@ msgstr "" "verwendet, er ist also wichtig und sollte genau sein" msgid "Pellet flow coefficient" -msgstr "" +msgstr "Pellet-Flusskoeffizient" msgid "" "Pellet flow coefficient is emperically derived and allows for volume " @@ -11051,6 +11051,13 @@ msgid "" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" +"Der Pellet-Flusskoeffizient wird empirisch abgeleitet und ermöglicht die " +"Volumenberechnung für Pellet-Drucker.\n" +"\n" +"Intern wird er in den Filamentdurchmesser umgerechnet. Alle anderen " +"Volumenberechnungen bleiben gleich.\n" +"\n" +"Filamentdurchmesser = sqrt( (4 * Pellet-Flusskoeffizient) / PI )" msgid "Shrinkage" msgstr "Schrumpfung" @@ -11845,10 +11852,10 @@ msgid "Klipper" msgstr "Klipper" msgid "Pellet Modded Printer" -msgstr "" +msgstr "Pellet-Modifizierter Drucker" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "" +msgstr "aktivieren Sie diese Option, wenn Ihr Drucker Pellets anstelle von Filamenten verwendet" msgid "Support multi bed types" msgstr "Unterstützung mehrerer Betttypen" @@ -11931,7 +11938,7 @@ msgstr "" "rauen Oberflächen führen kann." msgid "Top/Bottom solid infill/wall overlap" -msgstr "" +msgstr "Überlappung des oberen/unteren massiven Füllung/Wand" #, no-c-format, no-boost-format msgid "" @@ -11973,57 +11980,68 @@ msgstr "" "Funktion." msgid "Interlocking depth of a segmented region" -msgstr "Verriegelungstiefe eines segmentierten Bereichs" +msgstr "Interlock-Struktur-Tiefe eines segmentierten Bereichs" msgid "Interlocking depth of a segmented region. Zero disables this feature." msgstr "" -"Verriegelungstiefe eines segmentierten Bereichs. Null deaktiviert diese " +"Interlock-Struktur-Tiefe eines segmentierten Bereichs. Null deaktiviert diese " "Funktion." msgid "Use beam interlocking" -msgstr "" +msgstr "Verwende Interlock-Strukturen" msgid "" "Generate interlocking beam structure at the locations where different " "filaments touch. This improves the adhesion between filaments, especially " "models printed in different materials." msgstr "" +"Erzeugen Sie eine verzahnte Struktur an den Stellen, an denen sich " +"unterschiedliche Filamente berühren. Dies verbessert die Haftung zwischen den " +"Filamenten, insbesondere bei Modellen, die aus verschiedenen Materialien " +"gedruckt werden." msgid "Interlocking beam width" -msgstr "" +msgstr "Interlock-Struktur-Breite" msgid "The width of the interlocking structure beams." -msgstr "" +msgstr "Die Breite der Interlock-Strukturen." msgid "Interlocking direction" -msgstr "" +msgstr "Interlock-Struktur Ausrichtung" msgid "Orientation of interlock beams." -msgstr "" +msgstr "Ausrichtung der Interlock-Strukturen." msgid "Interlocking beam layers" -msgstr "" +msgstr "Interlock-Struktur Schichten" msgid "" "The height of the beams of the interlocking structure, measured in number of " "layers. Less layers is stronger, but more prone to defects." msgstr "" +"Die Höhe der Balken der Interlock-Strukture, gemessen in Anzahl von " +"Schichten. Weniger Schichten sind stärker, aber anfälliger für Fehler." msgid "Interlocking depth" -msgstr "" +msgstr "Interlock-Struktur Tiefe" msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" +"Der Abstand von der Grenze zwischen den Filamenten, um die Interlock-Strukturen-" +"zu generieren, gemessen in Zellen. Zu wenige Zellen führen zu einer schlechten " +"Haftung." msgid "Interlocking boundary avoidance" -msgstr "" +msgstr "Vermeidung von Interlock-Strukturgrenzen" msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" +"Der Abstand von der Außenseite eines Modells, an dem keine Interlock-Strukturen " +"generiert werden, gemessen in Zellen." msgid "Ironing Type" msgstr "Glättungsmethode" @@ -12740,12 +12758,14 @@ msgid "Spiral" msgstr "Spirale" msgid "Traveling angle" -msgstr "" +msgstr "Bewegungswinkel" msgid "" "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " "in Normal Lift" msgstr "" +"Bewegungswinkel für den Z-Hub-Typ \"Steigung\" und \"Spirale\". Wenn Sie es " +"auf 90° einstellen, erhalten Sie eine normale Anhebung" msgid "Only lift Z above" msgstr "Nur Z anheben über" @@ -15510,7 +15530,7 @@ msgid "Upload to storage" msgstr "Hochladen in den Speicher" msgid "Switch to Device tab after upload." -msgstr "" +msgstr "Wechseln Sie nach dem Hochladen zum Geräte-Tab." #, c-format, boost-format msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" From 6de8d47bdb7a277edb4b8192f9e4596c4295bd58 Mon Sep 17 00:00:00 2001 From: Dylan <331506+macdylan@users.noreply.github.com> Date: Thu, 11 Jul 2024 23:53:32 +0800 Subject: [PATCH 022/151] Limit the max speed on the wipe tower (#6044) * limit the max speed on the wipe tower --- src/libslic3r/GCode/WipeTower2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index 6e96e21150..5b5a332419 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -1345,7 +1345,7 @@ WipeTower::ToolChangeResult WipeTower2::finish_layer() return poly; }; - feedrate = first_layer ? m_first_layer_speed * 60.f : m_perimeter_speed * 60.f; + feedrate = first_layer ? m_first_layer_speed * 60.f : std::min(m_wipe_tower_max_purge_speed * 60.f, m_perimeter_speed * 60.f); // outer contour (always) bool infill_cone = first_layer && m_wipe_tower_width > 2*spacing && m_wipe_tower_depth > 2*spacing; From 156bdd12aaf192e96fcc3b594210b587ba6da0da Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Thu, 11 Jul 2024 18:54:42 +0300 Subject: [PATCH 023/151] Auto arrange plate after cloning (#6009) * Auto arrange plate after cloning --- src/libslic3r/AppConfig.cpp | 4 ++++ src/slic3r/GUI/Plater.cpp | 2 ++ src/slic3r/GUI/Preferences.cpp | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 51b7a10372..50f89935f0 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -253,6 +253,10 @@ void AppConfig::set_defaults() set_bool("show_splash_screen", true); } + if(get("auto_arrange").empty()) { + set_bool("auto_arrange", true); + } + if (get("show_model_mesh").empty()) { set_bool("show_model_mesh", false); } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2d7f4433e1..e810c4d7f7 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -13260,6 +13260,8 @@ void Plater::clone_selection() } Selection& selection = p->get_selection(); selection.clone(res); + if (wxGetApp().app_config->get("auto_arrange") == "true") + this->arrange(); } std::vector Plater::get_empty_cells(const Vec2f step) diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 79b3cd2646..0ba2af116c 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -1133,6 +1133,7 @@ wxWindow* PreferencesDialog::create_general_page() auto item_calc_in_long_retract = create_item_checkbox(_L("Flushing volumes: Auto-calculate every time when the filament is changed."), page, _L("If enabled, auto-calculate every time when filament is changed"), 50, "auto_calculate_when_filament_change"); auto item_remember_printer_config = create_item_checkbox(_L("Remember printer configuration"), page, _L("If enabled, Orca will remember and switch filament/process configuration for each printer automatically."), 50, "remember_printer_config"); auto item_multi_machine = create_item_checkbox(_L("Multi-device Management(Take effect after restarting Orca)."), page, _L("With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."), 50, "enable_multi_machine"); + auto item_auto_arrange = create_item_checkbox(_L("Auto arrange plate after cloning"), page, _L("Auto arrange plate after object cloning"), 50, "auto_arrange"); auto title_presets = create_item_title(_L("Presets"), page, _L("Presets")); auto title_network = create_item_title(_L("Network"), page, _L("Network")); auto item_user_sync = create_item_checkbox(_L("Auto sync user presets(Printer/Filament/Process)"), page, _L("User Sync"), 50, "sync_user_preset"); @@ -1205,6 +1206,7 @@ wxWindow* PreferencesDialog::create_general_page() sizer_page->Add(item_hints, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_calc_in_long_retract, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_multi_machine, 0, wxTOP, FromDIP(3)); + sizer_page->Add(item_auto_arrange, 0, wxTOP, FromDIP(3)); sizer_page->Add(title_presets, 0, wxTOP | wxEXPAND, FromDIP(20)); sizer_page->Add(item_calc_mode, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_user_sync, 0, wxTOP, FromDIP(3)); From 004d0595d96d6f4df28c605144034ff9be4e6376 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 12 Jul 2024 23:03:07 +0800 Subject: [PATCH 024/151] Fix ooze prevention bug --- src/libslic3r/GCode.cpp | 2 +- src/libslic3r/Print.cpp | 6 +++--- src/libslic3r/PrintConfig.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 1d7dc09f0e..0236125186 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -258,7 +258,7 @@ static std::vector get_path_of_change_filament(const Print& print) unsigned int extruder_id = gcodegen.writer().extruder()->id(); const auto& filament_idle_temp = gcodegen.config().idle_temperature; - if (filament_idle_temp.get_at(extruder_id) > 0) { + if (filament_idle_temp.get_at(extruder_id) == 0) { // There is no idle temperature defined in filament settings. // Use the delta value from print config. if (gcodegen.config().standby_temperature_delta.value != 0) { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 5e687cbbd4..3650b4ef90 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1162,10 +1162,10 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* if (! m_config.use_relative_e_distances) return { L("The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1).") }; - if (m_config.ooze_prevention) - return { L("Ooze prevention is currently not supported with the prime tower enabled.") }; - // BBS: remove following logic and _L() + if (m_config.ooze_prevention && m_config.single_extruder_multi_material) + return {L("Ooze prevention is only supported with the wipe tower when 'single_extruder_multi_material' is off.")}; + #if 0 if (m_config.gcode_flavor != gcfRepRapSprinter && m_config.gcode_flavor != gcfRepRapFirmware && m_config.gcode_flavor != gcfRepetier && m_config.gcode_flavor != gcfMarlinLegacy && m_config.gcode_flavor != gcfMarlinFirmware) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 4045f41e33..d6f5cd278c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4073,7 +4073,7 @@ void PrintConfigDef::init_fff_params() // TRN PrintSettings : "Ooze prevention" > "Temperature variation" def->tooltip = L("Temperature difference to be applied when an extruder is not active. " "The value is not used when 'idle_temperature' in filament settings " - "is defined."); + "is set to non zero value."); def->sidetext = "∆°C"; def->min = -max_temp; def->max = max_temp; From bec03b3e428c925d4f6148dfe0bb38ca6216ebab Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 12 Jul 2024 23:17:50 +0800 Subject: [PATCH 025/151] optimize UI: hide flushing_volume_btn for multi tool --- src/slic3r/GUI/Plater.cpp | 6 ++++-- src/slic3r/GUI/Plater.hpp | 2 +- src/slic3r/GUI/Tab.cpp | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 0a8db799fd..09e91840a2 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1280,7 +1280,7 @@ void Sidebar::update_all_preset_comboboxes() p->m_filament_icon->SetBitmap_("filament"); } - show_add_del_filament_button(cfg.opt_bool("single_extruder_multi_material")); + show_SEMM_buttons(cfg.opt_bool("single_extruder_multi_material")); //p->m_staticText_filament_settings->Update(); @@ -1845,12 +1845,14 @@ void Sidebar::sync_ams_list() Layout(); } -void Sidebar::show_add_del_filament_button(bool bshow) +void Sidebar::show_SEMM_buttons(bool bshow) { if(p->m_bpButton_add_filament) p->m_bpButton_add_filament->Show(bshow); if(p->m_bpButton_del_filament) p->m_bpButton_del_filament->Show(bshow); + if (p->m_flushing_volume_btn) + p->m_flushing_volume_btn->Show(bshow); Layout(); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 95a08c1827..52f0706e89 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -149,7 +149,7 @@ public: std::map build_filament_ams_list(MachineObject* obj); void sync_ams_list(); // Orca - void show_add_del_filament_button(bool bshow); + void show_SEMM_buttons(bool bshow); ObjectList* obj_list(); ObjectSettings* obj_settings(); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 1e5384bc06..0942714fac 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1434,7 +1434,7 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) if (opt_key == "single_extruder_multi_material" ){ const auto bSEMM = m_config->opt_bool("single_extruder_multi_material"); - wxGetApp().sidebar().show_add_del_filament_button(bSEMM); + wxGetApp().sidebar().show_SEMM_buttons(bSEMM); wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); } From e856a4a8b24571efabcf26d39473e994aad41a19 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 13 Jul 2024 13:33:45 +0800 Subject: [PATCH 026/151] Add Prusa XL 5T --- resources/profiles/Prusa.json | 294 +++++++++++++++--- .../filament/Prusa Generic ABS @XL 5T.json | 69 ++++ .../filament/Prusa Generic PETG @XL 5T.json | 72 +++++ .../filament/Prusa Generic PLA @XL 5T.json | 67 ++++ .../Prusa/filament/Prusament ASA @XL 5T.json | 71 +++++ .../filament/Prusament PA-CF @XL 5T.json | 71 +++++ .../filament/Prusament PC Blend @XL 5T.json | 71 +++++ .../filament/Prusament PC-CF @XL 5T.json | 71 +++++ .../Prusa/filament/Prusament PETG @XL 5T.json | 72 +++++ .../Prusa/filament/Prusament PLA @XL 5T.json | 67 ++++ .../Prusa/filament/Prusament PVB @XL 5T.json | 72 +++++ .../Prusa/filament/Prusament rPLA @XL 5T.json | 70 +++++ .../machine/Prusa XL 5T 0.25 nozzle.json | 20 ++ .../Prusa/machine/Prusa XL 5T 0.3 nozzle.json | 20 ++ .../Prusa/machine/Prusa XL 5T 0.4 nozzle.json | 20 ++ .../Prusa/machine/Prusa XL 5T 0.5 nozzle.json | 20 ++ .../Prusa/machine/Prusa XL 5T 0.6 nozzle.json | 20 ++ .../Prusa/machine/Prusa XL 5T 0.8 nozzle.json | 20 ++ .../profiles/Prusa/machine/Prusa XL 5T.json | 12 + .../Prusa/machine/fdm_machine_common_xl.json | 114 +++++++ .../machine/fdm_machine_common_xl_5t.json | 22 ++ .../0.05mm Detail @Prusa XL 5T 0.25.json | 67 ++++ .../0.07mm Detail @Prusa XL 5T 0.25.json | 67 ++++ .../0.10mm FastDetail @Prusa XL 5T 0.4.json | 67 ++++ .../0.10mm Structural @Prusa XL 5T 0.5.json | 68 ++++ .../0.12mm Speed @Prusa XL 5T 0.25.json | 67 ++++ .../0.12mm Structural @Prusa XL 5T 0.25.json | 67 ++++ .../0.12mm Structural @Prusa XL 5T 0.3.json | 67 ++++ .../0.15mm Speed @Prusa XL 5T 0.25.json | 67 ++++ .../0.15mm Speed @Prusa XL 5T 0.4.json | 67 ++++ .../0.15mm Structural @Prusa XL 5T 0.25.json | 67 ++++ .../0.15mm Structural @Prusa XL 5T 0.4.json | 67 ++++ .../0.15mm Structural @Prusa XL 5T 0.5.json | 68 ++++ .../0.15mm Structural @Prusa XL 5T 0.6.json | 69 ++++ .../0.16mm Speed @Prusa XL 5T 0.3.json | 67 ++++ .../0.16mm Structural @Prusa XL 5T 0.3.json | 67 ++++ .../0.20mm Speed @Prusa XL 5T 0.3.json | 67 ++++ .../0.20mm Speed @Prusa XL 5T 0.4.json | 67 ++++ .../0.20mm Speed @Prusa XL 5T 0.5.json | 68 ++++ .../0.20mm Speed @Prusa XL 5T 0.6.json | 69 ++++ .../0.20mm Structural @Prusa XL 5T 0.4.json | 67 ++++ .../0.20mm Structural @Prusa XL 5T 0.5.json | 68 ++++ .../0.20mm Structural @Prusa XL 5T 0.6.json | 69 ++++ .../0.25mm Speed @Prusa XL 5T 0.5.json | 68 ++++ .../0.25mm Speed @Prusa XL 5T 0.6.json | 69 ++++ .../0.25mm Structural @Prusa XL 5T 0.4.json | 67 ++++ .../0.25mm Structural @Prusa XL 5T 0.5.json | 68 ++++ .../0.25mm Structural @Prusa XL 5T 0.6.json | 69 ++++ .../0.30mm Detail @Prusa XL 5T 0.8.json | 71 +++++ .../0.32mm Speed @Prusa XL 5T 0.6.json | 69 ++++ .../0.32mm Structural @Prusa XL 5T 0.6.json | 69 ++++ .../0.40mm Quality @Prusa XL 5T 0.8.json | 71 +++++ .../0.55mm Draft @Prusa XL 5T 0.8.json | 71 +++++ .../Prusa/process/process_common_xl_5t.json | 11 + 54 files changed, 3481 insertions(+), 41 deletions(-) create mode 100644 resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json create mode 100644 resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json create mode 100644 resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json create mode 100644 resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json create mode 100644 resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json create mode 100644 resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json create mode 100644 resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json create mode 100644 resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json create mode 100644 resources/profiles/Prusa/machine/Prusa XL 5T.json create mode 100644 resources/profiles/Prusa/machine/fdm_machine_common_xl.json create mode 100644 resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json create mode 100644 resources/profiles/Prusa/process/0.05mm Detail @Prusa XL 5T 0.25.json create mode 100644 resources/profiles/Prusa/process/0.07mm Detail @Prusa XL 5T 0.25.json create mode 100644 resources/profiles/Prusa/process/0.10mm FastDetail @Prusa XL 5T 0.4.json create mode 100644 resources/profiles/Prusa/process/0.10mm Structural @Prusa XL 5T 0.5.json create mode 100644 resources/profiles/Prusa/process/0.12mm Speed @Prusa XL 5T 0.25.json create mode 100644 resources/profiles/Prusa/process/0.12mm Structural @Prusa XL 5T 0.25.json create mode 100644 resources/profiles/Prusa/process/0.12mm Structural @Prusa XL 5T 0.3.json create mode 100644 resources/profiles/Prusa/process/0.15mm Speed @Prusa XL 5T 0.25.json create mode 100644 resources/profiles/Prusa/process/0.15mm Speed @Prusa XL 5T 0.4.json create mode 100644 resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.25.json create mode 100644 resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.4.json create mode 100644 resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.5.json create mode 100644 resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.6.json create mode 100644 resources/profiles/Prusa/process/0.16mm Speed @Prusa XL 5T 0.3.json create mode 100644 resources/profiles/Prusa/process/0.16mm Structural @Prusa XL 5T 0.3.json create mode 100644 resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.3.json create mode 100644 resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.4.json create mode 100644 resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.5.json create mode 100644 resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.6.json create mode 100644 resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.4.json create mode 100644 resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.5.json create mode 100644 resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.6.json create mode 100644 resources/profiles/Prusa/process/0.25mm Speed @Prusa XL 5T 0.5.json create mode 100644 resources/profiles/Prusa/process/0.25mm Speed @Prusa XL 5T 0.6.json create mode 100644 resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.4.json create mode 100644 resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.5.json create mode 100644 resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.6.json create mode 100644 resources/profiles/Prusa/process/0.30mm Detail @Prusa XL 5T 0.8.json create mode 100644 resources/profiles/Prusa/process/0.32mm Speed @Prusa XL 5T 0.6.json create mode 100644 resources/profiles/Prusa/process/0.32mm Structural @Prusa XL 5T 0.6.json create mode 100644 resources/profiles/Prusa/process/0.40mm Quality @Prusa XL 5T 0.8.json create mode 100644 resources/profiles/Prusa/process/0.55mm Draft @Prusa XL 5T 0.8.json create mode 100644 resources/profiles/Prusa/process/process_common_xl_5t.json diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index 1845bd173b..69e3e32e4e 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.01.01.00", + "version": "02.01.01.10", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ @@ -23,6 +23,10 @@ { "name": "Prusa XL", "sub_path": "machine/Prusa XL.json" + }, + { + "name": "Prusa XL 5T", + "sub_path": "machine/Prusa XL 5T.json" } ], "process_list": [ @@ -54,6 +58,10 @@ "name": "process_common_xl", "sub_path": "process/process_common_xl.json" }, + { + "name": "process_common_xl_5t", + "sub_path": "process/process_common_xl_5t.json" + }, { "name": "0.20mm Standard @MINI 0.25", "sub_path": "process/0.20mm Standard @MINI 0.25.json" @@ -389,6 +397,134 @@ { "name": "0.30mm Detail @Prusa XL 0.8", "sub_path": "process/0.30mm Detail @Prusa XL 0.8.json" + }, + { + "name": "0.15mm Structural @Prusa XL 5T 0.25", + "sub_path": "process/0.15mm Structural @Prusa XL 5T 0.25.json" + }, + { + "name": "0.15mm Speed @Prusa XL 5T 0.25", + "sub_path": "process/0.15mm Speed @Prusa XL 5T 0.25.json" + }, + { + "name": "0.12mm Structural @Prusa XL 5T 0.25", + "sub_path": "process/0.12mm Structural @Prusa XL 5T 0.25.json" + }, + { + "name": "0.12mm Speed @Prusa XL 5T 0.25", + "sub_path": "process/0.12mm Speed @Prusa XL 5T 0.25.json" + }, + { + "name": "0.07mm Detail @Prusa XL 5T 0.25", + "sub_path": "process/0.07mm Detail @Prusa XL 5T 0.25.json" + }, + { + "name": "0.05mm Detail @Prusa XL 5T 0.25", + "sub_path": "process/0.05mm Detail @Prusa XL 5T 0.25.json" + }, + { + "name": "0.20mm Speed @Prusa XL 5T 0.3", + "sub_path": "process/0.20mm Speed @Prusa XL 5T 0.3.json" + }, + { + "name": "0.16mm Structural @Prusa XL 5T 0.3", + "sub_path": "process/0.16mm Structural @Prusa XL 5T 0.3.json" + }, + { + "name": "0.16mm Speed @Prusa XL 5T 0.3", + "sub_path": "process/0.16mm Speed @Prusa XL 5T 0.3.json" + }, + { + "name": "0.12mm Structural @Prusa XL 5T 0.3", + "sub_path": "process/0.12mm Structural @Prusa XL 5T 0.3.json" + }, + { + "name": "0.25mm Structural @Prusa XL 5T 0.4", + "sub_path": "process/0.25mm Structural @Prusa XL 5T 0.4.json" + }, + { + "name": "0.20mm Structural @Prusa XL 5T 0.4", + "sub_path": "process/0.20mm Structural @Prusa XL 5T 0.4.json" + }, + { + "name": "0.20mm Speed @Prusa XL 5T 0.4", + "sub_path": "process/0.20mm Speed @Prusa XL 5T 0.4.json" + }, + { + "name": "0.15mm Structural @Prusa XL 5T 0.4", + "sub_path": "process/0.15mm Structural @Prusa XL 5T 0.4.json" + }, + { + "name": "0.15mm Speed @Prusa XL 5T 0.4", + "sub_path": "process/0.15mm Speed @Prusa XL 5T 0.4.json" + }, + { + "name": "0.10mm FastDetail @Prusa XL 5T 0.4", + "sub_path": "process/0.10mm FastDetail @Prusa XL 5T 0.4.json" + }, + { + "name": "0.25mm Structural @Prusa XL 5T 0.5", + "sub_path": "process/0.25mm Structural @Prusa XL 5T 0.5.json" + }, + { + "name": "0.25mm Speed @Prusa XL 5T 0.5", + "sub_path": "process/0.25mm Speed @Prusa XL 5T 0.5.json" + }, + { + "name": "0.20mm Structural @Prusa XL 5T 0.5", + "sub_path": "process/0.20mm Structural @Prusa XL 5T 0.5.json" + }, + { + "name": "0.20mm Speed @Prusa XL 5T 0.5", + "sub_path": "process/0.20mm Speed @Prusa XL 5T 0.5.json" + }, + { + "name": "0.15mm Structural @Prusa XL 5T 0.5", + "sub_path": "process/0.15mm Structural @Prusa XL 5T 0.5.json" + }, + { + "name": "0.10mm Structural @Prusa XL 5T 0.5", + "sub_path": "process/0.10mm Structural @Prusa XL 5T 0.5.json" + }, + { + "name": "0.32mm Structural @Prusa XL 5T 0.6", + "sub_path": "process/0.32mm Structural @Prusa XL 5T 0.6.json" + }, + { + "name": "0.32mm Speed @Prusa XL 5T 0.6", + "sub_path": "process/0.32mm Speed @Prusa XL 5T 0.6.json" + }, + { + "name": "0.25mm Structural @Prusa XL 5T 0.6", + "sub_path": "process/0.25mm Structural @Prusa XL 5T 0.6.json" + }, + { + "name": "0.25mm Speed @Prusa XL 5T 0.6", + "sub_path": "process/0.25mm Speed @Prusa XL 5T 0.6.json" + }, + { + "name": "0.20mm Structural @Prusa XL 5T 0.6", + "sub_path": "process/0.20mm Structural @Prusa XL 5T 0.6.json" + }, + { + "name": "0.20mm Speed @Prusa XL 5T 0.6", + "sub_path": "process/0.20mm Speed @Prusa XL 5T 0.6.json" + }, + { + "name": "0.15mm Structural @Prusa XL 5T 0.6", + "sub_path": "process/0.15mm Structural @Prusa XL 5T 0.6.json" + }, + { + "name": "0.55mm Draft @Prusa XL 5T 0.8", + "sub_path": "process/0.55mm Draft @Prusa XL 5T 0.8.json" + }, + { + "name": "0.40mm Quality @Prusa XL 5T 0.8", + "sub_path": "process/0.40mm Quality @Prusa XL 5T 0.8.json" + }, + { + "name": "0.30mm Detail @Prusa XL 5T 0.8", + "sub_path": "process/0.30mm Detail @Prusa XL 5T 0.8.json" } ], "filament_list": [ @@ -464,18 +600,6 @@ "name": "Prusa Generic PLA @MINIIS", "sub_path": "filament/Prusa Generic PLA @MINIIS.json" }, - { - "name": "Prusa Generic PLA @XL", - "sub_path": "filament/Prusa Generic PLA @XL.json" - }, - { - "name": "Prusament PLA @XL", - "sub_path": "filament/Prusament PLA @XL.json" - }, - { - "name": "Prusament rPLA @XL", - "sub_path": "filament/Prusament rPLA @XL.json" - }, { "name": "Prusa Generic PLA-CF", "sub_path": "filament/Prusa Generic PLA-CF.json" @@ -520,14 +644,6 @@ "name": "Prusa Generic PETG @MINIIS 0.8", "sub_path": "filament/Prusa Generic PETG @MINIIS 0.8.json" }, - { - "name": "Prusa Generic PETG @XL", - "sub_path": "filament/Prusa Generic PETG @XL.json" - }, - { - "name": "Prusament PETG @XL", - "sub_path": "filament/Prusament PETG @XL.json" - }, { "name": "Prusa Generic ABS", "sub_path": "filament/Prusa Generic ABS.json" @@ -552,10 +668,6 @@ "name": "Prusa Generic ABS @MINIIS 0.8", "sub_path": "filament/Prusa Generic ABS @MINIIS 0.8.json" }, - { - "name": "Prusa Generic ABS @XL", - "sub_path": "filament/Prusa Generic ABS @XL.json" - }, { "name": "Prusa Generic TPU", "sub_path": "filament/Prusa Generic TPU.json" @@ -592,10 +704,6 @@ "name": "Prusa Generic ASA @MINIIS 0.8", "sub_path": "filament/Prusa Generic ASA @MINIIS 0.8.json" }, - { - "name": "Prusament ASA @XL", - "sub_path": "filament/Prusament ASA @XL.json" - }, { "name": "Prusa Generic PC", "sub_path": "filament/Prusa Generic PC.json" @@ -616,14 +724,6 @@ "name": "Prusa Generic PC @MINIIS 0.8", "sub_path": "filament/Prusa Generic PC @MINIIS 0.8.json" }, - { - "name": "Prusament PC Blend @XL", - "sub_path": "filament/Prusament PC Blend @XL.json" - }, - { - "name": "Prusament PC-CF @XL", - "sub_path": "filament/Prusament PC-CF @XL.json" - }, { "name": "Prusa Generic PVA", "sub_path": "filament/Prusa Generic PVA.json" @@ -644,10 +744,6 @@ "name": "Prusa Generic PVA @MINIIS 0.8", "sub_path": "filament/Prusa Generic PVA @MINIIS 0.8.json" }, - { - "name": "Prusament PVB @XL", - "sub_path": "filament/Prusament PVB @XL.json" - }, { "name": "Prusa Generic PA", "sub_path": "filament/Prusa Generic PA.json" @@ -688,15 +784,107 @@ "name": "Prusa Generic PA-CF @MINIIS 0.8", "sub_path": "filament/Prusa Generic PA-CF @MINIIS 0.8.json" }, + { + "name": "Prusa Generic PLA @XL", + "sub_path": "filament/Prusa Generic PLA @XL.json" + }, + { + "name": "Prusament PLA @XL", + "sub_path": "filament/Prusament PLA @XL.json" + }, + { + "name": "Prusament rPLA @XL", + "sub_path": "filament/Prusament rPLA @XL.json" + }, + { + "name": "Prusament PVB @XL", + "sub_path": "filament/Prusament PVB @XL.json" + }, + { + "name": "Prusament ASA @XL", + "sub_path": "filament/Prusament ASA @XL.json" + }, + { + "name": "Prusa Generic PETG @XL", + "sub_path": "filament/Prusa Generic PETG @XL.json" + }, + { + "name": "Prusament PETG @XL", + "sub_path": "filament/Prusament PETG @XL.json" + }, + { + "name": "Prusa Generic ABS @XL", + "sub_path": "filament/Prusa Generic ABS @XL.json" + }, + { + "name": "Prusament PC Blend @XL", + "sub_path": "filament/Prusament PC Blend @XL.json" + }, + { + "name": "Prusament PC-CF @XL", + "sub_path": "filament/Prusament PC-CF @XL.json" + }, { "name": "Prusament PA-CF @XL", "sub_path": "filament/Prusament PA-CF @XL.json" + }, + { + "name": "Prusa Generic PLA @XL 5T", + "sub_path": "filament/Prusa Generic PLA @XL 5T.json" + }, + { + "name": "Prusament PLA @XL 5T", + "sub_path": "filament/Prusament PLA @XL 5T.json" + }, + { + "name": "Prusament rPLA @XL 5T", + "sub_path": "filament/Prusament rPLA @XL 5T.json" + }, + { + "name": "Prusament PVB @XL 5T", + "sub_path": "filament/Prusament PVB @XL 5T.json" + }, + { + "name": "Prusament ASA @XL 5T", + "sub_path": "filament/Prusament ASA @XL 5T.json" + }, + { + "name": "Prusa Generic PETG @XL 5T", + "sub_path": "filament/Prusa Generic PETG @XL 5T.json" + }, + { + "name": "Prusament PETG @XL 5T", + "sub_path": "filament/Prusament PETG @XL 5T.json" + }, + { + "name": "Prusa Generic ABS @XL 5T", + "sub_path": "filament/Prusa Generic ABS @XL 5T.json" + }, + { + "name": "Prusament PC Blend @XL 5T", + "sub_path": "filament/Prusament PC Blend @XL 5T.json" + }, + { + "name": "Prusament PC-CF @XL 5T", + "sub_path": "filament/Prusament PC-CF @XL 5T.json" + }, + { + "name": "Prusament PA-CF @XL 5T", + "sub_path": "filament/Prusament PA-CF @XL 5T.json" } ], "machine_list": [ { "name": "fdm_machine_common", "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "fdm_machine_common_xl", + "sub_path": "machine/fdm_machine_common_xl.json" + }, + { + "name": "fdm_machine_common_xl_5t", + "sub_path": "machine/fdm_machine_common_xl_5t.json" }, { "name": "Prusa MK3S 0.25 nozzle", @@ -785,6 +973,30 @@ { "name": "Prusa XL 0.8 nozzle", "sub_path": "machine/Prusa XL 0.8 nozzle.json" + }, + { + "name": "Prusa XL 5T 0.25 nozzle", + "sub_path": "machine/Prusa XL 5T 0.25 nozzle.json" + }, + { + "name": "Prusa XL 5T 0.3 nozzle", + "sub_path": "machine/Prusa XL 5T 0.3 nozzle.json" + }, + { + "name": "Prusa XL 5T 0.4 nozzle", + "sub_path": "machine/Prusa XL 5T 0.4 nozzle.json" + }, + { + "name": "Prusa XL 5T 0.5 nozzle", + "sub_path": "machine/Prusa XL 5T 0.5 nozzle.json" + }, + { + "name": "Prusa XL 5T 0.6 nozzle", + "sub_path": "machine/Prusa XL 5T 0.6 nozzle.json" + }, + { + "name": "Prusa XL 5T 0.8 nozzle", + "sub_path": "machine/Prusa XL 5T 0.8 nozzle.json" } ] } diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json new file mode 100644 index 0000000000..a299264967 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json @@ -0,0 +1,69 @@ +{ + "type": "filament", + "filament_id": "GFB99_1", + "setting_id": "GFSA04", + "name": "Prusa Generic ABS @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "nozzle_temperature_intial_layer": "255", + "nozzle_temperature": "255", + "hot_plate_temp_initial_layer": "100", + "hot_plate_temp": "105", + "slow_down_min_speed": "15", + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "20" + ], + "fan_max_speed": [ + "15" + ], + "fan_min_speed": [ + "15" + ], + "overhang_fan_speed": [ + "25" + ], + "close_fan_the_first_x_layers": [ + "4" + ], + "filament_loading_speed_start": "19", + "filament_loading_speed": "14", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "20", + "filament_load_time": "15", + "filament_unload_time": "12", + "filament_cooling_moves": "5", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "50", + "filament_retract_lift_below": "1.5", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json new file mode 100644 index 0000000000..5f26694dc5 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json @@ -0,0 +1,72 @@ +{ + "type": "filament", + "filament_id": "GFL99_1", + "setting_id": "GFSA04", + "name": "Prusa Generic PETG @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "nozzle_temperature_intial_layer": "230", + "nozzle_temperature": "240", + "hot_plate_temp_initial_layer": "80", + "hot_plate_temp": "80", + "full_fan_speed_layer": "5", + "slow_down_min_speed": "15", + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "9" + ], + "slow_down_layer_time": [ + "9" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "overhang_fan_speed": [ + "50" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_loading_speed_start": "50", + "filament_loading_speed": "10", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "100", + "filament_load_time": "10.5", + "filament_unload_time": "8.5", + "filament_cooling_moves": "3", + "filament_cooling_initial_speed": "5", + "filament_cooling_final_speed": "2.5", + "filament_retract_lift_below": "1.5", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_wipe": "1", + "filament_retract_before_wipe": "20%", + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json new file mode 100644 index 0000000000..ff37c0b691 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json @@ -0,0 +1,67 @@ +{ + "type": "filament", + "filament_id": "GFL99_1", + "setting_id": "GFSA04", + "name": "Prusa Generic PLA @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "nozzle_temperature_intial_layer": "215", + "nozzle_temperature": "210", + "hot_plate_temp_initial_layer": "60", + "hot_plate_temp": "60", + "full_fan_speed_layer": "3", + "slow_down_min_speed": "15", + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "slow_down_layer_time": [ + "10" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "filament_loading_speed_start": "50", + "filament_loading_speed": "10", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "100", + "filament_load_time": "10.5", + "filament_unload_time": "8.5", + "filament_cooling_moves": "2", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "3.5", + "filament_retract_lift_below": "0.6", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json new file mode 100644 index 0000000000..2ec8efea09 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFSA04", + "name": "Prusament ASA @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "nozzle_temperature_intial_layer": "260", + "nozzle_temperature": "260", + "hot_plate_temp_initial_layer": "100", + "hot_plate_temp": "105", + "filament_flow_ratio": [ + "1" + ], + "fan_max_speed": [ + "10" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "30" + ], + "close_fan_the_first_x_layers": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ], + "slow_down_layer_time": [ + "15" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_loading_speed_start": "19", + "filament_loading_speed": "14", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "20", + "filament_load_time": "15", + "filament_unload_time": "12", + "filament_cooling_moves": "5", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "50", + "filament_retract_lift_below": "1.5", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json new file mode 100644 index 0000000000..ffd0f3cfe3 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFSA04", + "name": "Prusament PA-CF @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa11cf", + "nozzle_temperature_intial_layer": "275", + "nozzle_temperature": "285", + "hot_plate_temp_initial_layer": "100", + "hot_plate_temp": "105", + "filament_flow_ratio": [ + "1.05" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "30" + ], + "close_fan_the_first_x_layers": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ], + "slow_down_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "6.5" + ], + "filament_loading_speed_start": "19", + "filament_loading_speed": "14", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "20", + "filament_load_time": "15", + "filament_unload_time": "12", + "filament_cooling_moves": "5", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "50", + "filament_retract_lift_below": "1.5", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json new file mode 100644 index 0000000000..0b3077d471 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "filament_id": "GFL99_1", + "setting_id": "GFSA04", + "name": "Prusament PC Blend @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc", + "nozzle_temperature_intial_layer": "275", + "nozzle_temperature": "275", + "hot_plate_temp_initial_layer": "100", + "hot_plate_temp": "105", + "filament_flow_ratio": [ + "1" + ], + "fan_max_speed": [ + "10" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "30" + ], + "close_fan_the_first_x_layers": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ], + "slow_down_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "9" + ], + "filament_loading_speed_start": "19", + "filament_loading_speed": "14", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "20", + "filament_load_time": "15", + "filament_unload_time": "12", + "filament_cooling_moves": "5", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "50", + "filament_retract_lift_below": "1.5", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json new file mode 100644 index 0000000000..e82f40ba46 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "filament_id": "GFL99_1", + "setting_id": "GFSA04", + "name": "Prusament PC-CF @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pccf", + "nozzle_temperature_intial_layer": "285", + "nozzle_temperature": "285", + "hot_plate_temp_initial_layer": "100", + "hot_plate_temp": "105", + "filament_flow_ratio": [ + "1.04" + ], + "fan_max_speed": [ + "10" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "30" + ], + "close_fan_the_first_x_layers": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ], + "slow_down_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_loading_speed_start": "19", + "filament_loading_speed": "14", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "20", + "filament_load_time": "15", + "filament_unload_time": "12", + "filament_cooling_moves": "5", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "50", + "filament_retract_lift_below": "1.5", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json new file mode 100644 index 0000000000..10856125da --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json @@ -0,0 +1,72 @@ +{ + "type": "filament", + "filament_id": "GFL99_1", + "setting_id": "GFSA04", + "name": "Prusament PETG @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "nozzle_temperature_intial_layer": "240", + "nozzle_temperature": "250", + "hot_plate_temp_initial_layer": "80", + "hot_plate_temp": "80", + "full_fan_speed_layer": "5", + "slow_down_min_speed": "15", + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "9.5" + ], + "slow_down_layer_time": [ + "9" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "overhang_fan_speed": [ + "50" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_loading_speed_start": "50", + "filament_loading_speed": "10", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "100", + "filament_load_time": "10.5", + "filament_unload_time": "8.5", + "filament_cooling_moves": "3", + "filament_cooling_initial_speed": "5", + "filament_cooling_final_speed": "2.5", + "filament_retract_lift_below": "1.5", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "10" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_wipe": "1", + "filament_retract_before_wipe": "20%", + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json new file mode 100644 index 0000000000..ede4ce5755 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json @@ -0,0 +1,67 @@ +{ + "type": "filament", + "filament_id": "GFL99_1", + "setting_id": "GFSA04", + "name": "Prusament PLA @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "nozzle_temperature_intial_layer": "215", + "nozzle_temperature": "215", + "hot_plate_temp_initial_layer": "60", + "hot_plate_temp": "60", + "full_fan_speed_layer": "3", + "slow_down_min_speed": "15", + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "slow_down_layer_time": [ + "10" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "filament_loading_speed_start": "50", + "filament_loading_speed": "10", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "100", + "filament_load_time": "10.5", + "filament_unload_time": "8.5", + "filament_cooling_moves": "2", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "3.5", + "filament_retract_lift_below": "0.6", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json new file mode 100644 index 0000000000..f7d360fdb7 --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json @@ -0,0 +1,72 @@ +{ + "type": "filament", + "filament_id": "GFS99", + "setting_id": "GFSA04", + "name": "Prusament PVB @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pvb", + "nozzle_temperature_intial_layer": "215", + "nozzle_temperature": "215", + "hot_plate_temp_initial_layer": "75", + "hot_plate_temp": "75", + "slow_down_min_speed": "15", + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "slow_down_layer_time": [ + "10" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "full_fan_speed_layer": [ + "3" + ], + "filament_loading_speed_start": "50", + "filament_loading_speed": "10", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "100", + "filament_load_time": "10.5", + "filament_unload_time": "8.5", + "filament_cooling_moves": "2", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "3.5", + "filament_retract_lift_below": "0.6", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json new file mode 100644 index 0000000000..af36626c3f --- /dev/null +++ b/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json @@ -0,0 +1,70 @@ +{ + "type": "filament", + "filament_id": "GFL99_1", + "setting_id": "GFSA04", + "name": "Prusament rPLA @XL 5T", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "nozzle_temperature_intial_layer": "205", + "nozzle_temperature": "205", + "hot_plate_temp_initial_layer": "60", + "hot_plate_temp": "60", + "full_fan_speed_layer": "3", + "slow_down_min_speed": "15", + "filament_flow_ratio": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "slow_down_layer_time": [ + "10" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_loading_speed_start": "50", + "filament_loading_speed": "10", + "filament_unloading_speed_start": "100", + "filament_unloading_speed": "100", + "filament_load_time": "10.5", + "filament_unload_time": "8.5", + "filament_cooling_moves": "2", + "filament_cooling_initial_speed": "10", + "filament_cooling_final_speed": "3.5", + "filament_retract_lift_below": "0.6", + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_volume": [ + "5" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle", + "Prusa XL 5T 0.3 nozzle", + "Prusa XL 5T 0.4 nozzle", + "Prusa XL 5T 0.5 nozzle", + "Prusa XL 5T 0.6 nozzle", + "Prusa XL 5T 0.8 nozzle" + ] +} diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json new file mode 100644 index 0000000000..52343e9ed1 --- /dev/null +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json @@ -0,0 +1,20 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 5T 0.25 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl_5t", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL 5T", + "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_print_profile": "0.15mm Speed @Prusa XL 5T 0.25", + "printer_variant": "0.25", + "nozzle_diameter": [ + "0.25", + "0.25", + "0.25", + "0.25", + "0.25" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json new file mode 100644 index 0000000000..3dc0db1532 --- /dev/null +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json @@ -0,0 +1,20 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 5T 0.3 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl_5t", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL 5T", + "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_print_profile": "0.20mm Speed @Prusa XL 5T 0.3", + "printer_variant": "0.3", + "nozzle_diameter": [ + "0.3", + "0.3", + "0.3", + "0.3", + "0.3" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json new file mode 100644 index 0000000000..5e7f21ed7e --- /dev/null +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json @@ -0,0 +1,20 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 5T 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl_5t", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL 5T", + "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_print_profile": "0.20mm Speed @Prusa XL 5T 0.4", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4", + "0.4", + "0.4", + "0.4", + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json new file mode 100644 index 0000000000..9360cfcd8f --- /dev/null +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json @@ -0,0 +1,20 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 5T 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl_5t", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL 5T", + "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_print_profile": "0.25mm Speed @Prusa XL 5T 0.5", + "printer_variant": "0.5", + "nozzle_diameter": [ + "0.5", + "0.5", + "0.5", + "0.5", + "0.5" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json new file mode 100644 index 0000000000..bc63b52a5e --- /dev/null +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json @@ -0,0 +1,20 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 5T 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl_5t", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL 5T", + "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_print_profile": "0.32mm Speed @Prusa XL 5T 0.6", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6", + "0.6", + "0.6", + "0.6", + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json new file mode 100644 index 0000000000..1928a6c73e --- /dev/null +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json @@ -0,0 +1,20 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 5T 0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl_5t", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL 5T", + "default_filament_profile": "Prusa Generic PLA @XL 5T", + "default_print_profile": "0.40mm Quality @Prusa XL 5T 0.8", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8", + "0.8", + "0.8", + "0.8", + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T.json b/resources/profiles/Prusa/machine/Prusa XL 5T.json new file mode 100644 index 0000000000..ed1084e3ba --- /dev/null +++ b/resources/profiles/Prusa/machine/Prusa XL 5T.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Prusa XL 5T", + "model_id": "Prusa XL 5T", + "nozzle_diameter": "0.25;0.3;0.4;0.5;0.6;0.8", + "machine_tech": "FFF", + "family": "Prusa", + "bed_model": "Prusa XL_bed.stl", + "bed_texture": "Prusa XL 5T.svg", + "hotend_model": "", + "default_materials": "Prusa Generic PLA @XL 5T;Prusament PLA @XL 5T;Prusament rPLA @XL 5T;Prusa Generic PETG @XL 5T;Prusament PETG @XL 5T;Prusa Generic ABS @XL 5T;Prusament ASA @XL 5T;Prusament PC Blend @XL 5T;Prusament PC-CF @XL 5T;Prusament PVB @XL 5T;Prusament PA-CF @XL 5T" +} diff --git a/resources/profiles/Prusa/machine/fdm_machine_common_xl.json b/resources/profiles/Prusa/machine/fdm_machine_common_xl.json new file mode 100644 index 0000000000..7c917d151a --- /dev/null +++ b/resources/profiles/Prusa/machine/fdm_machine_common_xl.json @@ -0,0 +1,114 @@ +{ + "type": "machine", + "name": "fdm_machine_common_xl", + "from": "system", + "inherits": "fdm_machine_common", + "instantiation": "false", + "gcode_flavor": "marlin2", + "extruder_clearance_radius": "67", + "extruder_clearance_height_to_rod": "21", + "extruder_clearance_height_to_lid": "21", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "max_layer_height": "0.3", + "min_layer_height": "0.07", + "bed_exclude_area": [ + "0x0" + ], + "printable_area": [ + "0x0", + "360x0", + "360x360", + "0x360" + ], + "machine_max_acceleration_e": [ + "2500", + "2500" + ], + "machine_max_acceleration_extruding": [ + "4000", + "4000" + ], + "machine_max_acceleration_retracting": [ + "1200", + "1200" + ], + "machine_max_acceleration_x": [ + "7000", + "7000" + ], + "machine_max_acceleration_y": [ + "7000", + "7000" + ], + "machine_max_acceleration_z": [ + "200", + "200" + ], + "machine_max_acceleration_travel": [ + "5000", + "5000" + ], + "machine_max_speed_e": [ + "100", + "100" + ], + "machine_max_speed_x": [ + "400", + "400" + ], + "machine_max_speed_y": [ + "400", + "400" + ], + "machine_max_speed_z": [ + "12", + "12" + ], + "machine_max_jerk_e": [ + "10", + "10" + ], + "machine_max_jerk_x": [ + "8", + "8" + ], + "machine_max_jerk_y": [ + "8", + "8" + ], + "machine_max_jerk_z": [ + "2", + "2" + ], + "retraction_length": "0.8", + "retraction_speed": "35", + "detraction_speed": "25", + "retraction_minimum_travel": "1.5", + "retract_when_changing_layer": "1", + "wipe": "1", + "retract_before_wipe": "80%", + "retract_lift_below": "1.5", + "z_hop_types": "Auto Lift", + "host_type": "prusalink", + "printable_height": "360", + "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", + "machine_pause_gcode": "M601", + "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", + "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER", + "scan_first_layer": "0", + "nozzle_type": "hardened_steel", + "auxiliary_fan": "0", + "thumbnails": [ + "16x16/QOI", + "313x173/QOI", + "440x240/QOI", + "480x240/QOI", + "640x480/PNG" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json b/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json new file mode 100644 index 0000000000..587d416602 --- /dev/null +++ b/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json @@ -0,0 +1,22 @@ +{ + "type": "machine", + "name": "fdm_machine_common_xl_5t", + "from": "system", + "inherits": "fdm_machine_common_xl", + "instantiation": "false", + "gcode_flavor": "marlin2", + "purge_in_prime_tower": "0", + "single_extruder_multi_material": "0", + "extruder_clearance_radius": "67", + "extruder_clearance_height_to_rod": "21", + "extruder_clearance_height_to_lid": "21", + "printer_variant": "0.4", + "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", + "machine_pause_gcode": "M601", + "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", + "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER" + +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.05mm Detail @Prusa XL 5T 0.25.json b/resources/profiles/Prusa/process/0.05mm Detail @Prusa XL 5T 0.25.json new file mode 100644 index 0000000000..3eac921d29 --- /dev/null +++ b/resources/profiles/Prusa/process/0.05mm Detail @Prusa XL 5T 0.25.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.05mm Detail @Prusa XL 5T 0.25", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.05", + "wall_loops": "3", + "top_shell_layers": "13", + "bottom_shell_layers": "10", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "95%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.1", + "support_top_z_distance": "0.1", + "support_bottom_z_distance": "0.1", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "150%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "65", + "small_perimeter_speed": "40", + "outer_wall_speed": "40", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "100", + "top_surface_speed": "60", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "25", + "gap_infill_speed": "40", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "1500", + "outer_wall_acceleration": "800", + "inner_wall_acceleration": "1200", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2000", + "sparse_infill_acceleration": "2500", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "4000", + "line_width": "0.27", + "initial_layer_line_width": "0.32", + "inner_wall_line_width": "0.25", + "outer_wall_line_width": "0.25", + "sparse_infill_line_width": "0.25", + "internal_solid_infill_line_width": "0.25", + "top_surface_line_width": "0.27", + "support_line_width": "0.25", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.07mm Detail @Prusa XL 5T 0.25.json b/resources/profiles/Prusa/process/0.07mm Detail @Prusa XL 5T 0.25.json new file mode 100644 index 0000000000..b30595bd93 --- /dev/null +++ b/resources/profiles/Prusa/process/0.07mm Detail @Prusa XL 5T 0.25.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.07mm Detail @Prusa XL 5T 0.25", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.07", + "wall_loops": "3", + "top_shell_layers": "11", + "bottom_shell_layers": "9", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "95%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.1", + "support_top_z_distance": "0.09", + "support_bottom_z_distance": "0.09", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "150%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "65", + "small_perimeter_speed": "40", + "outer_wall_speed": "40", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "140", + "top_surface_speed": "70", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "30", + "gap_infill_speed": "40", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "1500", + "outer_wall_acceleration": "800", + "inner_wall_acceleration": "1200", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2000", + "sparse_infill_acceleration": "2500", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "4000", + "line_width": "0.27", + "initial_layer_line_width": "0.32", + "inner_wall_line_width": "0.25", + "outer_wall_line_width": "0.25", + "sparse_infill_line_width": "0.25", + "internal_solid_infill_line_width": "0.25", + "top_surface_line_width": "0.27", + "support_line_width": "0.25", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.10mm FastDetail @Prusa XL 5T 0.4.json b/resources/profiles/Prusa/process/0.10mm FastDetail @Prusa XL 5T 0.4.json new file mode 100644 index 0000000000..e1149bb214 --- /dev/null +++ b/resources/profiles/Prusa/process/0.10mm FastDetail @Prusa XL 5T 0.4.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm FastDetail @Prusa XL 5T 0.4", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.1", + "wall_loops": "3", + "top_shell_layers": "8", + "bottom_shell_layers": "7", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.15", + "support_top_z_distance": "0.17", + "support_bottom_z_distance": "0.17", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "140", + "small_perimeter_speed": "140", + "outer_wall_speed": "140", + "sparse_infill_speed": "140", + "internal_solid_infill_speed": "200", + "top_surface_speed": "100", + "support_speed": "120", + "support_interface_speed": "50", + "bridge_speed": "40", + "gap_infill_speed": "120", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2500", + "outer_wall_acceleration": "2000", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.4", + "support_line_width": "0.36", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.10mm Structural @Prusa XL 5T 0.5.json b/resources/profiles/Prusa/process/0.10mm Structural @Prusa XL 5T 0.5.json new file mode 100644 index 0000000000..4c463eaa2e --- /dev/null +++ b/resources/profiles/Prusa/process/0.10mm Structural @Prusa XL 5T 0.5.json @@ -0,0 +1,68 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm Structural @Prusa XL 5T 0.5", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.1", + "wall_loops": "2", + "top_shell_layers": "8", + "bottom_shell_layers": "7", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "infill_anchor_max": "15", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.22", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "70", + "small_perimeter_speed": "40", + "outer_wall_speed": "40", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "70", + "support_speed": "75", + "support_interface_speed": "75%", + "bridge_speed": "30", + "gap_infill_speed": "40", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "3000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.55", + "initial_layer_line_width": "0.55", + "inner_wall_line_width": "0.5", + "outer_wall_line_width": "0.5", + "sparse_infill_line_width": "0.5", + "internal_solid_infill_line_width": "0.5", + "top_surface_line_width": "0.45", + "support_line_width": "0.4", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.12mm Speed @Prusa XL 5T 0.25.json b/resources/profiles/Prusa/process/0.12mm Speed @Prusa XL 5T 0.25.json new file mode 100644 index 0000000000..171c4eb15d --- /dev/null +++ b/resources/profiles/Prusa/process/0.12mm Speed @Prusa XL 5T 0.25.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Speed @Prusa XL 5T 0.25", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.12", + "wall_loops": "3", + "top_shell_layers": "9", + "bottom_shell_layers": "6", + "top_shell_thickness": "0.6", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "95%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.08", + "support_top_z_distance": "0.09", + "support_bottom_z_distance": "0.09", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "150%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "120", + "small_perimeter_speed": "120", + "outer_wall_speed": "120", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "140", + "top_surface_speed": "60", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "30", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "3000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "4000", + "line_width": "0.27", + "initial_layer_line_width": "0.32", + "inner_wall_line_width": "0.27", + "outer_wall_line_width": "0.27", + "sparse_infill_line_width": "0.27", + "internal_solid_infill_line_width": "0.27", + "top_surface_line_width": "0.27", + "support_line_width": "0.25", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.12mm Structural @Prusa XL 5T 0.25.json b/resources/profiles/Prusa/process/0.12mm Structural @Prusa XL 5T 0.25.json new file mode 100644 index 0000000000..d1cbccfcde --- /dev/null +++ b/resources/profiles/Prusa/process/0.12mm Structural @Prusa XL 5T 0.25.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Structural @Prusa XL 5T 0.25", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.12", + "wall_loops": "3", + "top_shell_layers": "9", + "bottom_shell_layers": "7", + "top_shell_thickness": "0.6", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "95%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.08", + "support_top_z_distance": "0.09", + "support_bottom_z_distance": "0.09", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "150%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "70", + "small_perimeter_speed": "40", + "outer_wall_speed": "40", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "140", + "top_surface_speed": "60", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "30", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1000", + "inner_wall_acceleration": "1500", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "2500", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "4000", + "line_width": "0.27", + "initial_layer_line_width": "0.32", + "inner_wall_line_width": "0.27", + "outer_wall_line_width": "0.27", + "sparse_infill_line_width": "0.27", + "internal_solid_infill_line_width": "0.27", + "top_surface_line_width": "0.27", + "support_line_width": "0.25", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.12mm Structural @Prusa XL 5T 0.3.json b/resources/profiles/Prusa/process/0.12mm Structural @Prusa XL 5T 0.3.json new file mode 100644 index 0000000000..57ce297d8c --- /dev/null +++ b/resources/profiles/Prusa/process/0.12mm Structural @Prusa XL 5T 0.3.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Structural @Prusa XL 5T 0.3", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.12", + "wall_loops": "3", + "top_shell_layers": "7", + "bottom_shell_layers": "6", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.12", + "support_top_z_distance": "0.12", + "support_bottom_z_distance": "0.12", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "100%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "40", + "outer_wall_speed": "40", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "200", + "top_surface_speed": "40", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "30", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "1500", + "outer_wall_acceleration": "1200", + "inner_wall_acceleration": "1500", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "3000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.34", + "initial_layer_line_width": "0.4", + "inner_wall_line_width": "0.34", + "outer_wall_line_width": "0.34", + "sparse_infill_line_width": "0.34", + "internal_solid_infill_line_width": "0.34", + "top_surface_line_width": "0.3", + "support_line_width": "0.3", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.3 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.15mm Speed @Prusa XL 5T 0.25.json b/resources/profiles/Prusa/process/0.15mm Speed @Prusa XL 5T 0.25.json new file mode 100644 index 0000000000..1f99efe994 --- /dev/null +++ b/resources/profiles/Prusa/process/0.15mm Speed @Prusa XL 5T 0.25.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Speed @Prusa XL 5T 0.25", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.15", + "wall_loops": "3", + "top_shell_layers": "6", + "bottom_shell_layers": "7", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "95%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.08", + "support_top_z_distance": "0.09", + "support_bottom_z_distance": "0.09", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "150%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "120", + "small_perimeter_speed": "120", + "outer_wall_speed": "120", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "140", + "top_surface_speed": "60", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "30", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "3000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "4000", + "line_width": "0.27", + "initial_layer_line_width": "0.32", + "inner_wall_line_width": "0.27", + "outer_wall_line_width": "0.27", + "sparse_infill_line_width": "0.27", + "internal_solid_infill_line_width": "0.27", + "top_surface_line_width": "0.27", + "support_line_width": "0.25", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.15mm Speed @Prusa XL 5T 0.4.json b/resources/profiles/Prusa/process/0.15mm Speed @Prusa XL 5T 0.4.json new file mode 100644 index 0000000000..b371e07e86 --- /dev/null +++ b/resources/profiles/Prusa/process/0.15mm Speed @Prusa XL 5T 0.4.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Speed @Prusa XL 5T 0.4", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.15", + "wall_loops": "2", + "top_shell_layers": "6", + "bottom_shell_layers": "5", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.15", + "support_top_z_distance": "0.17", + "support_bottom_z_distance": "0.17", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "170", + "small_perimeter_speed": "170", + "outer_wall_speed": "170", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "100", + "support_speed": "120", + "support_interface_speed": "50", + "bridge_speed": "45", + "gap_infill_speed": "120", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2500", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "3000", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "3500", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.42", + "support_line_width": "0.36", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.25.json b/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.25.json new file mode 100644 index 0000000000..9b7cbf961d --- /dev/null +++ b/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.25.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Structural @Prusa XL 5T 0.25", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.15", + "wall_loops": "3", + "top_shell_layers": "6", + "bottom_shell_layers": "5", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "95%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.08", + "support_top_z_distance": "0.09", + "support_bottom_z_distance": "0.09", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "150%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "70", + "small_perimeter_speed": "40", + "outer_wall_speed": "40", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "140", + "top_surface_speed": "60", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "30", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1000", + "inner_wall_acceleration": "1500", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "3000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "4000", + "line_width": "0.27", + "initial_layer_line_width": "0.32", + "inner_wall_line_width": "0.27", + "outer_wall_line_width": "0.27", + "sparse_infill_line_width": "0.27", + "internal_solid_infill_line_width": "0.27", + "top_surface_line_width": "0.27", + "support_line_width": "0.25", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.25 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.4.json b/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.4.json new file mode 100644 index 0000000000..69ad3b4487 --- /dev/null +++ b/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.4.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Structural @Prusa XL 5T 0.4", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.15", + "wall_loops": "2", + "top_shell_layers": "6", + "bottom_shell_layers": "5", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.15", + "support_top_z_distance": "0.17", + "support_bottom_z_distance": "0.17", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "110", + "internal_solid_infill_speed": "140", + "top_surface_speed": "75", + "support_speed": "120", + "support_interface_speed": "50", + "bridge_speed": "45", + "gap_infill_speed": "65", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "90%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.42", + "support_line_width": "0.36", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.5.json b/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.5.json new file mode 100644 index 0000000000..fb209d319c --- /dev/null +++ b/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.5.json @@ -0,0 +1,68 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Structural @Prusa XL 5T 0.5", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.15", + "wall_loops": "2", + "top_shell_layers": "6", + "bottom_shell_layers": "5", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "infill_anchor_max": "15", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.22", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "180", + "top_surface_speed": "70", + "support_speed": "75", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "3000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.55", + "initial_layer_line_width": "0.55", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.55", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.5", + "support_line_width": "0.4", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.6.json b/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.6.json new file mode 100644 index 0000000000..24b3b29311 --- /dev/null +++ b/resources/profiles/Prusa/process/0.15mm Structural @Prusa XL 5T 0.6.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Structural @Prusa XL 5T 0.6", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.15", + "wall_loops": "2", + "top_shell_layers": "6", + "bottom_shell_layers": "5", + "top_shell_thickness": "0.9", + "bottom_shell_thickness": "0.6", + "sparse_infill_density": "20%", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.22", + "support_bottom_z_distance": "0.22", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.25", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_branch_diameter_double_wall": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "105", + "internal_solid_infill_speed": "160", + "top_surface_speed": "70", + "support_speed": "110", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "75", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "90%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.68", + "initial_layer_line_width": "0.68", + "inner_wall_line_width": "0.6", + "outer_wall_line_width": "0.6", + "sparse_infill_line_width": "0.6", + "internal_solid_infill_line_width": "0.6", + "top_surface_line_width": "0.5", + "support_line_width": "0.55", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.16mm Speed @Prusa XL 5T 0.3.json b/resources/profiles/Prusa/process/0.16mm Speed @Prusa XL 5T 0.3.json new file mode 100644 index 0000000000..e076cd44fa --- /dev/null +++ b/resources/profiles/Prusa/process/0.16mm Speed @Prusa XL 5T 0.3.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Speed @Prusa XL 5T 0.3", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.16", + "wall_loops": "3", + "top_shell_layers": "6", + "bottom_shell_layers": "5", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.12", + "support_top_z_distance": "0.12", + "support_bottom_z_distance": "0.12", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "100%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "140", + "small_perimeter_speed": "120", + "outer_wall_speed": "120", + "sparse_infill_speed": "120", + "internal_solid_infill_speed": "200", + "top_surface_speed": "50", + "support_speed": "100", + "support_interface_speed": "45%", + "bridge_speed": "30", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.34", + "initial_layer_line_width": "0.4", + "inner_wall_line_width": "0.34", + "outer_wall_line_width": "0.34", + "sparse_infill_line_width": "0.34", + "internal_solid_infill_line_width": "0.34", + "top_surface_line_width": "0.3", + "support_line_width": "0.3", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.3 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.16mm Structural @Prusa XL 5T 0.3.json b/resources/profiles/Prusa/process/0.16mm Structural @Prusa XL 5T 0.3.json new file mode 100644 index 0000000000..c87fd0fbb6 --- /dev/null +++ b/resources/profiles/Prusa/process/0.16mm Structural @Prusa XL 5T 0.3.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Structural @Prusa XL 5T 0.3", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.16", + "wall_loops": "3", + "top_shell_layers": "6", + "bottom_shell_layers": "5", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.12", + "support_top_z_distance": "0.12", + "support_bottom_z_distance": "0.12", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "100%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "120", + "internal_solid_infill_speed": "200", + "top_surface_speed": "50", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "30", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.34", + "initial_layer_line_width": "0.4", + "inner_wall_line_width": "0.34", + "outer_wall_line_width": "0.34", + "sparse_infill_line_width": "0.34", + "internal_solid_infill_line_width": "0.34", + "top_surface_line_width": "0.3", + "support_line_width": "0.3", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.3 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.3.json b/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.3.json new file mode 100644 index 0000000000..429f8d2c07 --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.3.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Speed @Prusa XL 5T 0.3", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.2", + "wall_loops": "3", + "top_shell_layers": "5", + "bottom_shell_layers": "4", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "1", + "brim_object_gap": "0", + "support_threshold_angle": "40", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.12", + "support_top_z_distance": "0.12", + "support_bottom_z_distance": "0.12", + "support_base_pattern_spacing": "1", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "100%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "140", + "small_perimeter_speed": "120", + "outer_wall_speed": "120", + "sparse_infill_speed": "120", + "internal_solid_infill_speed": "200", + "top_surface_speed": "50", + "support_speed": "100", + "support_interface_speed": "45%", + "bridge_speed": "30", + "gap_infill_speed": "50", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.34", + "initial_layer_line_width": "0.4", + "inner_wall_line_width": "0.34", + "outer_wall_line_width": "0.34", + "sparse_infill_line_width": "0.34", + "internal_solid_infill_line_width": "0.34", + "top_surface_line_width": "0.3", + "support_line_width": "0.3", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0", + "compatible_printers": [ + "Prusa XL 5T 0.3 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.4.json b/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.4.json new file mode 100644 index 0000000000..d6e23c2a08 --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.4.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Speed @Prusa XL 5T 0.4", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.2", + "wall_loops": "2", + "top_shell_layers": "5", + "bottom_shell_layers": "4", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.15", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "170", + "small_perimeter_speed": "170", + "outer_wall_speed": "170", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "100", + "support_speed": "110", + "support_interface_speed": "50%", + "bridge_speed": "50", + "gap_infill_speed": "120", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "90%", + "default_acceleration": "2500", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "3000", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "4000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.42", + "support_line_width": "0.36", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.5.json b/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.5.json new file mode 100644 index 0000000000..01e10672ef --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.5.json @@ -0,0 +1,68 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Speed @Prusa XL 5T 0.5", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.2", + "wall_loops": "2", + "top_shell_layers": "5", + "bottom_shell_layers": "4", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "infill_anchor_max": "15", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.22", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "140", + "small_perimeter_speed": "140", + "outer_wall_speed": "140", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "135", + "top_surface_speed": "70", + "support_speed": "120", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "70", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2500", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "3000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.55", + "initial_layer_line_width": "0.55", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.55", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.5", + "support_line_width": "0.4", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.6.json b/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.6.json new file mode 100644 index 0000000000..e44f3cb46b --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Speed @Prusa XL 5T 0.6.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Speed @Prusa XL 5T 0.6", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.2", + "wall_loops": "2", + "top_shell_layers": "5", + "bottom_shell_layers": "4", + "top_shell_thickness": "0.9", + "bottom_shell_thickness": "0.6", + "sparse_infill_density": "20%", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.22", + "support_bottom_z_distance": "0.22", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.25", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_branch_diameter_double_wall": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "120", + "small_perimeter_speed": "120", + "outer_wall_speed": "120", + "sparse_infill_speed": "120", + "internal_solid_infill_speed": "110", + "top_surface_speed": "70", + "support_speed": "110", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "75", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "50", + "default_acceleration": "2500", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "3000", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.68", + "initial_layer_line_width": "0.68", + "inner_wall_line_width": "0.62", + "outer_wall_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "top_surface_line_width": "0.5", + "support_line_width": "0.55", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.4.json b/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.4.json new file mode 100644 index 0000000000..147386cef3 --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.4.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Structural @Prusa XL 5T 0.4", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.2", + "wall_loops": "2", + "top_shell_layers": "5", + "bottom_shell_layers": "4", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.15", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "120", + "internal_solid_infill_speed": "140", + "top_surface_speed": "75", + "support_speed": "120", + "support_interface_speed": "50", + "bridge_speed": "50", + "gap_infill_speed": "65", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "90%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.42", + "support_line_width": "0.36", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.5.json b/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.5.json new file mode 100644 index 0000000000..f761f98424 --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.5.json @@ -0,0 +1,68 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Structural @Prusa XL 5T 0.5", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.2", + "wall_loops": "2", + "top_shell_layers": "5", + "bottom_shell_layers": "4", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "infill_anchor_max": "15", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.22", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "120", + "top_surface_speed": "70", + "support_speed": "75", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "70", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.55", + "initial_layer_line_width": "0.55", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.55", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.5", + "support_line_width": "0.4", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.6.json b/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.6.json new file mode 100644 index 0000000000..a9951b4632 --- /dev/null +++ b/resources/profiles/Prusa/process/0.20mm Structural @Prusa XL 5T 0.6.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Structural @Prusa XL 5T 0.6", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.2", + "wall_loops": "2", + "top_shell_layers": "5", + "bottom_shell_layers": "4", + "top_shell_thickness": "0.9", + "bottom_shell_thickness": "0.6", + "sparse_infill_density": "20%", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.22", + "support_bottom_z_distance": "0.22", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.25", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_branch_diameter_double_wall": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "120", + "internal_solid_infill_speed": "110", + "top_surface_speed": "70", + "support_speed": "110", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "75", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "90%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.68", + "initial_layer_line_width": "0.68", + "inner_wall_line_width": "0.6", + "outer_wall_line_width": "0.6", + "sparse_infill_line_width": "0.6", + "internal_solid_infill_line_width": "0.6", + "top_surface_line_width": "0.5", + "support_line_width": "0.55", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.25mm Speed @Prusa XL 5T 0.5.json b/resources/profiles/Prusa/process/0.25mm Speed @Prusa XL 5T 0.5.json new file mode 100644 index 0000000000..f55bd6d6d8 --- /dev/null +++ b/resources/profiles/Prusa/process/0.25mm Speed @Prusa XL 5T 0.5.json @@ -0,0 +1,68 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.25mm Speed @Prusa XL 5T 0.5", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.25", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "infill_anchor_max": "15", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.22", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "140", + "small_perimeter_speed": "140", + "outer_wall_speed": "140", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "110", + "top_surface_speed": "70", + "support_speed": "120", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "70", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2500", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "3000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.55", + "initial_layer_line_width": "0.55", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.55", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.5", + "support_line_width": "0.4", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.25mm Speed @Prusa XL 5T 0.6.json b/resources/profiles/Prusa/process/0.25mm Speed @Prusa XL 5T 0.6.json new file mode 100644 index 0000000000..678d72f718 --- /dev/null +++ b/resources/profiles/Prusa/process/0.25mm Speed @Prusa XL 5T 0.6.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.25mm Speed @Prusa XL 5T 0.6", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.25", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0.9", + "bottom_shell_thickness": "0.6", + "sparse_infill_density": "20%", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.25", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_branch_diameter_double_wall": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "80", + "outer_wall_speed": "80", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "90", + "top_surface_speed": "60", + "support_speed": "80", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "70", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "50", + "default_acceleration": "2500", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "3000", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.68", + "initial_layer_line_width": "0.68", + "inner_wall_line_width": "0.68", + "outer_wall_line_width": "0.68", + "sparse_infill_line_width": "0.68", + "internal_solid_infill_line_width": "0.68", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.4.json b/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.4.json new file mode 100644 index 0000000000..a5d0d3eef0 --- /dev/null +++ b/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.4.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.25mm Structural @Prusa XL 5T 0.4", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.25", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.15", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.2", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "120", + "internal_solid_infill_speed": "140", + "top_surface_speed": "75", + "support_speed": "120", + "support_interface_speed": "50", + "bridge_speed": "50", + "gap_infill_speed": "65", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "90%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.42", + "support_line_width": "0.36", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.5.json b/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.5.json new file mode 100644 index 0000000000..3d39489dd7 --- /dev/null +++ b/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.5.json @@ -0,0 +1,68 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.25mm Structural @Prusa XL 5T 0.5", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.25", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0.7", + "bottom_shell_thickness": "0.5", + "sparse_infill_density": "15%", + "infill_anchor": "2", + "infill_anchor_max": "15", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.22", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "110", + "top_surface_speed": "70", + "support_speed": "75", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "70", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "25", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "80%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "2500", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.55", + "initial_layer_line_width": "0.55", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.55", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.5", + "support_line_width": "0.4", + "infill_wall_overlap": "15%", + "resolution": "0.008", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.5 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.6.json b/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.6.json new file mode 100644 index 0000000000..44e36b1d88 --- /dev/null +++ b/resources/profiles/Prusa/process/0.25mm Structural @Prusa XL 5T 0.6.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.25mm Structural @Prusa XL 5T 0.6", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.25", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0.9", + "bottom_shell_thickness": "0.6", + "sparse_infill_density": "20%", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.25", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_branch_diameter_double_wall": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "80", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "95", + "top_surface_speed": "70", + "support_speed": "80", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "70", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "90%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.68", + "initial_layer_line_width": "0.68", + "inner_wall_line_width": "0.68", + "outer_wall_line_width": "0.68", + "sparse_infill_line_width": "0.68", + "internal_solid_infill_line_width": "0.68", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.30mm Detail @Prusa XL 5T 0.8.json b/resources/profiles/Prusa/process/0.30mm Detail @Prusa XL 5T 0.8.json new file mode 100644 index 0000000000..70c48a8b27 --- /dev/null +++ b/resources/profiles/Prusa/process/0.30mm Detail @Prusa XL 5T 0.8.json @@ -0,0 +1,71 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Detail @Prusa XL 5T 0.8", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.3", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "1.2", + "bottom_shell_thickness": "0.8", + "thick_bridges": "1", + "seam_position": "nearest", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.2", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.35", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "70", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "50", + "top_surface_speed": "35", + "support_speed": "65", + "support_interface_speed": "85%", + "bridge_speed": "22", + "gap_infill_speed": "40", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.9", + "initial_layer_line_width": "1", + "inner_wall_line_width": "0.9", + "outer_wall_line_width": "0.9", + "sparse_infill_line_width": "0.9", + "internal_solid_infill_line_width": "0.9", + "top_surface_line_width": "0.7", + "support_line_width": "0.65", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.32mm Speed @Prusa XL 5T 0.6.json b/resources/profiles/Prusa/process/0.32mm Speed @Prusa XL 5T 0.6.json new file mode 100644 index 0000000000..bd6799243e --- /dev/null +++ b/resources/profiles/Prusa/process/0.32mm Speed @Prusa XL 5T 0.6.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.32mm Speed @Prusa XL 5T 0.6", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.32", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0.9", + "bottom_shell_thickness": "0.6", + "sparse_infill_density": "20%", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.25", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_branch_diameter_double_wall": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "70", + "small_perimeter_speed": "70", + "outer_wall_speed": "70", + "sparse_infill_speed": "100", + "internal_solid_infill_speed": "70", + "top_surface_speed": "60", + "support_speed": "70", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "65", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "50", + "default_acceleration": "2500", + "outer_wall_acceleration": "2500", + "inner_wall_acceleration": "3000", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.68", + "initial_layer_line_width": "0.68", + "inner_wall_line_width": "0.68", + "outer_wall_line_width": "0.68", + "sparse_infill_line_width": "0.68", + "internal_solid_infill_line_width": "0.68", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.32mm Structural @Prusa XL 5T 0.6.json b/resources/profiles/Prusa/process/0.32mm Structural @Prusa XL 5T 0.6.json new file mode 100644 index 0000000000..78980e2136 --- /dev/null +++ b/resources/profiles/Prusa/process/0.32mm Structural @Prusa XL 5T 0.6.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.32mm Structural @Prusa XL 5T 0.6", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.32", + "wall_loops": "2", + "top_shell_layers": "5", + "bottom_shell_layers": "4", + "top_shell_thickness": "0.9", + "bottom_shell_thickness": "0.6", + "sparse_infill_density": "20%", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.25", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.25", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_branch_diameter_double_wall": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "70", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "70", + "internal_solid_infill_speed": "70", + "top_surface_speed": "70", + "support_speed": "80", + "support_interface_speed": "75%", + "bridge_speed": "40", + "gap_infill_speed": "70", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "90%", + "default_acceleration": "2500", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2500", + "top_surface_acceleration": "1500", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1500", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.68", + "initial_layer_line_width": "0.68", + "inner_wall_line_width": "0.68", + "outer_wall_line_width": "0.68", + "sparse_infill_line_width": "0.68", + "internal_solid_infill_line_width": "0.68", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.40mm Quality @Prusa XL 5T 0.8.json b/resources/profiles/Prusa/process/0.40mm Quality @Prusa XL 5T 0.8.json new file mode 100644 index 0000000000..7e407ebb9a --- /dev/null +++ b/resources/profiles/Prusa/process/0.40mm Quality @Prusa XL 5T 0.8.json @@ -0,0 +1,71 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.40mm Quality @Prusa XL 5T 0.8", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.4", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "1.2", + "bottom_shell_thickness": "0.8", + "thick_bridges": "1", + "seam_position": "nearest", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.2", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.35", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "50", + "small_perimeter_speed": "45", + "outer_wall_speed": "45", + "sparse_infill_speed": "90", + "internal_solid_infill_speed": "45", + "top_surface_speed": "35", + "support_speed": "50", + "support_interface_speed": "85%", + "bridge_speed": "22", + "gap_infill_speed": "35", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.9", + "initial_layer_line_width": "1", + "inner_wall_line_width": "0.9", + "outer_wall_line_width": "0.9", + "sparse_infill_line_width": "0.9", + "internal_solid_infill_line_width": "0.9", + "top_surface_line_width": "0.75", + "support_line_width": "0.65", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.55mm Draft @Prusa XL 5T 0.8.json b/resources/profiles/Prusa/process/0.55mm Draft @Prusa XL 5T 0.8.json new file mode 100644 index 0000000000..0e51ca2592 --- /dev/null +++ b/resources/profiles/Prusa/process/0.55mm Draft @Prusa XL 5T 0.8.json @@ -0,0 +1,71 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.55mm Draft @Prusa XL 5T 0.8", + "from": "system", + "instantiation": "true", + "inherits": "process_common_xl_5t", + "inital_layer_height": "0.2", + "layer_height": "0.55", + "wall_loops": "2", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "1.2", + "bottom_shell_thickness": "0.8", + "thick_bridges": "1", + "seam_position": "nearest", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "infill_anchor": "2.5", + "infill_anchor_max": "20", + "brim_object_gap": "0.1", + "support_threshold_angle": "40", + "raft_first_layer_density": "80%", + "raft_first_layer_expansion": "3.5", + "raft_contact_distance": "0.2", + "support_top_z_distance": "0.25", + "support_bottom_z_distance": "0.25", + "support_base_pattern_spacing": "2", + "support_interface_top_layers": "5", + "support_interface_spacing": "0.35", + "support_object_xy_distance": "80%", + "tree_support_bramch_diameter_angle": "5", + "tree_support_tip_diameter": "0.8", + "inner_wall_speed": "40", + "small_perimeter_speed": "35", + "outer_wall_speed": "35", + "sparse_infill_speed": "55", + "internal_solid_infill_speed": "35", + "top_surface_speed": "30", + "support_speed": "35", + "support_interface_speed": "85%", + "bridge_speed": "22", + "gap_infill_speed": "30", + "overhang_1_4_speed": "15", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "80%", + "default_acceleration": "2000", + "outer_wall_acceleration": "1500", + "inner_wall_acceleration": "2000", + "top_surface_acceleration": "1000", + "internal_solid_infill_acceleration": "3000", + "sparse_infill_acceleration": "4000", + "bridge_acceleration": "1000", + "initial_layer_acceleration": "500", + "travel_acceleration": "5000", + "line_width": "0.9", + "initial_layer_line_width": "1", + "inner_wall_line_width": "1", + "outer_wall_line_width": "1", + "sparse_infill_line_width": "0.9", + "internal_solid_infill_line_width": "0.9", + "top_surface_line_width": "0.75", + "support_line_width": "0.65", + "infill_wall_overlap": "15%", + "resolution": "0.0125", + "elefant_foot_compensation": "0.2", + "compatible_printers": [ + "Prusa XL 5T 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/process_common_xl_5t.json b/resources/profiles/Prusa/process/process_common_xl_5t.json new file mode 100644 index 0000000000..abcc096c6c --- /dev/null +++ b/resources/profiles/Prusa/process/process_common_xl_5t.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "name": "process_common_xl_5t", + "from": "system", + "instantiation": "false", + "inherits": "process_common_xl", + "enable_prime_tower": "1", + "wipe_tower_cone_angle": "25", + "wipe_tower_extra_spacing": "150%", + "wipe_tower_rotation_angle": "90" +} \ No newline at end of file From 58f7af3356c7d6dc905b2233e5a14fa18b0fbfc5 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 13 Jul 2024 16:35:36 +0800 Subject: [PATCH 027/151] support Prusa XL --- src/libslic3r/GCode.cpp | 18 +++++++++--------- src/libslic3r/PrintConfig.cpp | 6 +++--- src/libslic3r/libslic3r.h | 3 +++ src/slic3r/GUI/Plater.cpp | 11 +++++------ src/slic3r/GUI/Tab.cpp | 2 +- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 0236125186..4deaa2671f 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1105,14 +1105,14 @@ void GCode::PlaceholderParserIntegration::init(const GCodeWriter &writer) const std::vector &extruders = writer.extruders(); if (! extruders.empty()) { this->num_extruders = extruders.back().id() + 1; - this->e_retracted.assign(num_extruders, 0); - this->e_restart_extra.assign(num_extruders, 0); + this->e_retracted.assign(MAXIMUM_EXTRUDER_NUMBER, 0); + this->e_restart_extra.assign(MAXIMUM_EXTRUDER_NUMBER, 0); this->opt_e_retracted = new ConfigOptionFloats(e_retracted); this->opt_e_restart_extra = new ConfigOptionFloats(e_restart_extra); this->output_config.set_key_value("e_retracted", this->opt_e_retracted); this->output_config.set_key_value("e_restart_extra", this->opt_e_restart_extra); if (! writer.config.use_relative_e_distances) { - e_position.assign(num_extruders, 0); + e_position.assign(MAXIMUM_EXTRUDER_NUMBER, 0); opt_e_position = new ConfigOptionFloats(e_position); this->output_config.set_key_value("e_position", opt_e_position); } @@ -1144,8 +1144,8 @@ void GCode::PlaceholderParserIntegration::update_from_gcodewriter(const GCodeWri if (this->num_extruders > 0) { const std::vector &extruders = writer.extruders(); assert(! extruders.empty() && num_extruders == extruders.back().id() + 1); - this->e_retracted.assign(num_extruders, 0); - this->e_restart_extra.assign(num_extruders, 0); + this->e_retracted.assign(MAXIMUM_EXTRUDER_NUMBER, 0); + this->e_restart_extra.assign(MAXIMUM_EXTRUDER_NUMBER, 0); this->opt_extruded_volume->values.assign(num_extruders, 0); this->opt_extruded_weight->values.assign(num_extruders, 0); double total_volume = 0.; @@ -1165,7 +1165,7 @@ void GCode::PlaceholderParserIntegration::update_from_gcodewriter(const GCodeWri opt_e_retracted->values = this->e_retracted; opt_e_restart_extra->values = this->e_restart_extra; if (! writer.config.use_relative_e_distances) { - this->e_position.assign(num_extruders, 0); + this->e_position.assign(MAXIMUM_EXTRUDER_NUMBER, 0); for (const Extruder &e : extruders) this->e_position[e.id()] = e.position(); this->opt_e_position->values = this->e_position; @@ -1179,11 +1179,11 @@ void GCode::PlaceholderParserIntegration::validate_output_vector_variables() if (this->opt_position->values.size() != 3) throw Slic3r::RuntimeError("\"position\" output variable must not be resized by the script."); if (this->num_extruders > 0) { - if (this->opt_e_position && this->opt_e_position->values.size() != this->num_extruders) + if (this->opt_e_position && this->opt_e_position->values.size() != MAXIMUM_EXTRUDER_NUMBER) throw Slic3r::RuntimeError("\"e_position\" output variable must not be resized by the script."); - if (this->opt_e_retracted->values.size() != this->num_extruders) + if (this->opt_e_retracted->values.size() != MAXIMUM_EXTRUDER_NUMBER) throw Slic3r::RuntimeError("\"e_retracted\" output variable must not be resized by the script."); - if (this->opt_e_restart_extra->values.size() != this->num_extruders) + if (this->opt_e_restart_extra->values.size() != MAXIMUM_EXTRUDER_NUMBER) throw Slic3r::RuntimeError("\"e_restart_extra\" output variable must not be resized by the script."); } } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index d6f5cd278c..e738625f43 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -7310,9 +7310,9 @@ OtherSlicingStatesConfigDef::OtherSlicingStatesConfigDef() // def->label = L("Initial filament type"); // def->tooltip = L("String containing filament type of the first used extruder."); - // def = this->add("has_single_extruder_multi_material_priming", coBool); - // def->label = L("Has single extruder MM priming"); - // def->tooltip = L("Are the extra multi-material priming regions used in this print?"); + def = this->add("has_single_extruder_multi_material_priming", coBool); + def->label = L("Has single extruder MM priming"); + def->tooltip = L("Are the extra multi-material priming regions used in this print?"); new_def("initial_no_support_extruder", coInt, "Initial no support extruder", "Zero-based index of the first extruder used for printing without support. Same as initial_no_support_tool."); new_def("in_head_wrap_detect_zone", coBool, "In head wrap detect zone", "Indicates if the first layer overlaps with the head wrap zone."); diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index 3e71ada5ab..798ea77d76 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -61,6 +61,9 @@ static constexpr double SCALING_FACTOR_INTERNAL = 0.000001; static constexpr double SCALING_FACTOR_INTERNAL_LARGE_PRINTER = 0.00001; static constexpr double LARGE_BED_THRESHOLD = 2147; +// Orca: maximum number of extruders is 64. For SEMM printers, it defines maximum filament number. +static constexpr size_t MAXIMUM_EXTRUDER_NUMBER = 64; + extern double SCALING_FACTOR; // for creating circles (for brim_ear) #define POLY_SIDES 24 diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 09e91840a2..2a8c729fcb 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -942,8 +942,8 @@ Sidebar::Sidebar(Plater *parent) ScalableButton* add_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "add_filament"); add_btn->SetToolTip(_L("Add one filament")); add_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent& e){ - // Orca: limit filament choices to 64 - if (p->combos_filament.size() >= 64) + // Orca: limit filament choices to MAXIMUM_EXTRUDER_NUMBER + if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) return; int filament_count = p->combos_filament.size() + 1; @@ -1642,8 +1642,7 @@ void Sidebar::on_filaments_change(size_t num_filaments) } void Sidebar::add_filament() { - // BBS: limit filament choices to 16 - if (p->combos_filament.size() >= 16) return; + if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) return; wxColour new_col = Plater::get_next_color_for_filament(); add_custom_filament(new_col); } @@ -1667,7 +1666,7 @@ void Sidebar::delete_filament() { } void Sidebar::add_custom_filament(wxColour new_col) { - if (p->combos_filament.size() >= 16) return; + if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) return; int filament_count = p->combos_filament.size() + 1; std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); @@ -3763,7 +3762,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ int size = extruderIds.size() == 0 ? 0 : *(extruderIds.rbegin()); int filament_size = sidebar->combos_filament().size(); - while (filament_size < 16 && filament_size < size) { + while (filament_size < MAXIMUM_EXTRUDER_NUMBER && filament_size < size) { int filament_count = filament_size + 1; wxColour new_col = Plater::get_next_color_for_filament(); std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 0942714fac..fab5980700 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -4100,7 +4100,7 @@ if (is_marlin_flavor) def.label = L("Extruders"); def.tooltip = L("Number of extruders of the printer."); def.min = 1; - def.max = 256; + def.max = MAXIMUM_EXTRUDER_NUMBER; def.mode = comAdvanced; Option option(def, "extruders_count"); optgroup->append_single_option_line(option); From 273d4e56d6c28033ca1866a07c3c06bb58b0abf6 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 13 Jul 2024 22:17:47 +0800 Subject: [PATCH 028/151] update/refactor/fix XL profiles --- resources/profiles/Prusa.json | 2 +- .../profiles/Prusa/Prusa XL 5T_cover.png | Bin 0 -> 88220 bytes .../Prusa/filament/fdm_filament_abs.json | 15 +- .../Prusa/filament/fdm_filament_asa.json | 1 + .../Prusa/filament/fdm_filament_pa.json | 1 + .../Prusa/filament/fdm_filament_pa11cf.json | 1 + .../Prusa/filament/fdm_filament_pc.json | 1 + .../Prusa/filament/fdm_filament_pccf.json | 1 + .../Prusa/filament/fdm_filament_pet.json | 1 + .../Prusa/filament/fdm_filament_pla.json | 1 + .../Prusa/filament/fdm_filament_pva.json | 1 + .../Prusa/filament/fdm_filament_pvb.json | 1 + .../Prusa/filament/fdm_filament_tpu.json | 1 + .../Prusa/machine/Prusa XL 0.25 nozzle.json | 101 +------------ .../Prusa/machine/Prusa XL 0.3 nozzle.json | 137 +++--------------- .../Prusa/machine/Prusa XL 0.4 nozzle.json | 135 +++-------------- .../Prusa/machine/Prusa XL 0.5 nozzle.json | 135 +++-------------- .../Prusa/machine/Prusa XL 0.6 nozzle.json | 135 +++-------------- .../Prusa/machine/Prusa XL 0.8 nozzle.json | 101 +------------ .../machine/Prusa XL 5T 0.25 nozzle.json | 2 +- .../Prusa/machine/Prusa XL 5T 0.3 nozzle.json | 2 +- .../Prusa/machine/Prusa XL 5T 0.4 nozzle.json | 2 +- .../Prusa/machine/Prusa XL 5T 0.5 nozzle.json | 2 +- .../Prusa/machine/Prusa XL 5T 0.6 nozzle.json | 2 +- .../Prusa/machine/Prusa XL 5T 0.8 nozzle.json | 2 +- .../profiles/Prusa/machine/Prusa XL 5T.json | 4 +- .../machine/fdm_machine_common_xl_5t.json | 11 +- .../Prusa/process/process_common_xl.json | 4 +- .../Prusa/process/process_common_xl_5t.json | 5 +- 29 files changed, 117 insertions(+), 690 deletions(-) create mode 100644 resources/profiles/Prusa/Prusa XL 5T_cover.png diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index 69e3e32e4e..62af7c6fa9 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.01.01.10", + "version": "02.01.01.20", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ diff --git a/resources/profiles/Prusa/Prusa XL 5T_cover.png b/resources/profiles/Prusa/Prusa XL 5T_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..2a302857e610880246218c4f14a9a6bf0a052076 GIT binary patch literal 88220 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 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", - "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0", - "thumbnails": [ - "16x16/QOI", - "313x173/QOI", - "440x240/QOI", - "480x240/QOI", - "640x480/PNG" - ] + "detraction_speed": "25" } diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.3 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.3 nozzle.json index e83f1871a1..b678114c03 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.3 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.3 nozzle.json @@ -1,118 +1,21 @@ { - "type": "machine", - "setting_id": "GM003", - "name": "Prusa XL 0.3 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "gcode_flavor": "marlin2", - "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", - "default_print_profile": "0.20mm Speed @Prusa XL 0.3", - "extruder_clearance_radius": "67", - "extruder_clearance_height_to_rod": "21", - "extruder_clearance_height_to_lid": "21", - "printer_variant": "0.3", - "nozzle_diameter": [ - "0.3" - ], - "max_layer_height": "0.22", - "min_layer_height": "0.05", - "bed_exclude_area": [ - "0x0" - ], - "printable_area": [ - "0x0", - "360x0", - "360x360", - "0x360" - ], - "machine_max_acceleration_e": [ - "2500", - "2500" - ], - "machine_max_acceleration_extruding": [ - "4000", - "4000" - ], - "machine_max_acceleration_retracting": [ - "1200", - "1200" - ], - "machine_max_acceleration_x": [ - "7000", - "7000" - ], - "machine_max_acceleration_y": [ - "7000", - "7000" - ], - "machine_max_acceleration_z": [ - "200", - "200" - ], - "machine_max_acceleration_travel": [ - "3000", - "3000" - ], - "machine_max_speed_e": [ - "100", - "100" - ], - "machine_max_speed_x": [ - "400", - "400" - ], - "machine_max_speed_y": [ - "400", - "400" - ], - "machine_max_speed_z": [ - "12", - "12" - ], - "machine_max_jerk_e": [ - "10", - "10" - ], - "machine_max_jerk_x": [ - "8", - "8" - ], - "machine_max_jerk_y": [ - "8", - "8" - ], - "machine_max_jerk_z": [ - "2", - "2" - ], - "retraction_length": "0.7", - "retraction_speed": "35", - "detraction_speed": "25", - "retraction_minimum_travel": "1.5", - "retract_when_changing_layer": "1", - "wipe": "1", - "retract_before_wipe": "80%", - "retract_lift_below": "1.5", - "z_hop_types": "Auto Lift", - "host_type": "prusalink", - "printable_height": "360", - "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", - "machine_pause_gcode": "M601", - "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", - "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0", - "thumbnails": [ - "16x16/QOI", - "313x173/QOI", - "440x240/QOI", - "480x240/QOI", - "640x480/PNG" - ] -} + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 0.3 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL", + "default_filament_profile": "Prusa Generic PLA @XL", + "default_print_profile": "0.20mm Speed @Prusa XL 0.3", + "printer_variant": "0.3", + "nozzle_diameter": [ + "0.3" + ], + "max_layer_height": "0.22", + "min_layer_height": "0.05", + "retraction_length": "0.7", + "retraction_speed": "35", + "detraction_speed": "25" +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.4 nozzle.json index cbb286aa5b..3bf1b6fa02 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.4 nozzle.json @@ -1,118 +1,19 @@ { - "type": "machine", - "setting_id": "GM003", - "name": "Prusa XL 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "gcode_flavor": "marlin2", - "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", - "default_print_profile": "0.20mm Speed @Prusa XL 0.4", - "extruder_clearance_radius": "67", - "extruder_clearance_height_to_rod": "21", - "extruder_clearance_height_to_lid": "21", - "printer_variant": "0.4", - "nozzle_diameter": [ - "0.4" - ], - "max_layer_height": "0.3", - "min_layer_height": "0.07", - "bed_exclude_area": [ - "0x0" - ], - "printable_area": [ - "0x0", - "360x0", - "360x360", - "0x360" - ], - "machine_max_acceleration_e": [ - "2500", - "2500" - ], - "machine_max_acceleration_extruding": [ - "4000", - "4000" - ], - "machine_max_acceleration_retracting": [ - "1200", - "1200" - ], - "machine_max_acceleration_x": [ - "7000", - "7000" - ], - "machine_max_acceleration_y": [ - "7000", - "7000" - ], - "machine_max_acceleration_z": [ - "200", - "200" - ], - "machine_max_acceleration_travel": [ - "5000", - "5000" - ], - "machine_max_speed_e": [ - "100", - "100" - ], - "machine_max_speed_x": [ - "400", - "400" - ], - "machine_max_speed_y": [ - "400", - "400" - ], - "machine_max_speed_z": [ - "12", - "12" - ], - "machine_max_jerk_e": [ - "10", - "10" - ], - "machine_max_jerk_x": [ - "8", - "8" - ], - "machine_max_jerk_y": [ - "8", - "8" - ], - "machine_max_jerk_z": [ - "2", - "2" - ], - "retraction_length": "0.8", - "retraction_speed": "35", - "detraction_speed": "25", - "retraction_minimum_travel": "1.5", - "retract_when_changing_layer": "1", - "wipe": "1", - "retract_before_wipe": "80%", - "retract_lift_below": "1.5", - "z_hop_types": "Auto Lift", - "host_type": "prusalink", - "printable_height": "360", - "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", - "machine_pause_gcode": "M601", - "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", - "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0", - "thumbnails": [ - "16x16/QOI", - "313x173/QOI", - "440x240/QOI", - "480x240/QOI", - "640x480/PNG" - ] -} + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL", + "default_filament_profile": "Prusa Generic PLA @XL", + "default_print_profile": "0.20mm Speed @Prusa XL 0.4", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "max_layer_height": "0.3", + "min_layer_height": "0.07", + "retraction_length": "0.8" +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.5 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.5 nozzle.json index 937e88f016..3f65ffc759 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.5 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.5 nozzle.json @@ -1,118 +1,19 @@ { - "type": "machine", - "setting_id": "GM003", - "name": "Prusa XL 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "gcode_flavor": "marlin2", - "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", - "default_print_profile": "0.25mm Speed @Prusa XL 0.5", - "extruder_clearance_radius": "67", - "extruder_clearance_height_to_rod": "21", - "extruder_clearance_height_to_lid": "21", - "printer_variant": "0.5", - "nozzle_diameter": [ - "0.5" - ], - "max_layer_height": "0.32", - "min_layer_height": "0.07", - "bed_exclude_area": [ - "0x0" - ], - "printable_area": [ - "0x0", - "360x0", - "360x360", - "0x360" - ], - "machine_max_acceleration_e": [ - "2500", - "2500" - ], - "machine_max_acceleration_extruding": [ - "4000", - "4000" - ], - "machine_max_acceleration_retracting": [ - "1200", - "1200" - ], - "machine_max_acceleration_x": [ - "7000", - "7000" - ], - "machine_max_acceleration_y": [ - "7000", - "7000" - ], - "machine_max_acceleration_z": [ - "200", - "200" - ], - "machine_max_acceleration_travel": [ - "5000", - "5000" - ], - "machine_max_speed_e": [ - "100", - "100" - ], - "machine_max_speed_x": [ - "400", - "400" - ], - "machine_max_speed_y": [ - "400", - "400" - ], - "machine_max_speed_z": [ - "12", - "12" - ], - "machine_max_jerk_e": [ - "10", - "10" - ], - "machine_max_jerk_x": [ - "8", - "8" - ], - "machine_max_jerk_y": [ - "8", - "8" - ], - "machine_max_jerk_z": [ - "2", - "2" - ], - "retraction_length": "0.7", - "retraction_speed": "35", - "detraction_speed": "25", - "retraction_minimum_travel": "1.5", - "retract_when_changing_layer": "1", - "wipe": "1", - "retract_before_wipe": "80%", - "retract_lift_below": "1.5", - "z_hop_types": "Auto Lift", - "host_type": "prusalink", - "printable_height": "360", - "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", - "machine_pause_gcode": "M601", - "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", - "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0", - "thumbnails": [ - "16x16/QOI", - "313x173/QOI", - "440x240/QOI", - "480x240/QOI", - "640x480/PNG" - ] -} + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL", + "default_filament_profile": "Prusa Generic PLA @XL", + "default_print_profile": "0.25mm Speed @Prusa XL 0.5", + "printer_variant": "0.5", + "nozzle_diameter": [ + "0.5" + ], + "max_layer_height": "0.32", + "min_layer_height": "0.07", + "retraction_length": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.6 nozzle.json index e0d47b46c6..1239ddb447 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.6 nozzle.json @@ -1,118 +1,19 @@ { - "type": "machine", - "setting_id": "GM003", - "name": "Prusa XL 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "gcode_flavor": "marlin2", - "printer_model": "Prusa XL", - "default_filament_profile": "Prusa Generic PLA @XL", - "default_print_profile": "0.32mm Speed @Prusa XL 0.6", - "extruder_clearance_radius": "67", - "extruder_clearance_height_to_rod": "21", - "extruder_clearance_height_to_lid": "21", - "printer_variant": "0.6", - "nozzle_diameter": [ - "0.6" - ], - "max_layer_height": "0.4", - "min_layer_height": "0.15", - "bed_exclude_area": [ - "0x0" - ], - "printable_area": [ - "0x0", - "360x0", - "360x360", - "0x360" - ], - "machine_max_acceleration_e": [ - "2500", - "2500" - ], - "machine_max_acceleration_extruding": [ - "4000", - "4000" - ], - "machine_max_acceleration_retracting": [ - "1200", - "1200" - ], - "machine_max_acceleration_x": [ - "7000", - "7000" - ], - "machine_max_acceleration_y": [ - "7000", - "7000" - ], - "machine_max_acceleration_z": [ - "200", - "200" - ], - "machine_max_acceleration_travel": [ - "5000", - "5000" - ], - "machine_max_speed_e": [ - "100", - "100" - ], - "machine_max_speed_x": [ - "400", - "400" - ], - "machine_max_speed_y": [ - "400", - "400" - ], - "machine_max_speed_z": [ - "12", - "12" - ], - "machine_max_jerk_e": [ - "10", - "10" - ], - "machine_max_jerk_x": [ - "8", - "8" - ], - "machine_max_jerk_y": [ - "8", - "8" - ], - "machine_max_jerk_z": [ - "2", - "2" - ], - "retraction_length": "0.7", - "retraction_speed": "35", - "detraction_speed": "25", - "retraction_minimum_travel": "1.5", - "retract_when_changing_layer": "1", - "wipe": "1", - "retract_before_wipe": "0%", - "retract_lift_below": "1.5", - "z_hop_types": "Auto Lift", - "host_type": "prusalink", - "printable_height": "360", - "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", - "machine_pause_gcode": "M601", - "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", - "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0", - "thumbnails": [ - "16x16/QOI", - "313x173/QOI", - "440x240/QOI", - "480x240/QOI", - "640x480/PNG" - ] -} + "type": "machine", + "setting_id": "GM003", + "name": "Prusa XL 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common_xl", + "gcode_flavor": "marlin2", + "printer_model": "Prusa XL", + "default_filament_profile": "Prusa Generic PLA @XL", + "default_print_profile": "0.32mm Speed @Prusa XL 0.6", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "max_layer_height": "0.4", + "min_layer_height": "0.15", + "retraction_length": "0.7" +} \ No newline at end of file diff --git a/resources/profiles/Prusa/machine/Prusa XL 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 0.8 nozzle.json index 85c1631bcb..b0a2468a68 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 0.8 nozzle.json @@ -4,115 +4,18 @@ "name": "Prusa XL 0.8 nozzle", "from": "system", "instantiation": "true", - "inherits": "fdm_machine_common", + "inherits": "fdm_machine_common_xl", "gcode_flavor": "marlin2", "printer_model": "Prusa XL", "default_filament_profile": "Prusa Generic PLA @XL", "default_print_profile": "0.40mm Quality @Prusa XL 0.8", - "extruder_clearance_radius": "67", - "extruder_clearance_height_to_rod": "21", - "extruder_clearance_height_to_lid": "21", "printer_variant": "0.8", "nozzle_diameter": [ "0.8" ], "max_layer_height": "0.6", "min_layer_height": "0.2", - "bed_exclude_area": [ - "0x0" - ], - "printable_area": [ - "0x0", - "360x0", - "360x360", - "0x360" - ], - "machine_max_acceleration_e": [ - "2500", - "2500" - ], - "machine_max_acceleration_extruding": [ - "4000", - "4000" - ], - "machine_max_acceleration_retracting": [ - "1200", - "1200" - ], - "machine_max_acceleration_x": [ - "7000", - "7000" - ], - "machine_max_acceleration_y": [ - "7000", - "7000" - ], - "machine_max_acceleration_z": [ - "200", - "200" - ], - "machine_max_acceleration_travel": [ - "5000", - "5000" - ], - "machine_max_speed_e": [ - "100", - "100" - ], - "machine_max_speed_x": [ - "400", - "400" - ], - "machine_max_speed_y": [ - "400", - "400" - ], - "machine_max_speed_z": [ - "12", - "12" - ], - "machine_max_jerk_e": [ - "10", - "10" - ], - "machine_max_jerk_x": [ - "8", - "8" - ], - "machine_max_jerk_y": [ - "8", - "8" - ], - "machine_max_jerk_z": [ - "2", - "2" - ], "retraction_length": "0.6", "retraction_speed": "25", - "detraction_speed": "15", - "retraction_minimum_travel": "1.5", - "retract_when_changing_layer": "1", - "wipe": "1", - "retract_before_wipe": "50%", - "retract_lift_below": "1.5", - "z_hop_types": "Auto Lift", - "host_type": "prusalink", - "printable_height": "360", - "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", - "machine_pause_gcode": "M601", - "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", - "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0", - "thumbnails": [ - "16x16/QOI", - "313x173/QOI", - "440x240/QOI", - "480x240/QOI", - "640x480/PNG" - ] + "detraction_speed": "15" } diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json index 52343e9ed1..2fc6b341b5 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.25 nozzle.json @@ -1,6 +1,6 @@ { "type": "machine", - "setting_id": "GM003", + "setting_id": "GM_PRUSA_007", "name": "Prusa XL 5T 0.25 nozzle", "from": "system", "instantiation": "true", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json index 3dc0db1532..a495d26349 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.3 nozzle.json @@ -1,6 +1,6 @@ { "type": "machine", - "setting_id": "GM003", + "setting_id": "GM_PRUSA_001", "name": "Prusa XL 5T 0.3 nozzle", "from": "system", "instantiation": "true", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json index 5e7f21ed7e..4dbd7d9b22 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.4 nozzle.json @@ -1,6 +1,6 @@ { "type": "machine", - "setting_id": "GM003", + "setting_id": "GM_PRUSA_002", "name": "Prusa XL 5T 0.4 nozzle", "from": "system", "instantiation": "true", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json index 9360cfcd8f..69e355ea2f 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.5 nozzle.json @@ -1,6 +1,6 @@ { "type": "machine", - "setting_id": "GM003", + "setting_id": "GM_PRUSA_004", "name": "Prusa XL 5T 0.5 nozzle", "from": "system", "instantiation": "true", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json index bc63b52a5e..03ef5d97ff 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.6 nozzle.json @@ -1,6 +1,6 @@ { "type": "machine", - "setting_id": "GM003", + "setting_id": "GM_PRUSA_005", "name": "Prusa XL 5T 0.6 nozzle", "from": "system", "instantiation": "true", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json b/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json index 1928a6c73e..27656c4072 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T 0.8 nozzle.json @@ -1,6 +1,6 @@ { "type": "machine", - "setting_id": "GM003", + "setting_id": "GM_PRUSA_006", "name": "Prusa XL 5T 0.8 nozzle", "from": "system", "instantiation": "true", diff --git a/resources/profiles/Prusa/machine/Prusa XL 5T.json b/resources/profiles/Prusa/machine/Prusa XL 5T.json index ed1084e3ba..81486d711a 100644 --- a/resources/profiles/Prusa/machine/Prusa XL 5T.json +++ b/resources/profiles/Prusa/machine/Prusa XL 5T.json @@ -1,12 +1,12 @@ { "type": "machine_model", "name": "Prusa XL 5T", - "model_id": "Prusa XL 5T", + "model_id": "prusa_xl_5t_01", "nozzle_diameter": "0.25;0.3;0.4;0.5;0.6;0.8", "machine_tech": "FFF", "family": "Prusa", "bed_model": "Prusa XL_bed.stl", - "bed_texture": "Prusa XL 5T.svg", + "bed_texture": "Prusa XL.svg", "hotend_model": "", "default_materials": "Prusa Generic PLA @XL 5T;Prusament PLA @XL 5T;Prusament rPLA @XL 5T;Prusa Generic PETG @XL 5T;Prusament PETG @XL 5T;Prusa Generic ABS @XL 5T;Prusament ASA @XL 5T;Prusament PC Blend @XL 5T;Prusament PC-CF @XL 5T;Prusament PVB @XL 5T;Prusament PA-CF @XL 5T" } diff --git a/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json b/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json index 587d416602..ff3cabed2b 100644 --- a/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json +++ b/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json @@ -11,12 +11,11 @@ "extruder_clearance_height_to_rod": "21", "extruder_clearance_height_to_lid": "21", "printer_variant": "0.4", - "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F720{endif} ; Move bed down\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X6 Y350 F6000 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+100, max_print_height)} F300{endif} ; Move bed down\nM900 K0 ; reset LA\nM142 S36 ; reset heatbreak target temp\nM221 S100 ; reset flow percentage\nM84 ; disable motors\n; max_layer_z = [max_layer_z]", "machine_pause_gcode": "M601", - "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM115 U6.0.1+14848\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\nM862.1 P[nozzle_diameter]\n; set & wait for bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n; home carriage, pick tool, home all\nG28 XY\nM84 E ; turn off E motor\nG28 Z\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nG29 G ; absorb heat\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F4800\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z10 F480 ; move away in Z\n{if first_layer_bed_temperature[0] > 60}\nG0 Z70 F480 ; move away (a bit more) in Z\nG0 X30 Y{print_bed_min[1]} F6000 ; move away in X/Y for higher bed temperatures\n{endif}\nM106 S100 ; cool off the nozzle\nM107 ; stop cooling off the nozzle - turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nM104 S[first_layer_temperature] ; set extruder temp\nG1 Z10 F720 ; move away in Z\nG0 X30 Y-8 F6000 ; move next to the sheet\n; wait for extruder temp\nM109 T0 S{first_layer_temperature[0]}\n;\n; purge\n;\nG92 E0 ; reset extruder position\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -8 : -5.5)} ; move close to the sheet's edge\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E10 X40 Z0.2 F500 ; purge\nG0 X70 E9 F800 ; purge\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG92 E0 ; reset extruder position", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", - "change_filament_gcode": "M600\nG1 E0.3 F1500 ; prime after color change", + "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P\"Input shaper\" ; FW feature check\nM115 U6.0.3+14902\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\n{if (is_extruder_used[0])}M862.1 T0 P{nozzle_diameter[0]}{endif}\n{if (is_extruder_used[1])}M862.1 T1 P{nozzle_diameter[1]}{endif}\n{if (is_extruder_used[2])}M862.1 T2 P{nozzle_diameter[2]}{endif}\n{if (is_extruder_used[3])}M862.1 T3 P{nozzle_diameter[3]}{endif}\n{if (is_extruder_used[4])}M862.1 T4 P{nozzle_diameter[4]}{endif}\n\n; turn off unused heaters\n{if ! is_extruder_used[0]} M104 T0 S0 {endif}\n{if ! is_extruder_used[1]} M104 T1 S0 {endif}\n{if num_extruders > 2 and ! is_extruder_used[2]} M104 T2 S0 {endif}\n{if num_extruders > 3 and ! is_extruder_used[3]} M104 T3 S0 {endif}\n{if num_extruders > 4 and ! is_extruder_used[4]} M104 T4 S0 {endif}\n\nM217 Z{max(zhop, 2.0)} ; set toolchange z hop to 2mm, or zhop variable from slicer if higher\n; set bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nG0 Z5 ; add Z clearance\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == \"PC\" or filament_type[initial_tool] == \"PA\") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == \"FLEX\") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; Home XY\nG28 XY\n; try picking tools used in print\nG1 F{travel_speed * 60}\n{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}\n{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}\n{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}\n{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}\n{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}\n; select tool that will be used to home & MBL\nT{initial_tool} S1 L0 D0\n; home Z with MBL tool\nM84 E ; turn off E motor\nG28 Z\nG0 Z5 ; add Z clearance\n\nM104 T{initial_tool} S{if idle_temperature[initial_tool] == 0}70{else}{idle_temperature[initial_tool]}{endif} ; set idle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG29 G ; absorb heat\n\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == \"PC\" or filament_type[initial_tool] == \"PA\") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == \"FLEX\") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z5 F480 ; move away in Z\nM107 ; turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W{(((is_extruder_used[4]) or ((is_extruder_used[3]) or (is_extruder_used[2]))) ? \"300\" : ((is_extruder_used[1]) ? \"130\" : \"50\"))} H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nG1 Z10 F720 ; move away in Z\nG1 F{travel_speed * 60}\nP0 S1 L1 D0; park the tool\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T0 S{first_layer_temperature[0]}\nT0 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[0]}10{else}30{endif} X40 Z0.2 F{if filament_multitool_ramming[0]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X70 E9 F800 ; continue purging and wipe the nozzle\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[0]} F2400 ; retract\n{e_retracted[0] = 1.5 * retract_length[0]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[0] == 0 ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T1 S{first_layer_temperature[1]}\nT1 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(1 == 0 ? 30 : (1 == 1 ? 150 : (1 == 2 ? 210 : 330)))} Y{(1 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[1]}10{else}30{endif} X140 Z0.2 F{if filament_multitool_ramming[1]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X110 E9 F800 ; continue purging and wipe the nozzle\nG0 X{110 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{110 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[1]} F2400 ; retract\n{e_retracted[1] = 1.5 * retract_length[1]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[1] == 0 ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T2 S{first_layer_temperature[2]}\nT2 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(2 == 0 ? 30 : (2 == 1 ? 150 : (2 == 2 ? 210 : 330)))} Y{(2 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[2]}10{else}30{endif} X220 Z0.2 F{if filament_multitool_ramming[2]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X250 E9 F800 ; continue purging and wipe the nozzle\nG0 X{250 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{250 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[2]} F2400 ; retract\n{e_retracted[2] = 1.5 * retract_length[2]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[2] == 0 ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T3 S{first_layer_temperature[3]}\nT3 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(3 == 0 ? 30 : (3 == 1 ? 150 : (3 == 2 ? 210 : 330)))} Y{(3 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[3]}10{else}30{endif} X320 Z0.2 F{if filament_multitool_ramming[3]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[3]} F2400 ; retract\n{e_retracted[3] = 1.5 * retract_length[3]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[3] == 0 ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T4 S{first_layer_temperature[4]}\nT4 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(4 == 0 ? 30 : (4 == 1 ? 150 : (4 == 2 ? 210 : 330)))} Y{(4 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[4]}10{else}30{endif} X320 Z0.2 F{if filament_multitool_ramming[4]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[4]} F2400 ; retract\n{e_retracted[4] = 1.5 * retract_length[4]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[4] == 0 ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool} S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330)))} Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[initial_tool]}10{else}30{endif} X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if filament_multitool_ramming[initial_tool]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = 1.5 * retract_length[initial_tool]}\nG92 E0 ; reset extruder position\n", + "machine_end_gcode": "G4 ; wait\n\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+5, max_print_height)}{endif} ; Move bed down\n\nP0 S1 ; park tool\n\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+97, max_print_height)} F300{endif} ; Move bed further down\n\n; turn off extruder heaters\n{if is_extruder_used[0]} M104 T0 S0 {endif}\n{if is_extruder_used[1]} M104 T1 S0 {endif}\n{if is_extruder_used[2]} M104 T2 S0 {endif}\n{if is_extruder_used[3]} M104 T3 S0 {endif}\n{if is_extruder_used[4]} M104 T4 S0 {endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow percentage\nM84 ; disable motors\nM77 ; stop print timer\n; max_layer_z = [max_layer_z]", + "change_filament_gcode": "; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])\n{if travel_speed > 350.0}\nG1 F{350.0 * 60} \n{else}\nG1 F{travel_speed * 60} \n{endif}\nP0 S1 L2 D0\n; [layer_num]\n{if layer_num == 0}\nM109 S{first_layer_temperature[next_extruder]} T[next_extruder]\n{else}\nM109 S{nozzle_temperature[next_extruder]} T[next_extruder]\n{endif}\nT[next_extruder] S1 L0 D0\n", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER" - + "printer_notes": "Do not remove the keywords below.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER" } \ No newline at end of file diff --git a/resources/profiles/Prusa/process/process_common_xl.json b/resources/profiles/Prusa/process/process_common_xl.json index f3f2a7e791..65622abadb 100644 --- a/resources/profiles/Prusa/process/process_common_xl.json +++ b/resources/profiles/Prusa/process/process_common_xl.json @@ -92,5 +92,7 @@ "min_bead_width": "85%", "min_feature_size": "25%", "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[initial_tool]}_{print_time}.gcode", - "gcode_label_objects": "1" + "gcode_label_objects": "1", + "exclude_object": "1" + } \ No newline at end of file diff --git a/resources/profiles/Prusa/process/process_common_xl_5t.json b/resources/profiles/Prusa/process/process_common_xl_5t.json index abcc096c6c..f624f7780a 100644 --- a/resources/profiles/Prusa/process/process_common_xl_5t.json +++ b/resources/profiles/Prusa/process/process_common_xl_5t.json @@ -7,5 +7,8 @@ "enable_prime_tower": "1", "wipe_tower_cone_angle": "25", "wipe_tower_extra_spacing": "150%", - "wipe_tower_rotation_angle": "90" + "wipe_tower_rotation_angle": "90", + "single_extruder_multi_material_priming": "0", + "ooze_prevention": "1", + "standby_temperature_delta": "-40" } \ No newline at end of file From b2ba59041c244c30932a5a1c790501d8398f9e82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Par=C3=A9-Simard?= Date: Sat, 13 Jul 2024 12:02:14 -0400 Subject: [PATCH 029/151] [doc] Warn Marlin user that Linear Advance must be enabled in firmware to do the Pressure Advance/Linear Advance calibration (#6111) * Uses GitHub Markdown Alerts in Calibration.md * Add warning about Linear advance not enabled in Marlin firmware --- doc/Calibration.md | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/doc/Calibration.md b/doc/Calibration.md index bb4b8422b8..74deb7e78d 100644 --- a/doc/Calibration.md +++ b/doc/Calibration.md @@ -10,13 +10,20 @@ 1. [Max Volumetric speed](#Max-Volumetric-speed) 2. [VFA] -**NOTE**: After completing the calibration process, remember to create a new project in order to exit the calibration mode. -**NOTE2**: @ItsDeidara has made a webpage to help with the calculation. Check it out if those equations give you a headache [here](https://orcalibrate.com/). +> [!IMPORTANT] +> After completing the calibration process, remember to create a new project in order to exit the calibration mode. + +> [!TIP] +> @ItsDeidara has made a webpage to help with the calculation. Check it out if those equations give you a headache [here](https://orcalibrate.com/). + # Flow rate - ##### *NOTE: For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option.* - ![uncheck](https://user-images.githubusercontent.com/103989404/221345187-3c317a46-4d85-4221-99b9-adb5c7f48026.jpeg) ----------------------------------------- +> [!WARNING] +> For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option. +> +> ![uncheck](https://user-images.githubusercontent.com/103989404/221345187-3c317a46-4d85-4221-99b9-adb5c7f48026.jpeg) + ![flowrate](./images/flow-calibration.gif) + Calibrating the flow rate involves a two-step process. Steps 1. Select the printer, filament, and process you would like to use for the test. @@ -26,7 +33,7 @@ Steps ![flowrate-pass1_resize](https://user-images.githubusercontent.com/103989404/210138585-98821729-b19e-4452-a08d-697f147d36f0.jpg) ![0-5](https://user-images.githubusercontent.com/103989404/210138714-63daae9c-6778-453a-afa9-9a976d61bfd5.jpg) -5. Update the flow ratio in the filament settings using the following equation: `FlowRatio_old*(100 + modifier)/100`. If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value should be calculated as follows: `0.98x(100+5)/100 = 1.029`. ** Remember** to save the filament profile. +5. Update the flow ratio in the filament settings using the following equation: `FlowRatio_old*(100 + modifier)/100`. If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value should be calculated as follows: `0.98x(100+5)/100 = 1.029`.** Remember** to save the filament profile. 6. Perform the `Pass 2` calibration. This process is similar to `Pass 1`, but a new project with ten blocks will be generated. The flow rate modifiers for this project will range from `-9 to 0`. 7. Repeat steps 4 and 5. In this case, if your previous flow ratio was 1.029 and you selected the block with a flow rate modifier of -6, the new value should be calculated as follows: `1.029x(100-6)/100 = 0.96726`. ** Remember ** to save the filament profile. ![pass2](https://user-images.githubusercontent.com/103989404/210139072-f2fa91a6-4e3b-4d2a-81f2-c50155e1ff6d.jpg) @@ -35,9 +42,15 @@ Steps # Pressure Advance -Orca Slicer includes three approaches for calibrating the pressure advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test. - ##### *NOTE: For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option when printings.* - ![uncheck](https://user-images.githubusercontent.com/103989404/221345187-3c317a46-4d85-4221-99b9-adb5c7f48026.jpeg) +Orca Slicer includes three approaches for calibrating the pressure advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test. + +> [!WARNING] +> For Marlin: Linear advance must be enabled in firmware (M900). **Not all printers have it enabled by default.** + +> [!WARNING] +> For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option when printings. +> +> ![uncheck](https://user-images.githubusercontent.com/103989404/221345187-3c317a46-4d85-4221-99b9-adb5c7f48026.jpeg) ### Line method @@ -126,7 +139,8 @@ You can also return to OrcaSlicer in the "Preview" tab, make sure the color sche ![image](./images/max_volumetric_flow.jpg) - #### *NOTE You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.* +> [!NOTE] +> You may also choose to conservatively reduce the flow by 5-10% to ensure print quality. *** *Credits:* From e0b1f0093e202a8aa8108dd80272f5f91b204020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olcay=20=C3=96REN?= <33813227+olcayoren@users.noreply.github.com> Date: Sun, 14 Jul 2024 05:26:04 +0300 Subject: [PATCH 030/151] Update TURKISH translations (#6094) * Update OrcaSlicer_tr.po - TURKISH translation update * Update TURKISH translations * Update TURKISH translations --- localization/i18n/tr/OrcaSlicer_tr.po | 1718 ++++++++++++------------- 1 file changed, 831 insertions(+), 887 deletions(-) diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 0634a276c9..1810972152 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-30 15:44+0200\n" -"PO-Revision-Date: 2024-06-23 19:21+0300\n" +"PO-Revision-Date: 2024-07-11 00:22+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: \n" "Language: tr\n" @@ -728,8 +728,8 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " -"tipi seçmeyi deneyin." +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı tipi " +"seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." @@ -1013,9 +1013,9 @@ msgid "" "Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " -"uygulama seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini " -"belirtmeniz gerekir." +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " +"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz " +"gerekir." msgid "No symbol" msgstr "Sembol yok" @@ -1467,8 +1467,8 @@ msgstr "Bilgi" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will " -"not be affected." +"Please note, application settings will be lost, but printer profiles will not " +"be affected." msgstr "" "OrcaSlicer konfigürasyon dosyası bozulmuş olabilir ve ayrıştırılamayabilir.\n" "OrcaSlicer, konfigürasyon dosyasını yeniden oluşturmayı denedi.\n" @@ -2091,8 +2091,8 @@ msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut " +"infornation first." msgstr "" "Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" "Bundan sonra model tutarlılığı garanti edilemez.\n" @@ -2155,8 +2155,7 @@ msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." msgid "" "If first selected item is a part, the second one should be part in the same " "object." -msgstr "" -"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." +msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." msgid "The type of the last solid object part is not to be changed." msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." @@ -2513,16 +2512,14 @@ msgstr "" msgid "Arranging done." msgstr "Hizalama tamamlandı." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" "Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " "bulundu." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" "Hizalama tek tablaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" @@ -2622,8 +2619,7 @@ msgstr "" "deneyin." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "" -"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." +msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." msgid "" "Failed to upload print file to FTP. Please check the network status and try " @@ -2679,8 +2675,8 @@ msgid "Importing SLA archive" msgstr "SLA arşivi içe aktarılıyor" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer " +"preset first before importing that SLA archive." msgstr "" "SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " "önce bazı SLA yazıcı ön ayarlarını etkinleştirin." @@ -2692,8 +2688,8 @@ msgid "Importing done." msgstr "İçe aktarma tamamlandı." msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets " +"were used as fallback." msgstr "" "İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " "ayarları geri dönüş olarak kullanıldı." @@ -2750,8 +2746,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " -"olan açık kaynaklı bileşenleri kullanır" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " +"açık kaynaklı bileşenleri kullanır" #, c-format, boost-format msgid "About %s" @@ -2765,8 +2761,7 @@ msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " -"almaktadır." +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "" @@ -2845,8 +2840,7 @@ msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "" -"Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" +msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" msgid "Other Color" msgstr "Diğer renk" @@ -2858,9 +2852,9 @@ msgid "Dynamic flow calibration" msgstr "Dinamik akış kalibrasyonu" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration results. " +"Please fill in the same values as the actual printing. They can be auto-" +"filled by selecting a filament preset." msgstr "" "Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " "etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " @@ -2995,8 +2989,7 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " -"edecektir." +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." msgid "Group" msgstr "Grup" @@ -3034,8 +3027,8 @@ msgid "Insertion update" msgstr "Ekleme güncellemesi" msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a new " +"Bambu Lab filament. This takes about 20 seconds." msgstr "" "AMS, yeni bir Bambu Lab filamenti takıldığında filament bilgilerini otomatik " "olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." @@ -3058,17 +3051,16 @@ msgid "Power on update" msgstr "Güncellemeyi aç" msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." +"The AMS will automatically read the information of inserted filament on start-" +"up. It will take about 1 minute.The reading process will roll filament spools." msgstr "" "AMS, başlangıçta takılan filamentin bilgilerini otomatik olarak okuyacaktır. " "Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." +"The AMS will not automatically read information from inserted filament during " +"startup and will continue to use the information recorded before the last " +"shutdown." msgstr "" "AMS, başlatma sırasında takılan filamentden bilgileri otomatik olarak okumaz " "ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." @@ -3082,8 +3074,8 @@ msgid "" "automatically." msgstr "" "AMS, filament bilgisi güncellendikten sonra Bambu filamentin kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " -"olarak güncellenecektir." +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " +"güncellenecektir." msgid "AMS filament backup" msgstr "AMS filament yedeklemesi" @@ -3115,8 +3107,8 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " -"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " +"kontrol edin, kontrol edip yeniden deneyin." msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " @@ -3204,8 +3196,8 @@ msgid "" "device. The corrupted output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Hedef cihazda " -"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz " -"kullanmayı deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." +"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı " +"deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." #, boost-format msgid "" @@ -3438,8 +3430,8 @@ msgid "Send to" msgstr "Gönderildi" msgid "" -"printers at the same time.(It depends on how many devices can undergo " -"heating at the same time.)" +"printers at the same time.(It depends on how many devices can undergo heating " +"at the same time.)" msgstr "" "aynı anda kaç yazıcının ısıtma işleminden geçebileceği, aynı anda " "ısıtılabilecek cihaz sayısına bağlıdır." @@ -3546,8 +3538,8 @@ msgid "" "The recommended minimum temperature is less than 190 degree or the " "recommended maximum temperature is greater than 300 degree.\n" msgstr "" -"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum " -"sıcaklık 300 dereceden yüksektir.\n" +"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum sıcaklık " +"300 dereceden yüksektir.\n" msgid "" "The recommended minimum temperature cannot be higher than the recommended " @@ -3584,13 +3576,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature," -"it may result in material softening and clogging.The maximum safe " -"temperature for the material is %d" +"Current chamber temperature is higher than the material's safe temperature,it " +"may result in material softening and clogging.The maximum safe temperature " +"for the material is %d" msgstr "" -"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, " -"malzemenin yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum " -"güvenli sıcaklık %d'dir" +"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, malzemenin " +"yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum güvenli " +"sıcaklık %d'dir" msgid "" "Too small layer height.\n" @@ -3644,16 +3636,16 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness " -"is set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness is " +"set to All. " msgstr "" -"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak " -"ayarlandığından emin olunduğunda iyi çalışmaz. " +"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından " +"emin olunduğunda iyi çalışmaz. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable " -"alternate extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable alternate " +"extra wall\n" "No - Dont use alternate extra wall" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi? \n" @@ -3730,8 +3722,7 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " -"etkinleştirin\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" msgid "Auto bed leveling" @@ -3864,9 +3855,9 @@ msgid "Update failed." msgstr "Güncelleme başarısız." msgid "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" -"TPU) is not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds 45℃." +"In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is " +"not allowed to be loaded." msgstr "" "Mevcut hazne sıcaklığı veya hedef hazne sıcaklığı 45 ° C'yi aşıyor Ekstruder " "tıkanmasını önlemek için düşük sıcaklıkta filament (PLA / PETG / TPU) " @@ -3893,8 +3884,7 @@ msgstr "" msgid "Failed to start printing job" msgstr "Yazdırma işi başlatılamadı" -msgid "" -"This calibration does not support the currently selected nozzle diameter" +msgid "This calibration does not support the currently selected nozzle diameter" msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir" msgid "Current flowrate cali param is invalid" @@ -3919,12 +3909,12 @@ msgid "" "Damp PVA will become flexible and get stuck inside AMS,please take care to " "dry it before use." msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " -"önce kurutmaya dikkat edin." +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " +"kurutmaya dikkat edin." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " +"please use with caution." msgstr "" "CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " "kolaydır, lütfen dikkatli kullanın." @@ -4939,8 +4929,8 @@ msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing " -"the configs." +"Hint: Make sure you have added the corresponding printer before importing the " +"configs." msgstr "" "\n" "İpucu: Yapılandırmaları içe aktarmadan önce ilgili yazıcıyı eklediğinizden " @@ -4989,8 +4979,7 @@ msgid "Please confirm if the printer is connected." msgstr "Lütfen yazıcının bağlı olup olmadığını onaylayın." msgid "" -"The printer is currently busy downloading. Please try again after it " -"finishes." +"The printer is currently busy downloading. Please try again after it finishes." msgstr "" "Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." @@ -5001,8 +4990,7 @@ msgid "Problem occured. Please update the printer firmware and try again." msgstr "" "Sorun oluştu. Lütfen yazıcının ürün yazılımını güncelleyin ve tekrar deneyin." -msgid "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" "Yalnızca LAN Canlı İzleme kapalı. Lütfen yazıcı ekranındaki canlı " "görüntülemeyi açın." @@ -5017,8 +5005,8 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Bağlantı Başarısız. Lütfen ağı kontrol edip tekrar deneyin" msgid "" -"Please check the network and try again, You can restart or update the " -"printer if the issue persists." +"Please check the network and try again, You can restart or update the printer " +"if the issue persists." msgstr "" "Lütfen ağı kontrol edip tekrar deneyin. Sorun devam ederse yazıcıyı yeniden " "başlatabilir veya güncelleyebilirsiniz." @@ -5161,8 +5149,7 @@ msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" "%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "" -"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" msgid "Delete files" msgstr "Dosyaları sil" @@ -5222,8 +5209,8 @@ msgid "" "Reconnecting the printer, the operation cannot be completed immediately, " "please try again later." msgstr "" -"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha " -"sonra tekrar deneyin." +"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha sonra " +"tekrar deneyin." msgid "File does not exist." msgstr "Dosya bulunmuyor." @@ -5306,8 +5293,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki " -"derecelendirmenin üzerine yazılacaktır)" +"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki derecelendirmenin " +"üzerine yazılacaktır)" msgid "Rate" msgstr "Derecelendir" @@ -5819,7 +5806,7 @@ msgid "View all object's settings" msgstr "Nesnenin tüm ayarları" msgid "Material settings" -msgstr "" +msgstr "Malzeme ayarları" msgid "Remove current plate (if not last one)" msgstr "Mevcut tablayı kaldırın (eğer sonuncusu değilse)" @@ -5898,13 +5885,13 @@ msgid "Search plate, object and part." msgstr "Arama plakası, nesne ve parça." msgid "Pellets" -msgstr "" +msgstr "Peletler" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " -"sayfasında bir yazıcı seçin." +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " +"bir yazıcı seçin." msgid "Sync filaments with AMS" msgstr "Filamentleri AMS ile senkronize et" @@ -5917,8 +5904,7 @@ msgstr "" "ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" +"Already did a synchronization, do you want to sync only changes or resync all?" msgstr "" "Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " "mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" @@ -5933,13 +5919,13 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"There are some unknown filaments mapped to generic preset. Please update Orca " +"Slicer or restart Orca Slicer to check if there is an update to system " "presets." msgstr "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " -"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " -"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " +"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " +"güncelleyin veya Orca Slicer'ı yeniden başlatın." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5964,13 +5950,13 @@ msgid "Restore" msgstr "Geri Yükleme" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be " -"clogged when printing this filament in a closed enclosure. Please open the " -"front door and/or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be clogged " +"when printing this filament in a closed enclosure. Please open the front door " +"and/or remove the upper glass." msgstr "" -"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir " -"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/" -"veya üst camı çıkarın." +"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir muhafaza " +"içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/veya üst camı " +"çıkarın." msgid "" "The nozzle hardness required by the filament is higher than the default " @@ -6033,8 +6019,8 @@ msgstr "Lütfen bunları parametre sekmelerinde düzeltin" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-" -"kodları bulunmaktadır:" +"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-kodları " +"bulunmaktadır:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6268,8 +6254,8 @@ msgstr "" "dosyayı indirin ve manuel olarak içe aktarın." msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." +"Importing to Orca Slicer failed. Please download the file and manually import " +"it." msgstr "" "Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel " "olarak İçe aktarın." @@ -6357,15 +6343,15 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." +"The file %s has been sent to the printer's storage space and can be viewed on " +"the printer." msgstr "" "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " "görüntülenebiliyor." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts will " +"be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -6479,8 +6465,8 @@ msgstr "" #, c-format, boost-format msgid "" "Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." +"still want to do this printing, please set this filament's bed temperature to " +"non zero." msgstr "" "Plaka% d: %s'nin %s(%s) filamentinı yazdırmak için kullanılması önerilmez. " "Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamentin yatak " @@ -6517,19 +6503,19 @@ msgid "Choose Download Directory" msgstr "İndirme Dizini seçin" msgid "Associate" -msgstr "" +msgstr "Ortak" msgid "with OrcaSlicer so that Orca can open models from" -msgstr "" +msgstr "Orca’nın modelleri açabilmesi için OrcaSlicer ile" msgid "Current Association: " -msgstr "" +msgstr "Mevcut Ortak:" msgid "Current Instance" -msgstr "" +msgstr "Mevcut Örnek" msgid "Current Instance Path: " -msgstr "" +msgstr "Mevcut Örnek Yolu:" msgid "General Settings" msgstr "Genel Ayarlar" @@ -6583,8 +6569,8 @@ msgstr "Yalnızca bir OrcaSlicer örneğine izin ver" msgid "" "On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. " -"In such case this settings will allow only one instance." +"it is allowed to run multiple instances of same app from the command line. In " +"such case this settings will allow only one instance." msgstr "" "OSX’te her zaman varsayılan olarak çalışan tek bir uygulama örneği vardır. " "Ancak aynı uygulamanın birden fazla örneğinin komut satırından " @@ -6592,9 +6578,8 @@ msgstr "" "örneğe izin verecektir." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the " -"same OrcaSlicer is already running, that instance will be reactivated " -"instead." +"If this is enabled, when starting OrcaSlicer and another instance of the same " +"OrcaSlicer is already running, that instance will be reactivated instead." msgstr "" "Bu etkinleştirilirse, OrcaSlicer başlatıldığında ve aynı OrcaSlicer’ın başka " "bir örneği zaten çalışıyorken, bunun yerine bu örnek yeniden " @@ -6686,12 +6671,11 @@ msgstr "" "hatırlayacak ve otomatik olarak değiştirecektir." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "" -"Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." +msgstr "Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." msgid "" -"With this option enabled, you can send a task to multiple devices at the " -"same time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the same " +"time and manage multiple devices." msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." @@ -6765,8 +6749,8 @@ msgstr "Otomatik yedekleme" msgid "" "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " -"düzenli aralıklarla yedekleyin." +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " +"aralıklarla yedekleyin." msgid "every" msgstr "her" @@ -7123,8 +7107,7 @@ msgid "Error code" msgstr "Hata kodu" msgid "No login account, only printers in LAN mode are displayed" -msgstr "" -"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" +msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" msgid "Connecting to server" msgstr "Sunucuya baglanıyor" @@ -7192,8 +7175,7 @@ msgstr "" "desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." +"The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" "Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " "destekler." @@ -7254,8 +7236,8 @@ msgstr "" msgid "" "There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." +"they are the required filaments. If they are okay, press \"Confirm\" to start " +"printing." msgstr "" "AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " "filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " @@ -7287,8 +7269,7 @@ msgstr "" "hasarına neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "" -"Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." +msgstr "Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -7439,11 +7420,11 @@ msgid "" "successes and failures of the vast number of prints by our users. We are " "training %s to be smarter by feeding them the real-world data. If you are " "willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +"logs, which may include information described in Privacy Policy. We will not " +"collect any Personal Data by which an individual can be identified directly " +"or indirectly, including without limitation names, addresses, payment " +"information, or phone numbers. By enabling this service, you agree to these " +"terms and the statement about Privacy Policy." msgstr "" "3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " "düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " @@ -7494,16 +7475,16 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the model " +"without prime tower. Are you sure you want to disable prime tower?" msgstr "" "Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " "kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " "misiniz?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the model " +"without prime tower. Do you want to enable prime tower?" msgstr "" "Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " "olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " @@ -7532,11 +7513,11 @@ msgstr "" msgid "" "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." +"settings: at least 2 interface layers, at least 0.1mm top z distance or using " +"support materials on interface." msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " -"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " +"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " "malzemeleri kullanılması." msgid "" @@ -7575,8 +7556,8 @@ msgid "" "height limits ,this may cause printing quality issues." msgstr "" "Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği " -"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına " -"neden olabilir." +"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden " +"olabilir." msgid "Adjust to the set range automatically? \n" msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı? \n" @@ -7590,8 +7571,8 @@ msgstr "Atla" msgid "" "Experimental feature: Retracting and cutting off the filament at a greater " "distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other " -"printing complications." +"reduce flush, it may also elevate the risk of nozzle clogs or other printing " +"complications." msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek " "için filamanı daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli " @@ -7613,8 +7594,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive\"-" +">\"Timelapse Wipe Tower\"." msgstr "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -7663,8 +7644,8 @@ msgid "" "the overhang degree range and wall speed is used" msgstr "" "Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " -"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " +"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" msgid "Bridge" msgstr "Köprü" @@ -7764,11 +7745,11 @@ msgid "Cool plate" msgstr "Soğuk plaka" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does " +"not support to print on the Cool Plate" msgstr "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool " -"Plate üzerine yazdırmayı desteklemediği anlamına gelir" +"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " +"üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Engineering plate" msgstr "Mühendislik plakası" @@ -8097,16 +8078,16 @@ msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyo #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it contains " +"the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it contains " +"the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" @@ -8140,8 +8121,8 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri " -"yeni projeye aktarmayı seçebilirsiniz." +"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri yeni " +"projeye aktarmayı seçebilirsiniz." msgid "Extruders count" msgstr "Ekstruder sayısı" @@ -8165,19 +8146,19 @@ msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close " -"this dialog." +"Note: New modified presets will be selected in settings tabs after close this " +"dialog." msgstr "" "Seçilen seçenekleri sol ön ayardan sağa aktarın.\n" -"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde " -"değiştirilen yeni ön ayarlar seçilecektir." +"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde değiştirilen " +"yeni ön ayarlar seçilecektir." msgid "Transfer values from left to right" msgstr "Değerleri soldan sağa aktarın" msgid "" -"If enabled, this dialog can be used for transfer selected values from left " -"to right preset." +"If enabled, this dialog can be used for transfer selected values from left to " +"right preset." msgstr "" "Etkinleştirilirse, bu iletişim kutusu seçilen değerleri soldan sağa ön ayara " "aktarmak için kullanılabilir." @@ -8318,11 +8299,11 @@ msgstr "Sıkıştırma özelleştirme" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the unloaded " +"filament so it does not prevent insertion of the new filament and can itself " +"be reinserted later. This phase is important and different materials can " +"require different extrusion speeds to get the good shape. For this reason, " +"the extrusion rates during ramming are adjustable.\n" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." @@ -8407,15 +8388,15 @@ msgstr "" "‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes " -"to re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes to " +"re-register it. You will be promoted twice" msgstr "" "BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden " "kaydetmek için Evet’e basın." msgid "" -"Missing BambuSource component registered for media playing! Please re-" -"install BambuStutio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-install " +"BambuStutio or seek after-sales help." msgstr "" "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen BambuStutio’yu " "yeniden yükleyin veya satış sonrası yardım isteyin." @@ -8428,9 +8409,9 @@ msgstr "" "çalışmayabilir! Düzeltmek için Evet’e basın." msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to " -"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" -"libav packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to play " +"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav " +"packages, then restart Orca Slicer?)" msgstr "" "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec " "bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav " @@ -8725,8 +8706,8 @@ msgstr "Ağ eklentisi güncellemesi" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " -"için Tamam'a tıklayın." +"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek için " +"Tamam'a tıklayın." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -8783,8 +8764,7 @@ msgstr "Nozulu Onaylayın ve Güncelleyin" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN Bağlantısı Başarısız (Yazdırma dosyası gönderiliyor)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." msgstr "" "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu doğrulayın." @@ -8853,8 +8833,8 @@ msgid "Updating successful" msgstr "Güncelleme başarılı" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not turn " +"off the power while the printer is updating." msgstr "" "Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " "Yazıcı güncellenirken gücü kapatmayın." @@ -8873,10 +8853,9 @@ msgid "" "printing. Do you want to update now? You can also update later on printer or " "update next time starting Orca." msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " -"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " -"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " -"güncelleyebilirsiniz." +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " +"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " +"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." msgid "Extension Board" msgstr "Uzatma Kartı" @@ -9028,8 +9007,8 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " +"extrusion width" msgstr "" "Flow::with_spacing()'e sağlanan geçersiz boşluk, kat yüksekliğinizi ve " "ekstrüzyon genişliğinizi kontrol edin" @@ -9162,8 +9141,8 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" +"together. Otherwise, the extruder and nozzle may be blocked or damaged during " +"printing" msgstr "" "Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " "takdirde baskı sırasında ekstruder ve nozul tıkanabilir veya hasar görebilir" @@ -9182,8 +9161,8 @@ msgid "" "Please select \"By object\" print sequence to print multiple objects in " "spiral vase mode." msgstr "" -"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye göre" -"\" yazdırma sırasını seçin." +"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " +"göre\" yazdırma sırasını seçin." msgid "" "The spiral vase mode does not work when an object contains more than one " @@ -9196,8 +9175,8 @@ msgstr "%1% nesnesi maksimum yapı hacmi yüksekliğini aşıyor." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds the " +"maximum build volume height." msgstr "" "%1% nesnesinin kendisi yapı hacmine uysa da, son katmanı maksimum yapı hacmi " "yüksekliğini aşıyor." @@ -9226,8 +9205,7 @@ msgstr "" "Temizleme Kulesi şu anda yalnızca ilgili ekstruder adreslemesiyle " "desteklenmektedir (use_relative_e_distances=1)." -msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +msgid "Ooze prevention is currently not supported with the prime tower enabled." msgstr "Sızıntı önleme şu anda ana kule etkinken desteklenmemektedir." msgid "" @@ -9244,8 +9222,8 @@ msgid "" "The prime tower is not supported when adaptive layer height is on. It " "requires that all objects have the same layer height." msgstr "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " -"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " +"aynı katman yüksekliğine sahip olmasını gerektirir." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" @@ -9253,12 +9231,11 @@ msgstr "" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " -"gerektirir" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" +"The prime tower requires that all objects are printed over the same number of " +"raft layers" msgstr "" "Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " "gerektirir" @@ -9271,8 +9248,8 @@ msgstr "" "gerektirir." msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +"The prime tower is only supported if all objects have the same variable layer " +"height" msgstr "" "Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " "olması durumunda desteklenir" @@ -9286,8 +9263,7 @@ msgstr "Çok büyük çizgi genişliği" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " -"olmalıdır." +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9300,8 +9276,8 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " -"katından daha küçük olamaz." +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " +"daha küçük olamaz." msgid "" "Organic support branch diameter must not be smaller than support tree tip " @@ -9318,20 +9294,20 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozul çapını aşamaz" msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"Relative extruder addressing requires resetting the extruder position at each " +"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " -"için her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. " -"Layer_gcode'a \"G92 E0\" ekleyin." +"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " +"her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " +"\"G92 E0\" ekleyin." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " -"adreslemeyle uyumsuzdu." +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " +"uyumsuzdu." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " @@ -9370,8 +9346,8 @@ msgid "" "(machine_max_acceleration_extruding).\n" "Orca will automatically cap the acceleration speed to ensure it doesn't " "surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your " -"printer's configuration to get higher speeds." +"You can adjust the machine_max_acceleration_extruding value in your printer's " +"configuration to get higher speeds." msgstr "" "Hızlanma ayarı yazıcının maksimum hızlanmasını aşıyor " "(machine_max_acceleration_extruding).\n" @@ -9432,8 +9408,7 @@ msgid "Elephant foot compensation" msgstr "Fil ayağı telafi oranı" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +"Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "" "Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" @@ -9492,15 +9467,15 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the hostname, IP address or URL of the printer host instance. Print " "host behind HAProxy with basic auth enabled can be accessed by putting the " -"user name and password into the URL in the following format: https://" -"username:password@your-octopi-address/" +"user name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " -"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " -"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " -"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" -"username:password@your-octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " +"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " +"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " +"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" +"octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -9508,8 +9483,7 @@ msgstr "Cihaz kullanıcı arayüzü" msgid "" "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " -"belirtin" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" msgid "API Key / Password" msgstr "API Anahtarı / Şifre" @@ -9518,9 +9492,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " -"içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9530,8 +9503,8 @@ msgstr "HTTPS CA Dosyası" msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." +"in crt/pem format. If left blank, the default OS CA certificate repository is " +"used." msgstr "" "HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " "dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " @@ -9582,10 +9555,10 @@ msgid "" "either as an absolute value or as percentage (for example 50%) of a direct " "travel path. Zero to disable" msgstr "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " -"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " -"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " -"belirtilebilir. Devre dışı bırakmak için sıfır" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " +"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " +"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " +"Devre dışı bırakmak için sıfır" msgid "mm or %" msgstr "mm veya %" @@ -9594,8 +9567,8 @@ msgid "Other layers" msgstr "Diğer katmanlar" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9604,22 +9577,22 @@ msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Engineering Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " "Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the High Temp Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Textured PEI Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9701,11 +9674,11 @@ msgid "" "The number of bottom solid layers is increased when slicing if the thickness " "calculated by bottom shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" +"is disabled and thickness of bottom shell is absolutely determained by bottom " +"shell layers" msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -9719,8 +9692,7 @@ msgid "" "\n" "Options:\n" "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" "3. Nowhere: Disables gap fill\n" msgstr "" "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak minimum " @@ -9746,19 +9718,19 @@ msgid "Force cooling for overhang and bridge" msgstr "Çıkıntı ve köprüler için soğutmayı zorla" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and bridge " +"to get better cooling" msgstr "" -"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma " -"fanı hızını optimize etmek amacıyla bu seçeneği etkinleştirin" +"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma fanı " +"hızını optimize etmek amacıyla bu seçeneği etkinleştirin" msgid "Fan speed for overhang" msgstr "Çıkıntılar için fan hızı" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang wall " +"which has large overhang degree. Forcing cooling for overhang and bridge can " +"get better quality for these part" msgstr "" "Çıkıntı derecesi büyük olan köprü veya çıkıntılı duvara baskı yaparken parça " "soğutma fanını bu hızda olmaya zorlayın. Çıkıntı ve köprü için soğutmayı " @@ -9770,9 +9742,9 @@ msgstr "Çıkıntı soğutması" #, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" +"exceeds this value. Expressed as percentage which indicides how much width of " +"the line without support from lower layer. 0% means forcing cooling for all " +"outer wall no matter how much overhang degree" msgstr "" "Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " "belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " @@ -9806,8 +9778,8 @@ msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " "material for bridge, to improve sag" msgstr "" -"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu " -"değeri biraz azaltın (örneğin 0,9)" +"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu değeri " +"biraz azaltın (örneğin 0,9)" msgid "Internal bridge flow ratio" msgstr "İç köprü akış oranı" @@ -9875,11 +9847,11 @@ msgid "" "on the next layer, like letters. Set this setting to 0 to remove these " "artifacts." msgstr "" -"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından " -"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak " +"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa " +"layer genişliği bu değerin altında olan bir üst katman olarak " "değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir " -"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya " -"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" +"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya a " +"% çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" "Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince " "özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları " "kaldırmak için bu ayarı 0 olarak ayarlayın." @@ -9911,9 +9883,9 @@ msgid "Overhang reversal" msgstr "Çıkıntıyı tersine çevir" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on odd layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction " +"on odd layers. This alternating pattern can drastically improve steep " +"overhangs.\n" "\n" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." @@ -9935,8 +9907,7 @@ msgid "" "alternating directions. This should reduce part warping while also " "maintaining external wall quality. This feature can be very useful for warp " "prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over " -"supports.\n" +"Silk PLA. It can also help reduce warping on floating regions over supports.\n" "\n" "For this setting to be the most effective, it is recomended to set the " "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -9968,8 +9939,7 @@ msgstr "" "Bu seçenek, havşa delikleri için köprüler oluşturarak bunların desteksiz " "yazdırılmasına olanak tanır. Mevcut modlar şunları içerir:\n" "1. Yok: Köprü oluşturulmaz.\n" -"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı " -"köprülenecek.\n" +"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı köprülenecek.\n" "3. Feda Katman: Tam bir feda köprü katmanı oluşturulur." msgid "Partially bridged" @@ -10089,8 +10059,8 @@ msgid "Brim ear detection radius" msgstr "Kenar kulak algılama yarıçapı" msgid "" -"The geometry will be decimated before dectecting sharp angles. This " -"parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This parameter " +"indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" "Keskin açılar tespit edilmeden önce geometrinin büyük bir kısmı yok " @@ -10139,10 +10109,10 @@ msgid "" "that layer can be cooled for longer time. This can improve the cooling " "quality for needle and small details" msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " -"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " -"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " -"iğne ve küçük detaylar için soğutma kalitesini artırabilir" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " +"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu " +"seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne " +"ve küçük detaylar için soğutma kalitesini artırabilir" msgid "Normal printing" msgstr "Normal baskı" @@ -10151,8 +10121,7 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " -"ivmesi" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" msgid "mm/s²" msgstr "mm/s²" @@ -10196,8 +10165,8 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " -"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " +"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" msgid "Don't support bridges" msgstr "Köprülerde destek olmasın" @@ -10238,8 +10207,8 @@ msgid "Don't filter out small internal bridges (beta)" msgstr "Küçük iç köprüleri filtrelemeyin (deneysel)" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted " -"or curved models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted or " +"curved models.\n" "\n" "By default, small internal bridges are filtered out and the internal solid " "infill is printed directly over the sparse infill. This works well in most " @@ -10254,16 +10223,16 @@ msgid "" "unsupported internal solid infill. The options below control the amount of " "filtering, i.e. the amount of internal bridges created.\n" "\n" -"Disabled - Disables this option. This is the default behaviour and works " -"well in most cases.\n" +"Disabled - Disables this option. This is the default behaviour and works well " +"in most cases.\n" "\n" "Limited filtering - Creates internal bridges on heavily slanted surfaces, " -"while avoiding creating uncessesary interal bridges. This works well for " -"most difficult models.\n" +"while avoiding creating uncessesary interal bridges. This works well for most " +"difficult models.\n" "\n" -"No filtering - Creates internal bridges on every potential internal " -"overhang. This option is useful for heavily slanted top surface models. " -"However, in most cases it creates too many unecessary bridges." +"No filtering - Creates internal bridges on every potential internal overhang. " +"This option is useful for heavily slanted top surface models. However, in " +"most cases it creates too many unecessary bridges." msgstr "" "Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki " "yastıklamanın azaltılmasına yardımcı olabilir.\n" @@ -10415,8 +10384,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " -"için iç duvar hızından daha yavaş olması kullanılır." +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " +"iç duvar hızından daha yavaş olması kullanılır." msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" @@ -10445,8 +10414,8 @@ msgstr "Duvar baskı sırası" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighouring perimeter while printing. However, this option " +"Use Inner/Outer for best overhangs. This is because the overhanging walls can " +"adhere to a neighouring perimeter while printing. However, this option " "results in slightly reduced surface quality as the external perimeter is " "deformed by being squashed to the internal perimeter.\n" "\n" @@ -10477,14 +10446,14 @@ msgstr "" "kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış " "duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı " "düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış " -"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması " -"için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine " -"karşı önerilir. \n" +"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için " +"en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı " +"önerilir. \n" "\n" "İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk " "avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir " -"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z " -"dikişleri daha az tutarlı görünecektir.\n" +"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z dikişleri " +"daha az tutarlı görünecektir.\n" "\n" " " @@ -10506,9 +10475,9 @@ msgid "" "\n" "Printing infill first may help with extreme overhangs as the walls have the " "neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"the printed walls where it is attached to them, resulting in a worse external " +"surface finish. It can also cause the infill to shine through the external " +"surfaces of the part." msgstr "" "Duvar/dolgu sırası. Onay kutusu işaretlenmediğinde duvarlar önce yazdırılır, " "bu çoğu durumda en iyi şekilde çalışır.\n" @@ -10526,8 +10495,8 @@ msgid "" "The direction which the wall loops are extruded when looking down from the " "top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on " -"odd is enabled. Set this to any option other than Auto will force the wall " +"By default all walls are extruded in counter-clockwise, unless Reverse on odd " +"is enabled. Set this to any option other than Auto will force the wall " "direction regardless of the Reverse on odd.\n" "\n" "This option will be disabled if sprial vase mode is enabled." @@ -10535,8 +10504,8 @@ msgstr "" "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı yön.\n" "\n" "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak tüm " -"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " -"herhangi bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " +"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında herhangi " +"bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " "zorlayacaktır.\n" "\n" "Spiral vazo modu etkinse bu seçenek devre dışı bırakılacaktır." @@ -10564,8 +10533,8 @@ msgid "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " -"önlemek için kullanılır." +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " +"için kullanılır." msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " @@ -10588,20 +10557,19 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (-99999, -99999), which " -"means there are no limits, thus allowing probing across the entire bed." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " +"these min/max points. This information can usually be obtained from your " +"printer manufacturer. The default setting is (-99999, -99999), which means " +"there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob " -"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve " -"maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (-99999, -99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob XY " +"ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(-99999, -99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına " +"gelir, dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Bed mesh max" msgstr "Maksimum yatak ağı" @@ -10611,20 +10579,19 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (99999, 99999), which " -"means there are no limits, thus allowing probing across the entire bed." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " +"these min/max points. This information can usually be obtained from your " +"printer manufacturer. The default setting is (99999, 99999), which means " +"there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. " -"Probun XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob " -"noktasının yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum " -"ve maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (99999, 99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. Probun " +"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(99999, 99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına gelir, " +"dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Probe point distance" msgstr "Prob noktası mesafesi" @@ -10641,8 +10608,8 @@ msgid "Mesh margin" msgstr "Yatak ağı boşluğu" msgid "" -"This option determines the additional distance by which the adaptive bed " -"mesh area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed mesh " +"area should be expanded in the XY directions." msgstr "" "Bu seçenek, uyarlanabilir yatak ağ alanının XY yönlerinde genişletilmesi " "gereken ek mesafeyi belirler." @@ -10662,9 +10629,9 @@ msgstr "Akış oranı" msgid "" "The material may have volumetric change after switching between molten state " "and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow" +"filament in gcode proportionally. Recommended value range is between 0.95 and " +"1.05. Maybe you can tune this value to get nice flat surface when there has " +"slight overflow or underflow" msgstr "" "Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " "değişime sahip olabilir. Bu ayar, bu filamentin gcode'daki tüm ekstrüzyon " @@ -10686,8 +10653,8 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Basınç avansı (Klipper) Doğrusal ilerleme faktörü (Marlin)" msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, it " +"will be computed over the nozzle diameter." msgstr "" "Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " "olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır." @@ -10696,8 +10663,8 @@ msgid "Keep fan always on" msgstr "Fanı her zaman açık tut" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run at " +"least at minimum speed to reduce the frequency of starting and stoping" msgstr "" "Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " "ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " @@ -10799,7 +10766,7 @@ msgstr "" "önemlidir ve doğru olmalıdır" msgid "Pellet flow coefficient" -msgstr "" +msgstr "Pelet akış katsayısı" msgid "" "Pellet flow coefficient is emperically derived and allows for volume " @@ -10810,6 +10777,13 @@ msgid "" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" +"Pelet akış katsayısı ampirik olarak türetilir ve pelet yazıcıları için hacim " +"hesaplamasına olanak tanır.\n" +"\n" +"Dahili olarak filament_çapına dönüştürülür. Diğer tüm hacim hesaplamaları " +"aynı kalır.\n" +"\n" +"filament_çapı = sqrt( (4 * pellet_akış_katsayısı) / PI )" msgid "Shrinkage" msgstr "Büzüşme" @@ -10822,11 +10796,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " -"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " +"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " "Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " -"boşluk bıraktığınızdan emin olun." +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " +"bıraktığınızdan emin olun." msgid "Loading speed" msgstr "Yükleme hızı" @@ -10877,8 +10851,8 @@ msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves." msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " -"Bu sayısını belirtin." +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " +"sayısını belirtin." msgid "Speed of the first cooling move" msgstr "İlk soğutma hareketi hızı" @@ -10892,9 +10866,9 @@ msgstr "Silme kulesi üzerinde minimum boşaltım" msgid "" "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, Orca Slicer will always prime this amount of material into the wipe " -"tower to produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial object, " +"Orca Slicer will always prime this amount of material into the wipe tower to " +"produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " @@ -10911,13 +10885,12 @@ msgstr "Soğutma hareketleri bu hıza doğru giderek hızlanır." msgid "" "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." +"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." msgstr "" "Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " -"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " -"süresi. Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine " -"eklenir." +"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme süresi. " +"Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine eklenir." msgid "Ramming parameters" msgstr "Sıkıştırma parametreleri" @@ -10931,8 +10904,8 @@ msgstr "" msgid "" "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." +"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." msgstr "" "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " "sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " @@ -10980,8 +10953,7 @@ msgstr "Filament malzeme türü" msgid "Soluble material" msgstr "Çözünür malzeme" -msgid "" -"Soluble material is commonly used to print support and support interface" +msgid "Soluble material is commonly used to print support and support interface" msgstr "" "Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -10989,8 +10961,7 @@ msgstr "" msgid "Support material" msgstr "Destek malzemesi" -msgid "" -"Support material is commonly used to print support and support interface" +msgid "Support material is commonly used to print support and support interface" msgstr "" "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11038,8 +11009,8 @@ msgid "Solid infill direction" msgstr "Katı dolgu yönü" msgid "" -"Angle for solid infill pattern, which controls the start or main direction " -"of line" +"Angle for solid infill pattern, which controls the start or main direction of " +"line" msgstr "" "Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" @@ -11057,8 +11028,8 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya " -"dönüştürür ve iç katı dolgu modeli kullanılacaktır" +"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya dönüştürür " +"ve iç katı dolgu modeli kullanılacaktır" msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -11106,23 +11077,22 @@ msgid "" "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. Orca Slicer 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. \n" +"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. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " -"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " +"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " "sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " -"bu parametreyi sıfıra ayarlayın." +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " +"parametreyi sıfıra ayarlayın." msgid "0 (no open anchors)" msgstr "0 (açık bağlantı yok)" @@ -11137,23 +11107,22 @@ msgid "" "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. Orca Slicer 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. \n" +"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. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " -"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " -"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " -"ancak bu parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " -"ve 0 ile aynı sonucu oluşturmalıdır." +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " +"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır " +"ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " +"parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " +"0 ile aynı sonucu oluşturmalıdır." msgid "0 (Simple connect)" msgstr "0 (Basit bağlantı)" @@ -11171,8 +11140,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " -"üst yüzey kalitesini iyileştirebilir" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " +"yüzey kalitesini iyileştirebilir" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" @@ -11182,8 +11151,8 @@ msgid "" "Acceleration of bridges. If the value is expressed as a percentage (e.g. " "50%), it will be calculated based on the outer wall acceleration." msgstr "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " -"dış duvar ivmesine göre hesaplanacaktır." +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " +"duvar ivmesine göre hesaplanacaktır." msgid "mm/s² or %" msgstr "mm/s² veya %" @@ -11220,8 +11189,7 @@ msgid "accel_to_decel" msgstr "Accel_to_decel" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" "Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" @@ -11254,8 +11222,8 @@ msgid "Initial layer height" msgstr "Başlangıç katman yüksekliği" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"Height of initial layer. Making initial layer height to be thick slightly can " +"improve build plate adhension" msgstr "" "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " "plakasının yapışmasını iyileştirebilir" @@ -11296,16 +11264,16 @@ msgstr "Maksimum fan hızı" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " -"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " -"düşükse göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers" -"\" + 1 katmanında izin verilen maksimum hızda çalışacaktır." +"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden düşükse " +"göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers\" + 1 " +"katmanında izin verilen maksimum hızda çalışacaktır." msgid "layer" msgstr "katman" @@ -11401,11 +11369,11 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " "tolerance is same as the resolution. \n" "\n" -"Note: For klipper machines, this option is recomended to be disabled. " -"Klipper does not benefit from arc commands as these are split again into " -"line segments by the firmware. This results in a reduction in surface " -"quality as line segments are converted to arcs by the slicer and then back " -"to line segments by the firmware." +"Note: For klipper machines, this option is recomended to be disabled. Klipper " +"does not benefit from arc commands as these are split again into line " +"segments by the firmware. This results in a reduction in surface quality as " +"line segments are converted to arcs by the slicer and then back to line " +"segments by the firmware." msgstr "" "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " "etkinleştirin. Montaj toleransı çözünürlükle aynıdır. \n" @@ -11442,8 +11410,8 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " -"filamentin basılabileceğini belirler" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " +"basılabileceğini belirler" msgid "Undefine" msgstr "Tanımsız" @@ -11495,8 +11463,8 @@ msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "Yatak şekline göre [0,1] aralığında en iyi otomatik düzenleme konumu." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code command: " +"M106 P2 S(0-255)." msgstr "" "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin. G-code " "komut: M106 P2 S(0-255)." @@ -11539,8 +11507,8 @@ msgid "" msgstr "" "Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " "maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " -"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " +"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." msgid "Time cost" @@ -11583,10 +11551,10 @@ msgid "Klipper" msgstr "Klipper" msgid "Pellet Modded Printer" -msgstr "" +msgstr "Pelet Modlu Yazıcı" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "" +msgstr "Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" msgid "Support multi bed types" msgstr "Çoklu tabla" @@ -11600,21 +11568,20 @@ msgstr "Nesneleri etiketle" msgid "" "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." +"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." msgstr "" "G-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " "yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " -"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " -"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." +"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu " +"ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." msgid "Exclude objects" msgstr "Nesneleri hariç tut" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" -"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" +msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" msgid "Verbose G-code" msgstr "Ayrıntılı G kodu" @@ -11654,10 +11621,10 @@ msgstr "Dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill. Set this " -"value to ~10-15% to minimize potential over extrusion and accumulation of " -"material resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. The " +"percentage value is relative to line width of sparse infill. Set this value " +"to ~10-15% to minimize potential over extrusion and accumulation of material " +"resulting in rough top surfaces." msgstr "" "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe " "genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı " @@ -11670,8 +11637,8 @@ msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" "Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill " -"meets the walls. A value of 25-30% is a good starting point, minimising the " +"bonding and to minimize the appearance of pinholes where the top infill meets " +"the walls. A value of 25-30% is a good starting point, minimising the " "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" @@ -11689,12 +11656,12 @@ msgstr "Arayüz kabukları" msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Useful for multi-extruder prints with translucent materials or manual soluble " +"support material" msgstr "" "Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " -"ekstruder baskıları için kullanışlıdır" +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " +"baskıları için kullanışlıdır" msgid "Maximum width of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği" @@ -11709,53 +11676,62 @@ msgstr "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği" msgid "Interlocking depth of a segmented region. Zero disables this feature." msgstr "" -"Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu " -"özelliği devre dışı bırakır." +"Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu özelliği " +"devre dışı bırakır." msgid "Use beam interlocking" -msgstr "" +msgstr "Işın kilitlemeyi kullanın" msgid "" "Generate interlocking beam structure at the locations where different " "filaments touch. This improves the adhesion between filaments, especially " "models printed in different materials." msgstr "" +"Farklı filamentlerin temas ettiği yerlerde birbirine kenetlenen ışın yapısı " +"oluşturun. Bu, özellikle farklı malzemelerle basılan modeller olmak üzere " +"filamentler arasındaki yapışmayı artırır." msgid "Interlocking beam width" -msgstr "" +msgstr "Kilitli ışın genişliği" msgid "The width of the interlocking structure beams." -msgstr "" +msgstr "Birbirine kenetlenen yapı kirişlerinin genişliği." msgid "Interlocking direction" -msgstr "" +msgstr "Kilitleme yönü" msgid "Orientation of interlock beams." -msgstr "" +msgstr "Kilitleme kirişlerinin yönelimi." msgid "Interlocking beam layers" -msgstr "" +msgstr "Birbirine kenetlenen kiriş katmanları" msgid "" "The height of the beams of the interlocking structure, measured in number of " "layers. Less layers is stronger, but more prone to defects." msgstr "" +"Birbirine kenetlenen yapının kirişlerinin yüksekliği, katman sayısıyla " +"ölçülür. Daha az katman daha güçlüdür ancak kusurlara daha yatkındır." msgid "Interlocking depth" -msgstr "" +msgstr "Kilitleme derinliği" msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" +"Hücrelerde ölçülen, birbirine kenetlenen yapıyı oluşturmak için filamentler " +"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden olur." msgid "Interlocking boundary avoidance" -msgstr "" +msgstr "Birbirine kenetlenen sınırdan kaçınma" msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" +"Birbirine kenetlenen yapıların oluşturulmayacağı bir modelin dışına olan " +"mesafe, hücrelerde ölçülür." msgid "Ironing Type" msgstr "Ütüleme tipi" @@ -11846,8 +11822,8 @@ msgstr "" "G kodu tadı Klipper olarak ayarlandığında bu seçenek göz ardı edilecektir." msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert pause " +"G-code in gcode viewer" msgstr "" "Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " "Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" @@ -11978,8 +11954,8 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Seyahat için maksimum ivme (M204 T), yalnızca Marlin 2 için geçerlidir" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This is " +"the maximum speed limitation of part cooling fan" msgstr "" "Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " "Bu, parça soğutma fanının maksimum hız sınırlamasıdır" @@ -11999,8 +11975,8 @@ msgid "Extrusion rate smoothing" msgstr "Ekstrüzyon hızını yumuşatma" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " +"This parameter smooths out sudden extrusion rate changes that happen when the " +"printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" @@ -12011,12 +11987,11 @@ msgid "" "A value of 0 disables the feature. \n" "\n" "For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some " -"marginal benefit in certain cases where feature speeds vary greatly. For " -"example, when there are aggressive slowdowns due to overhangs. In these " -"cases a high value of around 300-350mm3/s2 is recommended as this allows for " -"just enough smoothing to assist pressure advance achieve a smoother flow " -"transition.\n" +"Voron) this value is usually not needed. However it can provide some marginal " +"benefit in certain cases where feature speeds vary greatly. For example, when " +"there are aggressive slowdowns due to overhangs. In these cases a high value " +"of around 300-350mm3/s2 is recommended as this allows for just enough " +"smoothing to assist pressure advance achieve a smoother flow transition.\n" "\n" "For slower printers without pressure advance, the value should be set much " "lower. A value of 10-15mm3/s2 is a good starting point for direct drive " @@ -12038,13 +12013,13 @@ msgstr "" "\n" "0 değeri özelliği devre dışı bırakır. \n" "\n" -"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab " -"veya Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik " -"hızlarının büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda " -"sağlayabilir. Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. " -"Bu durumlarda 300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, " -"basınç ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı " -"olmak için yeterli yumuşatmaya izin verir.\n" +"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab veya " +"Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik hızlarının " +"büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda sağlayabilir. " +"Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. Bu durumlarda " +"300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, basınç " +"ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı olmak için " +"yeterli yumuşatmaya izin verir.\n" "\n" "Basınç avansı olmayan daha yavaş yazıcılar için değer çok daha düşük " "ayarlanmalıdır. Doğrudan tahrikli ekstruderler için 10-15mm3/s2 ve Bowden " @@ -12141,8 +12116,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field must " "contain the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -12183,8 +12158,8 @@ msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." msgstr "" -"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan " -"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." +"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " +"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." msgid "Extra loading distance" msgstr "Ekstra yükleme mesafesi" @@ -12211,8 +12186,8 @@ msgstr "Dolguda geri çekmeyi azalt" msgid "" "Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex " -"model and save printing time, but make slicing and G-code generating slower" +"oozing can't been seen. This can reduce times of retraction for complex model " +"and save printing time, but make slicing and G-code generating slower" msgstr "" "Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " "görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " @@ -12249,11 +12224,11 @@ msgid "Make overhangs printable - Hole area" msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by conical " +"material.A value of 0 will fill all the holes in the model base." msgstr "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " -"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " +"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." msgid "mm²" msgstr "mm²" @@ -12263,11 +12238,11 @@ msgstr "Çıkıntılı duvarı algıla" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different speed " +"to print. For 100%% overhang, bridge speed is used." msgstr "" -"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için " -"farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." +"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " +"hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -12289,8 +12264,8 @@ msgid "" "This setting adds an extra wall to every other layer. This way the infill " "gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option " -"needs to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option needs " +"to be disabled. \n" "\n" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." @@ -12311,11 +12286,10 @@ msgid "" "argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " -"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " -"ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " -"ve ortam değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına " -"erişebilirler." +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " +"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " +"Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " +"değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına erişebilirler." msgid "Printer notes" msgstr "Yazıcı notları" @@ -12327,8 +12301,7 @@ msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "" -"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" +msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" msgid "Raft expansion" msgstr "Raft genişletme" @@ -12357,8 +12330,8 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " -"yazdırırken sarmayı önlemek için bu işlevi kullanın" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " +"sarmayı önlemek için bu işlevi kullanın" msgid "" "G-code path is genereated after simplifing the contour of model to avoid too " @@ -12373,8 +12346,7 @@ msgid "Travel distance threshold" msgstr "Seyahat mesafesi" msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +"Only trigger retraction when the travel distance is longer than this threshold" msgstr "" "Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " "tetikleyin" @@ -12382,8 +12354,7 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Temizleme işlemi öncesi geri çekme miktarı" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" +msgid "The length of fast retraction before wipe, relative to retraction length" msgstr "" "Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" @@ -12474,8 +12445,8 @@ msgid "Traveling angle" msgstr "" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " -"in Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in " +"Normal Lift" msgstr "" msgid "Only lift Z above" @@ -12608,13 +12579,13 @@ msgid "Seam gap" msgstr "Dikiş boşluğu" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the " +"loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current " +"extruder diameter. The default value for this parameter is 10%." msgstr "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " -"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " +"uğrar ve belirli bir miktarda kısaltılır.\n" "Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " "belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." @@ -12623,8 +12594,8 @@ msgstr "Atkı birleşim dikişi (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için " -"atkı birleşimini kullanın." +"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için atkı " +"birleşimini kullanın." msgid "Conditional scarf joint" msgstr "Koşullu atkı birleşimi" @@ -12642,9 +12613,9 @@ msgstr "Koşullu açı eşiği" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " "seam.\n" -"If the maximum angle within the perimeter loop exceeds this value " -"(indicating the absence of sharp corners), a scarf joint seam will be used. " -"The default value is 155°." +"If the maximum angle within the perimeter loop exceeds this value (indicating " +"the absence of sharp corners), a scarf joint seam will be used. The default " +"value is 155°." msgstr "" "Bu seçenek, koşullu bir atkı eklem dikişi uygulamak için eşik açısını " "ayarlar.\n" @@ -12659,8 +12630,8 @@ msgstr "Koşullu çıkıntı eşiği" msgid "" "This option determines the overhang threshold for the application of scarf " "joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set " -"at 40% of the external wall's width. Due to performance considerations, the " +"threshold, scarf joint seams will be applied. The default threshold is set at " +"40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" "Bu seçenek, atkı bağlantı dikişlerinin uygulanması için sarkma eşiğini " @@ -12674,22 +12645,22 @@ msgstr "Atkı birleşim hızı" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also " -"advisable to enable 'Extrusion rate smoothing' if the set speed varies " -"significantly from the speed of the outer or inner walls. If the speed " -"specified here is higher than the speed of the outer or inner walls, the " -"printer will default to the slower of the two speeds. When specified as a " -"percentage (e.g., 80%), the speed is calculated based on the respective " -"outer or inner wall speed. The default value is set to 100%." +"print scarf joints at a slow speed (less than 100 mm/s). It's also advisable " +"to enable 'Extrusion rate smoothing' if the set speed varies significantly " +"from the speed of the outer or inner walls. If the speed specified here is " +"higher than the speed of the outer or inner walls, the printer will default " +"to the slower of the two speeds. When specified as a percentage (e.g., 80%), " +"the speed is calculated based on the respective outer or inner wall speed. " +"The default value is set to 100%." msgstr "" "Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı " "bağlantılarının yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye " "edilir. Ayarlanan hızın dış veya iç duvarların hızından önemli ölçüde farklı " -"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi " -"de tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından " -"daha yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı " -"seçecektir. Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç " -"duvar hızına göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." +"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi de " +"tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından daha " +"yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı seçecektir. " +"Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç duvar hızına " +"göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." msgid "Scarf joint flow ratio" msgstr "Atkı birleşimi akış oranı" @@ -12703,8 +12674,8 @@ msgstr "Atkı başlangıç ​​yüksekliği" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the current " +"layer height. The default value for this parameter is 0." msgstr "" "Atkı başlangıç yüksekliği.\n" "Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi " @@ -12723,8 +12694,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan " -"devre dışı bırakır." +"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan devre " +"dışı bırakır." msgid "Scarf steps" msgstr "Atkı kademesi" @@ -12765,15 +12736,15 @@ msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" msgid "" -"To minimise visibility of potential overextrusion at the start of an " -"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order, the deretraction is performed slightly on the inside from the " -"start of the external perimeter. That way any potential over extrusion is " -"hidden from the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an external " +"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order, the deretraction is performed slightly on the inside from the start of " +"the external perimeter. That way any potential over extrusion is hidden from " +"the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order as in these modes it is more likely an external perimeter is " -"printed immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order as in these modes it is more likely an external perimeter is printed " +"immediately after a deretraction move." msgstr "" "Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " "başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek için, " @@ -12782,8 +12753,8 @@ msgstr "" "yüzeyden gizlenir. \n" "\n" "Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " -"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen " -"ardından bir dış çevrenin yazdırılması daha olasıdır." +"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen ardından " +"bir dış çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" @@ -12849,8 +12820,7 @@ msgid "Skirt loops" msgstr "Etek sayısı" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "" -"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" +msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" msgid "Skirt speed" msgstr "Etek hızı" @@ -12895,8 +12865,8 @@ msgstr "" "bırakmıştır" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" "İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -12910,8 +12880,8 @@ msgid "" "generated model has no seam" msgstr "" "Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " -"son modelde dikiş yok." +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " +"modelde dikiş yok." msgid "Smooth Spiral" msgstr "Pürüzsüz spiral" @@ -12936,12 +12906,11 @@ msgstr "" msgid "" "If smooth or traditional mode is selected, a timelapse video will be " "generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a " -"timelapse video when printing completes. If smooth mode is selected, the " -"toolhead will move to the excess chute after each layer is printed and then " -"take a snapshot. Since the melt filament may leak from the nozzle during the " -"process of taking a snapshot, prime tower is required for smooth mode to " -"wipe nozzle." +"with the chamber camera. All of these snapshots are composed into a timelapse " +"video when printing completes. If smooth mode is selected, the toolhead will " +"move to the excess chute after each layer is printed and then take a " +"snapshot. Since the melt filament may leak from the nozzle during the process " +"of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." msgstr "" "Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " "oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " @@ -13002,10 +12971,9 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" msgid "" -"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." +"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." msgstr "" "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " "yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini " @@ -13030,16 +12998,16 @@ msgid "" "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " -"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " +"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " "düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." msgid "Slicing Mode" msgstr "Dilimleme modu" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close " +"all holes in the model." msgstr "" "3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " "tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." @@ -13063,10 +13031,9 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" "Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya " -"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: " -"örneğin, endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm " -"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu " -"düzeltin)." +"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, " +"endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm uzakta " +"bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)." msgid "Enable support" msgstr "Desteği etkinleştir" @@ -13120,8 +13087,7 @@ msgid "" "Only create support for critical regions including sharp tail, cantilever, " "etc." msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " -"oluşturun." +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." msgid "Remove small overhangs" msgstr "Küçük çıkıntıları kaldır" @@ -13158,8 +13124,7 @@ msgstr "Taban için arayüz filamentini azaltın" msgid "" "Avoid using support interface filament to print support base if possible." msgstr "" -"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan " -"kaçının" +"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan kaçının" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -13234,8 +13199,8 @@ msgstr "Arayüz deseni" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"interface is Rectilinear, while default pattern for soluble support interface " +"is Concentric" msgstr "" "Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " "model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " @@ -13264,12 +13229,11 @@ msgid "" "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" "For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid " -"style will create similar structure to normal support under large flat " -"overhangs." +"aggressively and save a lot of material (default organic), while hybrid style " +"will create similar structure to normal support under large flat overhangs." msgstr "" -"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara " -"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " +"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara içine " +"projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " "zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki " "izleri azaltır.\n" "Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde " @@ -13318,8 +13282,8 @@ msgid "Tree support branch angle" msgstr "Ağaç desteği dal açısı" msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " +"This setting determines the maximum overhang angle that t he branches of tree " +"support allowed to make.If the angle is increased, the branches can be " "printed more horizontally, allowing them to reach farther." msgstr "" "Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " @@ -13351,11 +13315,10 @@ msgstr "Dal Yoğunluğu" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." +"Adjusts the density of the support structure used to generate the tips of the " +"branches. A higher value results in better overhangs but the supports are " +"harder to remove, thus it is recommended to enable top support interfaces " +"instead of a high branch density value if dense interfaces are needed." msgstr "" "Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " "ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " @@ -13367,8 +13330,8 @@ msgid "Adaptive layer height" msgstr "Uyarlanabilir katman yüksekliği" msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " +"Enabling this option means the height of tree support layer except the first " +"will be automatically calculated " msgstr "" "Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " "yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " @@ -13423,8 +13386,8 @@ msgstr "Çift duvarlı dal çapı" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" "Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." +"printed with double walls for stability. Set this value to zero for no double " +"walls." msgstr "" "Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " @@ -13454,8 +13417,8 @@ msgid "" "added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" -"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 " -"komutu eklenecek \"machine_start_gcode\"\n" +"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 komutu " +"eklenecek \"machine_start_gcode\"\n" "G-code komut: M141/M191 S(0-255)" msgid "Chamber temperature" @@ -13533,11 +13496,11 @@ msgid "" "The number of top solid layers is increased when slicing if the thickness " "calculated by top shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" +"is disabled and thickness of top shell is absolutely determained by top shell " +"layers" msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -13560,12 +13523,11 @@ msgid "Wipe Distance" msgstr "Temizleme mesafesi" msgid "" -"Discribe how long the nozzle will move along the last path when " -"retracting. \n" +"Discribe how long the nozzle will move along the last path when retracting. \n" "\n" "Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"extruder/filament retraction settings are, a retraction move may be needed to " +"retract the remaining filament. \n" "\n" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." @@ -13573,9 +13535,9 @@ msgstr "" "Geri çekilirken nozulun son yol boyunca ne kadar süre hareket edeceğini " "açıklayın. \n" "\n" -"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme " -"ayarlarının ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı " -"geri çekmek için bir geri çekme hareketine ihtiyaç duyulabilir. \n" +"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme ayarlarının " +"ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı geri çekmek için " +"bir geri çekme hareketine ihtiyaç duyulabilir. \n" "\n" "Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, " "silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi " @@ -13625,8 +13587,8 @@ msgid "" "Angle at the apex of the cone that is used to stabilize the wipe tower. " "Larger angle means wider base." msgstr "" -"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki " -"açı. Daha büyük açı daha geniş taban anlamına gelir." +"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " +"Daha büyük açı daha geniş taban anlamına gelir." msgid "Wipe tower purge lines spacing" msgstr "Silme kulesi temizleme hatları aralığı" @@ -13697,8 +13659,8 @@ msgid "" "volumes below." msgstr "" "Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " -"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " -"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." +"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " +"oluşturulmasını basitleştirmek için kullanılır." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -13722,13 +13684,13 @@ msgstr "" msgid "" "This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." +"filament and decrease the print time. Colours of the objects will be mixed as " +"a result. It will not take effect, unless the prime tower is enabled." msgstr "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " -"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " +"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " +"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " +"etkili olmayacaktır." msgid "Maximal bridging distance" msgstr "Maksimum köprüleme mesafesi" @@ -13737,8 +13699,8 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " "filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " +"sürece etkili olmayacaktır." msgid "X-Y hole compensation" msgstr "X-Y delik dengeleme" @@ -13763,8 +13725,8 @@ msgid "" "assembling issue" msgstr "" "Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " -"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " +"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " "kullanılır" msgid "Convert holes to polyholes" @@ -13788,14 +13750,14 @@ msgstr "Çokgen delik tespiti marjı" msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" "As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to " -"broaden the detection.\n" +"be on the circle circumference. This setting allows you some leway to broaden " +"the detection.\n" "In mm or in % of the radius." msgstr "" "Bir noktanın dairenin tahmini yarıçapına göre maksimum sapması.\n" "Silindirler genellikle farklı boyutlarda üçgenler olarak ihraç edildiğinden, " -"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz " -"için size biraz alan sağlar.\n" +"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz için " +"size biraz alan sağlar.\n" "inc mm cinsinden veya yarıçapın %'si cinsinden." msgid "Polyhole twist" @@ -13818,8 +13780,8 @@ msgid "Format of G-code thumbnails" msgstr "G kodu küçük resimlerinin formatı" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI " +"for low memory firmware" msgstr "" "G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut " "için JPG, düşük bellekli donanım yazılımı için QOI" @@ -13840,11 +13802,11 @@ msgstr "" msgid "" "Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" +"very thin areas is used gap-fill. Arachne engine produces walls with variable " +"extrusion width" msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " -"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " +"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " "ekstrüzyon genişliğine sahip duvarlar üretir" msgid "Classic" @@ -13871,20 +13833,19 @@ msgstr "Duvar geçiş filtresi oranı" msgid "" "Prevent transitioning back and forth between one extra wall and one less. " "This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall 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. It's expressed as a " -"percentage over nozzle diameter" +"wall width - margin, 2 * Minimum wall 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. It's expressed as a percentage over " +"nozzle diameter" msgstr "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " -"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " +"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " "genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " "aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " "ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " -"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " -"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " -"edilir" +"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon " +"sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade edilir" msgid "Wall transitioning threshold angle" msgstr "Duvar geçiş açısı" @@ -13896,11 +13857,11 @@ msgid "" "this setting reduces the number and length of these center walls, but may " "leave gaps or overextrude" msgstr "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " -"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " -"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " -"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " -"ancak boşluklara veya aşırı çıkıntıya neden olabilir" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " +"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " +"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " +"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " +"boşluklara veya aşırı çıkıntıya neden olabilir" msgid "Wall distribution count" msgstr "Duvar dağılım sayısı" @@ -13916,9 +13877,9 @@ msgid "Minimum feature size" msgstr "Minimum özellik boyutu" msgid "" -"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 wall width. It's expressed as a " +"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 wall width. It's expressed as a " "percentage over nozzle diameter" msgstr "" "İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " @@ -13935,28 +13896,27 @@ msgid "" "\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent " "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a " -"top-surface. 'One wall threshold' is only visibile if this setting is set " -"above the default value of 0.5, or if single-wall top surfaces is enabled." +"Advanced settings below to adjust the sensitivity of what is considered a top-" +"surface. 'One wall threshold' is only visibile if this setting is set above " +"the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını " "önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha " "uzun duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " -"bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " -"hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " -"eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan " -"0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " -"etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu " +"değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini " +"ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. " +"'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine " +"ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." msgid "First layer minimum wall width" msgstr "İlk katman minimum duvar genişliği" msgid "" -"The minimum wall width that should be used for the first layer is " -"recommended to be set to the same size as the nozzle. This adjustment is " -"expected to enhance adhesion." +"The minimum wall width that should be used for the first layer is recommended " +"to be set to the same size as the nozzle. This adjustment is expected to " +"enhance adhesion." msgstr "" "İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " "aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " @@ -13981,8 +13941,8 @@ msgstr "Dar iç katı dolguyu tespit et" msgid "" "This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." +"concentric pattern will be used for the area to speed printing up. Otherwise, " +"rectilinear pattern is used defaultly." msgstr "" "Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " "Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " @@ -14028,8 +13988,7 @@ msgstr "Yönlendirme Seçenekleri" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "" -"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-" -"otomatik" +"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-otomatik" msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafında derece cinsinden dönüş açısı." @@ -14074,13 +14033,13 @@ msgstr "" "ettiğini bilmesi için bu değişkene yazması gerekir." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom " -"G-code moves the extruder axis, it should write to this variable so " -"PrusaSlicer deretracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom G-" +"code moves the extruder axis, it should write to this variable so PrusaSlicer " +"deretracts correctly when it gets control back." msgstr "" "Özel G kodu bloğunun başlangıcındaki geri çekilme durumu. Özel G kodu " -"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında " -"doğru şekilde geri çekme yapması için bu değişkene yazması gerekir." +"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında doğru " +"şekilde geri çekme yapması için bu değişkene yazması gerekir." msgid "Extra deretraction" msgstr "Ekstra deretraksiyon" @@ -14165,18 +14124,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. " -"Filament Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." +"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. Filament " +"Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." msgid "Total weight" msgstr "Toplam ağırlık" msgid "" -"Total weight of the print. Calculated from filament_density value in " -"Filament Settings." +"Total weight of the print. Calculated from filament_density value in Filament " +"Settings." msgstr "" -"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu " -"değerinden hesaplanır." +"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu değerinden " +"hesaplanır." msgid "Total layer count" msgstr "Toplam katman sayısı" @@ -14225,8 +14184,8 @@ msgstr "" "cinsindendir." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values " -"in mm." +"The vector has two elements: x and y dimension of the bounding box. Values in " +"mm." msgstr "" "Vektörün iki öğesi vardır: sınırlayıcı kutunun x ve y boyutu. Değerler mm " "cinsindendir." @@ -14238,8 +14197,8 @@ msgid "" "Vector of points of the first layer convex hull. Each element has the " "following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" -"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu " -"formata sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." +"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu formata " +"sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." msgid "Bottom-left corner of first layer bounding box" msgstr "İlk katman sınırlayıcı kutusunun sol alt köşesi" @@ -14435,8 +14394,7 @@ msgstr "Sağlanan dosya boş olduğundan okunamadı" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " -"olmalıdır." +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." msgid "Canceled" msgstr "İptal edildi" @@ -14558,8 +14516,7 @@ msgstr "yeni ön ayar oluşturma başarısız oldu." msgid "" "Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " -"misiniz?" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" msgid "No Printer Connected!" msgstr "Yazıcı Bağlı Değil!" @@ -14574,16 +14531,16 @@ msgid "The input value size must be 3." msgstr "Giriş değeri boyutu 3 olmalıdır." msgid "" -"This machine type can only hold 16 history results per nozzle. You can " -"delete the existing historical results and then start calibration. Or you " -"can continue the calibration, but you cannot create new calibration " -"historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can delete " +"the existing historical results and then start calibration. Or you can " +"continue the calibration, but you cannot create new calibration historical " +"results. \n" "Do you still want to continue the calibration?" msgstr "" "Bu makine tipi, püskürtme ucu başına yalnızca 16 geçmiş sonucu tutabilir. " -"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona " -"başlayabilirsiniz. Veya kalibrasyona devam edebilirsiniz ancak yeni " -"kalibrasyon geçmişi sonuçları oluşturamazsınız.\n" +"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona başlayabilirsiniz. " +"Veya kalibrasyona devam edebilirsiniz ancak yeni kalibrasyon geçmişi " +"sonuçları oluşturamazsınız.\n" "Hala kalibrasyona devam etmek istiyor musunuz?" msgid "Connecting to printer..." @@ -14597,9 +14554,9 @@ msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to override the historical result?" +"There is already a historical calibration result with the same name: %s. Only " +"one of the results with the same name is saved. Are you sure you want to " +"override the historical result?" msgstr "" "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " @@ -14610,8 +14567,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. " -"Bu sonuç kaydedilmeyecek." +"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. Bu " +"sonuç kaydedilmeyecek." msgid "Internal Error" msgstr "İç hata" @@ -14630,10 +14587,10 @@ msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" msgid "" "We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"fully automated and the result will be saved into the printer for future use. " +"You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament " +"is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" "3. If the max volumetric speed or print temperature is changed in the " "filament setting." @@ -14655,10 +14612,10 @@ msgid "" "\n" "Usually the calibration is unnecessary. When you start a single color/" "material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"print start menu, the printer will follow the old way, calibrate the filament " +"before the print; When you start a multi color/material print, the printer " +"will use the default compensation parameter for the filament during every " +"filament switch which will have a good result in most cases.\n" "\n" "Please note that there are a few cases that can make the calibration results " "unreliable, such as insufficient adhesion on the build plate. Improving " @@ -14674,9 +14631,9 @@ msgstr "" "Genellikle kalibrasyon gereksizdir. Baskı başlatma menüsünde \"akış " "dinamikleri kalibrasyonu\" seçeneği işaretliyken tek renkli/malzemeli bir " "baskı başlattığınızda, yazıcı eski yolu izleyecek, baskıdan önce filamenti " -"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı " -"her filament değişimi sırasında filament için varsayılan telafi " -"parametresini kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" +"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı her " +"filament değişimi sırasında filament için varsayılan telafi parametresini " +"kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" "\n" "Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını " "güvenilmez hale getirebilecek birkaç durum olduğunu lütfen unutmayın. " @@ -14726,10 +14683,10 @@ msgstr "" msgid "" "Flow Rate Calibration measures the ratio of expected to actual extrusion " "volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." +"filaments as they were pre-calibrated and fine-tuned. For a regular filament, " +"you usually won't need to perform a Flow Rate Calibration unless you still " +"see the listed defects after you have done other calibrations. For more " +"details, please check out the wiki article." msgstr "" "Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " "hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " @@ -14744,13 +14701,12 @@ msgid "" "directly measuring the calibration patterns. However, please be advised that " "the efficacy and accuracy of this method may be compromised with specific " "types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"transparent, sparkling-particled, or have a high-reflective finish may not be " +"suitable for this calibration and can produce less-than-desirable results.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We are " +"still improving the accuracy and compatibility of this calibration through " +"firmware updates over time.\n" "\n" "Caution: Flow Rate Calibration is an advanced process, to be attempted only " "by those who fully understand its purpose and implications. Incorrect usage " @@ -14761,8 +14717,8 @@ msgstr "" "kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " "etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " "girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " -"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " +"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" "\n" "Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " "gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " @@ -14771,8 +14727,8 @@ msgstr "" "Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " "anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " "kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " -"anladığınızdan emin olun." +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " +"emin olun." msgid "When you need Max Volumetric Speed Calibration" msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" @@ -14794,15 +14750,15 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The failed " +"test result would be dropped." msgstr "" "Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " "deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" +"*We recommend you to add brand, materia, type, and even humidity level in the " +"Name" msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" msgid "Failed" @@ -15080,7 +15036,7 @@ msgid "PETG" msgstr "PETG" msgid "PCTG" -msgstr "" +msgstr "PCTG" msgid "TPU" msgstr "TPU" @@ -15179,7 +15135,7 @@ msgid "Upload to storage" msgstr "Depolama alanına yükle" msgid "Switch to Device tab after upload." -msgstr "" +msgstr "Yüklemeden sonra Cihaz sekmesine geçin." #, c-format, boost-format msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" @@ -15391,8 +15347,8 @@ msgid "" "name. Do you want to continue?" msgstr "" "Oluşturduğunuz %s Filament adı zaten mevcut.\n" -"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla " -"görüntülenecektir. Devam etmek istiyor musun?" +"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla görüntülenecektir. " +"Devam etmek istiyor musun?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Aşağıdaki gibi bazı mevcut ön ayarlar oluşturulamadı:\n" @@ -15405,8 +15361,8 @@ msgstr "" "Yeniden yazmak ister misin?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ön ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -15508,15 +15464,15 @@ msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" msgstr "" -"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen " -"yazıcının satıcısını ve modelini seçin" +"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen yazıcının " +"satıcısını ve modelini seçin" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. " -"Lütfen oluşturmadan önce kontrol edin." +"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. Lütfen " +"oluşturmadan önce kontrol edin." msgid "The custom printer or model is not inputed, place input." msgstr "Özel yazıcı veya model girilmedi lütfen giriş yapın." @@ -15533,8 +15489,7 @@ msgstr "" "Oluşturduğunuz yazıcı ön ayarının zaten aynı ada sahip bir ön ayarı var. " "Üzerine yazmak istiyor musunuz?\n" "\tEvet: Aynı adı taşıyan yazıcı ön ayarının üzerine yazın; aynı ön ayar adı " -"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön " -"ayar \n" +"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön ayar \n" "adı olmayan filament ve işlem ön ayarları rezerve edilecektir.\n" "\tİptal: Ön ayar oluşturmayın, oluşturma arayüzüne dönün." @@ -15580,8 +15535,7 @@ msgstr "" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" -"Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." +msgstr "Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." msgid "Create Printer Successful" msgstr "Yazıcı Oluşturma Başarılı" @@ -15664,8 +15618,8 @@ msgstr "Dışa aktarma başarılı" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" +"The '%s' folder already exists in the current directory. Do you want to clear " +"it and rebuild it.\n" "If not, a time suffix will be added, and you can modify the name after " "creation." msgstr "" @@ -15704,8 +15658,8 @@ msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek " -"ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." +"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve " +"seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" @@ -15713,13 +15667,13 @@ msgid "" "exported as a zip." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" -"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti " -"ön ayarları zip olarak dışa aktarılacaktır." +"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön " +"ayarları zip olarak dışa aktarılacaktır." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be " -"exported as a zip." +"and all user process presets in each printer name you select will be exported " +"as a zip." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak " @@ -15743,8 +15697,8 @@ msgid "Filament presets under this filament" msgstr "Bu filamentin altındaki filament ön ayarları" msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will be " +"deleted after exiting the dialog." msgstr "" "Not: Bu filamentin altındaki tek ön ayar silinirse, diyalogdan çıkıldıktan " "sonra filament silinecektir." @@ -15858,10 +15812,11 @@ msgid "Refresh Printers" msgstr "Yazıcıları Yenile" msgid "View print host webui in Device tab" -msgstr "" +msgstr "Aygıt sekmesinde yazdırma ana bilgisayarı web arayüzünü görüntüleyin" msgid "Replace the BambuLab's device tab with print host webui" msgstr "" +"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle değiştirin" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -15881,8 +15836,8 @@ msgid "" "On this system, %s uses HTTPS certificates from the system Certificate Store " "or Keychain." msgstr "" -"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " -"HTTPS sertifikalarını kullanıyor." +"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan HTTPS " +"sertifikalarını kullanıyor." msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " @@ -16032,31 +15987,30 @@ msgstr "" "Hata: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines " -"and high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines and " +"high printing quality. It is suitable for most general printing cases." msgstr "" "Küçük bir katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir katman " "çizgileri ve yüksek baskı kalitesi sağlar. Çoğu genel yazdırma durumu için " "uygundur." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " -"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " -"much higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " +"acceleration, and the sparse infill pattern is Gyroid. So, it results in much " +"higher printing quality, but a much longer printing time." msgstr "" "0,2 mm’lik nozülün varsayılan profiliyle karşılaştırıldığında daha düşük hız " -"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha " -"yüksek baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde " -"edilir." +"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha yüksek " +"baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a slightly " "bigger layer height, and results in almost negligible layer lines, and " "slightly shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir " -"düzeyde katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir düzeyde " +"katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " @@ -16094,8 +16048,8 @@ msgid "" "shorter printing time." msgstr "" "Varsayılan 0,2 mm püskürtme ucu profiliyle karşılaştırıldığında, daha küçük " -"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek " -"baskı kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." +"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek baskı " +"kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -16146,12 +16100,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16189,8 +16143,7 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing " -"time." +"height, and results in almost negligible layer lines and longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " "katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde " @@ -16225,8 +16178,8 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower " -"printing quality, but shorter printing time in some printing cases." +"height, and results in much more apparent layer lines and much lower printing " +"quality, but shorter printing time in some printing cases." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok daha belirgin katman çizgileri " @@ -16245,16 +16198,16 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" -"It has a very big layer height, and results in very apparent layer lines, " -"low printing quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, low " +"printing quality and general printing time." msgstr "" "Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman " "çizgilerine, düşük baskı kalitesine ve genel yazdırma süresine neden olur." @@ -16266,8 +16219,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve " -"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " -"durumlarında daha kısa yazdırma süresi sağlar." +"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma durumlarında " +"daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -16276,8 +16229,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, çok " "daha büyük bir katman yüksekliğine sahiptir ve son derece belirgin katman " -"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı " -"yazdırma durumlarında çok daha kısa yazdırma süresi sağlar." +"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " +"durumlarında çok daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -16285,10 +16238,10 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" -"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine " -"de görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, " -"ancak bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." +"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine de " +"görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, ancak " +"bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " @@ -16313,7 +16266,7 @@ msgid "Could not connect to SimplyPrint" msgstr "SimplyPrint'e bağlanılamadı" msgid "Internal error" -msgstr "" +msgstr "İç hata" msgid "Unknown error" msgstr "Bilinmeyen hata" @@ -16360,8 +16313,7 @@ msgid "" msgstr "" "Sandviç modu\n" "Modelinizde çok dik çıkıntılar yoksa hassasiyeti ve katman tutarlılığını " -"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor " -"muydunuz?" +"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -16423,14 +16375,14 @@ msgid "" "3D scene operations." msgstr "" "Klavye kısayolları nasıl kullanılır?\n" -"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " -"sunduğunu biliyor muydunuz?" +"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri sunduğunu " +"biliyor muydunuz?" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve the " +"surface quality of your overhangs?" msgstr "" "Tersine çevir\n" "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " @@ -16453,8 +16405,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " -"modeli düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " +"düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -16587,9 +16539,9 @@ msgstr "" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking prints? " +"Depending on the material, you can improve the overall finish of the printed " +"model by doing some fine-tuning." msgstr "" "Akış hızı için ince ayar\n" "Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " @@ -16623,8 +16575,8 @@ msgstr "" msgid "" "Support painting\n" "Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." +"makes it easy to place the support material only on the sections of the model " +"that actually need it." msgstr "" "Destek boyama\n" "Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " @@ -16799,12 +16751,11 @@ msgstr "" #~ "the print start menu, the printer will follow the old way, calibrate the " #~ "filament before the print; When you start a multi color/material print, " #~ "the printer will use the default compensation parameter for the filament " -#~ "during every filament switch which will have a good result in most " -#~ "cases.\n" +#~ "during every filament switch which will have a good result in most cases.\n" #~ "\n" #~ "Please note there are a few cases that will make the calibration result " -#~ "not reliable: using a texture plate to do the calibration; the build " -#~ "plate does not have good adhesion (please wash the build plate or apply " +#~ "not reliable: using a texture plate to do the calibration; the build plate " +#~ "does not have good adhesion (please wash the build plate or apply " #~ "gluestick!) ...You can find more from our wiki.\n" #~ "\n" #~ "The calibration results have about 10 percent jitter in our test, which " @@ -16815,12 +16766,11 @@ msgstr "" #~ "bulabilirsiniz.\n" #~ "\n" #~ "Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme " -#~ "baskısını başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan " -#~ "önce filamenti kalibre edecektir; Çok renkli/malzeme baskısını " -#~ "başlattığınızda, yazıcı her filament değişiminde filament için varsayılan " -#~ "dengeleme parametresini kullanacaktır ve bu çoğu durumda iyi bir sonuç " -#~ "verecektir.\n" +#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " +#~ "başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamenti " +#~ "kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı " +#~ "her filament değişiminde filament için varsayılan dengeleme parametresini " +#~ "kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" #~ "\n" #~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum " #~ "olduğunu lütfen unutmayın: kalibrasyonu yapmak için doku plakası " @@ -16828,14 +16778,14 @@ msgstr "" #~ "yıkayın veya yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden " #~ "bulabilirsiniz.\n" #~ "\n" -#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim " -#~ "var ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " +#~ "ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " #~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel " #~ "nedeni araştırıyoruz." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure " -#~ "you want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure you " +#~ "want to overrides the other results?" #~ msgstr "" #~ "Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " #~ "geçersiz kılmak istediğinizden emin misiniz?" @@ -16843,11 +16793,11 @@ msgstr "" #, c-format, boost-format #~ msgid "" #~ "There is already a historical calibration result with the same name: %s. " -#~ "Only one of the results with the same name is saved. Are you sure you " -#~ "want to overrides the historical result?" +#~ "Only one of the results with the same name is saved. Are you sure you want " +#~ "to overrides the historical result?" #~ msgstr "" -#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada " -#~ "sahip sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " +#~ "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " #~ "istediğinizden emin misiniz?" #~ msgid "Please find the cornor with perfect degree of extrusion" @@ -16870,11 +16820,11 @@ msgstr "" #~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " #~ "first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have " -#~ "the neighbouring infill to adhere to. However, the infill will slighly " -#~ "push out the printed walls where it is attached to them, resulting in a " -#~ "worse external surface finish. It can also cause the infill to shine " -#~ "through the external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have the " +#~ "neighbouring infill to adhere to. However, the infill will slighly push " +#~ "out the printed walls where it is attached to them, resulting in a worse " +#~ "external surface finish. It can also cause the infill to shine through the " +#~ "external surfaces of the part." #~ msgstr "" #~ "Duvar/dolgu sırası. Onay kutusunun işareti kaldırıldığında ilk olarak " #~ "duvarlar yazdırılır ve bu çoğu durumda en iyi sonucu verir.\n" @@ -16889,9 +16839,9 @@ msgstr "" #~ msgstr "V" #~ msgid "" -#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from " -#~ "PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro " -#~ "Ranellucci and the RepRap community" +#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " +#~ "by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci " +#~ "and the RepRap community" #~ msgstr "" #~ "Orca Slicer, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " #~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve " @@ -16962,16 +16912,15 @@ msgstr "" #~ "değer) korumak ister misiniz?" #~ msgid "" -#~ "You have previously modified your settings and are about to overwrite " -#~ "them with new ones." +#~ "You have previously modified your settings and are about to overwrite them " +#~ "with new ones." #~ msgstr "" -#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini " -#~ "yazmak üzeresiniz." +#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini yazmak " +#~ "üzeresiniz." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset " -#~ "settings?" +#~ "Do you want to keep your current modified settings, or use preset settings?" #~ msgstr "" #~ "\n" #~ "Geçerli değiştirilen ayarlarınızı korumak mı yoksa önceden ayarlanmış " @@ -16991,8 +16940,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası " -#~ "seçin ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." +#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " +#~ "ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." #~ msgid "MC" #~ msgstr "MC" @@ -17032,8 +16981,8 @@ msgstr "" #~ "The 3mf file version is in Beta and it is newer than the current Bambu " #~ "Studio version." #~ msgstr "" -#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden " -#~ "daha yenidir." +#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden daha " +#~ "yenidir." #~ msgid "If you would like to try Bambu Studio Beta, you may click to" #~ msgstr "Bambu Studio Beta’yı denemek isterseniz tıklayabilirsiniz." @@ -17060,9 +17009,9 @@ msgstr "" #~ "Green means that AMS humidity is normal, orange represent humidity is " #~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, " -#~ "kırmızı ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar " -#~ "düşükse o kadar iyidir.)" +#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " +#~ "ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o " +#~ "kadar iyidir.)" #~ msgid "Desiccant status" #~ msgstr "Kurutucu durumu" @@ -17072,14 +17021,14 @@ msgstr "" #~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" #~ "İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa " -#~ "o kadar iyidir.)" +#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " +#~ "kadar iyidir.)" #~ msgid "" #~ "Note: When the lid is open or the desiccant pack is changed, it can take " #~ "hours or a night to absorb the moisture. Low temperatures also slow down " -#~ "the process. During this time, the indicator may not represent the " -#~ "chamber accurately." +#~ "the process. During this time, the indicator may not represent the chamber " +#~ "accurately." #~ msgstr "" #~ "Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " #~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. " @@ -17177,14 +17126,14 @@ msgstr "" #~ msgid "" #~ "Please go to filament setting to edit your presets if you need.\n" #~ "Please note that nozzle temperature, hot bed temperature, and maximum " -#~ "volumetric speed have a significant impact on printing quality. Please " -#~ "set them carefully." +#~ "volumetric speed have a significant impact on printing quality. Please set " +#~ "them carefully." #~ msgstr "" -#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament " -#~ "ayarına gidin.\n" +#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " +#~ "gidin.\n" #~ "Lütfen püskürtme ucu sıcaklığının, sıcak yatak sıcaklığının ve maksimum " -#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip " -#~ "olduğunu unutmayın. Lütfen bunları dikkatlice ayarlayın." +#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip olduğunu " +#~ "unutmayın. Lütfen bunları dikkatlice ayarlayın." #~ msgid "Studio Version:" #~ msgstr "Stüdyo Sürümü:" @@ -17229,8 +17178,8 @@ msgstr "" #~ msgstr "Depolama Yüklemesini Test Etme" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed " -#~ "(machine_max_speed_x/machine_max_speed_y).\n" +#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/" +#~ "machine_max_speed_y).\n" #~ "Orca will automatically cap the print speed to ensure it doesn't surpass " #~ "the printer's capabilities.\n" #~ "You can adjust the maximum speed setting in your printer's configuration " @@ -17238,8 +17187,8 @@ msgstr "" #~ msgstr "" #~ "Hız ayarı yazıcının maksimum hızını aşıyor (machine_max_speed_x/" #~ "machine_max_speed_y).\n" -#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma " -#~ "hızını otomatik olarak sınırlayacaktır.\n" +#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma hızını " +#~ "otomatik olarak sınırlayacaktır.\n" #~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki " #~ "maksimum hız ayarını yapabilirsiniz." @@ -17265,8 +17214,8 @@ msgstr "" #~ "Add solid infill near sloping surfaces to guarantee the vertical shell " #~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına " -#~ "katı dolgu ekleyin (üst + alt katı katmanlar)" +#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " +#~ "dolgu ekleyin (üst + alt katı katmanlar)" #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Duvarlardaki katı dolguyu daha da azaltın (deneysel)" @@ -17320,19 +17269,19 @@ msgstr "" #~ "are not specified explicitly." #~ msgstr "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma " -#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde " -#~ "filament için minimum yazdırma hızı." +#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament " +#~ "için minimum yazdırma hızı." #~ msgid "No sparse layers (EXPERIMENTAL)" #~ msgstr "Seyrek katman yok (DENEYSEL)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgid "The Config can not be loaded." @@ -17347,8 +17296,8 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option." -#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " +#~ "extruders work better with this option unckecked (absolute extrusion " #~ "mode). Wipe tower is only compatible with relative mode. It is always " #~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" @@ -17478,8 +17427,8 @@ msgstr "" #~ "Bir Parçayı Çıkar\n" #~ "Negatif parça değiştiriciyi kullanarak bir ağı diğerinden " #~ "çıkarabileceğinizi biliyor muydunuz? Bu şekilde örneğin doğrudan Orca " -#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler " -#~ "oluşturabilirsiniz. Daha fazlasını belgelerde okuyun." +#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler oluşturabilirsiniz. " +#~ "Daha fazlasını belgelerde okuyun." #~ msgid "Filling bed " #~ msgstr "Yatak doldurma " @@ -17495,8 +17444,7 @@ msgstr "" #~ msgstr "" #~ "Doğrusal desene geçilsin mi?\n" #~ "Evet - otomatik olarak doğrusal desene geçin\n" -#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere " -#~ "sıfırlayın" +#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." #~ msgstr "" @@ -17737,8 +17685,8 @@ msgstr "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/" -#~ "yazıcıayarlarını yükle" +#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " +#~ "yükle" #~ msgid "Output directory" #~ msgstr "Çıkış dizini" @@ -17785,8 +17733,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması " -#~ "mümkün olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." +#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " +#~ "olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." #~ msgid "Online Models" #~ msgstr "Çevrimiçi Modeller" @@ -17800,8 +17748,8 @@ msgstr "" #~ msgid "" #~ "There are currently no identical spare consumables available, and " #~ "automatic replenishment is currently not possible. \n" -#~ "(Currently supporting automatic supply of consumables with the same " -#~ "brand, material type, and color)" +#~ "(Currently supporting automatic supply of consumables with the same brand, " +#~ "material type, and color)" #~ msgstr "" #~ "Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " #~ "anda mümkün değildir.\n" @@ -17833,8 +17781,7 @@ msgstr "" #~ "daha sıcak olamaz" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "" -#~ "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" +#~ msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" #~ msgid "" #~ "This option is enabled if machine support controlling chamber temperature" @@ -17862,8 +17809,7 @@ msgstr "" #~ "katmanları etkilemez" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "" -#~ "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." +#~ msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." #~ msgid "The model has too many empty layers." #~ msgstr "Modelde çok fazla boş katman var." @@ -17881,9 +17827,8 @@ msgstr "" #~ "Bed temperature when high temperature plate is installed. Value 0 means " #~ "the filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " -#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " -#~ "gelir" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " +#~ "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" #~ msgid "" #~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" @@ -17903,8 +17848,7 @@ msgstr "" #~ msgstr "" #~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " #~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " -#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " -#~ "azaltır.\n" +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" #~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " #~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " #~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " From 058ea23c21f36c20804848cfdf4a3470347560e9 Mon Sep 17 00:00:00 2001 From: InfimechOfficial <144992637+InfimechOfficial@users.noreply.github.com> Date: Sun, 14 Jul 2024 10:31:57 +0800 Subject: [PATCH 031/151] add new nozzle type named Hardened Steel Nozzle(HSN) (#6099) * Update fdm_klipper_common.json * Update fdm_machine_common.json * add new nozzle type * add new nozzle type with filaments * add new nozzle type with mechine files * add new nozzle type with process files * Update InfiMech.json add new nozzle type * Update InfiMech.json * Update 0.08mm Extra Fine @InfiMech TX.json * Update 0.12mm Fine @InfiMech TX.json * Update 0.16mm Optimal @InfiMech TX.json * Update 0.20mm Standard @InfiMech TX.json * Update 0.24mm Draft @InfiMech TX.json --- resources/profiles/InfiMech.json | 177 +++++++++++++- ...nfiMech TX Hardened Steel Nozzle_cover.png | Bin 0 -> 19109 bytes .../profiles/InfiMech/InfiMech TX-bed_HSN.stl | Bin 0 -> 19984 bytes .../InfiMech/InfiMech TX-texture_HSN.png | Bin 0 -> 42471 bytes .../filament/HSN/InfiMech ABS @HSN.json | 27 +++ .../filament/HSN/InfiMech PA-CF @HSN.json | 34 +++ .../filament/HSN/InfiMech PC @HSN.json | 24 ++ .../filament/HSN/InfiMech PETG @HSN.json | 54 +++++ .../filament/HSN/InfiMech PLA @HSN.json | 24 ++ .../filament/HSN/InfiMech PLA Hyper @HSN.json | 27 +++ .../filament/HSN/InfiMech TPU @HSN.json | 24 ++ .../InfiMech/filament/HSN/Other ABS @HSN.json | 27 +++ .../filament/HSN/Other PA-CF @HSN.json | 34 +++ .../InfiMech/filament/HSN/Other PC @HSN.json | 24 ++ .../filament/HSN/Other PETG @HSN.json | 54 +++++ .../InfiMech/filament/HSN/Other PLA @HSN.json | 24 ++ .../filament/HSN/Other PLA Hyper @HSN.json | 27 +++ .../InfiMech/filament/HSN/Other TPU @HSN.json | 24 ++ .../filament/HSN/fdm_filament_abs @HSN.json | 97 ++++++++ .../HSN/fdm_filament_abs_other @HSN.json | 97 ++++++++ .../filament/HSN/fdm_filament_common_HSN.json | 144 ++++++++++++ .../filament/HSN/fdm_filament_pa @HSN.json | 103 ++++++++ .../HSN/fdm_filament_pa_other @HSN.json | 103 ++++++++ .../filament/HSN/fdm_filament_pc @HSN.json | 100 ++++++++ .../HSN/fdm_filament_pc_other @HSN.json | 100 ++++++++ .../filament/HSN/fdm_filament_pet @HSN.json | 88 +++++++ .../HSN/fdm_filament_pet_other @HSN.json | 88 +++++++ .../filament/HSN/fdm_filament_pla @HSN.json | 103 ++++++++ .../HSN/fdm_filament_pla_Hyper @HSN.json | 97 ++++++++ .../fdm_filament_pla_Hyper_other @HSN.json | 97 ++++++++ .../HSN/fdm_filament_pla_other @HSN.json | 103 ++++++++ .../filament/HSN/fdm_filament_tpu @HSN.json | 98 ++++++++ .../HSN/fdm_filament_tpu_other @HSN.json | 98 ++++++++ .../HSN/InfiMech TX HSN 0.4 nozzle.json | 22 ++ .../InfiMech TX Hardened Steel Nozzle.json | 12 + .../machine/HSN/fdm_klipper_common.json | 211 +++++++++++++++++ .../machine/HSN/fdm_machine_common.json | 206 ++++++++++++++++ .../0.08mm Extra Fine @InfiMech TX.json | 2 +- .../process/0.12mm Fine @InfiMech TX.json | 2 +- .../process/0.16mm Optimal @InfiMech TX.json | 8 +- .../process/0.20mm Standard @InfiMech TX.json | 2 +- .../process/0.24mm Draft @InfiMech TX.json | 2 +- .../0.08mm Extra Fine @InfiMech TX HSN.json | 32 +++ .../HSN/0.12mm Fine @InfiMech TX HSN.json | 32 +++ .../HSN/0.16mm Optimal @InfiMech TX HSN.json | 41 ++++ .../HSN/0.20mm Standard @InfiMech TX HSN.json | 31 +++ .../HSN/0.24mm Draft @InfiMech TX HSN.json | 30 +++ .../process/HSN/fdm_process_common_HSN.json | 222 ++++++++++++++++++ 48 files changed, 2967 insertions(+), 9 deletions(-) create mode 100644 resources/profiles/InfiMech/InfiMech TX Hardened Steel Nozzle_cover.png create mode 100644 resources/profiles/InfiMech/InfiMech TX-bed_HSN.stl create mode 100644 resources/profiles/InfiMech/InfiMech TX-texture_HSN.png create mode 100644 resources/profiles/InfiMech/filament/HSN/InfiMech ABS @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/InfiMech PA-CF @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/InfiMech PC @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/InfiMech PETG @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/InfiMech PLA @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/InfiMech PLA Hyper @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/InfiMech TPU @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/Other ABS @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/Other PA-CF @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/Other PC @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/Other PETG @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/Other PLA @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/Other PLA Hyper @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/Other TPU @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_abs @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_abs_other @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pa @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pa_other @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pc @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pc_other @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pet @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pet_other @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pla @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_Hyper @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_Hyper_other @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_other @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_tpu @HSN.json create mode 100644 resources/profiles/InfiMech/filament/HSN/fdm_filament_tpu_other @HSN.json create mode 100644 resources/profiles/InfiMech/machine/HSN/InfiMech TX HSN 0.4 nozzle.json create mode 100644 resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json create mode 100644 resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json create mode 100644 resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json create mode 100644 resources/profiles/InfiMech/process/HSN/0.08mm Extra Fine @InfiMech TX HSN.json create mode 100644 resources/profiles/InfiMech/process/HSN/0.12mm Fine @InfiMech TX HSN.json create mode 100644 resources/profiles/InfiMech/process/HSN/0.16mm Optimal @InfiMech TX HSN.json create mode 100644 resources/profiles/InfiMech/process/HSN/0.20mm Standard @InfiMech TX HSN.json create mode 100644 resources/profiles/InfiMech/process/HSN/0.24mm Draft @InfiMech TX HSN.json create mode 100644 resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json diff --git a/resources/profiles/InfiMech.json b/resources/profiles/InfiMech.json index d31ae9c48a..e1ad12a5e4 100644 --- a/resources/profiles/InfiMech.json +++ b/resources/profiles/InfiMech.json @@ -7,6 +7,11 @@ { "name": "InfiMech TX", "sub_path": "machine/InfiMech TX.json" + }, + + { + "name": "InfiMech TX Hardened Steel Nozzle", + "sub_path": "machine/HSN/InfiMech TX Hardened Steel Nozzle.json" } ], "process_list": [ @@ -33,7 +38,34 @@ { "name": "0.16mm Optimal @InfiMech TX", "sub_path": "process/0.16mm Optimal @InfiMech TX.json" + }, + + + { + "name": "fdm_process_common_HSN", + "sub_path": "process/HSN/fdm_process_common_HSN.json" + }, + { + "name": "0.08mm Extra Fine @InfiMech TX HSN", + "sub_path": "process/HSN/0.08mm Extra Fine @InfiMech TX HSN.json" + }, + { + "name": "0.12mm Fine @InfiMech TX HSN", + "sub_path": "process/HSN/0.12mm Fine @InfiMech TX HSN.json" + }, + { + "name": "0.20mm Standard @InfiMech TX HSN", + "sub_path": "process/HSN/0.20mm Standard @InfiMech TX HSN.json" + }, + { + "name": "0.24mm Draft @InfiMech TX HSN", + "sub_path": "process/HSN/0.24mm Draft @InfiMech TX HSN.json" + }, + { + "name": "0.16mm Optimal @InfiMech TX HSN", + "sub_path": "process/HSN/0.16mm Optimal @InfiMech TX HSN.json" } + ], "filament_list": [ { @@ -159,8 +191,134 @@ { "name": "InfiMech PLA Hyper", "sub_path": "filament/InfiMech PLA Hyper.json" - } + }, + + + { + "name": "fdm_filament_common_HSN", + "sub_path": "filament/HSN/fdm_filament_common_HSN.json" + }, + + { + "name": "fdm_filament_pla @HSN", + "sub_path": "filament/HSN/fdm_filament_pla @HSN.json" + }, + { + "name": "fdm_filament_tpu @HSN", + "sub_path": "filament/HSN/fdm_filament_tpu @HSN.json" + }, + { + "name": "fdm_filament_pet @HSN", + "sub_path": "filament/HSN/fdm_filament_pet @HSN.json" + }, + { + "name": "fdm_filament_pc @HSN", + "sub_path": "filament/HSN/fdm_filament_pc @HSN.json" + }, + { + "name": "fdm_filament_pa @HSN", + "sub_path": "filament/HSN/fdm_filament_pa @HSN.json" + }, + { + "name": "InfiMech PLA @HSN", + "sub_path": "filament/HSN/InfiMech PLA @HSN.json" + }, + { + "name": "InfiMech PETG @HSN", + "sub_path": "filament/HSN/InfiMech PETG @HSN.json" + }, + { + "name": "InfiMech TPU @HSN", + "sub_path": "filament/HSN/InfiMech TPU @HSN.json" + }, + { + "name": "InfiMech PC @HSN", + "sub_path": "filament/HSN/InfiMech PC @HSN.json" + }, + { + "name": "InfiMech PA-CF @HSN", + "sub_path": "filament/HSN/InfiMech PA-CF @HSN.json" + }, + { + "name": "fdm_filament_abs @HSN", + "sub_path": "filament/HSN/fdm_filament_abs @HSN.json" + }, + { + "name": "InfiMech ABS @HSN", + "sub_path": "filament/HSN/InfiMech ABS @HSN.json" + }, + + { + "name": "fdm_filament_pla_other @HSN", + "sub_path": "filament/HSN/fdm_filament_pla_other @HSN.json" + }, + { + "name": "Other PLA @HSN", + "sub_path": "filament/HSN/Other PLA @HSN.json" + }, + + { + "name": "fdm_filament_tpu_other @HSN", + "sub_path": "filament/HSN/fdm_filament_tpu_other @HSN.json" + }, + { + "name": "Other TPU @HSN", + "sub_path": "filament/HSN/Other TPU @HSN.json" + }, + + { + "name": "fdm_filament_pa_other @HSN", + "sub_path": "filament/HSN/fdm_filament_pa_other @HSN.json" + }, + { + "name": "Other PA-CF @HSN", + "sub_path": "filament/HSN/Other PA-CF @HSN.json" + }, + + { + "name": "fdm_filament_pet_other @HSN", + "sub_path": "filament/HSN/fdm_filament_pet_other @HSN.json" + }, + { + "name": "Other PETG @HSN", + "sub_path": "filament/HSN/Other PETG @HSN.json" + }, + + { + "name": "fdm_filament_pc_other @HSN", + "sub_path": "filament/HSN/fdm_filament_pc_other @HSN.json" + }, + { + "name": "Other PC @HSN", + "sub_path": "filament/HSN/Other PC @HSN.json" + }, + { + "name": "fdm_filament_abs_other @HSN", + "sub_path": "filament/HSN/fdm_filament_abs_other @HSN.json" + }, + { + "name": "Other ABS @HSN", + "sub_path": "filament/HSN/Other ABS @HSN.json" + }, + + { + "name": "fdm_filament_pla_Hyper_other @HSN", + "sub_path": "filament/HSN/fdm_filament_pla_Hyper_other @HSN.json" + }, + { + "name": "Other PLA Hyper @HSN", + "sub_path": "filament/HSN/Other PLA Hyper @HSN.json" + }, + + { + "name": "fdm_filament_pla_Hyper @HSN", + "sub_path": "filament/HSN/fdm_filament_pla_Hyper @HSN.json" + }, + { + "name": "InfiMech PLA Hyper @HSN", + "sub_path": "filament/HSN/InfiMech PLA Hyper @HSN.json" + } ], "machine_list": [ @@ -175,6 +333,23 @@ { "name": "InfiMech TX 0.4 nozzle", "sub_path": "machine/InfiMech TX 0.4 nozzle.json" + }, + + + + { + "name": "fdm_machine_common", + "sub_path": "machine/HSN/fdm_machine_common.json" + }, + { + "name": "fdm_klipper_common", + "sub_path": "machine/HSN/fdm_klipper_common.json" + }, + + { + "name": "InfiMech TX HSN 0.4 nozzle", + "sub_path": "machine/HSN/InfiMech TX HSN 0.4 nozzle.json" } + ] } diff --git a/resources/profiles/InfiMech/InfiMech TX Hardened Steel Nozzle_cover.png b/resources/profiles/InfiMech/InfiMech TX Hardened Steel Nozzle_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb37a0e9c827596f2f3daa6171f34409a0f07f6 GIT binary patch literal 19109 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/InfiMech/InfiMech TX-bed_HSN.stl b/resources/profiles/InfiMech/InfiMech TX-bed_HSN.stl new file mode 100644 index 0000000000000000000000000000000000000000..05ea70db46e412c41198a4a7c21b02e2655a9f53 GIT binary patch literal 19984 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech ABS @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech ABS @HSN.json new file mode 100644 index 0000000000..a9d778ee49 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech ABS @HSN.json @@ -0,0 +1,27 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "InfiMech ABS @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs @HSN", + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.058" + ], + "filament_retraction_length": [ + "0.8" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PA-CF @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PA-CF @HSN.json new file mode 100644 index 0000000000..bbf92c72ac --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PA-CF @HSN.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFSA04", + "name": "InfiMech PA-CF @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa @HSN", + "filament_type": [ + "PA-CF" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_retract_before_wipe": [ + "0%" + ], + "filament_retraction_length": [ + "0.8" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + + ] + } diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PC @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PC @HSN.json new file mode 100644 index 0000000000..15624d7b17 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PC @HSN.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSA04", + "name": "InfiMech PC @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc @HSN", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_flow_ratio": [ + "0.94" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.058" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] + } diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PETG @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PETG @HSN.json new file mode 100644 index 0000000000..189f9e5bf9 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PETG @HSN.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "InfiMech PETG @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet @HSN", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.084" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PLA @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PLA @HSN.json new file mode 100644 index 0000000000..94a814487e --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PLA @HSN.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "InfiMech PLA @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla @HSN", + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "8" + ], + "pressure_advance": [ + "0.03" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech PLA Hyper @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech PLA Hyper @HSN.json new file mode 100644 index 0000000000..e3969ddc64 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech PLA Hyper @HSN.json @@ -0,0 +1,27 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "InfiMech PLA Hyper @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla_Hyper @HSN", + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "slow_down_layer_time": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.02" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/InfiMech TPU @HSN.json b/resources/profiles/InfiMech/filament/HSN/InfiMech TPU @HSN.json new file mode 100644 index 0000000000..310d9b0fc3 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/InfiMech TPU @HSN.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSA04", + "name": "InfiMech TPU @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_tpu @HSN", + "filament_max_volumetric_speed": [ + "3" + ], + "filament_flow_ratio": [ + "0.94" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.13" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/Other ABS @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other ABS @HSN.json new file mode 100644 index 0000000000..c100a18554 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/Other ABS @HSN.json @@ -0,0 +1,27 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "Other ABS @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs_other @HSN", + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.058" + ], + "filament_retraction_length": [ + "0.8" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/Other PA-CF @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PA-CF @HSN.json new file mode 100644 index 0000000000..a2ab36b225 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/Other PA-CF @HSN.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFSA04", + "name": "Other PA-CF @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa_other @HSN", + "filament_type": [ + "PA-CF" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_retract_before_wipe": [ + "0%" + ], + "filament_retraction_length": [ + "0.8" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + + ] + } diff --git a/resources/profiles/InfiMech/filament/HSN/Other PC @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PC @HSN.json new file mode 100644 index 0000000000..9636eb16c0 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/Other PC @HSN.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSA04", + "name": "Other PC @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc_other @HSN", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_flow_ratio": [ + "0.94" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.058" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] + } diff --git a/resources/profiles/InfiMech/filament/HSN/Other PETG @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PETG @HSN.json new file mode 100644 index 0000000000..69e25cfabe --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/Other PETG @HSN.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "Other PETG @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet_other @HSN", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.084" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/Other PLA @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PLA @HSN.json new file mode 100644 index 0000000000..d63d21053b --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/Other PLA @HSN.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "Other PLA @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla_other @HSN", + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "8" + ], + "pressure_advance": [ + "0.03" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/Other PLA Hyper @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other PLA Hyper @HSN.json new file mode 100644 index 0000000000..02099c3845 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/Other PLA Hyper @HSN.json @@ -0,0 +1,27 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "Other PLA Hyper @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla_Hyper_other @HSN", + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "slow_down_layer_time": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.02" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/Other TPU @HSN.json b/resources/profiles/InfiMech/filament/HSN/Other TPU @HSN.json new file mode 100644 index 0000000000..205167ef3f --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/Other TPU @HSN.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSA04", + "name": "Other TPU @HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_tpu_other @HSN", + "filament_max_volumetric_speed": [ + "3" + ], + "filament_flow_ratio": [ + "0.94" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.13" + ], + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_abs @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_abs @HSN.json new file mode 100644 index 0000000000..b9656e0e37 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_abs @HSN.json @@ -0,0 +1,97 @@ +{ + "type": "filament", + "name": "fdm_filament_abs @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "InfiMech" + ], + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "20" + ], + "activate_air_filtration": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "5" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_abs_other @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_abs_other @HSN.json new file mode 100644 index 0000000000..e6487a11f7 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_abs_other @HSN.json @@ -0,0 +1,97 @@ +{ + "type": "filament", + "name": "fdm_filament_abs_other @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "Other" + ], + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "20" + ], + "activate_air_filtration": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "5" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json new file mode 100644 index 0000000000..2808287c59 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json @@ -0,0 +1,144 @@ +{ + "type": "filament", + "name": "fdm_filament_common_HSN", + "from": "system", + "instantiation": "false", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "overhang_fan_threshold": [ + "0%" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_flow_ratio": [ + "1" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "bed_type": [ + "Cool Plate" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "full_fan_speed_layer": [ + "0" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament gcode\n" + ], + "nozzle_temperature": [ + "200" + ], + "temperature_vitrification": [ + "100" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pa @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pa @HSN.json new file mode 100644 index 0000000000..3b0e895908 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pa @HSN.json @@ -0,0 +1,103 @@ +{ + "type": "filament", + "name": "fdm_filament_pa @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "InfiMech" + ], + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "textured_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "textured_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "5" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "40" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "108" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "slow_down_min_speed": [ + "20" + ], + "activate_air_filtration": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "2" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.02" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pa_other @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pa_other @HSN.json new file mode 100644 index 0000000000..b339c043ee --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pa_other @HSN.json @@ -0,0 +1,103 @@ +{ + "type": "filament", + "name": "fdm_filament_pa_other @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "Other" + ], + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "textured_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "textured_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "5" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "40" + ], + "nozzle_temperature": [ + "270" + ], + "temperature_vitrification": [ + "108" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "slow_down_min_speed": [ + "20" + ], + "activate_air_filtration": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "2" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.02" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pc @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pc @HSN.json new file mode 100644 index 0000000000..ea1e9bdf58 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pc @HSN.json @@ -0,0 +1,100 @@ +{ + "type": "filament", + "name": "fdm_filament_pc @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "InfiMech" + ], + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "textured_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "textured_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PC" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "60" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "140" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "slow_down_min_speed": [ + "20" + ], + "activate_air_filtration": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pc_other @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pc_other @HSN.json new file mode 100644 index 0000000000..3a57ca8444 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pc_other @HSN.json @@ -0,0 +1,100 @@ +{ + "type": "filament", + "name": "fdm_filament_pc_other @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "Other" + ], + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "textured_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "textured_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PC" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "60" + ], + "nozzle_temperature": [ + "270" + ], + "temperature_vitrification": [ + "140" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "slow_down_min_speed": [ + "20" + ], + "activate_air_filtration": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pet @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pet @HSN.json new file mode 100644 index 0000000000..f6822a8d5b --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pet @HSN.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_filament_pet @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "InfiMech" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "75" + ], + "textured_plate_temp" : [ + "80" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "75" + ], + "textured_plate_temp_initial_layer" : [ + "80" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "30" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "overhang_fan_speed": [ + "90" + ], + "nozzle_temperature": [ + "230" + ], + "temperature_vitrification": [ + "80" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pet_other @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pet_other @HSN.json new file mode 100644 index 0000000000..21f3c5e0c5 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pet_other @HSN.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_filament_pet_other @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "Other" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "75" + ], + "textured_plate_temp" : [ + "80" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "75" + ], + "textured_plate_temp_initial_layer" : [ + "80" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "30" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "overhang_fan_speed": [ + "90" + ], + "nozzle_temperature": [ + "240" + ], + "temperature_vitrification": [ + "80" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla @HSN.json new file mode 100644 index 0000000000..4f5ac07e4b --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla @HSN.json @@ -0,0 +1,103 @@ +{ + "type": "filament", + "name": "fdm_filament_pla @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "InfiMech" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "65" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "205" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "205" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "8" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.03" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_Hyper @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_Hyper @HSN.json new file mode 100644 index 0000000000..12a4038700 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_Hyper @HSN.json @@ -0,0 +1,97 @@ +{ + "type": "filament", + "name": "fdm_filament_pla_Hyper @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "InfiMech" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "65" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "205" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "205" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "8" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_Hyper_other @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_Hyper_other @HSN.json new file mode 100644 index 0000000000..2d5d37b43e --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_Hyper_other @HSN.json @@ -0,0 +1,97 @@ +{ + "type": "filament", + "name": "fdm_filament_pla_Hyper_other @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "Other" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "65" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "215" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "8" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_other @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_other @HSN.json new file mode 100644 index 0000000000..ff0570d0a0 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_pla_other @HSN.json @@ -0,0 +1,103 @@ +{ + "type": "filament", + "name": "fdm_filament_pla_other @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "Other" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "65" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "215" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "8" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.03" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_tpu @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_tpu @HSN.json new file mode 100644 index 0000000000..677ca17ee3 --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_tpu @HSN.json @@ -0,0 +1,98 @@ +{ + "type": "filament", + "name": "fdm_filament_tpu @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "InfiMech" + ], + "cool_plate_temp" : [ + "30" + ], + "eng_plate_temp" : [ + "30" + ], + "hot_plate_temp" : [ + "40" + ], + "textured_plate_temp" : [ + "35" + ], + "cool_plate_temp_initial_layer" : [ + "30" + ], + "eng_plate_temp_initial_layer" : [ + "30" + ], + "hot_plate_temp_initial_layer" : [ + "40" + ], + "textured_plate_temp_initial_layer" : [ + "35" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "3.2" + ], + "filament_type": [ + "TPU" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + + "nozzle_temperature_initial_layer": [ + "215" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "215" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "filament_z_hop": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "overhang_fan_threshold": [ + "95%" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_tpu_other @HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_tpu_other @HSN.json new file mode 100644 index 0000000000..665436c38f --- /dev/null +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_tpu_other @HSN.json @@ -0,0 +1,98 @@ +{ + "type": "filament", + "name": "fdm_filament_tpu_other @HSN", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common_HSN", + "filament_vendor": [ + "Other" + ], + "cool_plate_temp" : [ + "30" + ], + "eng_plate_temp" : [ + "30" + ], + "hot_plate_temp" : [ + "40" + ], + "textured_plate_temp" : [ + "35" + ], + "cool_plate_temp_initial_layer" : [ + "30" + ], + "eng_plate_temp_initial_layer" : [ + "30" + ], + "hot_plate_temp_initial_layer" : [ + "40" + ], + "textured_plate_temp_initial_layer" : [ + "35" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "3.2" + ], + "filament_type": [ + "TPU" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + + "nozzle_temperature_initial_layer": [ + "225" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "225" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "filament_z_hop": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "overhang_fan_threshold": [ + "95%" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/InfiMech/machine/HSN/InfiMech TX HSN 0.4 nozzle.json b/resources/profiles/InfiMech/machine/HSN/InfiMech TX HSN 0.4 nozzle.json new file mode 100644 index 0000000000..c70d34dd4d --- /dev/null +++ b/resources/profiles/InfiMech/machine/HSN/InfiMech TX HSN 0.4 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "InfiMech TX HSN 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "InfiMech TX Hardened Steel Nozzle", + "nozzle_diameter": [ + "0.4" + ], + "z_hop": [ + "0.4" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "250" +} diff --git a/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json b/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json new file mode 100644 index 0000000000..c95fad7b5b --- /dev/null +++ b/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "InfiMech TX Hardened Steel Nozzle", + "model_id": "InfiMech_TX_HSN", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "InfiMechDesign", + "bed_model": "InfiMech TX-bed_HSN.stl", + "bed_texture": "InfiMech TX-texture_HSN.png", + "hotend_model": "", + "default_materials": "InfiMech Generic ABS;InfiMech Generic PA-CF;InfiMech Generic PC;InfiMech Generic PETG;InfiMech Generic PLA;InfiMech Generic TPU" +} \ No newline at end of file diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json new file mode 100644 index 0000000000..5355d44295 --- /dev/null +++ b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json @@ -0,0 +1,211 @@ +{ + "type": "machine", + "name": "fdm_klipper_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_machine_common", + "gcode_flavor": "klipper", + + + "auxiliary_fan": "1", + "bed_exclude_area": [ + "0x0" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "change_filament_gcode": "", + "cooling_tube_length": "5", + "cooling_tube_retraction": "91.5", + "default_filament_profile": [ + "InfiMech PLA" + ], + "default_print_profile": "0.20mm Standard @InfiMech TX", + "deretraction_speed": [ + "30" + ], + "enable_filament_ramming": "1", + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "69", + "extruder_clearance_height_to_rod": "69", + "extruder_clearance_radius": "49", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + + "high_current_on_filament_swap": "0", + + + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "machine_end_gcode": "PRINT_END", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "200" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "0.4" + ], + "machine_max_speed_e": [ + "30", + "25" + ], + "machine_max_speed_x": [ + "600", + "200" + ], + "machine_max_speed_y": [ + "600", + "200" + ], + "machine_max_speed_z": [ + "20", + "12" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": ";v2.9.1-20240620;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", + "machine_unload_filament_time": "0", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + + "nozzle_diameter": [ + "0.4" + ], + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "151.32", + "parking_pos_retraction": "92", + + "print_host_webui": "", + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "250", + "printer_model": "Generic Klipper Printer", + "printer_notes": "", + "printer_settings_id": "InfiMech TX 0.4 nozzle", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_apikey": "", + "printhost_authorization_type": "key", + "printhost_cafile": "", + "printhost_password": "", + "printhost_port": "", + "printhost_ssl_ignore_revoke": "0", + "printhost_user": "", + "purge_in_prime_tower": "1", + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "249" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "0.5" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "template_custom_gcode": "", + "thumbnails": [ + "300x300" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "1.6.0.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ] + + +} diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json new file mode 100644 index 0000000000..540e10e977 --- /dev/null +++ b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json @@ -0,0 +1,206 @@ +{ + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "printer_technology": "FFF", + "gcode_flavor": "klipper", + + "auxiliary_fan": "1", + "bed_exclude_area": [ + "0x0" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "change_filament_gcode": "", + "cooling_tube_length": "5", + "cooling_tube_retraction": "91.5", + "default_filament_profile": [ + "InfiMech Generic PLA" + ], + "default_print_profile": "0.20mm Standard @InfiMech TX", + "deretraction_speed": [ + "30" + ], + "enable_filament_ramming": "1", + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "69", + "extruder_clearance_height_to_rod": "69", + "extruder_clearance_radius": "49", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + + + "high_current_on_filament_swap": "0", + + + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "machine_end_gcode": "PRINT_END", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "9000", + "9000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "200" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "0.4" + ], + "machine_max_speed_e": [ + "30", + "25" + ], + "machine_max_speed_x": [ + "600", + "200" + ], + "machine_max_speed_y": [ + "600", + "200" + ], + "machine_max_speed_z": [ + "20", + "12" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": ";v2.9.1-20240620;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", + "machine_unload_filament_time": "0", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + + + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "151.32", + "parking_pos_retraction": "92", + "print_host_webui": "", + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "250", + "printer_model": "Generic Klipper Printer", + "printer_notes": "", + "printer_settings_id": "InfiMech TX 0.4 nozzle", + + "printer_variant": "0.4", + "printhost_apikey": "", + "printhost_authorization_type": "key", + "printhost_cafile": "", + "printhost_password": "", + "printhost_port": "", + "printhost_ssl_ignore_revoke": "0", + "printhost_user": "", + "purge_in_prime_tower": "1", + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "249" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "0.5" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "template_custom_gcode": "", + "thumbnails": [ + "300x300" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "version": "1.6.0.0", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ] +} diff --git a/resources/profiles/InfiMech/process/0.08mm Extra Fine @InfiMech TX.json b/resources/profiles/InfiMech/process/0.08mm Extra Fine @InfiMech TX.json index 80426afa2d..1e134e5d86 100644 --- a/resources/profiles/InfiMech/process/0.08mm Extra Fine @InfiMech TX.json +++ b/resources/profiles/InfiMech/process/0.08mm Extra Fine @InfiMech TX.json @@ -21,7 +21,7 @@ "layer_height": "0.08", "print_settings_id": "0.08mm Extra Fine @InfiMech TX", "sparse_infill_speed": "450", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "InfiMech TX 0.4 nozzle" diff --git a/resources/profiles/InfiMech/process/0.12mm Fine @InfiMech TX.json b/resources/profiles/InfiMech/process/0.12mm Fine @InfiMech TX.json index d7de41a3fb..223f43c726 100644 --- a/resources/profiles/InfiMech/process/0.12mm Fine @InfiMech TX.json +++ b/resources/profiles/InfiMech/process/0.12mm Fine @InfiMech TX.json @@ -20,7 +20,7 @@ "layer_height": "0.12", "print_settings_id": "0.12mm Fine @InfiMech TX", "sparse_infill_speed": "400", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "InfiMech TX 0.4 nozzle" diff --git a/resources/profiles/InfiMech/process/0.16mm Optimal @InfiMech TX.json b/resources/profiles/InfiMech/process/0.16mm Optimal @InfiMech TX.json index be60e2297b..f98f050175 100644 --- a/resources/profiles/InfiMech/process/0.16mm Optimal @InfiMech TX.json +++ b/resources/profiles/InfiMech/process/0.16mm Optimal @InfiMech TX.json @@ -2,9 +2,9 @@ "type": "process", "setting_id": "GP005", "name": "0.16mm Optimal @InfiMech TX", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_common", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", @@ -14,7 +14,7 @@ "bottom_shell_layers": "4", "bridge_speed": "25", "brim_object_gap": "0.1", - "exclude_object": "0", + "exclude_object": "1", "gap_infill_speed": "300", "inner_wall_speed": "300", "internal_bridge_speed": "50", diff --git a/resources/profiles/InfiMech/process/0.20mm Standard @InfiMech TX.json b/resources/profiles/InfiMech/process/0.20mm Standard @InfiMech TX.json index e37fe60cad..bbc55eddc0 100644 --- a/resources/profiles/InfiMech/process/0.20mm Standard @InfiMech TX.json +++ b/resources/profiles/InfiMech/process/0.20mm Standard @InfiMech TX.json @@ -20,7 +20,7 @@ "layer_height": "0.2", "print_settings_id": "0.20mm Standard @InfiMech TX", "sparse_infill_speed": "270", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "top_solid_infill_flow_ratio": "0.97", "compatible_printers": [ diff --git a/resources/profiles/InfiMech/process/0.24mm Draft @InfiMech TX.json b/resources/profiles/InfiMech/process/0.24mm Draft @InfiMech TX.json index 59a4f0de66..8263c16fb1 100644 --- a/resources/profiles/InfiMech/process/0.24mm Draft @InfiMech TX.json +++ b/resources/profiles/InfiMech/process/0.24mm Draft @InfiMech TX.json @@ -20,7 +20,7 @@ "layer_height": "0.24", "print_settings_id": "0.24mm Draft @InfiMech TX", "sparse_infill_speed": "230", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "InfiMech TX 0.4 nozzle" diff --git a/resources/profiles/InfiMech/process/HSN/0.08mm Extra Fine @InfiMech TX HSN.json b/resources/profiles/InfiMech/process/HSN/0.08mm Extra Fine @InfiMech TX HSN.json new file mode 100644 index 0000000000..0c21376a9a --- /dev/null +++ b/resources/profiles/InfiMech/process/HSN/0.08mm Extra Fine @InfiMech TX HSN.json @@ -0,0 +1,32 @@ +{ + + "type": "process", + "setting_id": "GP004", + "name": "0.08mm Extra Fine @InfiMech TX HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common_HSN", + + "bottom_shell_layers": "7", + "overhang_1_4_speed": "50", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "top_shell_layers": "9", + "top_shell_thickness": "0.8", + "tree_support_wall_count": "1", + "brim_width": "5", + "gap_infill_speed": "350", + "inner_wall_speed": "350", + "internal_solid_infill_speed": "350", + "layer_height": "0.08", + "print_settings_id": "0.08mm Extra Fine @InfiMech TX HSN", + "sparse_infill_speed": "450", + "exclude_object": "1", + "internal_bridge_speed": "50", + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] + + + +} diff --git a/resources/profiles/InfiMech/process/HSN/0.12mm Fine @InfiMech TX HSN.json b/resources/profiles/InfiMech/process/HSN/0.12mm Fine @InfiMech TX HSN.json new file mode 100644 index 0000000000..daeb460bb4 --- /dev/null +++ b/resources/profiles/InfiMech/process/HSN/0.12mm Fine @InfiMech TX HSN.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Fine @InfiMech TX HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common_HSN", + + "bottom_shell_layers": "5", + "overhang_1_4_speed": "50", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "top_shell_layers": "5", + "top_shell_thickness": "0.6", + "tree_support_wall_count": "0", + "brim_width": "5", + "gap_infill_speed": "350", + "inner_wall_speed": "350", + "internal_solid_infill_speed": "350", + "layer_height": "0.12", + "print_settings_id": "0.12mm Fine @InfiMech TX HSN", + "sparse_infill_speed": "400", + "exclude_object": "1", + "internal_bridge_speed": "50", + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] + + + + +} diff --git a/resources/profiles/InfiMech/process/HSN/0.16mm Optimal @InfiMech TX HSN.json b/resources/profiles/InfiMech/process/HSN/0.16mm Optimal @InfiMech TX HSN.json new file mode 100644 index 0000000000..21095d8ef5 --- /dev/null +++ b/resources/profiles/InfiMech/process/HSN/0.16mm Optimal @InfiMech TX HSN.json @@ -0,0 +1,41 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.16mm Optimal @InfiMech TX HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common_HSN", + + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "top_shell_layers": "6", + "overhang_1_4_speed": "50", + "accel_to_decel_enable": "0", + "bottom_shell_layers": "4", + "bridge_speed": "25", + "brim_object_gap": "0.1", + "exclude_object": "1", + "gap_infill_speed": "300", + "inner_wall_speed": "300", + "internal_bridge_speed": "50", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "300", + "is_custom_defined": "0", + "layer_height": "0.16", + "line_width": "0.42", + "outer_wall_line_width": "0.42", + "overhang_speed_classic": "0", + "precise_outer_wall": "0", + "print_flow_ratio": "0.95", + "seam_gap": "10%", + "skirt_speed": "50", + "sparse_infill_speed": "330", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_line_width": "0.42", + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] + + +} diff --git a/resources/profiles/InfiMech/process/HSN/0.20mm Standard @InfiMech TX HSN.json b/resources/profiles/InfiMech/process/HSN/0.20mm Standard @InfiMech TX HSN.json new file mode 100644 index 0000000000..e61c1d75fe --- /dev/null +++ b/resources/profiles/InfiMech/process/HSN/0.20mm Standard @InfiMech TX HSN.json @@ -0,0 +1,31 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @InfiMech TX HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common_HSN", + + "bottom_shell_layers": "3", + "overhang_1_4_speed": "50", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "top_shell_layers": "5", + "top_shell_thickness": "1", + "tree_support_wall_count": "1", + "brim_width": "5", + "gap_infill_speed": "250", + "inner_wall_speed": "300", + "internal_solid_infill_speed": "250", + "layer_height": "0.2", + "print_settings_id": "0.20mm Standard @InfiMech TX HSN", + "sparse_infill_speed": "270", + "exclude_object": "1", + "internal_bridge_speed": "50", + "top_solid_infill_flow_ratio": "0.97", + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] + + +} diff --git a/resources/profiles/InfiMech/process/HSN/0.24mm Draft @InfiMech TX HSN.json b/resources/profiles/InfiMech/process/HSN/0.24mm Draft @InfiMech TX HSN.json new file mode 100644 index 0000000000..4fa9892a9a --- /dev/null +++ b/resources/profiles/InfiMech/process/HSN/0.24mm Draft @InfiMech TX HSN.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @InfiMech TX HSN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common_HSN", + + "bottom_shell_layers": "3", + "overhang_1_4_speed": "50", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "top_shell_layers": "4", + "top_shell_thickness": "1", + "tree_support_wall_count": "1", + "brim_width": "3", + "gap_infill_speed": "230", + "inner_wall_speed": "230", + "internal_solid_infill_speed": "230", + "layer_height": "0.24", + "print_settings_id": "0.24mm Draft @InfiMech TX HSN", + "sparse_infill_speed": "230", + "exclude_object": "1", + "internal_bridge_speed": "50", + "compatible_printers": [ + "InfiMech TX HSN 0.4 nozzle" + ] + + +} diff --git a/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json b/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json new file mode 100644 index 0000000000..fc457c76d8 --- /dev/null +++ b/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json @@ -0,0 +1,222 @@ +{ + "type": "process", + "name": "fdm_process_common_HSN", + "from": "system", + "instantiation": "false", + "accel_to_decel_enable": "0", + "accel_to_decel_factor": "50%", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "25", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "compatible_printers_condition": "", + "default_acceleration": "10000", + "default_jerk": "0", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "enable_arc_fitting": "1", + "enable_overhang_speed": "1", + "enable_prime_tower": "0", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "1", + "extra_perimeters_on_overhangs": "0", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_thickness": "0.3", + + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "0", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "50", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "50", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "interface_shells": "0", + "internal_bridge_speed": "50%", + "internal_bridge_support_thickness": "0.8", + "internal_solid_infill_acceleration": "100%", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "monotonic", + + "ironing_flow": "10%", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_width_top_surface": "100%", + "minimum_sparse_infill_area": "15", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "200", + + "overhang_4_4_speed": "10", + "overhang_speed_classic": "0", + "post_process": [], + "precise_outer_wall": "0", + "prime_tower_brim_width": "3", + "prime_tower_width": "35", + "prime_volume": "45", + "print_sequence": "by layer", + + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "2", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "seam_gap": "10%", + "seam_position": "aligned", + "single_extruder_multi_material_priming": "1", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "crosshatch", + + "spiral_mode": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "0", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "30", + "support_top_z_distance": "0.2", + "support_type": "normal(auto)", + "thick_bridges": "0", + "timelapse_type": "0", + + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "200", + "travel_acceleration": "10000", + "travel_jerk": "12", + "travel_speed": "500", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "0", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_double_wall": "3", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "0", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + + "version": "1.6.0.0", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_infill_order": "inner wall/outer wall/infill", + "wall_loops": "2", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "0", + "wipe_tower_extra_spacing": "100%", + "wipe_tower_extruder": "0", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0", + "exclude_object": "1" + +} From 34065de838b39ec419fedd12f4338ca6a0214177 Mon Sep 17 00:00:00 2001 From: Leon Bai <58339623+Bai825@users.noreply.github.com> Date: Sun, 14 Jul 2024 10:43:23 +0800 Subject: [PATCH 032/151] [07-10 Flashforge]: Add more layer height options for AD5M and more nozzles for G3U etc. (#6085) * Flashforge-06-12: gcode and filament mapping * 06-27 Add Chuanying x1 printer profiles * 20240702-Flashforge Guider 2s process fix * [07-10 Flashforge]: Add more layer height options for AD5M and more nozzles for G3U etc. --- resources/profiles/Flashforge.json | 304 ++++++++++++++---- ...lashforge Generic ABS @G3U 0.6 Nozzle.json | 62 ++++ .../filament/Flashforge Generic ABS @G3U.json | 3 +- ...lashforge Generic ASA @G3U 0.6 Nozzle.json | 71 ++++ .../filament/Flashforge Generic ASA @G3U.json | 3 +- ...ashforge Generic HIPS @G3U 0.6 Nozzle.json | 71 ++++ .../filament/Flashforge Generic HIPS.json | 9 +- ...ashforge Generic PETG @G3U 0.6 Nozzle.json | 62 ++++ ...ashforge Generic PETG @G3U 0.8 Nozzle.json | 62 ++++ .../Flashforge Generic PETG @G3U.json | 7 +- ...forge Generic PETG-CF @G3U 0.6 Nozzle.json | 68 ++++ ...forge Generic PETG-CF @G3U 0.8 Nozzle.json | 68 ++++ .../Flashforge Generic PETG-CF @G3U.json | 7 +- .../Flashforge Generic PETG-CF10.json | 4 +- .../filament/Flashforge Generic PETG.json | 4 +- ...lashforge Generic PLA @G3U 0.6 Nozzle.json | 56 ++++ ...lashforge Generic PLA @G3U 0.8 Nozzle.json | 62 ++++ ...hforge Generic PLA-CF @G3U 0.6 Nozzle.json | 65 ++++ ...hforge Generic PLA-CF @G3U 0.8 Nozzle.json | 65 ++++ .../Flashforge Generic PLA-CF @G3U.json | 3 +- .../filament/Flashforge Generic PVA.json | 9 +- .../filament/Flashforge Generic TPU.json | 4 +- .../Flashforge/filament/Flashforge PLA.json | 3 +- .../filament/FusRock Generic NexPA-CF25.json | 3 +- ...sRock Generic PAHT-CF @G3U 0.6 Nozzle.json | 89 +++++ .../filament/FusRock Generic PAHT-GF.json | 39 +++ ...usRock Generic PET-CF @G3U 0.6 Nozzle.json | 89 +++++ .../filament/FusRock Generic PET-GF.json | 33 ++ ...sRock Generic S-Multi @G3U 0.6 Nozzle.json | 83 +++++ .../filament/FusRock Generic S-Multi.json | 3 +- ...usRock Generic S-PAHT @G3U 0.6 Nozzle.json | 83 +++++ .../filament/FusRock Generic S-PAHT.json | 3 +- .../filament/Polymaker Generic CoPA.json | 3 +- .../filament/Polymaker Generic S1.json | 3 +- .../Flashforge Adventurer 5M 0.6 Nozzle.json | 2 +- .../Flashforge Adventurer 5M 0.8 Nozzle.json | 2 +- ...ashforge Adventurer 5M Pro 0.6 Nozzle.json | 2 +- ...ashforge Adventurer 5M Pro 0.8 Nozzle.json | 2 +- .../Flashforge Guider 3 Ultra 0.6 Nozzle.json | 62 ++++ .../Flashforge Guider 3 Ultra 0.8 Nozzle.json | 62 ++++ .../machine/Flashforge Guider 3 Ultra.json | 2 +- .../machine/fdm_flashforge_common.json | 2 +- .../machine/fdm_guider3_common.json | 63 +++- ...Standard @Flashforge AD5M 0.25 Nozzle.json | 19 ++ ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 19 ++ ...Standard @Flashforge AD5M 0.25 Nozzle.json | 19 ++ ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 19 ++ ...Standard @Flashforge AD5M 0.25 Nozzle.json | 19 ++ ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 19 ++ ...tail @Flashforge Guider 2s 0.4 nozzle.json | 212 ++++++------ ...12mm Fine @Flashforge AD5M 0.4 Nozzle.json | 25 ++ ... Fine @Flashforge AD5M Pro 0.4 Nozzle.json | 25 ++ ....12mm Fine @Flashforge G3U 0.4 Nozzle.json | 26 ++ ...Standard @Flashforge AD5M 0.25 Nozzle.json | 19 ++ ...dard @Flashforge AD5M Pro 0.25 Nozzle.json | 19 ++ ...imal @Flashforge Guider 2s 0.4 nozzle.json | 212 ++++++------ ...18mm Fine @Flashforge AD5M 0.6 Nozzle.json | 22 ++ ... Fine @Flashforge AD5M Pro 0.6 Nozzle.json | 25 ++ ...m Standard @Flashforge G3U 0.6 Nozzle.json | 18 ++ ...dard @Flashforge Guider 2s 0.4 nozzle.json | 214 ++++++------ ...4mm Draft @Flashforge AD5M 0.4 Nozzle.json | 25 ++ ...Draft @Flashforge AD5M Pro 0.4 Nozzle.json | 26 ++ ...24mm Draft @Flashforge G3U 0.4 Nozzle.json | 27 ++ ...24mm Fine @Flashforge AD5M 0.8 Nozzle.json | 48 +++ ... Fine @Flashforge AD5M Pro 0.8 Nozzle.json | 48 +++ ...raft @Flashforge Guider 2s 0.4 nozzle.json | 214 ++++++------ ...m Standard @Flashforge G3U 0.6 Nozzle.json | 60 ++++ ...m Standard @Flashforge G3U 0.8 Nozzle.json | 62 ++++ ...2mm Draft @Flashforge AD5M 0.6 Nozzle.json | 30 ++ ...Draft @Flashforge AD5M Pro 0.6 Nozzle.json | 32 ++ ...m Standard @Flashforge G3U 0.6 Nozzle.json | 20 ++ ...6mm Draft @Flashforge AD5M 0.8 Nozzle.json | 49 +++ ...Draft @Flashforge AD5M Pro 0.8 Nozzle.json | 48 +++ .../process/fdm_process_common.json | 2 +- .../process/fdm_process_flashforge_0.40.json | 30 ++ 75 files changed, 2827 insertions(+), 527 deletions(-) create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PAHT-GF.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic PET-GF.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json create mode 100644 resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 20c5ba7324..194f7f7551 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -43,6 +43,10 @@ "name": "fdm_process_flashforge_0.30", "sub_path": "process/fdm_process_flashforge_0.30.json" }, + { + "name": "fdm_process_flashforge_0.40", + "sub_path": "process/fdm_process_flashforge_0.40.json" + }, { "name": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", "sub_path": "process/0.20mm Standard @Flashforge AD5M 0.4 Nozzle.json" @@ -59,27 +63,107 @@ "name": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", "sub_path": "process/0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle.json" }, - { + { "name": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", "sub_path": "process/0.12mm Standard @Flashforge AD5M 0.25 Nozzle.json" - }, - { + }, + { "name": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "sub_path": "process/0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" - }, - { + }, + { "name": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", "sub_path": "process/0.40mm Standard @Flashforge AD5M 0.8 Nozzle.json" - }, - { + }, + { "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", "sub_path": "process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json" - }, - { + }, + { + "name": "0.10mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.06mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.08mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge AD5M 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json" + }, + { + "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", + "sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json" + }, + { + "name": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "sub_path": "process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" + }, + { + "name": "0.18mm Fine @Flashforge AD5M 0.6 Nozzle", + "sub_path": "process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json" + }, + { + "name": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", + "sub_path": "process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge AD5M 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json" + }, + { + "name": "0.24mm Fine @Flashforge AD5M 0.8 Nozzle", + "sub_path": "process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json" + }, + { + "name": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", + "sub_path": "process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json" + }, + { + "name": "0.42mm Draft @Flashforge AD5M 0.6 Nozzle", + "sub_path": "process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json" + }, + { + "name": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", + "sub_path": "process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json" + }, + { + "name": "0.56mm Draft @Flashforge AD5M 0.8 Nozzle", + "sub_path": "process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json" + }, + { + "name": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", + "sub_path": "process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json" + }, + { "name": "0.20mm Standard @Flashforge AD3 0.4 Nozzle", "sub_path": "process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json" }, - { + { "name": "0.30mm Fast @Flashforge AD3 0.4 Nozzle", "sub_path": "process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json" }, @@ -91,6 +175,30 @@ "name": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", "sub_path": "process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json" }, + { + "name": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", + "sub_path": "process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json" + }, + { + "name": "0.12mm Fine @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.18mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "0.24mm Draft @Flashforge G3U 0.4 Nozzle", + "sub_path": "process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json" + }, + { + "name": "0.42mm Standard @Flashforge G3U 0.6 Nozzle", + "sub_path": "process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json" + }, { "name": "0.30mm Draft @Flashforge Guider 2s 0.4 nozzle", "sub_path": "process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json" @@ -137,26 +245,26 @@ "name": "Flashforge Generic ABS", "sub_path": "filament/Flashforge Generic ABS.json" }, - { + { "name": "Flashforge ABS @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge ABS @FF AD5M 0.25 Nozzle.json" - }, + }, { "name": "Flashforge Generic PETG", "sub_path": "filament/Flashforge Generic PETG.json" }, - { + { "name": "Flashforge PETG @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge PETG @FF AD5M 0.25 Nozzle.json" - }, + }, { "name": "Flashforge Generic PLA", "sub_path": "filament/Flashforge Generic PLA.json" }, - { + { "name": "Flashforge PLA @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json" - }, + }, { "name": "Flashforge Generic PLA-CF10", "sub_path": "filament/Flashforge Generic PLA-CF10.json" @@ -165,26 +273,26 @@ "name": "Flashforge Generic PLA-Silk", "sub_path": "filament/Flashforge Generic PLA-Silk.json" }, - { + { "name": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json" - }, + }, { "name": "Flashforge Generic HS PLA", "sub_path": "filament/Flashforge Generic HS PLA.json" }, - { + { "name": "Flashforge HS PLA @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge HS PLA @FF AD5M 0.25 Nozzle.json" - }, + }, { "name": "Flashforge Generic ASA", "sub_path": "filament/Flashforge Generic ASA.json" }, - { + { "name": "Flashforge ASA @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json" - }, + }, { "name": "Flashforge Generic PETG-CF10", "sub_path": "filament/Flashforge Generic PETG-CF10.json" @@ -193,7 +301,7 @@ "name": "Flashforge Generic TPU", "sub_path": "filament/Flashforge Generic TPU.json" }, - { + { "name": "Flashforge ABS", "sub_path": "filament/Flashforge ABS.json" }, @@ -210,60 +318,128 @@ "sub_path": "filament/Polymaker Generic S1.json" }, { - "name":"Polymaker Generic CoPA", - "sub_path":"filament/Polymaker Generic CoPA.json" + "name": "Polymaker Generic CoPA", + "sub_path": "filament/Polymaker Generic CoPA.json" }, { - "name":"FusRock Generic S-PAHT", - "sub_path":"filament/FusRock Generic S-PAHT.json" - }, - { - "name":"FusRock Generic S-Multi", - "sub_path":"filament/FusRock Generic S-Multi.json" + "name": "FusRock Generic S-PAHT", + "sub_path": "filament/FusRock Generic S-PAHT.json" }, { - "name":"FusRock Generic NexPA-CF25", - "sub_path":"filament/FusRock Generic NexPA-CF25.json" + "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json" }, { - "name":"FusRock Generic PAHT-CF", - "sub_path":"filament/FusRock Generic PAHT-CF.json" + "name": "FusRock Generic S-Multi", + "sub_path": "filament/FusRock Generic S-Multi.json" }, { - "name":"FusRock Generic PET-CF", - "sub_path":"filament/FusRock Generic PET-CF.json" + "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json" }, { - "name":"Flashforge Generic ABS @G3U", - "sub_path":"filament/Flashforge Generic ABS @G3U.json" + "name": "FusRock Generic NexPA-CF25", + "sub_path": "filament/FusRock Generic NexPA-CF25.json" }, { - "name":"Flashforge Generic ASA @G3U", - "sub_path":"filament/Flashforge Generic ASA @G3U.json" + "name": "FusRock Generic PAHT-CF", + "sub_path": "filament/FusRock Generic PAHT-CF.json" }, { - "name":"Flashforge Generic PLA @G3U", - "sub_path":"filament/Flashforge Generic PLA @G3U.json" + "name": "FusRock Generic PAHT-GF", + "sub_path": "filament/FusRock Generic PAHT-GF.json" }, { - "name":"Flashforge Generic PLA-CF @G3U", - "sub_path":"filament/Flashforge Generic PLA-CF @G3U.json" + "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json" }, { - "name":"Flashforge Generic PETG @G3U", - "sub_path":"filament/Flashforge Generic PETG @G3U.json" + "name": "FusRock Generic PET-CF", + "sub_path": "filament/FusRock Generic PET-CF.json" }, { - "name":"Flashforge Generic PETG-CF @G3U", - "sub_path":"filament/Flashforge Generic PETG-CF @G3U.json" + "name": "FusRock Generic PET-GF", + "sub_path": "filament/FusRock Generic PET-GF.json" }, { - "name":"Flashforge Generic HIPS", - "sub_path":"filament/Flashforge Generic HIPS.json" + "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "sub_path": "filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json" }, { - "name":"Flashforge Generic PVA", - "sub_path":"filament/Flashforge Generic PVA.json" + "name": "Flashforge Generic ABS @G3U", + "sub_path": "filament/Flashforge Generic ABS @G3U.json" + }, + { + "name": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic ASA @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic ASA @G3U", + "sub_path": "filament/Flashforge Generic ASA @G3U.json" + }, + { + "name": "Flashforge Generic PLA @G3U", + "sub_path": "filament/Flashforge Generic PLA @G3U.json" + }, + { + "name": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG @G3U", + "sub_path": "filament/Flashforge Generic PETG @G3U.json" + }, + { + "name": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json" + }, + { + "name": "Flashforge Generic PETG-CF @G3U", + "sub_path": "filament/Flashforge Generic PETG-CF @G3U.json" + }, + { + "name": "Flashforge Generic HIPS", + "sub_path": "filament/Flashforge Generic HIPS.json" + }, + { + "name": "Flashforge Generic HIPS @G3U 0.6 Nozzle", + "sub_path": "filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json" + }, + { + "name": "Flashforge Generic PVA", + "sub_path": "filament/Flashforge Generic PVA.json" } ], "machine_list": [ @@ -275,11 +451,11 @@ "name": "fdm_flashforge_common", "sub_path": "machine/fdm_flashforge_common.json" }, - { + { "name": "fdm_adventurer5m_common", "sub_path": "machine/fdm_adventurer5m_common.json" }, - { + { "name": "Flashforge Adventurer 5M 0.25 Nozzle", "sub_path": "machine/Flashforge Adventurer 5M 0.25 Nozzle.json" }, @@ -291,11 +467,11 @@ "name": "Flashforge Adventurer 5M 0.6 Nozzle", "sub_path": "machine/Flashforge Adventurer 5M 0.6 Nozzle.json" }, - { + { "name": "Flashforge Adventurer 5M 0.8 Nozzle", "sub_path": "machine/Flashforge Adventurer 5M 0.8 Nozzle.json" }, - { + { "name": "Flashforge Adventurer 5M Pro 0.25 Nozzle", "sub_path": "machine/Flashforge Adventurer 5M Pro 0.25 Nozzle.json" }, @@ -307,15 +483,15 @@ "name": "Flashforge Adventurer 5M Pro 0.6 Nozzle", "sub_path": "machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json" }, - { + { "name": "Flashforge Adventurer 5M Pro 0.8 Nozzle", "sub_path": "machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json" }, - { + { "name": "fdm_flashforge_common", "sub_path": "machine/fdm_adventurer3_common.json" }, - { + { "name": "Flashforge Adventurer 3 Series 0.4 Nozzle", "sub_path": "machine/Flashforge Adventurer 3 Series 0.4 nozzle.json" }, @@ -331,6 +507,14 @@ "name": "Flashforge Guider 3 Ultra 0.4 Nozzle", "sub_path": "machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json" }, + { + "name": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "sub_path": "machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json" + }, + { + "name": "Flashforge Guider 3 Ultra 0.8 Nozzle", + "sub_path": "machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json" + }, { "name": "Flashforge Guider 2s 0.4 nozzle", "sub_path": "machine/Flashforge Guider 2s 0.4 nozzle.json" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..7ea9300733 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U 0.6 Nozzle.json @@ -0,0 +1,62 @@ +{ + "type": "filament", + "name": "Flashforge Generic ABS @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic ABS", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "20" + ], + "filament_flow_ratio": [ + "1.03" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic ABS @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "50" + ], + "slow_down_min_speed": [ + "12" + ], + "support_material_interface_fan_speed": [ + "40" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json index acb764bee0..e6dd70087e 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ABS @G3U.json @@ -20,7 +20,8 @@ "2" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..4f9efca486 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U 0.6 Nozzle.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "name": "Flashforge Generic ASA @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic ASA", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "20" + ], + "filament_density": [ + "1.09" + ], + "filament_flow_ratio": [ + "1.03" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "10" + ], + "filament_settings_id": [ + "Flashforge Generic ASA @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "filament_type": [ + "ASA" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "50" + ], + "slow_down_min_speed": [ + "12" + ], + "support_material_interface_fan_speed": [ + "40" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json index 457a13c2fb..b38fc3fc9c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic ASA @G3U.json @@ -20,7 +20,8 @@ "2" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..c7f9f3f1a9 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic HIPS @G3U 0.6 Nozzle.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "name": "Flashforge Generic HIPS @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic ABS", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "20" + ], + "filament_density": [ + "1.05" + ], + "filament_flow_ratio": [ + "1.01" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic HIPS @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "filament_type": [ + "HIPS" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "50" + ], + "slow_down_min_speed": [ + "12" + ], + "support_material_interface_fan_speed": [ + "40" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json b/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json index aa5c61337d..e733757a95 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic HIPS.json @@ -20,13 +20,8 @@ "2" ], "compatible_printers": [ - "Flashforge Adventurer 5M 0.4 Nozzle", - "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", - "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..04900a249f --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.6 Nozzle.json @@ -0,0 +1,62 @@ +{ + "type": "filament", + "name": "Flashforge Generic PETG @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic PETG", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "80" + ], + "filament_flow_ratio": [ + "1.01" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic PETG @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp": [ + "75" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "pressure_advance": [ + "0.042" + ], + "slow_down_min_speed": [ + "12" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json new file mode 100644 index 0000000000..668dcd9c55 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U 0.8 Nozzle.json @@ -0,0 +1,62 @@ +{ + "type": "filament", + "name": "Flashforge Generic PETG @G3U 0.8 Nozzle", + "inherits": "Flashforge Generic PETG", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.8 Nozzle" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "80" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic PETG @G3U 0.8 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp": [ + "75" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "slow_down_min_speed": [ + "12" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json index 38bacfca77..f12b29c48c 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG @G3U.json @@ -20,7 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], @@ -56,10 +57,10 @@ "30" ], "fan_max_speed": [ - "90" + "100" ], "fan_min_speed": [ - "40" + "80" ], "filament_cooling_final_speed": [ "3.4" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..25628fda40 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.6 Nozzle.json @@ -0,0 +1,68 @@ +{ + "type": "filament", + "name": "Flashforge Generic PETG-CF @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic PETG", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "80" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic PETG-CF @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "225" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "pressure_advance": [ + "0.042" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "12" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json new file mode 100644 index 0000000000..507086f424 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U 0.8 Nozzle.json @@ -0,0 +1,68 @@ +{ + "type": "filament", + "name": "Flashforge Generic PETG-CF @G3U 0.8 Nozzle", + "inherits": "Flashforge Generic PETG", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.8 Nozzle" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "80" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic PETG-CF @G3U 0.8 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_unloading_speed": [ + "40" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "12" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json index 29774632d5..ee69fe3d40 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF @G3U.json @@ -20,7 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], @@ -56,10 +57,10 @@ "30" ], "fan_max_speed": [ - "90" + "100" ], "fan_min_speed": [ - "40" + "80" ], "filament_cooling_final_speed": [ "3.4" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json index 0ae33101be..ebbaa365c0 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG-CF10.json @@ -52,10 +52,10 @@ "30" ], "fan_max_speed": [ - "90" + "100" ], "fan_min_speed": [ - "40" + "80" ], "filament_cost": [ "30" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json b/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json index bf7833deb0..2ab568758f 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PETG.json @@ -73,10 +73,10 @@ "30" ], "fan_max_speed": [ - "90" + "100" ], "fan_min_speed": [ - "40" + "80" ], "overhang_fan_threshold": [ "25%" diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..2340b9e7c0 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.6 Nozzle.json @@ -0,0 +1,56 @@ +{ + "type": "filament", + "name": "Flashforge Generic PLA @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic PLA", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "fan_cooling_layer_time": [ + "50" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic PLA @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n\n\n" + ], + "filament_unloading_speed": [ + "40" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp": [ + "55" + ], + "is_custom_defined": "0", + "nozzle_temperature_range_low": [ + "200" + ], + "pressure_advance": [ + "0.042" + ], + "slow_down_layer_time": [ + "15" + ], + "slow_down_min_speed": [ + "15" + ], + "version": "1.8.0.0" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json new file mode 100644 index 0000000000..767c55ae61 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA @G3U 0.8 Nozzle.json @@ -0,0 +1,62 @@ +{ + "type": "filament", + "name": "Flashforge Generic PLA @G3U 0.8 Nozzle", + "inherits": "Flashforge Generic PLA", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.8 Nozzle" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "fan_cooling_layer_time": [ + "50" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic PLA @G3U 0.8 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n\n\n" + ], + "filament_unloading_speed": [ + "40" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp": [ + "55" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "225" + ], + "nozzle_temperature_initial_layer": [ + "225" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "pressure_advance": [ + "0.042" + ], + "slow_down_layer_time": [ + "15" + ], + "slow_down_min_speed": [ + "15" + ], + "version": "1.8.0.0" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..0fac41e168 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.6 Nozzle.json @@ -0,0 +1,65 @@ +{ + "type": "filament", + "name": "Flashforge Generic PLA-CF @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic PLA", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "fan_cooling_layer_time": [ + "50" + ], + "fan_min_speed": [ + "70" + ], + "filament_density": [ + "1.28" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic PLA-CF @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_unloading_speed": [ + "40" + ], + "filament_unloading_speed_start": [ + "40" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "pressure_advance": [ + "0.044" + ], + "slow_down_layer_time": [ + "15" + ], + "slow_down_min_speed": [ + "15" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json new file mode 100644 index 0000000000..9351a015c8 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U 0.8 Nozzle.json @@ -0,0 +1,65 @@ +{ + "type": "filament", + "name": "Flashforge Generic PLA-CF @G3U 0.8 Nozzle", + "inherits": "Flashforge Generic PLA", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.8 Nozzle" + ], + "fan_cooling_layer_time": [ + "50" + ], + "fan_min_speed": [ + "90" + ], + "filament_density": [ + "1.28" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "Flashforge Generic PLA-CF @G3U 0.8 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_unloading_speed": [ + "40" + ], + "filament_unloading_speed_start": [ + "40" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "215" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "pressure_advance": [ + "0.044" + ], + "slow_down_layer_time": [ + "15" + ], + "slow_down_min_speed": [ + "15" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json index bb851c86f0..8ecdb6002d 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PLA-CF @G3U.json @@ -20,7 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json b/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json index 6e74e7bc9f..1f46d484bc 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic PVA.json @@ -20,13 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Adventurer 5M 0.4 Nozzle", - "Flashforge Adventurer 5M 0.6 Nozzle", - "Flashforge Adventurer 5M 0.8 Nozzle", - "Flashforge Adventurer 5M Pro 0.4 Nozzle", - "Flashforge Adventurer 5M Pro 0.6 Nozzle", - "Flashforge Adventurer 5M Pro 0.8 Nozzle", - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json b/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json index 0639e20d0a..39a60a387a 100644 --- a/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json +++ b/resources/profiles/Flashforge/filament/Flashforge Generic TPU.json @@ -142,10 +142,10 @@ "45" ], "nozzle_temperature": [ - "235" + "225" ], "nozzle_temperature_initial_layer": [ - "235" + "225" ], "nozzle_temperature_range_high": [ "250" diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA.json b/resources/profiles/Flashforge/filament/Flashforge PLA.json index 155eb9c84c..e733abb4a9 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PLA.json +++ b/resources/profiles/Flashforge/filament/Flashforge PLA.json @@ -59,7 +59,6 @@ ], "compatible_printers": [ "Flashforge Adventurer 3 Series 0.4 Nozzle", - "Flashforge Adventurer 3 Series 0.6 Nozzle", - "Flashforge Guider 2s 0.4 nozzle" + "Flashforge Adventurer 3 Series 0.6 Nozzle" ] } diff --git a/resources/profiles/Flashforge/filament/FusRock Generic NexPA-CF25.json b/resources/profiles/Flashforge/filament/FusRock Generic NexPA-CF25.json index 3b5a961265..3596e6f76c 100644 --- a/resources/profiles/Flashforge/filament/FusRock Generic NexPA-CF25.json +++ b/resources/profiles/Flashforge/filament/FusRock Generic NexPA-CF25.json @@ -20,7 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..4021876bdf --- /dev/null +++ b/resources/profiles/Flashforge/filament/FusRock Generic PAHT-CF @G3U 0.6 Nozzle.json @@ -0,0 +1,89 @@ +{ + "type": "filament", + "name": "FusRock Generic PAHT-CF @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic PETG", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "15" + ], + "filament_cost": [ + "300" + ], + "filament_density": [ + "1.15" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "FusRock Generic PAHT-CF @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_type": [ + "PAHT-CF" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp": [ + "75" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "295" + ], + "nozzle_temperature_initial_layer": [ + "295" + ], + "nozzle_temperature_range_high": [ + "305" + ], + "nozzle_temperature_range_low": [ + "290" + ], + "overhang_fan_speed": [ + "30" + ], + "pressure_advance": [ + "0.04" + ], + "slow_down_min_speed": [ + "12" + ], + "support_material_interface_fan_speed": [ + "30" + ], + "temperature_vitrification": [ + "90" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PAHT-GF.json b/resources/profiles/Flashforge/filament/FusRock Generic PAHT-GF.json new file mode 100644 index 0000000000..b440f1a0e4 --- /dev/null +++ b/resources/profiles/Flashforge/filament/FusRock Generic PAHT-GF.json @@ -0,0 +1,39 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "filament_max_volumetric_speed": [ + "15" + ], + "filament_settings_id": [ + "FusRock Generic PAHT-GF" + ], + "filament_type": [ + "PAHT-GF" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "inherits": "FusRock Generic PAHT-CF", + "is_custom_defined": "0", + "name": "FusRock Generic PAHT-GF", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..10eb4e5900 --- /dev/null +++ b/resources/profiles/Flashforge/filament/FusRock Generic PET-CF @G3U 0.6 Nozzle.json @@ -0,0 +1,89 @@ +{ + "type": "filament", + "name": "FusRock Generic PET-CF @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic PETG", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "300" + ], + "filament_density": [ + "1.3" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "FusRock Generic PET-CF @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_type": [ + "PET-CF" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp": [ + "75" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "30" + ], + "pressure_advance": [ + "0.04" + ], + "slow_down_min_speed": [ + "12" + ], + "support_material_interface_fan_speed": [ + "30" + ], + "temperature_vitrification": [ + "90" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/FusRock Generic PET-GF.json b/resources/profiles/Flashforge/filament/FusRock Generic PET-GF.json new file mode 100644 index 0000000000..90f244dbd6 --- /dev/null +++ b/resources/profiles/Flashforge/filament/FusRock Generic PET-GF.json @@ -0,0 +1,33 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "filament_max_volumetric_speed": [ + "15" + ], + "filament_settings_id": [ + "FusRock Generic PET-GF" + ], + "filament_type": [ + "PET-GF" + ], + "inherits": "FusRock Generic PET-CF", + "is_custom_defined": "0", + "name": "FusRock Generic PET-GF", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "support_material_interface_fan_speed": [ + "20" + ], + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..74e0031a40 --- /dev/null +++ b/resources/profiles/Flashforge/filament/FusRock Generic S-Multi @G3U 0.6 Nozzle.json @@ -0,0 +1,83 @@ +{ + "type": "filament", + "name": "FusRock Generic S-Multi @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic PETG", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "filament_density": [ + "1.2" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "FusRock Generic S-Multi @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_type": [ + "PET-CF" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp": [ + "75" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "nozzle_temperature_range_low": [ + "265" + ], + "overhang_fan_speed": [ + "30" + ], + "pressure_advance": [ + "0.03" + ], + "slow_down_min_speed": [ + "12" + ], + "support_material_interface_fan_speed": [ + "30" + ], + "temperature_vitrification": [ + "90" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/FusRock Generic S-Multi.json b/resources/profiles/Flashforge/filament/FusRock Generic S-Multi.json index 2fd995d4be..a14252ee46 100644 --- a/resources/profiles/Flashforge/filament/FusRock Generic S-Multi.json +++ b/resources/profiles/Flashforge/filament/FusRock Generic S-Multi.json @@ -20,7 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..aeb6934cc3 --- /dev/null +++ b/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT @G3U 0.6 Nozzle.json @@ -0,0 +1,83 @@ +{ + "type": "filament", + "name": "FusRock Generic S-PAHT @G3U 0.6 Nozzle", + "inherits": "Flashforge Generic PETG", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "from": "system", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "filament_density": [ + "1.15" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_minimal_purge_on_wipe_tower": [ + "5" + ], + "filament_settings_id": [ + "FusRock Generic S-PAHT @G3U 0.6 Nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode" + ], + "filament_type": [ + "PA-CF" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "40" + ], + "hot_plate_temp": [ + "75" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "is_custom_defined": "0", + "nozzle_temperature": [ + "275" + ], + "nozzle_temperature_initial_layer": [ + "275" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "nozzle_temperature_range_low": [ + "270" + ], + "overhang_fan_speed": [ + "30" + ], + "pressure_advance": [ + "0.03" + ], + "slow_down_min_speed": [ + "12" + ], + "support_material_interface_fan_speed": [ + "30" + ], + "temperature_vitrification": [ + "90" + ], + "version": "1.9.0.2" +} diff --git a/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT.json b/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT.json index d2825f27fc..494faac88f 100644 --- a/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT.json +++ b/resources/profiles/Flashforge/filament/FusRock Generic S-PAHT.json @@ -20,7 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/Polymaker Generic CoPA.json b/resources/profiles/Flashforge/filament/Polymaker Generic CoPA.json index a7d2d2b949..b50a9d4fc6 100644 --- a/resources/profiles/Flashforge/filament/Polymaker Generic CoPA.json +++ b/resources/profiles/Flashforge/filament/Polymaker Generic CoPA.json @@ -20,7 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/filament/Polymaker Generic S1.json b/resources/profiles/Flashforge/filament/Polymaker Generic S1.json index 11de35b1af..70f306aac5 100644 --- a/resources/profiles/Flashforge/filament/Polymaker Generic S1.json +++ b/resources/profiles/Flashforge/filament/Polymaker Generic S1.json @@ -20,7 +20,8 @@ "1" ], "compatible_printers": [ - "Flashforge Guider 3 Ultra 0.4 Nozzle" + "Flashforge Guider 3 Ultra 0.4 Nozzle", + "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json index 34694b32b6..f7aeea7f53 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.6 Nozzle.json @@ -9,7 +9,7 @@ "default_print_profile": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", "nozzle_diameter": [ "0.6" ], "printer_variant": "0.6", - "max_layer_height": [ "0.4" ], + "max_layer_height": [ "0.42" ], "min_layer_height": [ "0.15" ], "retraction_length": [ "1.2" ], "nozzle_type": "hardened_steel" diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json index 2eef780d8b..002249e4c8 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M 0.8 Nozzle.json @@ -11,7 +11,7 @@ "printer_variant": "0.8", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", "max_layer_height": [ "0.56" ], - "min_layer_height": [ "0.15" ], + "min_layer_height": [ "0.24" ], "retraction_length": [ "1.5" ], "nozzle_type": "hardened_steel", "z_hop": ["0"] diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json index 7ee9c093ab..9c7b55acbc 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.6 Nozzle.json @@ -9,7 +9,7 @@ "default_print_profile": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", "nozzle_diameter": [ "0.6" ], "printer_variant": "0.6", - "max_layer_height": [ "0.4" ], + "max_layer_height": [ "0.42" ], "min_layer_height": [ "0.15" ], "retraction_length": [ "1.2" ], "nozzle_type": "hardened_steel" diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json index b638a18246..262696fc3c 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro 0.8 Nozzle.json @@ -11,7 +11,7 @@ "printer_variant": "0.8", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", "max_layer_height": [ "0.56" ], - "min_layer_height": [ "0.15" ], + "min_layer_height": [ "0.24" ], "retraction_length": [ "1.5" ], "nozzle_type": "hardened_steel", "z_hop": ["0"] diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json new file mode 100644 index 0000000000..7d76aea8eb --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.6 Nozzle.json @@ -0,0 +1,62 @@ +{ + "type": "machine", + "name": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "inherits": "fdm_guider3_common", + "setting_id": "GM001", + "from": "system", + "instantiation": "true", + "printer_variant": "0.6", + "printer_model": "Flashforge Guider 3 Ultra", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "change_filament_gcode": "; change filament start\n{if total_toolchanges == 0 and current_extruder == 1}\nM104 S0 T0\n{elsif total_toolchanges > 0 and current_extruder == 0}\nM104 S{nozzle_temperature[0]}\n{if layer_z == initial_layer_print_height}\nT1\nM109 S{nozzle_temperature_initial_layer[1]} T1\n{else}\nT1\nM109 S{nozzle_temperature[1]} T1\n{endif}\n{elsif total_toolchanges > 0 and current_extruder == 1}\nM104 S{nozzle_temperature[1]}\n{if layer_z == initial_layer_print_height}\nT0\nM109 S{nozzle_temperature_initial_layer[0]} T0\n{else}\nT0\nM109 S{nozzle_temperature[0]} T0\n{endif}\n{endif}\n", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ "Flashforge Generic PLA @G3U 0.6 Nozzle" ], + "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "deretraction_speed": [ + "30" + ], + "extra_loading_move": "0", + "extruder_clearance_height_to_rod": "50", + "extruder_clearance_radius": "57", + "is_custom_defined": "0", + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 T0\nM104 S0 T1", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\n{if total_toolchanges < 1}\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nT[initial_extruder]\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\n{else}\nM109 S{nozzle_temperature_initial_layer[0] - 30} T0\nM109 S{nozzle_temperature_initial_layer[1] - 30} T1\n{if initial_extruder==0}\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[1]-30} T1\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{elsif current_extruder == 1}\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[0]-30} T0\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{endif}\n{endif}\n\n", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6" + ], + "parking_pos_retraction": "0", + "printable_area": [ + "-150x-165", + "150x-165", + "150x165", + "-150x165" + ], + "printable_height": "600", + "printer_settings_id": "Flashforge Guider 3 Ultra 0.6 Nozzle", + "retract_length_toolchange": [ + "15" + ], + "retract_restart_extra_toolchange": [ + "-0.8" + ], + "retraction_length": [ + "1.2" + ], + "retraction_speed": [ + "40" + ], + "version": "1.8.0.0", + "z_hop": [ + "0.6" + ], + "z_hop_types": [ + "Spiral Lift" + ] +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json new file mode 100644 index 0000000000..f51e0392aa --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.8 Nozzle.json @@ -0,0 +1,62 @@ +{ + "type": "machine", + "name": "Flashforge Guider 3 Ultra 0.8 Nozzle", + "inherits": "fdm_guider3_common", + "setting_id": "GM001", + "from": "system", + "instantiation": "true", + "printer_variant": "0.8", + "printer_model": "Flashforge Guider 3 Ultra", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "change_filament_gcode": "; change filament start\n{if total_toolchanges == 0 and current_extruder == 1}\nM104 S0 T0\n{elsif total_toolchanges > 0 and current_extruder == 0}\nM104 S{nozzle_temperature[0]}\n{if layer_z == initial_layer_print_height}\nT1\nM109 S{nozzle_temperature_initial_layer[1]} T1\n{else}\nT1\nM109 S{nozzle_temperature[1]} T1\n{endif}\n{elsif total_toolchanges > 0 and current_extruder == 1}\nM104 S{nozzle_temperature[1]}\n{if layer_z == initial_layer_print_height}\nT0\nM109 S{nozzle_temperature_initial_layer[0]} T0\n{else}\nT0\nM109 S{nozzle_temperature[0]} T0\n{endif}\n{endif}\n", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ "Flashforge Generic PLA @G3U 0.8 Nozzle" ], + "default_print_profile": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", + "deretraction_speed": [ + "40" + ], + "extra_loading_move": "0", + "extruder_clearance_height_to_rod": "50", + "extruder_clearance_radius": "57", + "is_custom_defined": "0", + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 T0\nM104 S0 T1", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\n{if total_toolchanges < 1}\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nT[initial_extruder]\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\n{else}\nM109 S{nozzle_temperature_initial_layer[0] - 30} T0\nM109 S{nozzle_temperature_initial_layer[1] - 30} T1\n{if initial_extruder==0}\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[1]-30} T1\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{elsif current_extruder == 1}\nM109 S{nozzle_temperature_initial_layer[0]} T0\nT0\nG21\nG90\nM83\nG1 Z0.3 F400\nG1 X-145 Y{random(-160,-152)} F4800\nG1 X-95 Y{random(-160,-152)} E30 F400\nG1 E-15 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X-80 F4800 ; move away from purge line\nM104 S{nozzle_temperature_initial_layer[0]-30} T0\nM109 S{nozzle_temperature_initial_layer[1]} T1\nT1\nG1 Z0.3 F400\nG1 X145 Y{random(-160,-152)} F4800\nG1 X95 Y{random(-160,-152)} E30 F400\nG1 E-0.8 F1800\nG92 E0\nG1 Z10 F2000 ; move up from purge line\nG1 X80 F4800 ; move away from purge line\nG92 E0\n{endif}\n{endif}\n\n", + "max_layer_height": [ + "0.5" + ], + "min_layer_height": [ + "0.3" + ], + "nozzle_diameter": [ + "0.8" + ], + "parking_pos_retraction": "0", + "printable_area": [ + "-150x-165", + "150x-165", + "150x165", + "-150x165" + ], + "printable_height": "600", + "printer_settings_id": "Flashforge Guider 3 Ultra 0.8 Nozzle", + "retract_length_toolchange": [ + "15" + ], + "retract_restart_extra_toolchange": [ + "-0.8" + ], + "retraction_length": [ + "1.5" + ], + "retraction_speed": [ + "50" + ], + "version": "1.8.0.0", + "z_hop": [ + "1" + ], + "z_hop_types": [ + "Spiral Lift" + ] +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json index 26060e43d0..f68a47b32c 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Flashforge Guider 3 Ultra", "model_id": "Flashforge-Guider-3-Ultra", - "nozzle_diameter": "0.4", + "nozzle_diameter": "0.4;0.6;0.8", "machine_tech": "FFF", "family": "Flashforge", "bed_model": "flashforge_g3u_buildplate_model.stl", diff --git a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json index c08d24493a..d8b455ab79 100644 --- a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json +++ b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json @@ -135,5 +135,5 @@ "layer_change_gcode": "", "scan_first_layer": "0", "nozzle_type": "undefine", - "auxiliary_fan": "0" + "auxiliary_fan": "1" } diff --git a/resources/profiles/Flashforge/machine/fdm_guider3_common.json b/resources/profiles/Flashforge/machine/fdm_guider3_common.json index 7623255b14..1a39d50e82 100644 --- a/resources/profiles/Flashforge/machine/fdm_guider3_common.json +++ b/resources/profiles/Flashforge/machine/fdm_guider3_common.json @@ -4,6 +4,65 @@ "from": "system", "instantiation": "false", "inherits": "fdm_flashforge_common", - "gcode_flavor": "marlin" - + "gcode_flavor": "klipper", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ] } diff --git a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json new file mode 100644 index 0000000000..99a2e5d71c --- /dev/null +++ b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "is_custom_defined": "0", + "layer_height": "0.06", + "name": "0.06mm Standard @Flashforge AD5M 0.25 Nozzle", + "print_settings_id": "0.06mm Standard @Flashforge AD5M 0.25 Nozzle", + "support_bottom_z_distance": "0.08", + "support_top_z_distance": "0.08", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json new file mode 100644 index 0000000000..cbfd927d4d --- /dev/null +++ b/resources/profiles/Flashforge/process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "is_custom_defined": "0", + "layer_height": "0.06", + "name": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "print_settings_id": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "support_bottom_z_distance": "0.08", + "support_top_z_distance": "0.08", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json new file mode 100644 index 0000000000..001e36e7fa --- /dev/null +++ b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "is_custom_defined": "0", + "layer_height": "0.08", + "name": "0.08mm Standard @Flashforge AD5M 0.25 Nozzle", + "print_settings_id": "0.08mm Standard @Flashforge AD5M 0.25 Nozzle", + "support_bottom_z_distance": "0.1", + "support_top_z_distance": "0.1", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json new file mode 100644 index 0000000000..a531a1ec31 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "is_custom_defined": "0", + "layer_height": "0.08", + "name": "0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "print_settings_id": "0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "support_bottom_z_distance": "0.1", + "support_top_z_distance": "0.1", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json new file mode 100644 index 0000000000..0cb95b1361 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "is_custom_defined": "0", + "layer_height": "0.1", + "name": "0.10mm Standard @Flashforge AD5M 0.25 Nozzle", + "print_settings_id": "0.10mm Standard @Flashforge AD5M 0.25 Nozzle", + "support_bottom_z_distance": "0.1", + "support_top_z_distance": "0.1", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json new file mode 100644 index 0000000000..a1ac228b1b --- /dev/null +++ b/resources/profiles/Flashforge/process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "is_custom_defined": "0", + "layer_height": "0.1", + "name": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "print_settings_id": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "support_bottom_z_distance": "0.1", + "support_top_z_distance": "0.1", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json index 16d9377778..548172068a 100644 --- a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json @@ -1,107 +1,109 @@ { - "type": "process", - "name": "0.12mm Detail @Flashforge Guider 2s 0.4 nozzle", - "instantiation": "false", - "adaptive_layer_height": "0", - "bridge_flow": "1", - "bridge_speed": "80%", - "brim_width": "5", - "bridge_no_support": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0.8", - "brim_object_gap": "0.1", - "default_acceleration": "200", - "detect_overhang_wall": "1", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.15", - "enable_support": "1", - "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", - "gap_infill_speed": "100", - "infill_direction": "45", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.20", - "initial_layer_speed": "10", - "initial_layer_travel_speed": "70", - "infill_combination": "1", - "infill_wall_overlap": "15%", - "interface_shells": "0", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "200", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_speed": "200", - "internal_bridge_support_thickness": "0.8", - "initial_layer_acceleration": "200", - "ironing_flow": "10%", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "initial_layer_infill_speed": "10", - "line_width": "0.42", - "layer_height": "0.12", - "minimum_sparse_infill_area": "15", - "max_travel_detour_distance": "0", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "40", - "outer_wall_acceleration": "200", - "inner_wall_acceleration": "200", - "bridge_acceleration": "50%", - "sparse_infill_acceleration": "100%", - "internal_solid_infill_acceleration": "100%", - "travel_acceleration": "200", - "skirt_speed": "10", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "100", - "overhang_3_4_speed": "80", - "overhang_4_4_speed": "50", - "slow_down_layers": "2", - "only_one_wall_top": "1", - "print_sequence": "by layer", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "sparse_infill_line_width": "0.45", - "sparse_infill_speed": "100%", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "standby_temperature_delta": "-5", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.23", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_pattern": "auto", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_speed": "100%", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "skirt_loops": "2", - "support_type": "normal(auto)", - "support_style": "default", - "support_bottom_z_distance": "0.2", - "support_interface_bottom_layers": "2", - "top_surface_line_width": "0.42", - "top_surface_speed": "100", - "travel_speed": "70", - "tree_support_branch_diameter": "2", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "top_surface_pattern": "monotonicline", - "top_surface_acceleration": "200", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "wall_loops": "3", - "wall_infill_order": "inner wall/outer wall/infill", - "wall_generator": "arachne", - "compatible_printers": [ - "Flashforge Guider 2s 0.4 nozzle" - ] + "type": "process", + "name": "0.12mm Detail @Flashforge Guider 2s 0.4 nozzle", + "setting_id": "GS001", + "instantiation": "true", + "inherits": "fdm_process_flashforge_0.20", + "adaptive_layer_height": "0", + "bridge_flow": "1", + "bridge_speed": "80%", + "brim_width": "5", + "bridge_no_support": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0.8", + "brim_object_gap": "0.1", + "default_acceleration": "200", + "detect_overhang_wall": "1", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "enable_support": "1", + "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", + "gap_infill_speed": "100", + "infill_direction": "45", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.20", + "initial_layer_speed": "10", + "initial_layer_travel_speed": "70", + "infill_combination": "1", + "infill_wall_overlap": "15%", + "interface_shells": "0", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "200", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "200", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "200", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "initial_layer_infill_speed": "10", + "line_width": "0.42", + "layer_height": "0.12", + "minimum_sparse_infill_area": "15", + "max_travel_detour_distance": "0", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "40", + "outer_wall_acceleration": "200", + "inner_wall_acceleration": "200", + "bridge_acceleration": "50%", + "sparse_infill_acceleration": "100%", + "internal_solid_infill_acceleration": "100%", + "travel_acceleration": "200", + "skirt_speed": "10", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "100", + "overhang_3_4_speed": "80", + "overhang_4_4_speed": "50", + "slow_down_layers": "2", + "only_one_wall_top": "1", + "print_sequence": "by layer", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "sparse_infill_line_width": "0.45", + "sparse_infill_speed": "100%", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "standby_temperature_delta": "-5", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.23", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_pattern": "auto", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_speed": "100%", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "skirt_loops": "2", + "support_type": "normal(auto)", + "support_style": "default", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "2", + "top_surface_line_width": "0.42", + "top_surface_speed": "100", + "travel_speed": "70", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_surface_acceleration": "200", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "wall_loops": "3", + "wall_infill_order": "inner wall/outer wall/infill", + "wall_generator": "arachne", + "compatible_printers": [ + "Flashforge Guider 2s 0.4 nozzle" + ] } diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json new file mode 100644 index 0000000000..27c21d2514 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M 0.4 Nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "name": "0.12mm Fine @Flashforge AD5M 0.4 Nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "layer_height": "0.12", + "initial_layer_print_height": "0.3", + "is_custom_defined": "0", + "print_settings_id": "0.12mm Fine @Flashforge AD5M 0.4 Nozzle", + "support_bottom_interface_spacing": "0.3", + "support_bottom_z_distance": "0.15", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.3", + "support_interface_speed": "40", + "support_interface_top_layers": "3", + "support_speed": "100", + "support_top_z_distance": "0.15", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json new file mode 100644 index 0000000000..0b62ba6e66 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "name": "0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.4 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "layer_height": "0.12", + "bridge_flow": "0.95", + "infill_wall_overlap": "30%", + "initial_layer_print_height": "0.3", + "is_custom_defined": "0", + "print_settings_id": "0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle", + "support_base_pattern_spacing": "2", + "support_bottom_interface_spacing": "0.3", + "support_bottom_z_distance": "0.15", + "support_interface_spacing": "0.3", + "support_line_width": "0.4", + "support_top_z_distance": "0.15", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json new file mode 100644 index 0000000000..471a857516 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.12mm Fine @Flashforge G3U 0.4 Nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.4 Nozzle" + ], + "bridge_flow": "0.96", + "bridge_speed": "20", + "infill_wall_overlap": "25%", + "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "internal_bridge_speed": "40", + "is_custom_defined": "0", + "layer_height": "0.12", + "name": "0.12mm Fine @Flashforge G3U 0.4 Nozzle", + "print_settings_id": "0.12mm Fine @Flashforge G3U 0.4 Nozzle", + "support_bottom_interface_spacing": "0.18", + "support_bottom_z_distance": "0.15", + "support_interface_spacing": "0.18", + "support_line_width": "0.4", + "support_speed": "80", + "version": "2.0.2.0", + "filename_format": "{input_filename_base}.gcode", + "post_process": "" +} diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json new file mode 100644 index 0000000000..c2a9c695e8 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "inherits": "0.12mm Standard @Flashforge AD5M 0.25 Nozzle", + "is_custom_defined": "0", + "layer_height": "0.14", + "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", + "print_settings_id": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", + "support_bottom_z_distance": "0.14", + "support_top_z_distance": "0.14", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json new file mode 100644 index 0000000000..dce626df67 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.25 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "is_custom_defined": "0", + "layer_height": "0.14", + "name": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "print_settings_id": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "support_bottom_z_distance": "0.14", + "support_top_z_distance": "0.14", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json index 800ff86c95..61a5bff705 100644 --- a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json @@ -1,107 +1,109 @@ { - "type": "process", - "name": "0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle", - "instantiation": "false", - "adaptive_layer_height": "0", - "bridge_flow": "1", - "bridge_speed": "25", - "internal_bridge_speed": "150%", - "brim_width": "5", - "bridge_no_support": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0.8", - "brim_object_gap": "0.1", - "default_acceleration": "200", - "detect_overhang_wall": "1", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.15", - "enable_support": "1", - "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", - "gap_infill_speed": "30", - "infill_direction": "45", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.27", - "initial_layer_speed": "10", - "initial_layer_travel_speed": "70", - "infill_combination": "1", - "infill_wall_overlap": "15%", - "interface_shells": "0", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "60", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_speed": "200", - "internal_bridge_support_thickness": "0.8", - "initial_layer_acceleration": "200", - "ironing_flow": "10%", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "initial_layer_infill_speed": "10", - "line_width": "0.42", - "layer_height": "0.16", - "minimum_sparse_infill_area": "15", - "max_travel_detour_distance": "0", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "25", - "outer_wall_acceleration": "200", - "inner_wall_acceleration": "200", - "bridge_acceleration": "50%", - "sparse_infill_acceleration": "100%", - "internal_solid_infill_acceleration": "100%", - "travel_acceleration": "200", - "skirt_speed": "10", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "100", - "overhang_3_4_speed": "80", - "overhang_4_4_speed": "50", - "only_one_wall_top": "1", - "print_sequence": "by layer", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "sparse_infill_line_width": "0.45", - "sparse_infill_speed": "200", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "standby_temperature_delta": "-5", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.23", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_pattern": "auto", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_speed": "80", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "skirt_loops": "2", - "support_type": "normal(auto)", - "support_style": "default", - "support_bottom_z_distance": "0.2", - "support_interface_bottom_layers": "2", - "top_surface_line_width": "0.42", - "top_surface_speed": "100", - "travel_speed": "80", - "tree_support_branch_diameter": "2", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "top_surface_pattern": "monotonicline", - "top_surface_acceleration": "200", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "wall_loops": "2", - "wall_infill_order": "inner wall/outer wall/infill", - "wall_generator": "arachne", - "compatible_printers": [ - "Flashforge Guider 2s 0.4 nozzle" - ] + "type": "process", + "name": "0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle", + "setting_id": "GS002", + "instantiation": "true", + "inherits": "fdm_process_flashforge_0.20", + "adaptive_layer_height": "0", + "bridge_flow": "1", + "bridge_speed": "25", + "internal_bridge_speed": "150%", + "brim_width": "5", + "bridge_no_support": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.8", + "brim_object_gap": "0.1", + "default_acceleration": "200", + "detect_overhang_wall": "1", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "enable_support": "1", + "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", + "gap_infill_speed": "30", + "infill_direction": "45", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.27", + "initial_layer_speed": "10", + "initial_layer_travel_speed": "70", + "infill_combination": "1", + "infill_wall_overlap": "15%", + "interface_shells": "0", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "60", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "200", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "200", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "initial_layer_infill_speed": "10", + "line_width": "0.42", + "layer_height": "0.16", + "minimum_sparse_infill_area": "15", + "max_travel_detour_distance": "0", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "25", + "outer_wall_acceleration": "200", + "inner_wall_acceleration": "200", + "bridge_acceleration": "50%", + "sparse_infill_acceleration": "100%", + "internal_solid_infill_acceleration": "100%", + "travel_acceleration": "200", + "skirt_speed": "10", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "100", + "overhang_3_4_speed": "80", + "overhang_4_4_speed": "50", + "only_one_wall_top": "1", + "print_sequence": "by layer", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "sparse_infill_line_width": "0.45", + "sparse_infill_speed": "200", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "standby_temperature_delta": "-5", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.23", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_pattern": "auto", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_speed": "80", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "skirt_loops": "2", + "support_type": "normal(auto)", + "support_style": "default", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "2", + "top_surface_line_width": "0.42", + "top_surface_speed": "100", + "travel_speed": "80", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_surface_acceleration": "200", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "wall_loops": "2", + "wall_infill_order": "inner wall/outer wall/infill", + "wall_generator": "arachne", + "compatible_printers": [ + "Flashforge Guider 2s 0.4 nozzle" + ] } diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json new file mode 100644 index 0000000000..ec8626f715 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M 0.6 Nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "process", + "name": "0.18mm Fine @Flashforge AD5M 0.6 Nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.6 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "layer_height": "0.18", + "infill_wall_overlap": "40%", + "initial_layer_line_width": "0.65", + "is_custom_defined": "0", + "print_settings_id": "0.18mm Fine @Flashforge AD5M 0.6 Nozzle", + "seam_gap": "5%", + "support_bottom_z_distance": "0.2", + "support_speed": "100", + "support_top_z_distance": "0.2", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json new file mode 100644 index 0000000000..10ef9c64e8 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "name": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.6 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "layer_height": "0.18", + "infill_wall_overlap": "40%", + "initial_layer_line_width": "0.65", + "is_custom_defined": "0", + "print_settings_id": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", + "seam_gap": "6%", + "support_bottom_interface_spacing": "0.35", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.35", + "support_interface_speed": "40", + "support_object_xy_distance": "0.4", + "support_speed": "100", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..9f263a4da9 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.18mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -0,0 +1,18 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "is_custom_defined": "0", + "layer_height": "0.18", + "name": "0.18mm Standard @Flashforge G3U 0.6 Nozzle", + "print_settings_id": "0.18mm Standard @Flashforge G3U 0.6 Nozzle", + "version": "2.0.2.0", + "support_speed": "80" +} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json index 65fc3f6f42..d9dc079e09 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json @@ -1,108 +1,110 @@ { - "type": "process", - "name": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", - "instantiation": "false", - "adaptive_layer_height": "0", - "bridge_flow": "1", - "bridge_speed": "50%", - "internal_bridge_speed": "70%", - "brim_width": "5", - "bridge_no_support": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0.8", - "brim_object_gap": "0.1", - "default_acceleration": "200", - "detect_overhang_wall": "1", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.15", - "enable_support": "1", - "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", - "gap_infill_speed": "100", - "infill_direction": "45", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.27", - "initial_layer_speed": "10", - "initial_layer_travel_speed": "70", - "infill_combination": "1", - "infill_wall_overlap": "15%", - "interface_shells": "0", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "200", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_speed": "200", - "internal_bridge_support_thickness": "0.8", - "initial_layer_acceleration": "200", - "ironing_flow": "10%", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "initial_layer_infill_speed": "10", - "line_width": "0.42", - "layer_height": "0.2", - "minimum_sparse_infill_area": "15", - "max_travel_detour_distance": "0", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "40", - "outer_wall_acceleration": "200", - "inner_wall_acceleration": "200", - "bridge_acceleration": "50%", - "sparse_infill_acceleration": "100%", - "internal_solid_infill_acceleration": "100%", - "travel_acceleration": "200", - "skirt_speed": "10", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "100", - "overhang_3_4_speed": "80", - "overhang_4_4_speed": "50", - "slow_down_layers": "2", - "only_one_wall_top": "1", - "print_sequence": "by layer", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "sparse_infill_line_width": "0.45", - "sparse_infill_speed": "100%", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "standby_temperature_delta": "-5", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.23", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_pattern": "auto", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_speed": "100%", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "skirt_loops": "2", - "support_type": "normal(auto)", - "support_style": "default", - "support_bottom_z_distance": "0.2", - "support_interface_bottom_layers": "2", - "top_surface_line_width": "0.42", - "top_surface_speed": "100", - "travel_speed": "80", - "tree_support_branch_diameter": "2", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "top_surface_pattern": "monotonicline", - "top_surface_acceleration": "200", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "wall_loops": "2", - "wall_infill_order": "inner wall/outer wall/infill", - "wall_generator": "arachne", - "compatible_printers": [ - "Flashforge Guider 2s 0.4 nozzle" - ] + "type": "process", + "name": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", + "setting_id": "GS003", + "instantiation": "true", + "inherits": "fdm_process_flashforge_0.20", + "adaptive_layer_height": "0", + "bridge_flow": "1", + "bridge_speed": "50%", + "internal_bridge_speed": "70%", + "brim_width": "5", + "bridge_no_support": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.8", + "brim_object_gap": "0.1", + "default_acceleration": "200", + "detect_overhang_wall": "1", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "enable_support": "1", + "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", + "gap_infill_speed": "100", + "infill_direction": "45", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.27", + "initial_layer_speed": "10", + "initial_layer_travel_speed": "70", + "infill_combination": "1", + "infill_wall_overlap": "15%", + "interface_shells": "0", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "200", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "200", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "200", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "initial_layer_infill_speed": "10", + "line_width": "0.42", + "layer_height": "0.2", + "minimum_sparse_infill_area": "15", + "max_travel_detour_distance": "0", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "40", + "outer_wall_acceleration": "200", + "inner_wall_acceleration": "200", + "bridge_acceleration": "50%", + "sparse_infill_acceleration": "100%", + "internal_solid_infill_acceleration": "100%", + "travel_acceleration": "200", + "skirt_speed": "10", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "100", + "overhang_3_4_speed": "80", + "overhang_4_4_speed": "50", + "slow_down_layers": "2", + "only_one_wall_top": "1", + "print_sequence": "by layer", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "sparse_infill_line_width": "0.45", + "sparse_infill_speed": "100%", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "standby_temperature_delta": "-5", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.23", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_pattern": "auto", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_speed": "100%", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "skirt_loops": "2", + "support_type": "normal(auto)", + "support_style": "default", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "2", + "top_surface_line_width": "0.42", + "top_surface_speed": "100", + "travel_speed": "80", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_surface_acceleration": "200", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "wall_loops": "2", + "wall_infill_order": "inner wall/outer wall/infill", + "wall_generator": "arachne", + "compatible_printers": [ + "Flashforge Guider 2s 0.4 nozzle" + ] } diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json new file mode 100644 index 0000000000..6622afae72 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M 0.4 Nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "name": "0.24mm Draft @Flashforge AD5M 0.4 Nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "layer_height": "0.24", + "infill_wall_overlap": "25%", + "initial_layer_print_height": "0.3", + "is_custom_defined": "0", + "print_settings_id": "0.24mm Draft @Flashforge AD5M 0.4 Nozzle", + "support_bottom_interface_spacing": "0.3", + "support_bottom_z_distance": "0.15", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.3", + "support_interface_speed": "40", + "support_speed": "100", + "support_top_z_distance": "0.15", + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.4 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json new file mode 100644 index 0000000000..ff585d7b37 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "process", + "name": "0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "from": "system", + "instantiation": "true", + "layer_height": "0.24", + "infill_wall_overlap": "30%", + "initial_layer_print_height": "0.3", + "inner_wall_line_width": "0.42", + "is_custom_defined": "0", + "outer_wall_acceleration": "3000", + "outer_wall_line_width": "0.4", + "print_settings_id": "0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle", + "sparse_infill_line_width": "0.42", + "support_bottom_interface_spacing": "0.3", + "support_interface_spacing": "0.3", + "support_line_width": "0.4", + "top_surface_line_width": "0.4", + "version": "2.0.2.0", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.4 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json new file mode 100644 index 0000000000..9097bf247e --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Draft @Flashforge G3U 0.4 Nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "bridge_flow": "0.96", + "bridge_speed": "15", + "infill_wall_overlap": "25%", + "inherits": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.4 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "internal_bridge_speed": "30", + "is_custom_defined": "0", + "layer_height": "0.24", + "name": "0.24mm Draft @Flashforge G3U 0.4 Nozzle", + "print_settings_id": "0.24mm Draft @Flashforge G3U 0.4 Nozzle", + "support_bottom_interface_spacing": "0.2", + "support_bottom_z_distance": "0.15", + "support_interface_spacing": "0.2", + "support_line_width": "0.4", + "support_object_xy_distance": "0.4", + "support_speed": "80", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json new file mode 100644 index 0000000000..9abb2828b5 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json @@ -0,0 +1,48 @@ +{ + "type": "process", + "name": "0.24mm Fine @Flashforge AD5M 0.8 Nozzle", + "inherits": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "from": "system", + "instantiation": "true", + "layer_height": "0.24", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.8 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "bottom_shell_layers": "2", + "bridge_flow": "0.96", + "gap_infill_speed": "100", + "infill_wall_overlap": "40%", + "initial_layer_acceleration": "400", + "initial_layer_infill_speed": "55", + "initial_layer_line_width": "0.85", + "initial_layer_print_height": "0.45", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.85", + "inner_wall_speed": "100", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "is_custom_defined": "0", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "100", + "print_settings_id": "0.24mm Fine @Flashforge AD5M 0.8 Nozzle", + "seam_gap": "5%", + "sparse_infill_acceleration": "50%", + "sparse_infill_line_width": "0.85", + "support_bottom_interface_spacing": "0.45", + "support_bottom_z_distance": "0.25", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.45", + "support_interface_speed": "30", + "support_line_width": "0.8", + "support_object_xy_distance": "0.5", + "support_speed": "80", + "support_top_z_distance": "0.25", + "top_shell_layers": "3", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.82", + "top_surface_speed": "100", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json new file mode 100644 index 0000000000..3808a1adda --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json @@ -0,0 +1,48 @@ +{ + "type": "process", + "name": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", + "inherits": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "from": "system", + "instantiation": "true", + "layer_height": "0.24", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.8 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "bottom_shell_layers": "2", + "bridge_flow": "0.96", + "gap_infill_speed": "100", + "infill_wall_overlap": "40%", + "initial_layer_acceleration": "400", + "initial_layer_infill_speed": "55", + "initial_layer_line_width": "0.85", + "initial_layer_print_height": "0.45", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.85", + "inner_wall_speed": "100", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "is_custom_defined": "0", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "100", + "print_settings_id": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", + "seam_gap": "5%", + "sparse_infill_acceleration": "50%", + "sparse_infill_line_width": "0.85", + "support_bottom_interface_spacing": "0.45", + "support_bottom_z_distance": "0.25", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.45", + "support_interface_speed": "30", + "support_line_width": "0.8", + "support_object_xy_distance": "0.5", + "support_speed": "80", + "support_top_z_distance": "0.25", + "top_shell_layers": "3", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.82", + "top_surface_speed": "100", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json index c246645d56..d50de09e28 100644 --- a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json @@ -1,108 +1,110 @@ { - "type": "process", - "name": "0.30mm Draft @Flashforge Guider 2s 0.4 nozzle", - "instantiation": "false", - "adaptive_layer_height": "0", - "bridge_flow": "1", - "bridge_speed": "50%", - "internal_bridge_speed": "70%", - "brim_width": "5", - "bridge_no_support": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0.8", - "brim_object_gap": "0.1", - "default_acceleration": "200", - "detect_overhang_wall": "1", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.15", - "enable_support": "1", - "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", - "gap_infill_speed": "100", - "infill_direction": "45", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.30", - "initial_layer_speed": "10", - "initial_layer_travel_speed": "70", - "infill_combination": "1", - "infill_wall_overlap": "15%", - "interface_shells": "0", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "200", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_speed": "200", - "internal_bridge_support_thickness": "0.8", - "initial_layer_acceleration": "200", - "ironing_flow": "10%", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "initial_layer_infill_speed": "10", - "line_width": "0.42", - "layer_height": "0.30", - "minimum_sparse_infill_area": "15", - "max_travel_detour_distance": "0", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "40", - "outer_wall_acceleration": "200", - "inner_wall_acceleration": "200", - "bridge_acceleration": "50%", - "sparse_infill_acceleration": "100%", - "internal_solid_infill_acceleration": "100%", - "travel_acceleration": "200", - "skirt_speed": "10", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "100", - "overhang_3_4_speed": "80", - "overhang_4_4_speed": "50", - "slow_down_layers": "2", - "only_one_wall_top": "1", - "print_sequence": "by layer", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "crosshatch", - "sparse_infill_line_width": "0.45", - "sparse_infill_speed": "100%", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "standby_temperature_delta": "-5", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.23", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_pattern": "auto", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_speed": "100%", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "skirt_loops": "2", - "support_type": "normal(auto)", - "support_style": "default", - "support_bottom_z_distance": "0.2", - "support_interface_bottom_layers": "2", - "top_surface_line_width": "0.42", - "top_surface_speed": "100", - "travel_speed": "100", - "tree_support_branch_diameter": "2", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "top_surface_pattern": "monotonicline", - "top_surface_acceleration": "200", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "wall_loops": "2", - "wall_infill_order": "inner wall/outer wall/infill", - "wall_generator": "arachne", - "compatible_printers": [ - "Flashforge Guider 2s 0.4 nozzle" - ] + "type": "process", + "name": "0.30mm Draft @Flashforge Guider 2s 0.4 nozzle", + "setting_id": "GS004", + "instantiation": "true", + "inherits": "fdm_process_flashforge_0.30", + "adaptive_layer_height": "0", + "bridge_flow": "1", + "bridge_speed": "50%", + "internal_bridge_speed": "70%", + "brim_width": "5", + "bridge_no_support": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.8", + "brim_object_gap": "0.1", + "default_acceleration": "200", + "detect_overhang_wall": "1", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.15", + "enable_support": "1", + "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", + "gap_infill_speed": "100", + "infill_direction": "45", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.30", + "initial_layer_speed": "10", + "initial_layer_travel_speed": "70", + "infill_combination": "1", + "infill_wall_overlap": "15%", + "interface_shells": "0", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "200", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "200", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "200", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "initial_layer_infill_speed": "10", + "line_width": "0.42", + "layer_height": "0.30", + "minimum_sparse_infill_area": "15", + "max_travel_detour_distance": "0", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "40", + "outer_wall_acceleration": "200", + "inner_wall_acceleration": "200", + "bridge_acceleration": "50%", + "sparse_infill_acceleration": "100%", + "internal_solid_infill_acceleration": "100%", + "travel_acceleration": "200", + "skirt_speed": "10", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "100", + "overhang_3_4_speed": "80", + "overhang_4_4_speed": "50", + "slow_down_layers": "2", + "only_one_wall_top": "1", + "print_sequence": "by layer", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "crosshatch", + "sparse_infill_line_width": "0.45", + "sparse_infill_speed": "100%", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "standby_temperature_delta": "-5", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.23", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_pattern": "auto", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_speed": "100%", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "skirt_loops": "2", + "support_type": "normal(auto)", + "support_style": "default", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "2", + "top_surface_line_width": "0.42", + "top_surface_speed": "100", + "travel_speed": "100", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_surface_acceleration": "200", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "wall_loops": "2", + "wall_infill_order": "inner wall/outer wall/infill", + "wall_generator": "arachne", + "compatible_printers": [ + "Flashforge Guider 2s 0.4 nozzle" + ] } diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..d969d92eed --- /dev/null +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "name": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "inherits": "fdm_process_flashforge_0.30", + "from": "system", + "setting_id": "GP003", + "instantiation": "true", + "layer_height": "0.3", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "bottom_solid_infill_flow_ratio": "1.02", + "bridge_flow": "0.96", + "elefant_foot_compensation": "0.1", + "enable_arc_fitting": "0", + "flush_into_support": "0", + "gap_infill_speed": "120", + "infill_wall_overlap": "40%", + "initial_layer_infill_speed": "30", + "initial_layer_line_width": "0.6", + "initial_layer_print_height": "0.35", + "initial_layer_speed": "30", + "inner_wall_line_width": "0.6", + "inner_wall_speed": "160", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.6", + "internal_solid_infill_speed": "200", + "is_custom_defined": "0", + "line_width": "0.6", + "outer_wall_acceleration": "3000", + "outer_wall_line_width": "0.58", + "outer_wall_speed": "120", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "5", + "print_settings_id": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "seam_gap": "6%", + "sparse_infill_acceleration": "70%", + "sparse_infill_line_width": "0.6", + "sparse_infill_speed": "200", + "support_bottom_interface_spacing": "0.3", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "0", + "support_interface_filament": "1", + "support_interface_spacing": "0.3", + "support_interface_speed": "40", + "support_interface_top_layers": "4", + "support_line_width": "0.58", + "support_object_xy_distance": "0.5", + "support_speed": "80", + "support_top_z_distance": "0.32", + "top_shell_layers": "4", + "top_shell_thickness": "0", + "top_surface_line_width": "0.6", + "top_surface_speed": "120", + "version": "1.9.0.2", + "wipe_tower_bridging": "5" +} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json new file mode 100644 index 0000000000..5f444a2ed9 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.40mm Standard @Flashforge G3U 0.8 Nozzle.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "name": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", + "inherits": "fdm_process_flashforge_0.40", + "from": "system", + "setting_id": "GP003", + "instantiation": "true", + "layer_height": "0.4", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.8 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "bridge_flow": "0.96", + "enable_arc_fitting": "0", + "flush_into_support": "0", + "gap_infill_speed": "100", + "infill_wall_overlap": "55%", + "initial_layer_infill_speed": "30", + "initial_layer_line_width": "0.85", + "initial_layer_print_height": "0.5", + "initial_layer_speed": "20", + "inner_wall_acceleration": "2000", + "inner_wall_line_width": "0.8", + "inner_wall_speed": "80", + "internal_solid_infill_acceleration": "4000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_speed": "160", + "is_custom_defined": "0", + "line_width": "0.8", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.78", + "outer_wall_speed": "80", + "overhang_2_4_speed": "30", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "5", + "print_settings_id": "0.40mm Standard @Flashforge G3U 0.8 Nozzle", + "seam_gap": "5%", + "sparse_infill_acceleration": "50%", + "sparse_infill_line_width": "0.82", + "sparse_infill_speed": "160", + "support_base_pattern_spacing": "3", + "support_bottom_interface_spacing": "0.35", + "support_bottom_z_distance": "0.28", + "support_interface_bottom_layers": "0", + "support_interface_filament": "1", + "support_interface_spacing": "0.35", + "support_interface_speed": "30", + "support_interface_top_layers": "3", + "support_line_width": "0.75", + "support_object_xy_distance": "0.6", + "support_speed": "80", + "support_top_z_distance": "0.4", + "top_shell_layers": "4", + "top_shell_thickness": "0", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.78", + "top_surface_speed": "100", + "version": "1.9.0.2", + "wipe_tower_bridging": "5" +} diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json new file mode 100644 index 0000000000..3f27e98251 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M 0.6 Nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "name": "0.42mm Draft @Flashforge AD5M 0.6 Nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "layer_height": "0.42", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.6 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "infill_wall_overlap": "40%", + "initial_layer_line_width": "0.7", + "initial_layer_print_height": "0.45", + "is_custom_defined": "0", + "outer_wall_acceleration": "3000", + "print_settings_id": "0.42mm Draft @Flashforge AD5M 0.6 Nozzle", + "seam_gap": "6%", + "support_bottom_interface_spacing": "0.4", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.4", + "support_line_width": "0.6", + "support_object_xy_distance": "0.4", + "support_speed": "100", + "support_top_z_distance": "0.22", + "top_surface_line_width": "0.6", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json new file mode 100644 index 0000000000..4ee2fab87d --- /dev/null +++ b/resources/profiles/Flashforge/process/0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "name": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "from": "system", + "instantiation": "true", + "layer_height": "0.42", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.6 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "bridge_flow": "0.96", + "infill_wall_overlap": "40%", + "initial_layer_line_width": "0.7", + "initial_layer_print_height": "0.45", + "is_custom_defined": "0", + "outer_wall_line_width": "0.6", + "print_settings_id": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", + "seam_gap": "6%", + "support_bottom_interface_spacing": "0.35", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.35", + "support_interface_speed": "40", + "support_line_width": "0.6", + "support_object_xy_distance": "0.4", + "support_speed": "100", + "support_top_z_distance": "0.22", + "top_surface_line_width": "0.6", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json new file mode 100644 index 0000000000..2ee142fabd --- /dev/null +++ b/resources/profiles/Flashforge/process/0.42mm Standard @Flashforge G3U 0.6 Nozzle.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "from": "system", + "setting_id": "GP001", + "instantiation": "true", + "inherits": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", + "compatible_printers": [ + "Flashforge Guider 3 Ultra 0.6 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "initial_layer_print_height": "0.3", + "is_custom_defined": "0", + "layer_height": "0.42", + "name": "0.42mm Standard @Flashforge G3U 0.6 Nozzle", + "print_settings_id": "0.42mm Standard @Flashforge G3U 0.6 Nozzle", + "support_speed": "80", + "support_top_z_distance": "0.3", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json new file mode 100644 index 0000000000..c25b1e78e0 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M 0.8 Nozzle.json @@ -0,0 +1,49 @@ +{ + "type": "process", + "name": "0.56mm Draft @Flashforge AD5M 0.8 Nozzle", + "inherits": "0.40mm Standard @Flashforge AD5M 0.8 Nozzle", + "from": "system", + "instantiation": "true", + "layer_height": "0.56", + "compatible_printers": [ + "Flashforge Adventurer 5M 0.8 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "bottom_shell_layers": "2", + "bridge_flow": "0.96", + "gap_infill_speed": "100", + "infill_wall_overlap": "40%", + "initial_layer_acceleration": "400", + "initial_layer_infill_speed": "50", + "initial_layer_line_width": "0.85", + "initial_layer_print_height": "0.45", + "initial_layer_speed": "30", + "initial_layer_travel_speed": "70%", + "inner_wall_line_width": "0.82", + "inner_wall_speed": "100", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "is_custom_defined": "0", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "100", + "print_settings_id": "0.56mm Draft @Flashforge AD5M 0.8 Nozzle", + "seam_gap": "5%", + "sparse_infill_acceleration": "50%", + "sparse_infill_line_width": "0.85", + "support_bottom_interface_spacing": "0.4", + "support_bottom_z_distance": "0.26", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.4", + "support_interface_speed": "30", + "support_line_width": "0.8", + "support_object_xy_distance": "0.45", + "support_speed": "80", + "support_top_z_distance": "0.26", + "top_shell_layers": "3", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.82", + "top_surface_speed": "100", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json new file mode 100644 index 0000000000..9f61cb79c6 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json @@ -0,0 +1,48 @@ +{ + "type": "process", + "name": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", + "inherits": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "from": "system", + "instantiation": "true", + "layer_height": "0.56", + "compatible_printers": [ + "Flashforge Adventurer 5M Pro 0.8 Nozzle" + ], + "filename_format": "{input_filename_base}.gcode", + "post_process": "", + "bottom_shell_layers": "2", + "bridge_flow": "0.96", + "gap_infill_speed": "100", + "infill_wall_overlap": "40%", + "initial_layer_acceleration": "400", + "initial_layer_infill_speed": "55", + "initial_layer_line_width": "0.85", + "initial_layer_print_height": "0.45", + "initial_layer_speed": "35", + "inner_wall_line_width": "0.82", + "inner_wall_speed": "100", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "is_custom_defined": "0", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "100", + "print_settings_id": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", + "seam_gap": "5%", + "sparse_infill_acceleration": "50%", + "sparse_infill_line_width": "0.85", + "support_bottom_interface_spacing": "0.4", + "support_bottom_z_distance": "0.26", + "support_interface_bottom_layers": "0", + "support_interface_spacing": "0.4", + "support_interface_speed": "30", + "support_line_width": "0.8", + "support_object_xy_distance": "0.45", + "support_speed": "80", + "support_top_z_distance": "0.26", + "top_shell_layers": "3", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.82", + "top_surface_speed": "100", + "version": "2.0.2.0" +} diff --git a/resources/profiles/Flashforge/process/fdm_process_common.json b/resources/profiles/Flashforge/process/fdm_process_common.json index a9a08f371a..3712c915a4 100644 --- a/resources/profiles/Flashforge/process/fdm_process_common.json +++ b/resources/profiles/Flashforge/process/fdm_process_common.json @@ -17,7 +17,7 @@ "line_width": "0.45", "infill_direction": "45", "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "grid", "initial_layer_line_width": "0.42", "initial_layer_print_height": "0.2", "initial_layer_speed": "20", diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json new file mode 100644 index 0000000000..09cb998b1e --- /dev/null +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "name": "fdm_process_flashforge_0.40", + "inherits": "fdm_process_flashforge_common", + "from": "system", + "instantiation": "false", + "layer_height": "0.4", + "initial_layer_print_height": "0.3", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "initial_layer_speed": "45", + "inner_wall_speed": "150", + "top_surface_speed": "120", + "gap_infill_speed": "150", + "small_perimeter_speed": "50%", + "overhang_speed_classic": "0", + "internal_bridge_speed": "50", + "internal_solid_infill_acceleration": "7000", + "accel_to_decel_enable": "0", + "filter_out_gap_fill": "0.5", + "gcode_label_objects": "0", + "slow_down_layers": "1", + "wipe_speed": "200" +} \ No newline at end of file From 30a745dd19a9ef9a2f22bc5aee3f7a421142fadd Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 14 Jul 2024 17:35:12 +0800 Subject: [PATCH 033/151] Fix a regression for SEMM when ramming and cooling is disabled --- src/libslic3r/GCode/WipeTower2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index a22bec5dd8..6bebe14b76 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -984,7 +984,7 @@ void WipeTower2::toolchange_Unload( } const int& number_of_cooling_moves = m_filpar[m_current_tool].cooling_moves; - const bool cooling_will_happen = m_semm && number_of_cooling_moves > 0; + const bool cooling_will_happen = m_semm && number_of_cooling_moves > 0 && m_cooling_tube_length != 0; bool change_temp_later = false; // Wipe tower should only change temperature with single extruder MM. Otherwise, all temperatures should From 36cede6f1edbd51708534aca6e056dd9eee0416a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 15 Jul 2024 21:46:57 +0800 Subject: [PATCH 034/151] update placeholderparser --- src/libslic3r/PlaceholderParser.cpp | 1560 +++++++++++++++++++-------- 1 file changed, 1101 insertions(+), 459 deletions(-) diff --git a/src/libslic3r/PlaceholderParser.cpp b/src/libslic3r/PlaceholderParser.cpp index 22ef3705d8..c6e4bc525d 100644 --- a/src/libslic3r/PlaceholderParser.cpp +++ b/src/libslic3r/PlaceholderParser.cpp @@ -1,6 +1,7 @@ #include "PlaceholderParser.hpp" #include "Exception.hpp" #include "Flow.hpp" +#include "Utils.hpp" #include #include #include @@ -40,19 +41,11 @@ #include #include #include -#if BOOST_VERSION >= 107800 #include #include #include #include #include -#else -#include -#include -#include -#include -#include -#endif #include #include #include @@ -73,11 +66,6 @@ namespace Slic3r { -//! macro used to mark string used at localization, -//! return same string -#define L(s) (s) -#define _(s) Slic3r::I18N::translate(s) - PlaceholderParser::PlaceholderParser(const DynamicConfig *external_config) : m_external_config(external_config) { this->set("version", std::string(SoftFever_VERSION)); @@ -180,30 +168,35 @@ namespace px = boost::phoenix; namespace client { - template + using Iterator = std::string::const_iterator; + using IteratorRange = boost::iterator_range; + struct OptWithPos { OptWithPos() {} - OptWithPos(ConfigOptionConstPtr opt, boost::iterator_range it_range) : opt(opt), it_range(it_range) {} + OptWithPos(ConfigOptionConstPtr opt, IteratorRange it_range, bool writable = false) : opt(opt), it_range(it_range), writable(writable) {} ConfigOptionConstPtr opt { nullptr }; bool writable { false }; // -1 means it is a scalar variable, or it is a vector variable and index was not assigned yet or the whole vector is considered. int index { -1 }; - boost::iterator_range it_range; + IteratorRange it_range; + bool empty() const { return opt == nullptr; } bool has_index() const { return index != -1; } }; - template - std::ostream& operator<<(std::ostream& os, OptWithPos const& opt) + std::ostream& operator<<(std::ostream& os, OptWithPos const& opt) { os << std::string(opt.it_range.begin(), opt.it_range.end()); return os; } - template struct expr { expr() {} + expr(const expr &rhs) : m_type(rhs.type()), it_range(rhs.it_range) + { if (rhs.type() == TYPE_STRING) m_data.s = new std::string(*rhs.m_data.s); else m_data.set(rhs.m_data); } + expr(expr &&rhs) : expr(std::move(rhs), rhs.it_range.begin(), rhs.it_range.end()) {} + explicit expr(bool b) : m_type(TYPE_BOOL) { m_data.b = b; } explicit expr(bool b, const Iterator &it_begin, const Iterator &it_end) : m_type(TYPE_BOOL), it_range(it_begin, it_end) { m_data.b = b; } explicit expr(int i) : m_type(TYPE_INT) { m_data.i = i; } @@ -212,13 +205,11 @@ namespace client explicit expr(double d, const Iterator &it_begin, const Iterator &it_end) : m_type(TYPE_DOUBLE), it_range(it_begin, it_end) { m_data.d = d; } explicit expr(const char *s) : m_type(TYPE_STRING) { m_data.s = new std::string(s); } explicit expr(const std::string &s) : m_type(TYPE_STRING) { m_data.s = new std::string(s); } + explicit expr(std::string &&s) : m_type(TYPE_STRING) { m_data.s = new std::string(std::move(s)); } explicit expr(const std::string &s, const Iterator &it_begin, const Iterator &it_end) : m_type(TYPE_STRING), it_range(it_begin, it_end) { m_data.s = new std::string(s); } - expr(const expr &rhs) : m_type(rhs.type()), it_range(rhs.it_range) - { if (rhs.type() == TYPE_STRING) m_data.s = new std::string(*rhs.m_data.s); else m_data.set(rhs.m_data); } - explicit expr(expr &&rhs) : expr(rhs, rhs.it_range.begin(), rhs.it_range.end()) {} explicit expr(expr &&rhs, const Iterator &it_begin, const Iterator &it_end) : m_type(rhs.type()), it_range{ it_begin, it_end } - { + { m_data.set(rhs.m_data); rhs.m_type = TYPE_EMPTY; } @@ -304,6 +295,9 @@ namespace client { std::string out; switch (this->type()) { + case TYPE_EMPTY: + // Inside an if / else block to be skipped. + break; case TYPE_BOOL: out = this->b() ? "true" : "false"; break; case TYPE_INT: out = std::to_string(this->i()); break; case TYPE_DOUBLE: @@ -328,15 +322,18 @@ namespace client // Range of input iterators covering this expression. // Used for throwing parse exceptions. - boost::iterator_range it_range; + IteratorRange it_range; expr unary_minus(const Iterator start_pos) const { switch (this->type()) { + case TYPE_EMPTY: + // Inside an if / else block to be skipped. + return expr(); case TYPE_INT : - return expr(- this->i(), start_pos, this->it_range.end()); + return expr(- this->i(), start_pos, this->it_range.end()); case TYPE_DOUBLE: - return expr(- this->d(), start_pos, this->it_range.end()); + return expr(- this->d(), start_pos, this->it_range.end()); default: this->throw_exception("Cannot apply unary minus operator."); } @@ -348,10 +345,13 @@ namespace client expr unary_integer(const Iterator start_pos) const { switch (this->type()) { + case TYPE_EMPTY: + // Inside an if / else block to be skipped. + return expr(); case TYPE_INT: - return expr(this->i(), start_pos, this->it_range.end()); + return expr(this->i(), start_pos, this->it_range.end()); case TYPE_DOUBLE: - return expr(static_cast(this->d()), start_pos, this->it_range.end()); + return expr(static_cast(this->d()), start_pos, this->it_range.end()); default: this->throw_exception("Cannot convert to integer."); } @@ -363,10 +363,13 @@ namespace client expr round(const Iterator start_pos) const { switch (this->type()) { + case TYPE_EMPTY: + // Inside an if / else block to be skipped. + return expr(); case TYPE_INT: - return expr(this->i(), start_pos, this->it_range.end()); + return expr(this->i(), start_pos, this->it_range.end()); case TYPE_DOUBLE: - return expr(static_cast(std::round(this->d())), start_pos, this->it_range.end()); + return expr(static_cast(std::round(this->d())), start_pos, this->it_range.end()); default: this->throw_exception("Cannot round a non-numeric value."); } @@ -378,8 +381,11 @@ namespace client expr unary_not(const Iterator start_pos) const { switch (this->type()) { + case TYPE_EMPTY: + // Inside an if / else block to be skipped. + return expr(); case TYPE_BOOL: - return expr(! this->b(), start_pos, this->it_range.end()); + return expr(! this->b(), start_pos, this->it_range.end()); default: this->throw_exception("Cannot apply a not operator."); } @@ -390,7 +396,9 @@ namespace client expr &operator+=(const expr &rhs) { - if (this->type() == TYPE_STRING) { + if (this->type() == TYPE_EMPTY) { + // Inside an if / else block to be skipped. + } else if (this->type() == TYPE_STRING) { // Convert the right hand side to string and append. *m_data.s += rhs.to_string(); } else if (rhs.type() == TYPE_STRING) { @@ -405,78 +413,104 @@ namespace client else m_data.i += rhs.i(); } - this->it_range = boost::iterator_range(this->it_range.begin(), rhs.it_range.end()); + this->it_range = IteratorRange(this->it_range.begin(), rhs.it_range.end()); return *this; } expr &operator-=(const expr &rhs) { - const char *err_msg = "Cannot subtract non-numeric types."; - this->throw_if_not_numeric(err_msg); - rhs.throw_if_not_numeric(err_msg); - if (this->type() == TYPE_DOUBLE || rhs.type() == TYPE_DOUBLE) - this->set_d_lite(this->as_d() - rhs.as_d()); - else - m_data.i -= rhs.i(); - this->it_range = boost::iterator_range(this->it_range.begin(), rhs.it_range.end()); + if (this->type() == TYPE_EMPTY) { + // Inside an if / else block to be skipped. + this->reset(); + } else { + const char *err_msg = "Cannot subtract non-numeric types."; + this->throw_if_not_numeric(err_msg); + rhs.throw_if_not_numeric(err_msg); + if (this->type() == TYPE_DOUBLE || rhs.type() == TYPE_DOUBLE) + this->set_d_lite(this->as_d() - rhs.as_d()); + else + m_data.i -= rhs.i(); + this->it_range = IteratorRange(this->it_range.begin(), rhs.it_range.end()); + } return *this; } expr &operator*=(const expr &rhs) { - const char *err_msg = "Cannot multiply with non-numeric type."; - this->throw_if_not_numeric(err_msg); - rhs.throw_if_not_numeric(err_msg); - if (this->type() == TYPE_DOUBLE || rhs.type() == TYPE_DOUBLE) - this->set_d_lite(this->as_d() * rhs.as_d()); - else - m_data.i *= rhs.i(); - this->it_range = boost::iterator_range(this->it_range.begin(), rhs.it_range.end()); + if (this->type() == TYPE_EMPTY) { + // Inside an if / else block to be skipped. + this->reset(); + } else { + const char *err_msg = "Cannot multiply with non-numeric type."; + this->throw_if_not_numeric(err_msg); + rhs.throw_if_not_numeric(err_msg); + if (this->type() == TYPE_DOUBLE || rhs.type() == TYPE_DOUBLE) + this->set_d_lite(this->as_d() * rhs.as_d()); + else + m_data.i *= rhs.i(); + this->it_range = IteratorRange(this->it_range.begin(), rhs.it_range.end()); + } return *this; } expr &operator/=(const expr &rhs) { - this->throw_if_not_numeric("Cannot divide a non-numeric type."); - rhs.throw_if_not_numeric("Cannot divide with a non-numeric type."); - if (rhs.type() == TYPE_INT ? (rhs.i() == 0) : (rhs.d() == 0.)) - rhs.throw_exception("Division by zero"); - if (this->type() == TYPE_DOUBLE || rhs.type() == TYPE_DOUBLE) - this->set_d_lite(this->as_d() / rhs.as_d()); - else - m_data.i /= rhs.i(); - this->it_range = boost::iterator_range(this->it_range.begin(), rhs.it_range.end()); + if (this->type() == TYPE_EMPTY) { + // Inside an if / else block to be skipped. + this->reset(); + } else { + this->throw_if_not_numeric("Cannot divide a non-numeric type."); + rhs.throw_if_not_numeric("Cannot divide with a non-numeric type."); + if (rhs.type() == TYPE_INT ? (rhs.i() == 0) : (rhs.d() == 0.)) + rhs.throw_exception("Division by zero"); + if (this->type() == TYPE_DOUBLE || rhs.type() == TYPE_DOUBLE) + this->set_d_lite(this->as_d() / rhs.as_d()); + else + m_data.i /= rhs.i(); + this->it_range = IteratorRange(this->it_range.begin(), rhs.it_range.end()); + } return *this; } expr &operator%=(const expr &rhs) { - this->throw_if_not_numeric("Cannot divide a non-numeric type."); - rhs.throw_if_not_numeric("Cannot divide with a non-numeric type."); - if (rhs.type() == TYPE_INT ? (rhs.i() == 0) : (rhs.d() == 0.)) - rhs.throw_exception("Division by zero"); - if (this->type() == TYPE_DOUBLE || rhs.type() == TYPE_DOUBLE) - this->set_d_lite(std::fmod(this->as_d(), rhs.as_d())); - else - m_data.i %= rhs.i(); - this->it_range = boost::iterator_range(this->it_range.begin(), rhs.it_range.end()); + if (this->type() == TYPE_EMPTY) { + // Inside an if / else block to be skipped. + this->reset(); + } else { + this->throw_if_not_numeric("Cannot divide a non-numeric type."); + rhs.throw_if_not_numeric("Cannot divide with a non-numeric type."); + if (rhs.type() == TYPE_INT ? (rhs.i() == 0) : (rhs.d() == 0.)) + rhs.throw_exception("Division by zero"); + if (this->type() == TYPE_DOUBLE || rhs.type() == TYPE_DOUBLE) + this->set_d_lite(std::fmod(this->as_d(), rhs.as_d())); + else + m_data.i %= rhs.i(); + this->it_range = IteratorRange(this->it_range.begin(), rhs.it_range.end()); + } return *this; } static void to_string2(expr &self, std::string &out) { - out = self.to_string(); + if (self.type() != TYPE_EMPTY) + // Not inside an if / else block to be skipped + out = self.to_string(); } static void evaluate_boolean(expr &self, bool &out) { - if (self.type() != TYPE_BOOL) - self.throw_exception("Not a boolean expression"); - out = self.b(); + if (self.type() != TYPE_EMPTY) { + // Not inside an if / else block to be skipped + if (self.type() != TYPE_BOOL) + self.throw_exception("Not a boolean expression"); + out = self.b(); + } } static void evaluate_boolean_to_string(expr &self, std::string &out) { + assert(self.type() != TYPE_EMPTY); if (self.type() != TYPE_BOOL) self.throw_exception("Not a boolean expression"); out = self.b() ? "true" : "false"; @@ -485,6 +519,9 @@ namespace client // Is lhs==rhs? Store the result into lhs. static void compare_op(expr &lhs, expr &rhs, char op, bool invert) { + if (lhs.type() == TYPE_EMPTY) + // Inside an if / else block to be skipped + return; bool value = false; if (lhs.numeric_type() && rhs.numeric_type()) { // Both types are numeric. @@ -541,6 +578,9 @@ namespace client // Store the result into param1. static void function_2params(expr ¶m1, expr ¶m2, Function2ParamsType fun) { + if (param1.type() == TYPE_EMPTY) + // Inside an if / else block to be skipped + return; throw_if_not_numeric(param1); throw_if_not_numeric(param2); if (param1.type() == TYPE_DOUBLE || param2.type() == TYPE_DOUBLE) { @@ -568,6 +608,9 @@ namespace client // Store the result into param1. static void random(expr ¶m1, expr ¶m2, std::mt19937 &rng) { + if (param1.type() == TYPE_EMPTY) + // Inside an if / else block to be skipped + return; throw_if_not_numeric(param1); throw_if_not_numeric(param2); if (param1.type() == TYPE_DOUBLE || param2.type() == TYPE_DOUBLE) @@ -581,6 +624,9 @@ namespace client template static void digits(expr ¶m1, expr ¶m2, expr ¶m3) { + if (param1.type() == TYPE_EMPTY) + // Inside an if / else block to be skipped + return; throw_if_not_numeric(param1); if (param2.type() != TYPE_INT) param2.throw_exception("digits: second parameter must be integer"); @@ -600,8 +646,11 @@ namespace client param1.set_s(buf); } - static void regex_op(const expr &lhs, boost::iterator_range &rhs, char op, expr &out) + static void regex_op(const expr &lhs, IteratorRange &rhs, char op, expr &out) { + if (lhs.type() == TYPE_EMPTY) + // Inside an if / else block to be skipped + return; const std::string *subject = nullptr; if (lhs.type() == TYPE_STRING) { // One type is string, the other could be converted to string. @@ -622,14 +671,19 @@ namespace client } } - static void regex_matches (expr &lhs, boost::iterator_range &rhs) { return regex_op(lhs, rhs, '=', lhs); } - static void regex_doesnt_match(expr &lhs, boost::iterator_range &rhs) { return regex_op(lhs, rhs, '!', lhs); } + static void regex_matches (expr &lhs, IteratorRange &rhs) { return regex_op(lhs, rhs, '=', lhs); } + static void regex_doesnt_match(expr &lhs, IteratorRange &rhs) { return regex_op(lhs, rhs, '!', lhs); } static void one_of_test_init(expr &out) { out.set_b(false); } template static void one_of_test(const expr &match, const expr &pattern, expr &out) { + if (match.type() == TYPE_EMPTY) { + // Inside an if / else block to be skipped + out.reset(); + return; + } if (! out.b()) { if (match.type() != TYPE_STRING) match.throw_exception("one_of(): First parameter (the string to match against) has to be a string value"); @@ -646,7 +700,12 @@ namespace client out.set_b(match.s() == pattern.s()); } } - static void one_of_test_regex(const expr &match, boost::iterator_range &pattern, expr &out) { + static void one_of_test_regex(const expr &match, IteratorRange &pattern, expr &out) { + if (match.type() == TYPE_EMPTY) { + // Inside an if / else block to be skipped + out.reset(); + return; + } if (! out.b()) { if (match.type() != TYPE_STRING) match.throw_exception("one_of(): First parameter (the string to match against) has to be a string value"); @@ -656,6 +715,9 @@ namespace client static void logical_op(expr &lhs, expr &rhs, char op) { + if (lhs.type() == TYPE_EMPTY) + // Inside an if / else block to be skipped + return; bool value = false; if (lhs.type() == TYPE_BOOL && rhs.type() == TYPE_BOOL) { value = (op == '|') ? (lhs.b() || rhs.b()) : (lhs.b() && rhs.b()); @@ -668,24 +730,6 @@ namespace client static void logical_or (expr &lhs, expr &rhs) { logical_op(lhs, rhs, '|'); } static void logical_and(expr &lhs, expr &rhs) { logical_op(lhs, rhs, '&'); } - static void ternary_op(expr &lhs, expr &rhs1, expr &rhs2) - { - if (lhs.type() != TYPE_BOOL) - lhs.throw_exception("Not a boolean expression"); - if (lhs.b()) - lhs = std::move(rhs1); - else - lhs = std::move(rhs2); - } - - static void set_if(bool &cond, bool ¬_yet_consumed, std::string &str_in, std::string &str_out) - { - if (cond && not_yet_consumed) { - str_out = str_in; - not_yet_consumed = false; - } - } - void throw_exception(const char *message) const { boost::throw_exception(qi::expectation_failure( @@ -715,10 +759,9 @@ namespace client } m_data; }; - template - std::ostream& operator<<(std::ostream &os, const expr &expression) + std::ostream& operator<<(std::ostream &os, const expr &expression) { - typedef expr Expr; + typedef expr Expr; os << std::string(expression.it_range.begin(), expression.it_range.end()) << " - "; switch (expression.type()) { case Expr::TYPE_EMPTY: os << "empty"; break; @@ -732,11 +775,19 @@ namespace client } struct MyContext : public ConfigOptionResolver { + // Config provided as a parameter to PlaceholderParser invocation, overriding PlaceholderParser stored config. const DynamicConfig *external_config = nullptr; + // Config stored inside PlaceholderParser. const DynamicConfig *config = nullptr; + // Config provided as a parameter to PlaceholderParser invocation, evaluated after the two configs above. const DynamicConfig *config_override = nullptr; + // Config provided as a parameter to PlaceholderParser invocation, containing variables that will be read out + // and processed by the PlaceholderParser callee. mutable DynamicConfig *config_outputs = nullptr; + // Local variables, read / write + mutable DynamicConfig config_local; size_t current_extruder_id = 0; + // Random number generator and optionally global variables. PlaceholderParser::ContextData *context_data = nullptr; // If false, the macro_processor will evaluate a full macro. // If true, the macro processor will evaluate just a boolean condition using the full expressive power of the macro processor. @@ -746,7 +797,34 @@ namespace client // Table to translate symbol tag to a human readable error message. static std::map tag_to_error_message; - static void evaluate_full_macro(const MyContext *ctx, bool &result) { result = ! ctx->just_boolean_expression; } + // Should the parser consider the parsed string to be a macro or a boolean expression? + static bool evaluate_full_macro(const MyContext *ctx) { return ! ctx->just_boolean_expression; } + + // Entering a conditional block. + static void block_enter(const MyContext *ctx, const bool condition) + { + if (ctx->skipping() || ! condition) + ++ ctx->m_depth_suppressed; + } + // Exiting a conditional block. + static void block_exit(const MyContext *ctx, const bool condition, bool ¬_yet_consumed, std::string &data_in, std::string &data_out) + { + if (ctx->skipping()) + -- ctx->m_depth_suppressed; + else if (condition && not_yet_consumed) { + data_out = std::move(data_in); + not_yet_consumed = false; + } + } + static void block_exit_ternary(const MyContext* ctx, const bool condition, expr &data_in, expr &data_out) + { + if (ctx->skipping()) + -- ctx->m_depth_suppressed; + else if (condition) + data_out = std::move(data_in); + } + // Inside a block, which is conditionally suppressed? + bool skipping() const { return m_depth_suppressed > 0; } const ConfigOption* optptr(const t_config_option_key &opt_key) const override { @@ -761,14 +839,30 @@ namespace client } const ConfigOption* resolve_symbol(const std::string &opt_key) const { return this->optptr(opt_key); } - ConfigOption* resolve_output_symbol(const std::string &opt_key) const { return this->config_outputs ? this->config_outputs->optptr(opt_key, false) : nullptr; } + ConfigOption* resolve_output_symbol(const std::string &opt_key) const { + ConfigOption *out = nullptr; + if (this->config_outputs) + out = this->config_outputs->optptr(opt_key, false); + if (out == nullptr && this->context_data != nullptr && this->context_data->global_config) + out = this->context_data->global_config->optptr(opt_key); + if (out == nullptr) + out = this->config_local.optptr(opt_key); + return out; + } + void store_new_variable(const std::string &opt_key, std::unique_ptr &&opt, bool global_variable) { + assert(opt); + if (global_variable) { + assert(this->context_data != nullptr && this->context_data->global_config); + this->context_data->global_config->set_key_value(opt_key, opt.release()); + } else + this->config_local.set_key_value(opt_key, opt.release()); + } - template - static void legacy_variable_expansion( - const MyContext *ctx, - boost::iterator_range &opt_key, - std::string &output) + static void legacy_variable_expansion(const MyContext *ctx, IteratorRange &opt_key, std::string &output) { + if (ctx->skipping()) + return; + std::string opt_key_str(opt_key.begin(), opt_key.end()); const ConfigOption *opt = ctx->resolve_symbol(opt_key_str); size_t idx = ctx->current_extruder_id; @@ -783,29 +877,37 @@ namespace client char *endptr = nullptr; idx = strtol(opt_key_str.c_str() + idx + 1, &endptr, 10); if (endptr == nullptr || *endptr != 0) - ctx->throw_exception("Invalid vector index", boost::iterator_range(opt_key.begin() + idx + 1, opt_key.end())); + ctx->throw_exception("Invalid vector index", IteratorRange(opt_key.begin() + idx + 1, opt_key.end())); } } } if (opt == nullptr) - ctx->throw_exception("Variable does not exist", boost::iterator_range(opt_key.begin(), opt_key.end())); - if (opt->is_scalar()) + ctx->throw_exception("Variable does not exist", opt_key); + if (opt->is_scalar()) { + if (opt->is_nil()) + ctx->throw_exception("Trying to reference an undefined (nil) optional variable", opt_key); output = opt->serialize(); - else { + } else { const ConfigOptionVectorBase *vec = static_cast(opt); if (vec->empty()) ctx->throw_exception("Indexing an empty vector variable", opt_key); - output = vec->vserialize()[(idx >= vec->size()) ? 0 : idx]; + if (idx >= vec->size()) + idx = 0; + if (vec->is_nil(idx)) + ctx->throw_exception("Trying to reference an undefined (nil) element of vector of optional values", opt_key); + output = vec->vserialize()[idx]; } } - template static void legacy_variable_expansion2( - const MyContext *ctx, - boost::iterator_range &opt_key, - boost::iterator_range &opt_vector_index, - std::string &output) + const MyContext *ctx, + IteratorRange &opt_key, + IteratorRange &opt_vector_index, + std::string &output) { + if (ctx->skipping()) + return; + std::string opt_key_str(opt_key.begin(), opt_key.end()); const ConfigOption *opt = ctx->resolve_symbol(opt_key_str); if (opt == nullptr) { @@ -821,7 +923,7 @@ namespace client ctx->throw_exception("Trying to index a scalar variable", opt_key); const ConfigOptionVectorBase *vec = static_cast(opt); if (vec->empty()) - ctx->throw_exception("Indexing an empty vector variable", boost::iterator_range(opt_key.begin(), opt_key.end())); + ctx->throw_exception("Indexing an empty vector variable", opt_key); const ConfigOption *opt_index = ctx->resolve_symbol(std::string(opt_vector_index.begin(), opt_vector_index.end())); if (opt_index == nullptr) ctx->throw_exception("Variable does not exist", opt_key); @@ -830,133 +932,275 @@ namespace client int idx = opt_index->getInt(); if (idx < 0) ctx->throw_exception("Negative vector index", opt_key); - output = vec->vserialize()[(idx >= (int)vec->size()) ? 0 : idx]; + if (idx >= (int)vec->size()) + idx = 0; + if (vec->is_nil(idx)) + ctx->throw_exception("Trying to reference an undefined (nil) element of vector of optional values", opt_key); + output = vec->vserialize()[idx]; } - template static void resolve_variable( - const MyContext *ctx, - boost::iterator_range &opt_key, - OptWithPos &output) + const MyContext *ctx, + IteratorRange &opt_key, + OptWithPos &output) { - const ConfigOption *opt = ctx->resolve_symbol(std::string(opt_key.begin(), opt_key.end())); - if (opt == nullptr) { - opt = ctx->resolve_output_symbol(std::string(opt_key.begin(), opt_key.end())); - if (opt == nullptr) - ctx->throw_exception("Not a variable name", opt_key); - output.writable = true; + if (! ctx->skipping()) { + const std::string key{ opt_key.begin(), opt_key.end() }; + const ConfigOption *opt = ctx->resolve_symbol(key); + if (opt == nullptr) { + opt = ctx->resolve_output_symbol(key); + if (opt == nullptr) + ctx->throw_exception("Not a variable name", opt_key); + output.writable = true; + } + output.opt = opt; } - output.opt = opt; output.it_range = opt_key; } - template static void store_variable_index( - const MyContext *ctx, - OptWithPos &opt, - int index, - Iterator it_end, - OptWithPos &output) + const MyContext *ctx, + OptWithPos &opt, + int index, + Iterator it_end, + OptWithPos &output) { - if (! opt.opt->is_vector()) - ctx->throw_exception("Cannot index a scalar variable", opt.it_range); - if (index < 0) - ctx->throw_exception("Referencing a vector variable with a negative index", opt.it_range); - output = opt; - output.index = index; + if (! ctx->skipping()) { + if (! opt.opt->is_vector()) + ctx->throw_exception("Cannot index a scalar variable", opt.it_range); + if (index < 0) + ctx->throw_exception("Referencing a vector variable with a negative index", opt.it_range); + output = opt; + output.index = index; + } else + output = opt; output.it_range.end() = it_end; } - template - static void variable_value( - const MyContext *ctx, - OptWithPos &opt, - expr &output) + // Evaluating a scalar variable into expr, + // all possible ConfigOption types are supported. + static void scalar_variable_to_expr(const MyContext *ctx, OptWithPos &opt, expr &output) { - if (opt.opt->is_vector()) { - if (! opt.has_index()) - ctx->throw_exception("Referencing a vector variable when scalar is expected", opt.it_range); - const ConfigOptionVectorBase *vec = static_cast(opt.opt); - if (vec->empty()) - ctx->throw_exception("Indexing an empty vector variable", opt.it_range); - size_t idx = (opt.index < 0) ? 0 : (opt.index >= int(vec->size())) ? 0 : size_t(opt.index); - switch (opt.opt->type()) { - case coFloats: output.set_d(static_cast(opt.opt)->values[idx]); break; - case coInts: output.set_i(static_cast(opt.opt)->values[idx]); break; - case coStrings: output.set_s(static_cast(opt.opt)->values[idx]); break; - case coPercents: output.set_d(static_cast(opt.opt)->values[idx]); break; - case coPoints: output.set_s(to_string(static_cast(opt.opt)->values[idx])); break; - case coBools: output.set_b(static_cast(opt.opt)->values[idx] != 0); break; - // Orca: support enum vector variable type - case coEnums: output.set_i(static_cast(opt.opt)->values[idx]); break; - default: - ctx->throw_exception("Unknown vector variable type", opt.it_range); - } - } else { - assert(opt.opt->is_scalar()); - switch (opt.opt->type()) { - case coFloat: output.set_d(opt.opt->getFloat()); break; - case coInt: output.set_i(opt.opt->getInt()); break; - case coString: output.set_s(static_cast(opt.opt)->value); break; - case coPercent: output.set_d(opt.opt->getFloat()); break; - case coEnum: - case coPoint: output.set_s(opt.opt->serialize()); break; - case coBool: output.set_b(opt.opt->getBool()); break; - case coFloatOrPercent: - { - std::string opt_key(opt.it_range.begin(), opt.it_range.end()); - if (boost::ends_with(opt_key, "extrusion_width")) { - // Extrusion width supports defaults and a complex graph of dependencies. - output.set_d(Flow::extrusion_width(opt_key, *ctx, static_cast(ctx->current_extruder_id))); - } else if (! static_cast(opt.opt)->percent) { - // Not a percent, just return the value. - output.set_d(opt.opt->getFloat()); - } else { - // Resolve dependencies using the "ratio_over" link to a parent value. - const ConfigOptionDef *opt_def = print_config_def.get(opt_key); - assert(opt_def != nullptr); - double v = opt.opt->getFloat() * 0.01; // percent to ratio - for (;;) { - const ConfigOption *opt_parent = opt_def->ratio_over.empty() ? nullptr : ctx->resolve_symbol(opt_def->ratio_over); - if (opt_parent == nullptr) - ctx->throw_exception("FloatOrPercent variable failed to resolve the \"ratio_over\" dependencies", opt.it_range); - if (boost::ends_with(opt_def->ratio_over, "extrusion_width")) { - // Extrusion width supports defaults and a complex graph of dependencies. - assert(opt_parent->type() == coFloatOrPercent); - v *= Flow::extrusion_width(opt_def->ratio_over, static_cast(opt_parent), *ctx, static_cast(ctx->current_extruder_id)); - break; - } - if (opt_parent->type() == coFloat || opt_parent->type() == coFloatOrPercent) { - v *= opt_parent->getFloat(); - if (opt_parent->type() == coFloat || ! static_cast(opt_parent)->percent) - break; - v *= 0.01; // percent to ratio - } - // Continue one level up in the "ratio_over" hierarchy. - opt_def = print_config_def.get(opt_def->ratio_over); - assert(opt_def != nullptr); - } - output.set_d(v); - } - break; - } - default: - ctx->throw_exception("Unknown scalar variable type", opt.it_range); - } - } + if (ctx->skipping()) + return; + assert(opt.opt->is_scalar()); + + if (opt.opt->is_nil()) + ctx->throw_exception("Trying to reference an undefined (nil) optional variable", opt.it_range); + + switch (opt.opt->type()) { + case coFloat: output.set_d(opt.opt->getFloat()); break; + case coInt: output.set_i(opt.opt->getInt()); break; + case coString: output.set_s(static_cast(opt.opt)->value); break; + case coPercent: output.set_d(opt.opt->getFloat()); break; + case coEnum: + case coPoint: output.set_s(opt.opt->serialize()); break; + case coBool: output.set_b(opt.opt->getBool()); break; + case coFloatOrPercent: + { + std::string opt_key(opt.it_range.begin(), opt.it_range.end()); + if (boost::ends_with(opt_key, "extrusion_width")) { + // Extrusion width supports defaults and a complex graph of dependencies. + output.set_d(Flow::extrusion_width(opt_key, *ctx, static_cast(ctx->current_extruder_id))); + } else if (! static_cast(opt.opt)->percent) { + // Not a percent, just return the value. + output.set_d(opt.opt->getFloat()); + } else { + // Resolve dependencies using the "ratio_over" link to a parent value. + const ConfigOptionDef *opt_def = print_config_def.get(opt_key); + assert(opt_def != nullptr); + double v = opt.opt->getFloat() * 0.01; // percent to ratio + for (;;) { + const ConfigOption *opt_parent = opt_def->ratio_over.empty() ? nullptr : ctx->resolve_symbol(opt_def->ratio_over); + if (opt_parent == nullptr) + ctx->throw_exception("FloatOrPercent variable failed to resolve the \"ratio_over\" dependencies", opt.it_range); + if (boost::ends_with(opt_def->ratio_over, "extrusion_width")) { + // Extrusion width supports defaults and a complex graph of dependencies. + assert(opt_parent->type() == coFloatOrPercent); + v *= Flow::extrusion_width(opt_def->ratio_over, static_cast(opt_parent), *ctx, static_cast(ctx->current_extruder_id)); + break; + } + if (opt_parent->type() == coFloat || opt_parent->type() == coFloatOrPercent) { + v *= opt_parent->getFloat(); + if (opt_parent->type() == coFloat || ! static_cast(opt_parent)->percent) + break; + v *= 0.01; // percent to ratio + } + // Continue one level up in the "ratio_over" hierarchy. + opt_def = print_config_def.get(opt_def->ratio_over); + assert(opt_def != nullptr); + } + output.set_d(v); + } + break; + } + default: + ctx->throw_exception("Unsupported scalar variable type", opt.it_range); + } + } + + // Evaluating one element of a vector variable. + // all possible ConfigOption types are supported. + static void vector_element_to_expr(const MyContext *ctx, OptWithPos &opt, expr &output) + { + if (ctx->skipping()) + return; + + assert(opt.opt->is_vector()); + if (! opt.has_index()) + ctx->throw_exception("Referencing a vector variable when scalar is expected", opt.it_range); + const ConfigOptionVectorBase* vec = static_cast(opt.opt); + if (vec->empty()) + ctx->throw_exception("Indexing an empty vector variable", opt.it_range); + size_t idx = (opt.index < 0) ? 0 : (opt.index >= int(vec->size())) ? 0 : size_t(opt.index); + if (vec->is_nil(idx)) + ctx->throw_exception("Trying to reference an undefined (nil) element of vector of optional values", opt.it_range); + switch (opt.opt->type()) { + case coFloats: output.set_d(static_cast(opt.opt)->values[idx]); break; + case coInts: output.set_i(static_cast(opt.opt)->values[idx]); break; + case coStrings: output.set_s(static_cast(opt.opt)->values[idx]); break; + case coPercents: output.set_d(static_cast(opt.opt)->values[idx]); break; + case coPoints: output.set_s(to_string(static_cast(opt.opt)->values[idx])); break; + case coBools: output.set_b(static_cast(opt.opt)->values[idx] != 0); break; + //case coEnums: output.set_s(opt.opt->vserialize()[idx]); break; + default: + ctx->throw_exception("Unsupported vector variable type", opt.it_range); + } + } + + static void check_writable(const MyContext *ctx, OptWithPos &opt) { + if (! opt.writable) + ctx->throw_exception("Cannot modify a read-only variable", opt.it_range); + } + + static void check_numeric(const expr ¶m) { + if (! param.numeric_type()) + param.throw_exception("Right side is not a numeric expression"); + }; + + static size_t evaluate_count(const expr &expr_count) { + if (expr_count.type() != expr::TYPE_INT) + expr_count.throw_exception("Expected number of elements to fill a vector with."); + int count = expr_count.i(); + if (count < 0) + expr_count.throw_exception("Negative number of elements specified."); + return size_t(count); + }; + + static void scalar_variable_assign_scalar(const MyContext *ctx, OptWithPos &lhs, const expr &rhs) + { + assert(! ctx->skipping()); + assert(lhs.opt->is_scalar()); + check_writable(ctx, lhs); + ConfigOption *wropt = const_cast(lhs.opt); + switch (wropt->type()) { + case coFloat: + check_numeric(rhs); + static_cast(wropt)->value = rhs.as_d(); + break; + case coInt: + check_numeric(rhs); + static_cast(wropt)->value = rhs.as_i(); + break; + case coString: + static_cast(wropt)->value = rhs.to_string(); + break; + case coPercent: + check_numeric(rhs); + static_cast(wropt)->value = rhs.as_d(); + break; + case coBool: + if (rhs.type() != expr::TYPE_BOOL) + ctx->throw_exception("Right side is not a boolean expression", rhs.it_range); + static_cast(wropt)->value = rhs.b(); + break; + default: + ctx->throw_exception("Unsupported output scalar variable type", lhs.it_range); + } + } + + static void vector_variable_element_assign_scalar(const MyContext *ctx, OptWithPos &lhs, const expr &rhs) + { + assert(! ctx->skipping()); + assert(lhs.opt->is_vector()); + check_writable(ctx, lhs); + if (! lhs.has_index()) + ctx->throw_exception("Referencing an output vector variable when scalar is expected", lhs.it_range); + ConfigOptionVectorBase *vec = const_cast(static_cast(lhs.opt)); + if (vec->empty()) + ctx->throw_exception("Indexing an empty vector variable", lhs.it_range); + if (lhs.index >= int(vec->size())) + ctx->throw_exception("Index out of range", lhs.it_range); + switch (lhs.opt->type()) { + case coFloats: + check_numeric(rhs); + static_cast(vec)->values[lhs.index] = rhs.as_d(); + break; + case coInts: + check_numeric(rhs); + static_cast(vec)->values[lhs.index] = rhs.as_i(); + break; + case coStrings: + static_cast(vec)->values[lhs.index] = rhs.to_string(); + break; + case coPercents: + check_numeric(rhs); + static_cast(vec)->values[lhs.index] = rhs.as_d(); + break; + case coBools: + if (rhs.type() != expr::TYPE_BOOL) + ctx->throw_exception("Right side is not a boolean expression", rhs.it_range); + static_cast(vec)->values[lhs.index] = rhs.b(); + break; + default: + ctx->throw_exception("Unsupported output vector variable type", lhs.it_range); + } + } + + static void vector_variable_assign_expr_with_count(const MyContext *ctx, OptWithPos &lhs, const expr &rhs_count, const expr &rhs_value) + { + assert(! ctx->skipping()); + size_t count = evaluate_count(rhs_count); + auto *opt = const_cast(lhs.opt); + switch (lhs.opt->type()) { + case coFloats: + check_numeric(rhs_value); + static_cast(opt)->values.assign(count, rhs_value.as_d()); + break; + case coInts: + check_numeric(rhs_value); + static_cast(opt)->values.assign(count, rhs_value.as_i()); + break; + case coStrings: + static_cast(opt)->values.assign(count, rhs_value.to_string()); + break; + case coBools: + if (rhs_value.type() != expr::TYPE_BOOL) + rhs_value.throw_exception("Right side is not a boolean expression"); + static_cast(opt)->values.assign(count, rhs_value.b()); + break; + default: assert(false); + } + } + + static void variable_value(const MyContext *ctx, OptWithPos &opt, expr &output) + { + if (! ctx->skipping()) { + if (opt.opt->is_vector()) + vector_element_to_expr(ctx, opt, output); + else + scalar_variable_to_expr(ctx, opt, output); + } output.it_range = opt.it_range; } // Return a boolean value, true if the scalar variable referenced by "opt" is nullable and it has a nil value. // Return a boolean value, true if an element of a vector variable referenced by "opt[index]" is nullable and it has a nil value. - template - static void is_nil_test( - const MyContext *ctx, - OptWithPos &opt, - expr &output) + static void is_nil_test(const MyContext *ctx, OptWithPos &opt, expr &output) { - if (opt.opt->is_vector()) { + if (ctx->skipping()) { + } else if (opt.opt->is_vector()) { if (! opt.has_index()) ctx->throw_exception("Referencing a vector variable when scalar is expected", opt.it_range); const ConfigOptionVectorBase *vec = static_cast(opt.opt); @@ -970,112 +1214,354 @@ namespace client output.it_range = opt.it_range; } - // Decoding a scalar variable symbol "opt", assigning it a value of "param". - template - static void variable_assign( - const MyContext *ctx, - OptWithPos &opt, - expr ¶m, - // Not used, just clear it. - std::string &out) + // Reference to an existing symbol, or a name of a new symbol. + struct NewOldVariable { + std::string name; + IteratorRange it_range; + ConfigOption *opt{ nullptr }; + }; + static void new_old_variable( + const MyContext *ctx, + bool global_variable, + const IteratorRange &it_range, + NewOldVariable &out) { - if (! opt.writable) - ctx->throw_exception("Cannot modify a read-only variable", opt.it_range); - auto check_numeric = [](const expr ¶m) { - if (! param.numeric_type()) - param.throw_exception("Right side is not a numeric expression"); - }; - if (opt.opt->is_vector()) { - if (! opt.has_index()) - ctx->throw_exception("Referencing an output vector variable when scalar is expected", opt.it_range); - ConfigOptionVectorBase *vec = const_cast(static_cast(opt.opt)); - if (vec->empty()) - ctx->throw_exception("Indexing an empty vector variable", opt.it_range); - if (opt.index >= int(vec->size())) - ctx->throw_exception("Index out of range", opt.it_range); - switch (opt.opt->type()) { - case coFloats: - check_numeric(param); - static_cast(vec)->values[opt.index] = param.as_d(); - break; - case coInts: - check_numeric(param); - static_cast(vec)->values[opt.index] = param.as_i(); - break; - case coStrings: - static_cast(vec)->values[opt.index] = param.to_string(); - break; - case coPercents: - check_numeric(param); - static_cast(vec)->values[opt.index] = param.as_d(); - break; - case coBools: - if (param.type() != expr::TYPE_BOOL) - ctx->throw_exception("Right side is not a boolean expression", param.it_range); - static_cast(vec)->values[opt.index] = param.b(); - break; - default: - ctx->throw_exception("Unsupported output vector variable type", opt.it_range); + if (! ctx->skipping()) { + t_config_option_key key(std::string(it_range.begin(), it_range.end())); + if (const ConfigOption* opt = ctx->resolve_symbol(key); opt) + ctx->throw_exception("Symbol is already defined in read-only system dictionary", it_range); + if (ctx->config_outputs && ctx->config_outputs->optptr(key)) + ctx->throw_exception("Symbol is already defined as system output variable", it_range); + bool has_global_dictionary = ctx->context_data != nullptr && ctx->context_data->global_config; + if (global_variable) { + if (! has_global_dictionary) + ctx->throw_exception("Global variables are not available in this context", it_range); + if (ctx->config_local.optptr(key)) + ctx->throw_exception("Variable name already defined in local scope", it_range); + out.opt = ctx->context_data->global_config->optptr(key); + } else { + if (has_global_dictionary && ctx->context_data->global_config->optptr(key)) + ctx->throw_exception("Variable name already defined in global scope", it_range); + out.opt = ctx->config_local.optptr(key); } + out.name = std::move(key); + } + out.it_range = it_range; + } + + // Decoding a scalar variable symbol "opt", assigning it a value of "param". + static void scalar_variable_assign_scalar_expression(const MyContext *ctx, OptWithPos &opt, const expr ¶m) + { + if (! ctx->skipping()) { + check_writable(ctx, opt); + if (opt.opt->is_vector()) + vector_variable_element_assign_scalar(ctx, opt, param); + else + scalar_variable_assign_scalar(ctx, opt, param); + } + } + + static void scalar_variable_new_from_scalar_expression( + const MyContext *ctx, + bool global_variable, + NewOldVariable &lhs, + const expr &rhs) + { + if (ctx->skipping()) { + } else if (lhs.opt) { + if (lhs.opt->is_vector()) + rhs.throw_exception("Cannot assign a scalar value to a vector variable."); + OptWithPos lhs_opt{ lhs.opt, lhs.it_range, true }; + scalar_variable_assign_scalar(ctx, lhs_opt, rhs); } else { - assert(opt.opt->is_scalar()); - ConfigOption *wropt = const_cast(opt.opt); - switch (wropt->type()) { - case coFloat: - check_numeric(param); - static_cast(wropt)->value = param.as_d(); - break; - case coInt: - check_numeric(param); - static_cast(wropt)->value = param.as_i(); - break; - case coString: - static_cast(wropt)->value = param.to_string(); - break; - case coPercent: - check_numeric(param); - static_cast(wropt)->value = param.as_d(); - break; - case coBool: - if (param.type() != expr::TYPE_BOOL) - ctx->throw_exception("Right side is not a boolean expression", param.it_range); - static_cast(wropt)->value = param.b(); - break; + std::unique_ptr opt_new; + switch (rhs.type()) { + case expr::TYPE_BOOL: opt_new = std::make_unique(rhs.b()); break; + case expr::TYPE_INT: opt_new = std::make_unique(rhs.i()); break; + case expr::TYPE_DOUBLE: opt_new = std::make_unique(rhs.d()); break; + case expr::TYPE_STRING: opt_new = std::make_unique(rhs.s()); break; + default: assert(false); + } + const_cast(ctx)->store_new_variable(lhs.name, std::move(opt_new), global_variable); + } + } + + static void vector_variable_new_from_array( + const MyContext *ctx, + bool global_variable, + NewOldVariable &lhs, + const expr &rhs_count, + const expr &rhs_value) + { + if (ctx->skipping()) { + } else if (lhs.opt) { + if (lhs.opt->is_scalar()) + rhs_value.throw_exception("Cannot assign a vector value to a scalar variable."); + OptWithPos lhs_opt{ lhs.opt, lhs.it_range, true }; + vector_variable_assign_expr_with_count(ctx, lhs_opt, rhs_count, rhs_value); + } else { + size_t count = evaluate_count(rhs_count); + std::unique_ptr opt_new; + switch (rhs_value.type()) { + case expr::TYPE_BOOL: opt_new = std::make_unique(count, rhs_value.b()); break; + case expr::TYPE_INT: opt_new = std::make_unique(count, rhs_value.i()); break; + case expr::TYPE_DOUBLE: opt_new = std::make_unique(count, rhs_value.d()); break; + case expr::TYPE_STRING: opt_new = std::make_unique(count, rhs_value.s()); break; + default: assert(false); + } + const_cast(ctx)->store_new_variable(lhs.name, std::move(opt_new), global_variable); + } + } + + static void vector_variable_assign_array( + const MyContext *ctx, + OptWithPos &lhs, + const expr &rhs_count, + const expr &rhs_value) + { + if (! ctx->skipping()) { + check_writable(ctx, lhs); + if (lhs.opt->is_scalar()) + rhs_value.throw_exception("Cannot assign a vector value to a scalar variable."); + vector_variable_assign_expr_with_count(ctx, lhs, rhs_count, rhs_value); + } + } + + template + static void fill_vector_from_initializer_list(ConfigOption *opt, const std::vector &il, RightValueEvaluate rv_eval) { + auto& out = static_cast(opt)->values; + out.clear(); + out.reserve(il.size()); + for (const expr& i : il) + out.emplace_back(rv_eval(i)); + } + + static void vector_variable_assign_initializer_list(const MyContext *ctx, OptWithPos &lhs, const std::vector &il) + { + if (ctx->skipping()) + return; + + check_writable(ctx, lhs); + + if (lhs.opt->is_scalar()) { + if (il.size() == 1) + // scalar_var = ( scalar ) + scalar_variable_assign_scalar_expression(ctx, lhs, il.front()); + else + // scalar_var = () + // or + // scalar_var = ( scalar, scalar, ... ) + ctx->throw_exception("Cannot assign a vector value to a scalar variable.", lhs.it_range); + } + + auto check_numeric_vector = [](const std::vector &il) { + for (auto &i : il) + if (! i.numeric_type()) + i.throw_exception("Right side is not a numeric expression"); + }; + + ConfigOption *opt = const_cast(lhs.opt); + switch (lhs.opt->type()) { + case coFloats: + check_numeric_vector(il); + fill_vector_from_initializer_list(opt, il, [](auto &v){ return v.as_d(); }); + break; + case coInts: + check_numeric_vector(il); + fill_vector_from_initializer_list(opt, il, [](auto &v){ return v.as_i(); }); + break; + case coStrings: + fill_vector_from_initializer_list(opt, il, [](auto &v){ return v.to_string(); }); + break; + case coBools: + for (auto &i : il) + if (i.type() != expr::TYPE_BOOL) + i.throw_exception("Right side is not a boolean expression"); + fill_vector_from_initializer_list(opt, il, [](auto &v){ return v.b(); }); + break; + default: assert(false); + } + } + + static void vector_variable_new_from_initializer_list( + const MyContext *ctx, + bool global_variable, + NewOldVariable &lhs, + const std::vector &il) + { + if (ctx->skipping()) + return; + + if (lhs.opt) { + // Assign to an existing vector variable. + OptWithPos lhs_opt{ lhs.opt, lhs.it_range, true }; + vector_variable_assign_initializer_list(ctx, lhs_opt, il); + } else { + if (il.empty()) + ctx->throw_exception("Cannot create vector variable from an empty initializer list, because its type cannot be deduced.", lhs.it_range); + // Allocate a new vector variable. + // First guesstimate type of the output vector. + size_t num_bool = 0; + size_t num_int = 0; + size_t num_double = 0; + size_t num_string = 0; + for (auto &i : il) + switch (i.type()) { + case expr::TYPE_BOOL: ++ num_bool; break; + case expr::TYPE_INT: ++ num_int; break; + case expr::TYPE_DOUBLE: ++ num_double; break; + case expr::TYPE_STRING: ++ num_string; break; + default: assert(false); + } + std::unique_ptr opt_new; + if (num_string > 0) + // Convert everything to strings. + opt_new = std::make_unique(); + else if (num_bool > 0) { + if (num_double + num_int > 0) + ctx->throw_exception("Right side is not valid: Mixing numeric and boolean types.", IteratorRange{ il.front().it_range.begin(), il.back().it_range.end() }); + opt_new = std::make_unique(); + } else { + // Output is numeric. + if (num_double == 0) + opt_new = std::make_unique(); + else + opt_new = std::make_unique(); + } + OptWithPos lhs_opt{ opt_new.get(), lhs.it_range, true }; + vector_variable_assign_initializer_list(ctx, lhs_opt, il); + const_cast(ctx)->store_new_variable(lhs.name, std::move(opt_new), global_variable); + } + } + + static bool is_vector_variable_reference(const OptWithPos &var) { + return ! var.empty() && ! var.has_index() && var.opt->is_vector(); + } + + // Called when checking whether the NewOldVariable could be assigned a vectir right hand side. + static bool could_be_vector_variable_reference(const NewOldVariable &var) { + return var.opt == nullptr || var.opt->is_vector(); + } + + static void copy_vector_variable_to_vector_variable(const MyContext *ctx, OptWithPos &lhs, const OptWithPos &rhs) + { + if (ctx->skipping()) + return; + + check_writable(ctx, lhs); + assert(lhs.opt->is_vector()); + if (rhs.has_index() || ! rhs.opt->is_vector()) + ctx->throw_exception("Cannot assign scalar to a vector", lhs.it_range); + if (rhs.opt->is_nil()) + ctx->throw_exception("Some elements of the right hand side vector variable of optional values are undefined (nil)", rhs.it_range); + if (lhs.opt->type() != rhs.opt->type()) { + // Vector types are not compatible. + switch (lhs.opt->type()) { + case coFloats: + ctx->throw_exception("Left hand side is a float vector, while the right hand side is not.", lhs.it_range); + case coInts: + ctx->throw_exception("Left hand side is an int vector, while the right hand side is not.", lhs.it_range); + case coStrings: + ctx->throw_exception("Left hand side is a string vector, while the right hand side is not.", lhs.it_range); + case coBools: + ctx->throw_exception("Left hand side is a bool vector, while the right hand side is not.", lhs.it_range); default: - ctx->throw_exception("Unsupported output scalar variable type", opt.it_range); + ctx->throw_exception("Left hand side / right hand side vectors are not compatible.", lhs.it_range); } } - out.clear(); + const_cast(lhs.opt)->set(rhs.opt); + } + + static bool vector_variable_new_from_copy( + const MyContext *ctx, + bool global_variable, + NewOldVariable &lhs, + const OptWithPos &rhs) + { + if (ctx->skipping()) + // Skipping, continue parsing. + return true; + + if (lhs.opt) { + assert(lhs.opt->is_vector()); + OptWithPos lhs_opt{ lhs.opt, lhs.it_range, true }; + copy_vector_variable_to_vector_variable(ctx, lhs_opt, rhs); + } else { + if (rhs.has_index() || ! rhs.opt->is_vector()) + // Stop parsing, let the other rules resolve this case. + return false; + if (rhs.opt->is_nil()) + ctx->throw_exception("Some elements of the right hand side vector variable of optional values are undefined (nil)", rhs.it_range); + // Clone the vector variable. + std::unique_ptr opt_new; + if (one_of(rhs.opt->type(), { coFloats, coInts, coStrings, coBools })) + opt_new = std::unique_ptr(rhs.opt->clone()); + else if (rhs.opt->type() == coPercents) + opt_new = std::make_unique(static_cast(rhs.opt)->values); + else + ctx->throw_exception("Duplicating this type of vector variable is not supported", rhs.it_range); + const_cast(ctx)->store_new_variable(lhs.name, std::move(opt_new), global_variable); + } + // Continue parsing. + return true; + } + + static void initializer_list_append(std::vector &list, expr ¶m) + { + if (param.type() != expr::TYPE_EMPTY) + // not skipping + list.emplace_back(std::move(param)); + } + + static void is_vector_empty(const MyContext *ctx, OptWithPos &opt, expr &out) + { + if (! ctx->skipping()) { + if (opt.has_index() || ! opt.opt->is_vector()) + ctx->throw_exception("parameter of empty() is not a vector variable", opt.it_range); + out.set_b(static_cast(opt.opt)->size() == 0); + } + out.it_range = opt.it_range; + } + + static void vector_size(const MyContext *ctx, OptWithPos &opt, expr &out) + { + if (! ctx->skipping()) { + if (opt.has_index() || ! opt.opt->is_vector()) + ctx->throw_exception("parameter of size() is not a vector variable", opt.it_range); + out.set_i(int(static_cast(opt.opt)->size())); + } + out.it_range = opt.it_range; } // Verify that the expression returns an integer, which may be used // to address a vector. - template - static void evaluate_index(expr &expr_index, int &output) + static void evaluate_index(expr &expr_index, int &output) { - if (expr_index.type() != expr::TYPE_INT) - expr_index.throw_exception("Non-integer index is not allowed to address a vector variable."); - output = expr_index.i(); + if (expr_index.type() != expr::TYPE_EMPTY) { + if (expr_index.type() != expr::TYPE_INT) + expr_index.throw_exception("Non-integer index is not allowed to address a vector variable."); + output = expr_index.i(); + } } - template - static void random(const MyContext *ctx, expr ¶m1, expr ¶m2) + static void random(const MyContext *ctx, expr ¶m1, expr ¶m2) { + if (ctx->skipping()) + return; + if (ctx->context_data == nullptr) ctx->throw_exception("Random number generator not available in this context.", - boost::iterator_range(param1.it_range.begin(), param2.it_range.end())); - expr::random(param1, param2, ctx->context_data->rng); + IteratorRange(param1.it_range.begin(), param2.it_range.end())); + expr::random(param1, param2, ctx->context_data->rng); } - template - static void throw_exception(const std::string &msg, const boost::iterator_range &it_range) + static void throw_exception(const std::string &msg, const IteratorRange &it_range) { // An asterix is added to the start of the string to differentiate the boost::spirit::info::tag content // between the grammer terminal / non-terminal symbol name and a free-form error message. - boost::throw_exception(qi::expectation_failure(it_range.begin(), it_range.end(), spirit::info(std::string("*") + msg))); + boost::throw_exception(qi::expectation_failure(it_range.begin(), it_range.end(), spirit::info(std::string("*") + msg))); } - template static void process_error_message(const MyContext *context, const boost::spirit::info &info, const Iterator &it_begin, const Iterator &it_end, const Iterator &it_error) { std::string &msg = const_cast(context)->error_message; @@ -1122,37 +1608,48 @@ namespace client msg += ' '; msg += "^\n"; } + + private: + // For skipping execution of inactive conditional branches. + mutable int m_depth_suppressed{ 0 }; }; - template struct InterpolateTableContext { struct Item { - double x; - boost::iterator_range it_range_x; - double y; + double x; + IteratorRange it_range_x; + double y; }; std::vector table; - static void init(const expr &x) { - if (!x.numeric_type()) - x.throw_exception("Interpolation value must be a number."); + static void init(const expr &x) { + if (x.type() != expr::TYPE_EMPTY) { + if (!x.numeric_type()) + x.throw_exception("Interpolation value must be a number."); + } } - static void add_pair(const expr &x, const expr &y, InterpolateTableContext &table) { - if (! x.numeric_type()) - x.throw_exception("X value of a table point must be a number."); - if (! y.numeric_type()) - y.throw_exception("Y value of a table point must be a number."); - table.table.push_back({ x.as_d(), x.it_range, y.as_d() }); + static void add_pair(const expr &x, const expr &y, InterpolateTableContext &table) { + if (x.type() != expr::TYPE_EMPTY) { + if (! x.numeric_type()) + x.throw_exception("X value of a table point must be a number."); + if (! y.numeric_type()) + y.throw_exception("Y value of a table point must be a number."); + table.table.push_back({ x.as_d(), x.it_range, y.as_d() }); + } } - static void evaluate(const expr &expr_x, const InterpolateTableContext &table, expr &out) { + static void evaluate(const expr &expr_x, const InterpolateTableContext &table, expr &out) { + if (expr_x.type() == expr::TYPE_EMPTY) + return; + // Check whether the table X values are sorted. double x = expr_x.as_d(); + assert(! std::isnan(x)); bool evaluated = false; for (size_t i = 1; i < table.table.size(); ++i) { double x0 = table.table[i - 1].x; double x1 = table.table[i].x; if (x0 > x1) - boost::throw_exception(qi::expectation_failure( + boost::throw_exception(qi::expectation_failure( table.table[i - 1].it_range_x.begin(), table.table[i].it_range_x.end(), spirit::info("X coordinates of the table must be increasing"))); if (! evaluated && x >= x0 && x <= x1) { double y0 = table.table[i - 1].y; @@ -1170,9 +1667,9 @@ namespace client } if (! evaluated) { // Clamp x into the table range with EPSILON. - if (x > table.table.front().x - EPSILON) + if (double x0 = table.table.front().x; x > x0 - EPSILON && x < x0) out.set_d(table.table.front().y); - else if (x < table.table.back().x + EPSILON) + else if (double x1 = table.table.back().x; x > x1 && x < x1 + EPSILON) out.set_d(table.table.back().y); else // The value is really outside the table range. @@ -1181,8 +1678,7 @@ namespace client } }; - template - std::ostream& operator<<(std::ostream &os, const InterpolateTableContext &table_context) + std::ostream& operator<<(std::ostream &os, const InterpolateTableContext &table_context) { for (const auto &item : table_context.table) os << "(" << item.x << "," << item.y << ")"; @@ -1196,6 +1692,7 @@ namespace client { "text", "Invalid text." }, { "text_block", "Invalid text block." }, { "macro", "Invalid macro." }, + { "repeat", "Unknown syntax error" }, { "if_else_output", "Not an {if}{else}{endif} macro." }, { "switch_output", "Not a {switch} macro." }, { "legacy_variable_expansion", "Expecting a legacy variable expansion format" }, @@ -1212,14 +1709,12 @@ namespace client { "optional_parameter", "Expecting a closing brace or an optional parameter." }, { "one_of_list", "Expecting a list of string patterns (simple text or rexep)" }, { "variable_reference", "Expecting a variable reference."}, - { "is_nil_test", "Expecting a scalar variable reference."}, { "variable", "Expecting a variable name."}, { "regular_expression", "Expecting a regular expression."} }; // For debugging the boost::spirit parsers. Print out the string enclosed in it_range. - template - std::ostream& operator<<(std::ostream& os, const boost::iterator_range &it_range) + std::ostream& operator<<(std::ostream& os, const IteratorRange &it_range) { os << std::string(it_range.begin(), it_range.end()); return os; @@ -1234,7 +1729,7 @@ namespace client // This parser is to be used inside a raw[] directive to accept a single valid UTF-8 character. // If an invalid UTF-8 sequence is encountered, a qi::expectation_failure is thrown. - struct utf8_char_skipper_parser : qi::primitive_parser + struct utf8_char_parser : qi::primitive_parser { // Define the attribute type exposed by this parser component template @@ -1243,9 +1738,10 @@ namespace client typedef wchar_t type; }; - // This function is called during the actual parsing process + // This function is called during the actual parsing process to skip whitespaces. + // Also it throws if it encounters valid or invalid UTF-8 sequence. template - bool parse(Iterator& first, Iterator const& last, Context& context, Skipper const& skipper, Attribute& attr) const + bool parse(Iterator &first, Iterator const &last, Context &context, Skipper const &skipper, Attribute& attr) const { // The skipper shall always be empty, any white space will be accepted. // skip_over(first, last, skipper); @@ -1283,7 +1779,7 @@ namespace client first = it; return true; err: - MyContext::throw_exception("Invalid utf8 sequence", boost::iterator_range(first, last)); + MyContext::throw_exception("Invalid utf8 sequence", IteratorRange(first, last)); return false; } @@ -1295,12 +1791,131 @@ namespace client } }; + // This parser is to be used inside a raw[] directive to accept a single valid UTF-8 character. + // If an invalid UTF-8 sequence is encountered, a qi::expectation_failure is thrown. + struct ascii_char_skipper_parser : public utf8_char_parser + { + // This function is called during the actual parsing process + template + bool parse(Iterator &first, Iterator const &last, Context &context, Skipper const &skipper, Attribute &attr) const + { + Iterator it = first; + // Let the UTF-8 parser throw if it encounters an invalid UTF-8 sequence. + if (! utf8_char_parser::parse(it, last, context, skipper, attr)) + return false; + char c = *first; + if (it - first > 1 || c < 0) + MyContext::throw_exception("Non-ASCII7 characters are only allowed inside text blocks and string literals, not inside code blocks.", IteratorRange(first, it)); + if (c == '\r' || c == '\n' || c == '\t' || c == ' ') { + // Skip the whitespaces + ++ first; + return true; + } else + // Stop skipping, let this 7bit ASCII character be processed. + return false; + } + + // This function is called during error handling to create a human readable string for the error context. + template + spirit::info what(Context&) const + { + return spirit::info("ASCII7_char"); + } + }; + + struct FactorActions { + static void set_start_pos(Iterator &start_pos, expr &out) + { out.it_range = IteratorRange(start_pos, start_pos); } + static void int_(const MyContext *ctx, int &value, Iterator &end_pos, expr &out) { + if (ctx->skipping()) { + out.reset(); + out.it_range.end() = end_pos; + } else + out = expr(value, out.it_range.begin(), end_pos); + } + static void double_(const MyContext *ctx, double &value, Iterator &end_pos, expr &out) { + if (ctx->skipping()) { + out.reset(); + out.it_range.end() = end_pos; + } else + out = expr(value, out.it_range.begin(), end_pos); + } + static void bool_(const MyContext *ctx, bool &value, Iterator &end_pos, expr &out) { + if (ctx->skipping()) { + out.reset(); + out.it_range.end() = end_pos; + } else + out = expr(value, out.it_range.begin(), end_pos); + } + static void string_(const MyContext *ctx, IteratorRange &it_range, expr &out) { + if (ctx->skipping()) { + out.reset(); + out.it_range = it_range; + } else { + // Unescape the string, UTF-8 safe. + std::string s; + auto begin = std::next(it_range.begin()); + auto end = std::prev(it_range.end()); + assert(begin <= end); + { + // 1) Get the size of the string after unescaping. + size_t len = 0; + for (auto it = begin; it != end;) { + if (*it == '\\') { + if (++ it == end || + (*it != 'r' && *it != 'n' && *it != '"' && *it != '\\')) + ctx->throw_exception("Invalid escape sequence", {std::prev(it), std::next(it) }); + ++ len; + ++ it; + } else { + size_t n = get_utf8_sequence_length(&*it, end - it); + len += n; + it += n; + } + } + // and reserve the string. + s.reserve(len); + } + // 2) Copy & unescape the string. + for (auto it = begin; it != end;) { + if (*it == '\\') { + char c = *(++ it); + if (c == 'r') + c = '\r'; + else if (c == 'n') + c = '\n'; + s += c; + ++ it; + } else { + size_t n = get_utf8_sequence_length(&*it, end - it); + s.append(&*it, n); + it += n; + } + } + out = expr(std::move(s), it_range.begin(), it_range.end()); + } + } + static void expr_(expr &value, Iterator &end_pos, expr &out) + { auto begin_pos = out.it_range.begin(); out = expr(std::move(value), begin_pos, end_pos); } + static void minus_(expr &value, expr &out) + { out = value.unary_minus(out.it_range.begin()); } + static void not_(expr &value, expr &out) + { out = value.unary_not(out.it_range.begin()); } + static void to_int(expr &value, expr &out) + { out = value.unary_integer(out.it_range.begin()); } + static void round(expr &value, expr &out) + { out = value.round(out.it_range.begin()); } + // For indicating "no optional parameter". + static void noexpr(expr &out) { out.reset(); } + }; + + using skipper = ascii_char_skipper_parser; + /////////////////////////////////////////////////////////////////////////// // Our macro_processor grammar /////////////////////////////////////////////////////////////////////////// // Inspired by the C grammar rules https://www.lysator.liu.se/c/ANSI-C-grammar-y.html - template - struct macro_processor : qi::grammar, spirit_encoding::space_type> + struct macro_processor : qi::grammar, skipper> { macro_processor() : macro_processor::base_type(start) { @@ -1314,7 +1929,7 @@ namespace client qi::no_skip_type no_skip; qi::real_parser strict_double; spirit_encoding::char_type char_; - utf8_char_skipper_parser utf8char; + utf8_char_parser utf8char; spirit::bool_type bool_; spirit::int_type int_; spirit::double_type double_; @@ -1339,19 +1954,19 @@ namespace client // Also the start symbol switches between the "full macro syntax" and a "boolean expression only", // depending on the context->just_boolean_expression flag. This way a single static expression parser // could serve both purposes. - start = eps[px::bind(&MyContext::evaluate_full_macro, _r1, _a)] > - ( (eps(_a==true) > text_block(_r1) [_val=_1]) - | conditional_expression(_r1) [ px::bind(&expr::evaluate_boolean_to_string, _1, _val) ] + start = + ( (eps(px::bind(&MyContext::evaluate_full_macro, _r1)) > text_block(_r1) [_val=_1]) + | conditional_expression(_r1) [ px::bind(&expr::evaluate_boolean_to_string, _1, _val) ] ) > eoi; start.name("start"); - qi::on_error(start, px::bind(&MyContext::process_error_message, _r1, _4, _1, _2, _3)); + qi::on_error(start, px::bind(&MyContext::process_error_message, _r1, _4, _1, _2, _3)); text_block = *( text [_val+=_1] // Allow back tracking after '{' in case of a text_block embedded inside a condition. // In that case the inner-most {else} wins and the {if}/{elsif}/{else} shall be paired. // {elsif}/{else} without an {if} will be allowed to back track from the embedded text_block. - | (lit('{') >> macro(_r1) [_val+=_1] > '}') + | (lit('{') >> (macros(_r1)[_val += _1] > '}') | '}') | (lit('[') > legacy_variable_expansion(_r1) [_val+=_1] > ']') ); text_block.name("text_block"); @@ -1363,41 +1978,61 @@ namespace client // New style of macro expansion. // The macro expansion may contain numeric or string expressions, ifs and cases. - macro = - (kw["if"] > if_else_output(_r1) [_val = _1]) -// | (kw["switch"] > switch_output(_r1) [_val = _1]) - | (assignment_statement(_r1) [_val = _1]) - | (additive_expression(_r1) [ px::bind(&expr::to_string2, _1, _val) ]) + macros = + +(block(_r1)[_val += _1] | (statement(_r1) > (+lit(';') | &lit('}')))[_val += _1] | +lit(';')); + macros.name("macro"); + // if_macros and else_macros only differ by the look-ahead ending condition, which is to not have to repeat the last semicolon + // at the end of the block. + if_macros = kw["then"] > *(block(_r1)[_val += _1] | (statement(_r1) > (+lit(';') | &(kw["elsif"] | kw["else"] | kw["endif"])))[_val += _1] | +lit(';')); + if_macros.name("if_macros"); + else_macros = *(block(_r1)[_val += _1] | (statement(_r1) > (+lit(';') | &kw["endif"]))[_val += _1] | +lit(';')); + else_macros.name("else_macros"); + + // Blocks do not require a separating semicolon. + block = + (kw["if"] > if_else_output(_r1)[_val = _1]) + // (kw["switch"] ... + ; + block.name("block"); + + // Statements require a separating semicolon. + statement = + (assignment_statement(_r1) [_val = _1]) + | (new_variable_statement(_r1)[_val = _1]) + | (conditional_expression(_r1)[px::bind(&expr::to_string2, _1, _val)]) ; - macro.name("macro"); // An if expression enclosed in {} (the outmost {} are already parsed by the caller). + // Also }{ could be replaced with ; to simplify writing of pure code. if_else_output = - eps[_b=true] > - bool_expr_eval(_r1)[_a=_1] > '}' > - text_block(_r1)[px::bind(&expr::set_if, _a, _b, _1, _val)] > '{' > - *(kw["elsif"] > bool_expr_eval(_r1)[_a=_1] > '}' > - text_block(_r1)[px::bind(&expr::set_if, _a, _b, _1, _val)] > '{') > - -(kw["else"] > lit('}') > - text_block(_r1)[px::bind(&expr::set_if, _b, _b, _1, _val)] > '{') > + eps[_a=true] > + (bool_expr_eval(_r1)[px::bind(&MyContext::block_enter, _r1, _1)] > (if_text_block(_r1) | if_macros(_r1))) + [px::bind(&MyContext::block_exit, _r1, _1, _a, _2, _val)] > + *((kw["elsif"] > bool_expr_eval(_r1)[px::bind(&MyContext::block_enter, _r1, _1 && _a)] > (if_text_block(_r1) | if_macros(_r1))) + [px::bind(&MyContext::block_exit, _r1, _1, _a, _2, _val)]) > + -(kw["else"] > eps[px::bind(&MyContext::block_enter, _r1, _a)] > (if_text_block(_r1) | else_macros(_r1))) + [px::bind(&MyContext::block_exit, _r1, _a, _a, _1, _val)] > kw["endif"]; if_else_output.name("if_else_output"); + if_text_block = (lit('}') > text_block(_r1) > '{'); + if_text_block.name("if_text_block"); + // A switch expression enclosed in {} (the outmost {} are already parsed by the caller). /* switch_output = eps[_b=true] > - omit[expr(_r1)[_a=_1]] > '}' > text_block(_r1)[px::bind(&expr::set_if_equal, _a, _b, _1, _val)] > '{' > - *("elsif" > omit[bool_expr_eval(_r1)[_a=_1]] > '}' > text_block(_r1)[px::bind(&expr::set_if, _a, _b, _1, _val)]) >> - -("else" > '}' >> text_block(_r1)[px::bind(&expr::set_if, _b, _b, _1, _val)]) > + omit[expr(_r1)[_a=_1]] > '}' > text_block(_r1)[px::bind(&expr::set_if_equal, _a, _b, _1, _val)] > '{' > + *("elsif" > omit[bool_expr_eval(_r1)[_a=_1]] > '}' > text_block(_r1)[px::bind(&expr::set_if, _a, _b, _1, _val)]) >> + -("else" > '}' >> text_block(_r1)[px::bind(&expr::set_if, _b, _b, _1, _val)]) > "endif"; */ // Legacy variable expansion of the original Slic3r, in the form of [scalar_variable] or [vector_variable_index]. legacy_variable_expansion = (identifier >> &lit(']')) - [ px::bind(&MyContext::legacy_variable_expansion, _r1, _1, _val) ] + [ px::bind(&MyContext::legacy_variable_expansion, _r1, _1, _val) ] | (identifier > lit('[') > identifier > ']') - [ px::bind(&MyContext::legacy_variable_expansion2, _r1, _1, _2, _val) ] + [ px::bind(&MyContext::legacy_variable_expansion2, _r1, _1, _2, _val) ] ; legacy_variable_expansion.name("legacy_variable_expansion"); @@ -1407,41 +2042,44 @@ namespace client identifier.name("identifier"); conditional_expression = - logical_or_expression(_r1) [_val = _1] - >> -('?' > conditional_expression(_r1) > ':' > conditional_expression(_r1)) [px::bind(&expr::ternary_op, _val, _1, _2)]; + logical_or_expression(_r1) [_val = _1] + >> -('?' > eps[px::bind(&expr::evaluate_boolean, _val, _a)] > + eps[px::bind(&MyContext::block_enter, _r1, _a)] > conditional_expression(_r1)[px::bind(&MyContext::block_exit_ternary, _r1, _a, _1, _val)] + > ':' > + eps[px::bind(&MyContext::block_enter, _r1, ! _a)] > conditional_expression(_r1)[px::bind(&MyContext::block_exit_ternary, _r1, ! _a, _1, _val)]); conditional_expression.name("conditional_expression"); logical_or_expression = logical_and_expression(_r1) [_val = _1] - >> *( ((kw["or"] | "||") > logical_and_expression(_r1) ) [px::bind(&expr::logical_or, _val, _1)] ); + >> *( ((kw["or"] | "||") > logical_and_expression(_r1) ) [px::bind(&expr::logical_or, _val, _1)] ); logical_or_expression.name("logical_or_expression"); logical_and_expression = equality_expression(_r1) [_val = _1] - >> *( ((kw["and"] | "&&") > equality_expression(_r1) ) [px::bind(&expr::logical_and, _val, _1)] ); + >> *( ((kw["and"] | "&&") > equality_expression(_r1) ) [px::bind(&expr::logical_and, _val, _1)] ); logical_and_expression.name("logical_and_expression"); equality_expression = relational_expression(_r1) [_val = _1] - >> *( ("==" > relational_expression(_r1) ) [px::bind(&expr::equal, _val, _1)] - | ("!=" > relational_expression(_r1) ) [px::bind(&expr::not_equal, _val, _1)] - | ("<>" > relational_expression(_r1) ) [px::bind(&expr::not_equal, _val, _1)] - | ("=~" > regular_expression ) [px::bind(&expr::regex_matches, _val, _1)] - | ("!~" > regular_expression ) [px::bind(&expr::regex_doesnt_match, _val, _1)] + >> *( ("==" > relational_expression(_r1) ) [px::bind(&expr::equal, _val, _1)] + | ("!=" > relational_expression(_r1) ) [px::bind(&expr::not_equal, _val, _1)] + | ("<>" > relational_expression(_r1) ) [px::bind(&expr::not_equal, _val, _1)] + | ("=~" > regular_expression ) [px::bind(&expr::regex_matches, _val, _1)] + | ("!~" > regular_expression ) [px::bind(&expr::regex_doesnt_match, _val, _1)] ); equality_expression.name("bool expression"); // Evaluate a boolean expression stored as expr into a boolean value. // Throw if the equality_expression does not produce a expr of boolean type. - bool_expr_eval = conditional_expression(_r1) [ px::bind(&expr::evaluate_boolean, _1, _val) ]; + bool_expr_eval = conditional_expression(_r1) [ px::bind(&expr::evaluate_boolean, _1, _val) ]; bool_expr_eval.name("bool_expr_eval"); relational_expression = additive_expression(_r1) [_val = _1] - >> *( ("<=" > additive_expression(_r1) ) [px::bind(&expr::leq, _val, _1)] - | (">=" > additive_expression(_r1) ) [px::bind(&expr::geq, _val, _1)] - | (lit('<') > additive_expression(_r1) ) [px::bind(&expr::lower, _val, _1)] - | (lit('>') > additive_expression(_r1) ) [px::bind(&expr::greater, _val, _1)] + >> *( ("<=" > additive_expression(_r1) ) [px::bind(&expr::leq, _val, _1)] + | (">=" > additive_expression(_r1) ) [px::bind(&expr::geq, _val, _1)] + | (lit('<') > additive_expression(_r1) ) [px::bind(&expr::lower, _val, _1)] + | (lit('>') > additive_expression(_r1) ) [px::bind(&expr::greater, _val, _1)] ); relational_expression.name("relational_expression"); @@ -1461,71 +2099,83 @@ namespace client multiplicative_expression.name("multiplicative_expression"); assignment_statement = - (variable_reference(_r1) >> '=' > additive_expression(_r1)) - [px::bind(&MyContext::variable_assign, _r1, _1, _2, _val)]; + (variable_reference(_r1)[_a = _1] >> '=') > + ( // Consumes also '(' conditional_expression ')', that means enclosing an expression into braces makes it a single value vector initializer. + initializer_list(_r1)[px::bind(&MyContext::vector_variable_assign_initializer_list, _r1, _a, _1)] + // Process it before conditional_expression, as conditional_expression requires a vector reference to be augmented with an index. + // Only process such variable references, which return a naked vector variable. + | eps(px::bind(&MyContext::is_vector_variable_reference, _a)) >> + variable_reference(_r1)[px::bind(&MyContext::copy_vector_variable_to_vector_variable, _r1, _a, _1)] + // Would NOT consume '(' conditional_expression ')' because such value was consumed with the expression above. + | conditional_expression(_r1) + [px::bind(&MyContext::scalar_variable_assign_scalar_expression, _r1, _a, _1)] + | (kw["repeat"] > "(" > additive_expression(_r1) > "," > conditional_expression(_r1) > ")") + [px::bind(&MyContext::vector_variable_assign_array, _r1, _a, _1, _2)] + ); + + new_variable_statement = + (kw["local"][_a = false] | kw["global"][_a = true]) > identifier[px::bind(&MyContext::new_old_variable, _r1, _a, _1, _b)] > lit('=') > + ( // Consumes also '(' conditional_expression ')', that means enclosing an expression into braces makes it a single value vector initializer. + initializer_list(_r1)[px::bind(&MyContext::vector_variable_new_from_initializer_list, _r1, _a, _b, _1)] + // Process it before conditional_expression, as conditional_expression requires a vector reference to be augmented with an index. + // Only process such variable references, which return a naked vector variable. + // Orca todo: following code cause strange build errors with MSVC C++17 + // | eps(px::bind(&MyContext::could_be_vector_variable_reference, _b)) >> + // variable_reference(_r1)[px::val(qi::_pass) = px::bind(&MyContext::vector_variable_new_from_copy, _r1, _a, _b, _1)] + // Would NOT consume '(' conditional_expression ')' because such value was consumed with the expression above. + | conditional_expression(_r1) + [px::bind(&MyContext::scalar_variable_new_from_scalar_expression, _r1, _a, _b, _1)] + | (kw["repeat"] > "(" > additive_expression(_r1) > "," > conditional_expression(_r1) > ")") + [px::bind(&MyContext::vector_variable_new_from_array, _r1, _a, _b, _1, _2)] + ); + initializer_list = lit('(') > + ( lit(')') | + ( conditional_expression(_r1)[px::bind(&MyContext::initializer_list_append, _val, _1)] > + *(lit(',') > conditional_expression(_r1)[px::bind(&MyContext::initializer_list_append, _val, _1)]) > + lit(')') + ) + ); - struct FactorActions { - static void set_start_pos(Iterator &start_pos, expr &out) - { out.it_range = boost::iterator_range(start_pos, start_pos); } - static void int_(int &value, Iterator &end_pos, expr &out) - { out = expr(value, out.it_range.begin(), end_pos); } - static void double_(double &value, Iterator &end_pos, expr &out) - { out = expr(value, out.it_range.begin(), end_pos); } - static void bool_(bool &value, Iterator &end_pos, expr &out) - { out = expr(value, out.it_range.begin(), end_pos); } - static void string_(boost::iterator_range &it_range, expr &out) - { out = expr(std::string(it_range.begin() + 1, it_range.end() - 1), it_range.begin(), it_range.end()); } - static void expr_(expr &value, Iterator &end_pos, expr &out) - { auto begin_pos = out.it_range.begin(); out = expr(std::move(value), begin_pos, end_pos); } - static void minus_(expr &value, expr &out) - { out = value.unary_minus(out.it_range.begin()); } - static void not_(expr &value, expr &out) - { out = value.unary_not(out.it_range.begin()); } - static void to_int(expr &value, expr &out) - { out = value.unary_integer(out.it_range.begin()); } - static void round(expr &value, expr &out) - { out = value.round(out.it_range.begin()); } - // For indicating "no optional parameter". - static void noexpr(expr &out) { out.reset(); } - }; unary_expression = iter_pos[px::bind(&FactorActions::set_start_pos, _1, _val)] >> ( - variable_reference(_r1) [px::bind(&MyContext::variable_value, _r1, _1, _val)] + variable_reference(_r1) [px::bind(&MyContext::variable_value, _r1, _1, _val)] | (lit('(') > conditional_expression(_r1) > ')' > iter_pos) [ px::bind(&FactorActions::expr_, _1, _2, _val) ] | (lit('-') > unary_expression(_r1) ) [ px::bind(&FactorActions::minus_, _1, _val) ] | (lit('+') > unary_expression(_r1) > iter_pos) [ px::bind(&FactorActions::expr_, _1, _2, _val) ] | ((kw["not"] | '!') > unary_expression(_r1) > iter_pos) [ px::bind(&FactorActions::not_, _1, _val) ] | (kw["min"] > '(' > conditional_expression(_r1) [_val = _1] > ',' > conditional_expression(_r1) > ')') - [ px::bind(&expr::min, _val, _2) ] + [ px::bind(&expr::min, _val, _2) ] | (kw["max"] > '(' > conditional_expression(_r1) [_val = _1] > ',' > conditional_expression(_r1) > ')') - [ px::bind(&expr::max, _val, _2) ] + [ px::bind(&expr::max, _val, _2) ] | (kw["random"] > '(' > conditional_expression(_r1) [_val = _1] > ',' > conditional_expression(_r1) > ')') - [ px::bind(&MyContext::random, _r1, _val, _2) ] + [ px::bind(&MyContext::random, _r1, _val, _2) ] | (kw["digits"] > '(' > conditional_expression(_r1) [_val = _1] > ',' > conditional_expression(_r1) > optional_parameter(_r1)) - [ px::bind(&expr::template digits, _val, _2, _3) ] + [ px::bind(&expr::digits, _val, _2, _3) ] | (kw["zdigits"] > '(' > conditional_expression(_r1) [_val = _1] > ',' > conditional_expression(_r1) > optional_parameter(_r1)) - [ px::bind(&expr::template digits, _val, _2, _3) ] + [ px::bind(&expr::digits, _val, _2, _3) ] | (kw["int"] > '(' > conditional_expression(_r1) > ')') [ px::bind(&FactorActions::to_int, _1, _val) ] | (kw["round"] > '(' > conditional_expression(_r1) > ')') [ px::bind(&FactorActions::round, _1, _val) ] - | (kw["is_nil"] > '(' > is_nil_test(_r1) > ')') [ _val = _1 ] + | (kw["is_nil"] > '(' > variable_reference(_r1) > ')') [px::bind(&MyContext::is_nil_test, _r1, _1, _val)] | (kw["one_of"] > '(' > one_of(_r1) > ')') [ _val = _1 ] + | (kw["empty"] > '(' > variable_reference(_r1) > ')') [px::bind(&MyContext::is_vector_empty, _r1, _1, _val)] + | (kw["size"] > '(' > variable_reference(_r1) > ')') [px::bind(&MyContext::vector_size, _r1, _1, _val)] | (kw["interpolate_table"] > '(' > interpolate_table(_r1) > ')') [ _val = _1 ] - | (strict_double > iter_pos) [ px::bind(&FactorActions::double_, _1, _2, _val) ] - | (int_ > iter_pos) [ px::bind(&FactorActions::int_, _1, _2, _val) ] - | (kw[bool_] > iter_pos) [ px::bind(&FactorActions::bool_, _1, _2, _val) ] + | (strict_double > iter_pos) [ px::bind(&FactorActions::double_, _r1, _1, _2, _val) ] + | (int_ > iter_pos) [ px::bind(&FactorActions::int_, _r1, _1, _2, _val) ] + | (kw[bool_] > iter_pos) [ px::bind(&FactorActions::bool_, _r1, _1, _2, _val) ] | raw[lexeme['"' > *((utf8char - char_('\\') - char_('"')) | ('\\' > char_)) > '"']] - [ px::bind(&FactorActions::string_, _1, _val) ] + [ px::bind(&FactorActions::string_, _r1, _1, _val) ] ); unary_expression.name("unary_expression"); one_of = (unary_expression(_r1)[_a = _1] > one_of_list(_r1, _a))[_val = _2]; one_of.name("one_of"); one_of_list = - eps[px::bind(&expr::one_of_test_init, _val)] > + eps[px::bind(&expr::one_of_test_init, _val)] > ( ( ',' > *( ( - unary_expression(_r1)[px::bind(&expr::template one_of_test, _r2, _1, _val)] - | (lit('~') > unary_expression(_r1))[px::bind(&expr::template one_of_test, _r2, _1, _val)] - | regular_expression[px::bind(&expr::one_of_test_regex, _r2, _1, _val)] + unary_expression(_r1)[px::bind(&expr::one_of_test, _r2, _1, _val)] + | (lit('~') > unary_expression(_r1))[px::bind(&expr::one_of_test, _r2, _1, _val)] + | regular_expression[px::bind(&expr::one_of_test_regex, _r2, _1, _val)] ) >> -lit(',')) ) | eps @@ -1533,12 +2183,12 @@ namespace client one_of_list.name("one_of_list"); interpolate_table = (unary_expression(_r1)[_a = _1] > ',' > interpolate_table_list(_r1, _a)) - [px::bind(&InterpolateTableContext::evaluate, _a, _2, _val)]; + [px::bind(&InterpolateTableContext::evaluate, _a, _2, _val)]; interpolate_table.name("interpolate_table"); interpolate_table_list = - eps[px::bind(&InterpolateTableContext::init, _r2)] > + eps[px::bind(&InterpolateTableContext::init, _r2)] > ( *(( lit('(') > unary_expression(_r1) > ',' > unary_expression(_r1) > ')' ) - [px::bind(&InterpolateTableContext::add_pair, _1, _2, _val)] >> -lit(',')) ); + [px::bind(&InterpolateTableContext::add_pair, _1, _2, _val)] >> -lit(',')) ); interpolate_table.name("interpolate_table_list"); optional_parameter = iter_pos[px::bind(&FactorActions::set_start_pos, _1, _val)] >> ( @@ -1547,20 +2197,17 @@ namespace client ); optional_parameter.name("optional_parameter"); - is_nil_test = variable_reference(_r1)[px::bind(&MyContext::is_nil_test, _r1, _1, _val)]; - is_nil_test.name("is_nil test"); - variable_reference = variable(_r1)[_a=_1] >> ( - ('[' > additive_expression(_r1)[px::bind(&MyContext::evaluate_index, _1, _b)] > ']' > iter_pos) - [px::bind(&MyContext::store_variable_index, _r1, _a, _b, _2, _val)] + ('[' > additive_expression(_r1)[px::bind(&MyContext::evaluate_index, _1, _b)] > ']' > iter_pos) + [px::bind(&MyContext::store_variable_index, _r1, _a, _b, _2, _val)] | eps[_val=_a] ); variable_reference.name("variable reference"); - variable = identifier[ px::bind(&MyContext::resolve_variable, _r1, _1, _val) ]; - variable.name("variable reference"); + variable = identifier[ px::bind(&MyContext::resolve_variable, _r1, _1, _val) ]; + variable.name("variable name"); regular_expression = raw[lexeme['/' > *((utf8char - char_('\\') - char_('/')) | ('\\' > char_)) > '/']]; regular_expression.name("regular_expression"); @@ -1569,29 +2216,34 @@ namespace client ("and") ("digits") ("zdigits") + ("empty") ("if") ("int") ("is_nil") + ("local") //("inf") ("else") ("elsif") ("endif") ("false") + ("global") ("interpolate_table") ("min") ("max") ("random") + ("repeat") ("round") ("not") ("one_of") ("or") + ("size") ("true"); if (0) { debug(start); debug(text); debug(text_block); - debug(macro); + debug(macros); debug(if_else_output); debug(interpolate_table); // debug(switch_output); @@ -1613,28 +2265,27 @@ namespace client debug(optional_parameter); debug(variable_reference); debug(variable); - debug(is_nil_test); debug(regular_expression); } } - // Generic expression over expr. - typedef qi::rule(const MyContext*), spirit_encoding::space_type> RuleExpression; + // Generic expression over expr. + typedef qi::rule RuleExpression; // The start of the grammar. - qi::rule, spirit_encoding::space_type> start; + qi::rule, skipper> start; // A free-form text. - qi::rule text; + qi::rule text; // A free-form text, possibly empty, possibly containing macro expansions. - qi::rule text_block; + qi::rule text_block; // Statements enclosed in curely braces {} - qi::rule macro; + qi::rule block, statement, macros, if_text_block, if_macros, else_macros; // Legacy variable expansion of the original Slic3r, in the form of [scalar_variable] or [vector_variable_index]. - qi::rule legacy_variable_expansion; + qi::rule legacy_variable_expansion; // Parsed identifier name. - qi::rule(), spirit_encoding::space_type> identifier; + qi::rule identifier; // Ternary operator (?:) over logical_or_expression. - RuleExpression conditional_expression; + qi::rule, skipper> conditional_expression; // Logical or over logical_and_expressions. RuleExpression logical_or_expression; // Logical and over relational_expressions. @@ -1652,48 +2303,39 @@ namespace client // Accepting an optional parameter. RuleExpression optional_parameter; // Rule to capture a regular expression enclosed in //. - qi::rule(), spirit_encoding::space_type> regular_expression; + qi::rule regular_expression; // Evaluate boolean expression into bool. - qi::rule bool_expr_eval; + qi::rule bool_expr_eval; // Reference of a scalar variable, or reference to a field of a vector variable. - qi::rule(const MyContext*), qi::locals, int>, spirit_encoding::space_type> variable_reference; + qi::rule, skipper> variable_reference; // Rule to translate an identifier to a ConfigOption, or to fail. - qi::rule(const MyContext*), spirit_encoding::space_type> variable; + qi::rule variable; // Evaluating whether a nullable variable is nil. - qi::rule(const MyContext*), spirit_encoding::space_type> is_nil_test; + qi::rule is_nil_test; // Evaluating "one of" list of patterns. - qi::rule(const MyContext*), qi::locals>, spirit_encoding::space_type> one_of; - qi::rule(const MyContext*, const expr ¶m), spirit_encoding::space_type> one_of_list; + qi::rule, skipper> one_of; + qi::rule one_of_list; // Evaluating the "interpolate_table" expression. - qi::rule(const MyContext*), qi::locals>, spirit_encoding::space_type> interpolate_table; - qi::rule(const MyContext*, const expr ¶m), spirit_encoding::space_type> interpolate_table_list; + qi::rule, skipper> interpolate_table; + qi::rule interpolate_table_list; - qi::rule, spirit_encoding::space_type> if_else_output; - qi::rule, int>, spirit_encoding::space_type> assignment_statement; -// qi::rule, bool, std::string>, spirit_encoding::space_type> switch_output; + qi::rule, skipper> if_else_output; + qi::rule, skipper> assignment_statement; + // Allocating new local or global variables. + qi::rule, skipper> new_variable_statement; + qi::rule(const MyContext*), skipper> initializer_list; qi::symbols keywords; }; } +static const client::macro_processor g_macro_processor_instance; + static std::string process_macro(const std::string &templ, client::MyContext &context) { - typedef std::string::const_iterator iterator_type; - typedef client::macro_processor macro_processor; - - // Our whitespace skipper. - spirit_encoding::space_type space; - // Our grammar, statically allocated inside the method, meaning it will be allocated the first time - // PlaceholderParser::process() runs. - //FIXME this kind of initialization is not thread safe! - static macro_processor macro_processor_instance; - // Iterators over the source template. - std::string::const_iterator iter = templ.begin(); - std::string::const_iterator end = templ.end(); - // Accumulator for the processed template. - std::string output; - phrase_parse(iter, end, macro_processor_instance(&context), space, output); - if (!context.error_message.empty()) { + std::string output; + phrase_parse(templ.begin(), templ.end(), g_macro_processor_instance(&context), client::skipper{}, output); + if (! context.error_message.empty()) { if (context.error_message.back() != '\n' && context.error_message.back() != '\r') context.error_message += '\n'; throw Slic3r::PlaceholderParserError(context.error_message); From 83bd8b0fa09c090f56c8efd62e53e21420001ce2 Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Wed, 29 Mar 2023 17:53:23 +0200 Subject: [PATCH 035/151] Fixed crash if toolchange G-code modifies final position, because the extruder was not set yet. --- src/libslic3r/GCode.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 4deaa2671f..599292acbe 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -6302,10 +6302,12 @@ Vec2d GCode::point_to_gcode(const Point &point) const // convert a model-space scaled point into G-code coordinates Point GCode::gcode_to_point(const Vec2d &point) const { - Vec2d extruder_offset = EXTRUDER_CONFIG(extruder_offset); - return Point( - scale_(point(0) - m_origin(0) + extruder_offset(0)), - scale_(point(1) - m_origin(1) + extruder_offset(1))); + Vec2d pt = point - m_origin; + if (const Extruder *extruder = m_writer.extruder(); extruder) + // This function may be called at the very start from toolchange G-code when the extruder is not assigned yet. + pt += m_config.extruder_offset.get_at(extruder->id()); + return scaled(pt); + } Vec2d GCode::point_to_gcode_quantized(const Point& point) const From 47736068909c1e71e03eb44610c339d4cc3cf6ec Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 15 Jul 2024 23:07:39 +0800 Subject: [PATCH 036/151] update prusa profiles --- resources/profiles/Prusa.json | 2 +- .../Prusa/filament/Prusa Generic ABS @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic ABS @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic ABS @MINIIS 0.8.json | 1 - .../profiles/Prusa/filament/Prusa Generic ABS @MINIIS.json | 1 - .../profiles/Prusa/filament/Prusa Generic ABS @MK4.json | 1 - .../profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json | 3 +-- resources/profiles/Prusa/filament/Prusa Generic ABS @XL.json | 3 +-- resources/profiles/Prusa/filament/Prusa Generic ABS.json | 1 - .../Prusa/filament/Prusa Generic ASA @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic ASA @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic ASA @MINIIS 0.8.json | 1 - .../profiles/Prusa/filament/Prusa Generic ASA @MINIIS.json | 1 - .../profiles/Prusa/filament/Prusa Generic ASA @MK4.json | 1 - resources/profiles/Prusa/filament/Prusa Generic ASA.json | 1 - .../Prusa/filament/Prusa Generic PA @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic PA @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic PA @MINIIS 0.8.json | 1 - .../profiles/Prusa/filament/Prusa Generic PA @MINIIS.json | 1 - .../Prusa/filament/Prusa Generic PA-CF @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic PA-CF @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic PA-CF @MINIIS 0.8.json | 1 - .../profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS.json | 1 - resources/profiles/Prusa/filament/Prusa Generic PA-CF.json | 1 - resources/profiles/Prusa/filament/Prusa Generic PA.json | 1 - .../Prusa/filament/Prusa Generic PC @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic PC @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic PC @MINIIS 0.8.json | 1 - .../profiles/Prusa/filament/Prusa Generic PC @MINIIS.json | 1 - resources/profiles/Prusa/filament/Prusa Generic PC.json | 1 - .../Prusa/filament/Prusa Generic PETG @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic PETG @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic PETG @MINIIS 0.8.json | 1 - .../profiles/Prusa/filament/Prusa Generic PETG @MINIIS.json | 1 - .../profiles/Prusa/filament/Prusa Generic PETG @MK4.json | 1 - .../profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json | 5 ++--- .../profiles/Prusa/filament/Prusa Generic PETG @XL.json | 3 +-- resources/profiles/Prusa/filament/Prusa Generic PETG.json | 1 - .../Prusa/filament/Prusa Generic PLA @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic PLA @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic PLA @MINIIS 0.8.json | 1 - .../profiles/Prusa/filament/Prusa Generic PLA @MINIIS.json | 1 - .../profiles/Prusa/filament/Prusa Generic PLA @MK4.json | 1 - .../profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json | 5 ++--- resources/profiles/Prusa/filament/Prusa Generic PLA @XL.json | 3 +-- .../Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.8.json | 1 - .../Prusa/filament/Prusa Generic PLA-CF @MINIIS.json | 1 - resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json | 1 - resources/profiles/Prusa/filament/Prusa Generic PLA.json | 1 - .../Prusa/filament/Prusa Generic PVA @MINIIS 0.25.json | 1 - .../Prusa/filament/Prusa Generic PVA @MINIIS 0.6.json | 1 - .../Prusa/filament/Prusa Generic PVA @MINIIS 0.8.json | 1 - .../profiles/Prusa/filament/Prusa Generic PVA @MINIIS.json | 1 - resources/profiles/Prusa/filament/Prusa Generic PVA.json | 1 - .../profiles/Prusa/filament/Prusa Generic TPU @MINIIS.json | 1 - .../profiles/Prusa/filament/Prusa Generic TPU @MK4.json | 1 - resources/profiles/Prusa/filament/Prusa Generic TPU.json | 1 - resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json | 3 +-- resources/profiles/Prusa/filament/Prusament ASA @XL.json | 3 +-- .../profiles/Prusa/filament/Prusament PA-CF @XL 5T.json | 3 +-- resources/profiles/Prusa/filament/Prusament PA-CF @XL.json | 3 +-- .../profiles/Prusa/filament/Prusament PC Blend @XL 5T.json | 3 +-- .../profiles/Prusa/filament/Prusament PC Blend @XL.json | 3 +-- .../profiles/Prusa/filament/Prusament PC-CF @XL 5T.json | 3 +-- resources/profiles/Prusa/filament/Prusament PC-CF @XL.json | 3 +-- resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json | 5 ++--- resources/profiles/Prusa/filament/Prusament PETG @XL.json | 3 +-- resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json | 3 +-- resources/profiles/Prusa/filament/Prusament PLA @XL.json | 3 +-- resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json | 3 +-- resources/profiles/Prusa/filament/Prusament PVB @XL.json | 3 +-- resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json | 3 +-- resources/profiles/Prusa/filament/Prusament rPLA @XL.json | 3 +-- resources/profiles/Prusa/filament/fdm_filament_abs.json | 1 + resources/profiles/Prusa/filament/fdm_filament_asa.json | 1 + resources/profiles/Prusa/filament/fdm_filament_pa.json | 1 + resources/profiles/Prusa/filament/fdm_filament_pa11cf.json | 1 + resources/profiles/Prusa/filament/fdm_filament_pc.json | 1 + resources/profiles/Prusa/filament/fdm_filament_pccf.json | 1 + resources/profiles/Prusa/filament/fdm_filament_pet.json | 1 + resources/profiles/Prusa/filament/fdm_filament_pla.json | 1 + resources/profiles/Prusa/filament/fdm_filament_pva.json | 1 + resources/profiles/Prusa/filament/fdm_filament_pvb.json | 1 + resources/profiles/Prusa/filament/fdm_filament_tpu.json | 1 + .../profiles/Prusa/machine/fdm_machine_common_xl_5t.json | 3 ++- 87 files changed, 39 insertions(+), 101 deletions(-) diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index 62af7c6fa9..071bf1bfb0 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.01.01.20", + "version": "02.01.01.30", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.25.json index f1f91d3f78..b4d82f7794 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB99_5", "setting_id": "GFSA04", "name": "Prusa Generic ABS @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.6.json index 3ef1005948..1a76559cbd 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB99_3", "setting_id": "GFSA04", "name": "Prusa Generic ABS @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.8.json index 8a3fefe1b4..1668805ca4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB99_4", "setting_id": "GFSA04", "name": "Prusa Generic ABS @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS.json index 08495b61ac..97779cd277 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB99_2", "setting_id": "GFSA04", "name": "Prusa Generic ABS @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json index 0de674b7fe..7a98f46d84 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB99_1", "setting_id": "GFSA04", "name": "Prusa Generic ABS @MK4", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json index a299264967..a80bfb533d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB99_1", "setting_id": "GFSA04", "name": "Prusa Generic ABS @XL 5T", "from": "system", @@ -57,7 +56,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @XL.json index 544d644b27..eaaa8223dc 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @XL.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB99_1", "setting_id": "GFSA04", "name": "Prusa Generic ABS @XL", "from": "system", @@ -42,7 +41,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", "filament_retract_lift_below": "1.5", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS.json b/resources/profiles/Prusa/filament/Prusa Generic ABS.json index a23cd0693e..724c0a3f80 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB99", "setting_id": "GFSA04", "name": "Prusa Generic ABS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.25.json index 577d06c5ea..8dd21dc40a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB98_5", "setting_id": "GFSA04", "name": "Prusa Generic ASA @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.6.json index 8d9c6edd6a..f2016a0eeb 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB98_3", "setting_id": "GFSA04", "name": "Prusa Generic ASA @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.8.json index 6eff61395e..739c7b2078 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB98_4", "setting_id": "GFSA04", "name": "Prusa Generic ASA @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS.json index 5fd2131170..f6dd7710f7 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ASA @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB98_2", "setting_id": "GFSA04", "name": "Prusa Generic ASA @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4.json b/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4.json index de823b2306..5fea76436a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ASA @MK4.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB98_1", "setting_id": "GFSA04", "name": "Prusa Generic ASA @MK4", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ASA.json b/resources/profiles/Prusa/filament/Prusa Generic ASA.json index 5631cd38e8..86444714c3 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ASA.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ASA.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB98", "setting_id": "GFSA04", "name": "Prusa Generic ASA", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.25.json index b6576cc0d1..8f37a5bd49 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN99_4", "setting_id": "GFSA04", "name": "Prusa Generic PA @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.6.json index bdb64a4a8b..ef375d0645 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN99_2", "setting_id": "GFSA04", "name": "Prusa Generic PA @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.8.json index 2075ae25ed..b3660df86a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN99_3", "setting_id": "GFSA04", "name": "Prusa Generic PA @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS.json index ff8c622dec..df2b3e8bdb 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN99_1", "setting_id": "GFSA04", "name": "Prusa Generic PA @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.25.json index 68b628210d..6107892792 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN98_4", "setting_id": "GFSA04", "name": "Prusa Generic PA-CF @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.6.json index f19a1545d6..558ed7aac4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN98_2", "setting_id": "GFSA04", "name": "Prusa Generic PA-CF @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.8.json index c4dbec0528..6d2c69a00a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN98_3", "setting_id": "GFSA04", "name": "Prusa Generic PA-CF @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS.json index a0a6b78914..36dbe45128 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA-CF @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN98_1", "setting_id": "GFSA04", "name": "Prusa Generic PA-CF @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA-CF.json b/resources/profiles/Prusa/filament/Prusa Generic PA-CF.json index 8b389957c7..338e3fceb5 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA-CF.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA-CF.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN98", "setting_id": "GFSA04", "name": "Prusa Generic PA-CF", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PA.json b/resources/profiles/Prusa/filament/Prusa Generic PA.json index c92b0a981e..d573a9185c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PA.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PA.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN99", "setting_id": "GFSA04", "name": "Prusa Generic PA", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.25.json index e1ca18d3ae..5eae079a9b 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFC99_4", "setting_id": "GFSA04", "name": "Prusa Generic PC @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.6.json index 2636f59ea3..de41d697a5 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFC99_2", "setting_id": "GFSA04", "name": "Prusa Generic PC @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.8.json index e7bac7b4eb..a336739fda 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFC99_3", "setting_id": "GFSA04", "name": "Prusa Generic PC @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS.json index 3dadd23764..e07f12a355 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PC @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFC99_1", "setting_id": "GFSA04", "name": "Prusa Generic PC @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PC.json b/resources/profiles/Prusa/filament/Prusa Generic PC.json index b1821e1d4d..88844a11bb 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PC.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PC.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFC99", "setting_id": "GFSA04", "name": "Prusa Generic PC", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.25.json index 8090554d09..4c64f88db2 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFG99_5", "setting_id": "GFSA04", "name": "Prusa Generic PETG @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.6.json index 8dad5b26e8..8a32807d15 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFG99_3", "setting_id": "GFSA04", "name": "Prusa Generic PETG @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.8.json index 8829ea6f8f..e53595ee01 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFG99_4", "setting_id": "GFSA04", "name": "Prusa Generic PETG @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS.json index e9b57ebada..7ce30af419 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFG99_2", "setting_id": "GFSA04", "name": "Prusa Generic PETG @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json index 9caa793e9f..7eedb38b60 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFG99_1", "setting_id": "GFSA04", "name": "Prusa Generic PETG @MK4", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json index 5f26694dc5..ef5778964f 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @XL 5T.json @@ -1,7 +1,6 @@ { "type": "filament", - "filament_id": "GFL99_1", - "setting_id": "GFSA04", + "setting_id": "GFG99_PRUSA_0", "name": "Prusa Generic PETG @XL 5T", "from": "system", "instantiation": "true", @@ -60,7 +59,7 @@ ], "filament_wipe": "1", "filament_retract_before_wipe": "20%", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @XL.json index c2c535cd91..4767e5ef77 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @XL.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusa Generic PETG @XL", "from": "system", @@ -45,7 +44,7 @@ "filament_retract_lift_below": "1.5", "filament_wipe": "1", "filament_retract_before_wipe": "20%", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG.json b/resources/profiles/Prusa/filament/Prusa Generic PETG.json index 9076a6c3aa..532ad318d0 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFG99", "setting_id": "GFSA04", "name": "Prusa Generic PETG", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.25.json index 9df6c863c0..bc64fdef61 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_5", "setting_id": "GFSA04", "name": "Prusa Generic PLA @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.6.json index 667c98c801..5eaa277a93 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_3", "setting_id": "GFSA04", "name": "Prusa Generic PLA @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.8.json index 711b271b1c..4f4b21eab2 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_4", "setting_id": "GFSA04", "name": "Prusa Generic PLA @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS.json index 2ac1386e71..fcb2e730ba 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_2", "setting_id": "GFSA04", "name": "Prusa Generic PLA @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json index d3293a39cc..6f8952d40e 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusa Generic PLA @MK4", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json index ff37c0b691..fc3fea69cd 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusa Generic PLA @XL 5T", "from": "system", @@ -55,7 +54,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", @@ -64,4 +63,4 @@ "Prusa XL 5T 0.6 nozzle", "Prusa XL 5T 0.8 nozzle" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @XL.json index 06acddef20..6ab8b011ee 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @XL.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusa Generic PLA @XL", "from": "system", @@ -40,7 +39,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", "filament_retract_lift_below": "0.6", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.25.json index 929fe26671..e9c5476044 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL98_5", "setting_id": "GFSA04", "name": "Prusa Generic PLA-CF @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.6.json index cee0363300..f095249c54 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL98_3", "setting_id": "GFSA04", "name": "Prusa Generic PLA-CF @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.8.json index 1bfce10352..c784a473ab 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL98_4", "setting_id": "GFSA04", "name": "Prusa Generic PLA-CF @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS.json index 24559261d9..740c2bfe19 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL98_1", "setting_id": "GFSA04", "name": "Prusa Generic PLA-CF @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json index 4461005ad3..6bb298a0f4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL98", "setting_id": "GFSA04", "name": "Prusa Generic PLA-CF", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA.json b/resources/profiles/Prusa/filament/Prusa Generic PLA.json index f31ec71c51..049691036c 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99", "setting_id": "GFSA04", "name": "Prusa Generic PLA", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.25.json b/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.25.json index bbbc4a6aa9..34ce1a84e4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.25.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.25.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFS99_4", "setting_id": "GFSA04", "name": "Prusa Generic PVA @MINIIS 0.25", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.6.json b/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.6.json index d9f64abbed..3ee44fa9a6 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.6.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.6.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFS99_2", "setting_id": "GFSA04", "name": "Prusa Generic PVA @MINIIS 0.6", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.8.json b/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.8.json index 5e0055a5fb..eeb2dbd43d 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.8.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS 0.8.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFS99_3", "setting_id": "GFSA04", "name": "Prusa Generic PVA @MINIIS 0.8", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS.json index 164b717964..b5f5602f37 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PVA @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFS99_1", "setting_id": "GFSA04", "name": "Prusa Generic PVA @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PVA.json b/resources/profiles/Prusa/filament/Prusa Generic PVA.json index 2c0e2017e3..c5cdfa8518 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PVA.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PVA.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFS99", "setting_id": "GFSA04", "name": "Prusa Generic PVA", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MINIIS.json b/resources/profiles/Prusa/filament/Prusa Generic TPU @MINIIS.json index b9214b3031..3baf1ac2e4 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MINIIS.json +++ b/resources/profiles/Prusa/filament/Prusa Generic TPU @MINIIS.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFU99_2", "setting_id": "GFSA04", "name": "Prusa Generic TPU @MINIIS", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4.json b/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4.json index ac940c00aa..27fbaa6601 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic TPU @MK4.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFU99_1", "setting_id": "GFSA04", "name": "Prusa Generic TPU @MK4", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU.json b/resources/profiles/Prusa/filament/Prusa Generic TPU.json index 47239a500e..5384820c98 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU.json +++ b/resources/profiles/Prusa/filament/Prusa Generic TPU.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFU99", "setting_id": "GFSA04", "name": "Prusa Generic TPU", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json index 2ec8efea09..2022485fab 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB98", "setting_id": "GFSA04", "name": "Prusament ASA @XL 5T", "from": "system", @@ -59,7 +58,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament ASA @XL.json b/resources/profiles/Prusa/filament/Prusament ASA @XL.json index 36e1f6c601..496d63fd1f 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFB98", "setting_id": "GFSA04", "name": "Prusament ASA @XL", "from": "system", @@ -44,7 +43,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", "filament_retract_lift_below": "1.5", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.04{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json index ffd0f3cfe3..c15ee9784e 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN98", "setting_id": "GFSA04", "name": "Prusament PA-CF @XL 5T", "from": "system", @@ -59,7 +58,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json b/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json index 28d4862819..d718cf7966 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFN98", "setting_id": "GFSA04", "name": "Prusament PA-CF @XL", "from": "system", @@ -44,7 +43,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", "filament_retract_lift_below": "1.5", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json index 0b3077d471..aad5ab31ef 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament PC Blend @XL 5T", "from": "system", @@ -59,7 +58,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json b/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json index a2bfaada98..025cc39eee 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament PC Blend @XL", "from": "system", @@ -44,7 +43,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", "filament_retract_lift_below": "1.5", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json index e82f40ba46..1bba76b7c4 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament PC-CF @XL 5T", "from": "system", @@ -59,7 +58,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json b/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json index 79c707f999..44bbd20d6a 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament PC-CF @XL", "from": "system", @@ -44,7 +43,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", "filament_retract_lift_below": "1.5", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.016{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.09{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S45 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json index 10856125da..5c62c313cc 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json @@ -1,7 +1,6 @@ { "type": "filament", - "filament_id": "GFL99_1", - "setting_id": "GFSA04", + "setting_id": "GFG99_PRUSA_1", "name": "Prusament PETG @XL 5T", "from": "system", "instantiation": "true", @@ -60,7 +59,7 @@ ], "filament_wipe": "1", "filament_retract_before_wipe": "20%", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PETG @XL.json b/resources/profiles/Prusa/filament/Prusament PETG @XL.json index c4505feda5..da28d7d588 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament PETG @XL", "from": "system", @@ -45,7 +44,7 @@ "filament_retract_lift_below": "1.5", "filament_wipe": "1", "filament_retract_before_wipe": "20%", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.07{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.053{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json index ede4ce5755..b3efef6127 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament PLA @XL 5T", "from": "system", @@ -55,7 +54,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PLA @XL.json b/resources/profiles/Prusa/filament/Prusament PLA @XL.json index 949dfb23b3..fe9f0b5281 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament PLA @XL", "from": "system", @@ -40,7 +39,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", "filament_retract_lift_below": "0.6", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json index f7d360fdb7..354f904cef 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFS99", "setting_id": "GFSA04", "name": "Prusament PVB @XL 5T", "from": "system", @@ -60,7 +59,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament PVB @XL.json b/resources/profiles/Prusa/filament/Prusament PVB @XL.json index c7e1e5fe0e..67b2c9501c 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFS99", "setting_id": "GFSA04", "name": "Prusament PVB @XL", "from": "system", @@ -45,7 +44,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", "filament_retract_lift_below": "0.6", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json index af36626c3f..9a7cce6455 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament rPLA @XL 5T", "from": "system", @@ -58,7 +57,7 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 5T 0.25 nozzle", "Prusa XL 5T 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @XL.json b/resources/profiles/Prusa/filament/Prusament rPLA @XL.json index 6fa3b54c17..cfe956641f 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @XL.json @@ -1,6 +1,5 @@ { "type": "filament", - "filament_id": "GFL99_1", "setting_id": "GFSA04", "name": "Prusament rPLA @XL", "from": "system", @@ -43,7 +42,7 @@ "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", "filament_retract_lift_below": "0.6", - "filament_start_gcode": "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp", + "filament_start_gcode": ["; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_XLIS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp"], "compatible_printers": [ "Prusa XL 0.25 nozzle", "Prusa XL 0.3 nozzle", diff --git a/resources/profiles/Prusa/filament/fdm_filament_abs.json b/resources/profiles/Prusa/filament/fdm_filament_abs.json index a00127c466..d60e0c16bd 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_abs.json +++ b/resources/profiles/Prusa/filament/fdm_filament_abs.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFB99", "cool_plate_temp": [ "105" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_asa.json b/resources/profiles/Prusa/filament/fdm_filament_asa.json index a087f32f0c..7aa9917aa4 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_asa.json +++ b/resources/profiles/Prusa/filament/fdm_filament_asa.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFB98", "cool_plate_temp" : [ "105" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_pa.json b/resources/profiles/Prusa/filament/fdm_filament_pa.json index cf59c08b65..c473b6a203 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pa.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pa.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFN99", "cool_plate_temp" : [ "0" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_pa11cf.json b/resources/profiles/Prusa/filament/fdm_filament_pa11cf.json index b3083a5e20..2afd4c1696 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pa11cf.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pa11cf.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFN98", "cool_plate_temp" : [ "0" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_pc.json b/resources/profiles/Prusa/filament/fdm_filament_pc.json index b9f61730aa..2a152fe354 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pc.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pc.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFC99", "cool_plate_temp" : [ "0" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_pccf.json b/resources/profiles/Prusa/filament/fdm_filament_pccf.json index ce4afb1f9a..1c6e13f360 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pccf.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pccf.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFC98", "cool_plate_temp" : [ "0" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_pet.json b/resources/profiles/Prusa/filament/fdm_filament_pet.json index dcc3e74e42..b494b4d3a7 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pet.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pet.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFT02", "cool_plate_temp" : [ "60" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_pla.json b/resources/profiles/Prusa/filament/fdm_filament_pla.json index f065b5c37a..9e7c6746f2 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pla.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pla.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFL99", "fan_cooling_layer_time": [ "100" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_pva.json b/resources/profiles/Prusa/filament/fdm_filament_pva.json index 65e3b71a9c..ee8e4311e3 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pva.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pva.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFS99", "cool_plate_temp" : [ "35" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_pvb.json b/resources/profiles/Prusa/filament/fdm_filament_pvb.json index 49c4911c53..b4fed01543 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_pvb.json +++ b/resources/profiles/Prusa/filament/fdm_filament_pvb.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFS98", "cool_plate_temp" : [ "35" ], diff --git a/resources/profiles/Prusa/filament/fdm_filament_tpu.json b/resources/profiles/Prusa/filament/fdm_filament_tpu.json index cb20416bb7..27a8b984b7 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_tpu.json +++ b/resources/profiles/Prusa/filament/fdm_filament_tpu.json @@ -4,6 +4,7 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", + "filament_id": "GFU99", "cool_plate_temp" : [ "30" ], diff --git a/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json b/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json index ff3cabed2b..eedd38b152 100644 --- a/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json +++ b/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json @@ -14,7 +14,8 @@ "machine_pause_gcode": "M601", "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P\"Input shaper\" ; FW feature check\nM115 U6.0.3+14902\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\n{if (is_extruder_used[0])}M862.1 T0 P{nozzle_diameter[0]}{endif}\n{if (is_extruder_used[1])}M862.1 T1 P{nozzle_diameter[1]}{endif}\n{if (is_extruder_used[2])}M862.1 T2 P{nozzle_diameter[2]}{endif}\n{if (is_extruder_used[3])}M862.1 T3 P{nozzle_diameter[3]}{endif}\n{if (is_extruder_used[4])}M862.1 T4 P{nozzle_diameter[4]}{endif}\n\n; turn off unused heaters\n{if ! is_extruder_used[0]} M104 T0 S0 {endif}\n{if ! is_extruder_used[1]} M104 T1 S0 {endif}\n{if num_extruders > 2 and ! is_extruder_used[2]} M104 T2 S0 {endif}\n{if num_extruders > 3 and ! is_extruder_used[3]} M104 T3 S0 {endif}\n{if num_extruders > 4 and ! is_extruder_used[4]} M104 T4 S0 {endif}\n\nM217 Z{max(zhop, 2.0)} ; set toolchange z hop to 2mm, or zhop variable from slicer if higher\n; set bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nG0 Z5 ; add Z clearance\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == \"PC\" or filament_type[initial_tool] == \"PA\") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == \"FLEX\") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; Home XY\nG28 XY\n; try picking tools used in print\nG1 F{travel_speed * 60}\n{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}\n{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}\n{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}\n{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}\n{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}\n; select tool that will be used to home & MBL\nT{initial_tool} S1 L0 D0\n; home Z with MBL tool\nM84 E ; turn off E motor\nG28 Z\nG0 Z5 ; add Z clearance\n\nM104 T{initial_tool} S{if idle_temperature[initial_tool] == 0}70{else}{idle_temperature[initial_tool]}{endif} ; set idle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG29 G ; absorb heat\n\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == \"PC\" or filament_type[initial_tool] == \"PA\") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == \"FLEX\") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z5 F480 ; move away in Z\nM107 ; turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W{(((is_extruder_used[4]) or ((is_extruder_used[3]) or (is_extruder_used[2]))) ? \"300\" : ((is_extruder_used[1]) ? \"130\" : \"50\"))} H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nG1 Z10 F720 ; move away in Z\nG1 F{travel_speed * 60}\nP0 S1 L1 D0; park the tool\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T0 S{first_layer_temperature[0]}\nT0 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[0]}10{else}30{endif} X40 Z0.2 F{if filament_multitool_ramming[0]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X70 E9 F800 ; continue purging and wipe the nozzle\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[0]} F2400 ; retract\n{e_retracted[0] = 1.5 * retract_length[0]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[0] == 0 ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T1 S{first_layer_temperature[1]}\nT1 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(1 == 0 ? 30 : (1 == 1 ? 150 : (1 == 2 ? 210 : 330)))} Y{(1 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[1]}10{else}30{endif} X140 Z0.2 F{if filament_multitool_ramming[1]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X110 E9 F800 ; continue purging and wipe the nozzle\nG0 X{110 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{110 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[1]} F2400 ; retract\n{e_retracted[1] = 1.5 * retract_length[1]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[1] == 0 ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T2 S{first_layer_temperature[2]}\nT2 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(2 == 0 ? 30 : (2 == 1 ? 150 : (2 == 2 ? 210 : 330)))} Y{(2 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[2]}10{else}30{endif} X220 Z0.2 F{if filament_multitool_ramming[2]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X250 E9 F800 ; continue purging and wipe the nozzle\nG0 X{250 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{250 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[2]} F2400 ; retract\n{e_retracted[2] = 1.5 * retract_length[2]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[2] == 0 ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T3 S{first_layer_temperature[3]}\nT3 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(3 == 0 ? 30 : (3 == 1 ? 150 : (3 == 2 ? 210 : 330)))} Y{(3 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[3]}10{else}30{endif} X320 Z0.2 F{if filament_multitool_ramming[3]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[3]} F2400 ; retract\n{e_retracted[3] = 1.5 * retract_length[3]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[3] == 0 ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T4 S{first_layer_temperature[4]}\nT4 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(4 == 0 ? 30 : (4 == 1 ? 150 : (4 == 2 ? 210 : 330)))} Y{(4 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[4]}10{else}30{endif} X320 Z0.2 F{if filament_multitool_ramming[4]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[4]} F2400 ; retract\n{e_retracted[4] = 1.5 * retract_length[4]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[4] == 0 ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool} S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330)))} Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[initial_tool]}10{else}30{endif} X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if filament_multitool_ramming[initial_tool]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = 1.5 * retract_length[initial_tool]}\nG92 E0 ; reset extruder position\n", "machine_end_gcode": "G4 ; wait\n\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+5, max_print_height)}{endif} ; Move bed down\n\nP0 S1 ; park tool\n\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+97, max_print_height)} F300{endif} ; Move bed further down\n\n; turn off extruder heaters\n{if is_extruder_used[0]} M104 T0 S0 {endif}\n{if is_extruder_used[1]} M104 T1 S0 {endif}\n{if is_extruder_used[2]} M104 T2 S0 {endif}\n{if is_extruder_used[3]} M104 T3 S0 {endif}\n{if is_extruder_used[4]} M104 T4 S0 {endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow percentage\nM84 ; disable motors\nM77 ; stop print timer\n; max_layer_z = [max_layer_z]", - "change_filament_gcode": "; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])\n{if travel_speed > 350.0}\nG1 F{350.0 * 60} \n{else}\nG1 F{travel_speed * 60} \n{endif}\nP0 S1 L2 D0\n; [layer_num]\n{if layer_num == 0}\nM109 S{first_layer_temperature[next_extruder]} T[next_extruder]\n{else}\nM109 S{nozzle_temperature[next_extruder]} T[next_extruder]\n{endif}\nT[next_extruder] S1 L0 D0\n", + "change_filament_gcode": "; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])\n{\nposition[2] = position[2] + 2.0;\n}\n{if travel_speed > 350.0}\nG1 F{350.0 * 60} \n{else}\nG1 F{travel_speed * 60} \n{endif}\nP0 S1 L2 D0\n; [layer_num]\n{if layer_num == 0}\nM109 S{first_layer_temperature[next_extruder]} T[next_extruder]\n{else}\nM109 S{nozzle_temperature[next_extruder]} T[next_extruder]\n{endif}\nT[next_extruder] S1 L0 D0\n", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "printer_notes": "Do not remove the keywords below.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_XLIS\nPG\nINPUT_SHAPER" From 5fc8f510b8decc6862ee6872d84ffcf6d7673c5a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 16 Jul 2024 00:02:38 +0800 Subject: [PATCH 037/151] Simple preheat, temperary solution --- src/libslic3r/GCode/WipeTower2.cpp | 47 +++++++++++++++++++++++++++++- src/libslic3r/GCode/WipeTower2.hpp | 2 ++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index 6bebe14b76..548e29ab5b 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -781,7 +781,49 @@ std::vector WipeTower2::prime( return results; } +#define FLAVOR_IS(val) this->m_gcode_flavor == val +#define FLAVOR_IS_NOT(val) this->m_gcode_flavor != val +std::string WipeTower2::set_preheat_temperature(unsigned int temperature, bool wait, int tool) +{ + if (wait && (FLAVOR_IS(gcfMakerWare) || FLAVOR_IS(gcfSailfish))) + return ""; + + std::string code, comment; + if (wait && FLAVOR_IS_NOT(gcfTeacup) && FLAVOR_IS_NOT(gcfRepRapFirmware)) { + code = "M109"; + comment = "set nozzle temperature and wait for it to be reached"; + } else { + if (FLAVOR_IS(gcfRepRapFirmware)) { // M104 is deprecated on RepRapFirmware + code = "G10"; + } else { + code = "M104"; + } + comment = "preheat next nozzle"; + } + + std::ostringstream gcode; + gcode << code << " "; + if (FLAVOR_IS(gcfMach3) || FLAVOR_IS(gcfMachinekit)) { + gcode << "P"; + } else { + gcode << "S"; + } + gcode << temperature; + if (tool != -1) { + if (FLAVOR_IS(gcfRepRapFirmware)) { + gcode << " P" << tool; + } else { + gcode << " T" << tool; + } + } + gcode << " ; " << comment << "\n"; + + if ((FLAVOR_IS(gcfTeacup) || FLAVOR_IS(gcfRepRapFirmware)) && wait) + gcode << "M116 ; wait for temperature to be reached\n"; + + return gcode.str(); +} WipeTower::ToolChangeResult WipeTower2::tool_change(size_t tool) { size_t old_tool = m_current_tool; @@ -836,9 +878,12 @@ WipeTower::ToolChangeResult WipeTower2::tool_change(size_t tool) // Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool. if (tool != (unsigned int)-1){ // This is not the last change. + auto new_tool_temp = is_first_layer() ? m_filpar[tool].first_layer_temperature : m_filpar[tool].temperature; + // Orca: pre-heat next tool, it's a temperary solution before impelment the proper preheat. + writer.append(set_preheat_temperature(new_tool_temp, false, tool)); toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material, (is_first_layer() ? m_filpar[m_current_tool].first_layer_temperature : m_filpar[m_current_tool].temperature), - (is_first_layer() ? m_filpar[tool].first_layer_temperature : m_filpar[tool].temperature)); + new_tool_temp); toolchange_Change(writer, tool, m_filpar[tool].material); // Change the tool, set a speed override for soluble and flex materials. toolchange_Load(writer, cleaning_box); writer.travel(writer.x(), writer.y()-m_perimeter_width); // cooling and loading were done a bit down the road diff --git a/src/libslic3r/GCode/WipeTower2.hpp b/src/libslic3r/GCode/WipeTower2.hpp index 07c5ca330f..1d37cbe791 100644 --- a/src/libslic3r/GCode/WipeTower2.hpp +++ b/src/libslic3r/GCode/WipeTower2.hpp @@ -255,6 +255,8 @@ private: // Goes through m_plan, calculates border and finish_layer extrusions and subtracts them from last wipe void save_on_last_wipe(); + // Orca: temp help function to set temperature + std::string set_preheat_temperature(unsigned int temperature, bool wait, int tool); // to store information about tool changes for a given layer struct WipeTowerInfo{ From 81f160e2415a996d8f8d0410d0b72a9a617c8b9f Mon Sep 17 00:00:00 2001 From: serhii-nakon <57632032+serhii-nakon@users.noreply.github.com> Date: Tue, 16 Jul 2024 14:47:47 +0300 Subject: [PATCH 038/151] AppImage: Fix env overrides that cause segfault and EGL initialization error for Mesa from GIT (#6141) Fix override that cause segfault and EGL initialization error When user built Mesa from GIT and load it using env variables LD_LIBRARY_PATH and LIBGL_DRIVERS_PATH it override LD_LIBRARY_PATH inside AppImage but other variable LIBGL_DRIVERS_PATH not override and it cause EGL init error. --- src/platform/unix/BuildLinuxImage.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/unix/BuildLinuxImage.sh.in b/src/platform/unix/BuildLinuxImage.sh.in index be88461992..96cf25bc14 100644 --- a/src/platform/unix/BuildLinuxImage.sh.in +++ b/src/platform/unix/BuildLinuxImage.sh.in @@ -37,7 +37,7 @@ echo -n "[9/9] Generating Linux app..." cat << EOF >@SLIC3R_APP_CMD@ #!/bin/bash DIR=\$(readlink -f "\$0" | xargs dirname) -export LD_LIBRARY_PATH="\$DIR/bin" +export LD_LIBRARY_PATH="\$DIR/bin:\$LD_LIBRARY_PATH" # FIXME: OrcaSlicer segfault workarounds # 1) OrcaSlicer will segfault on systems where locale info is not as expected (i.e. Holo-ISO arch-based distro) From fb37fc27adc2b05f197b85c2efee55ebf49c5976 Mon Sep 17 00:00:00 2001 From: Carlos Francisco Caruncho Serrano Date: Tue, 16 Jul 2024 13:51:46 +0200 Subject: [PATCH 039/151] Some Spanish Translation Fixes (#6115) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update OrcaSlicer_es.po * Traducción español Beta 2.1.0 * Update text.js * Minor fix PR * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Some fixes to PR * Update OrcaSlicer_es.po --- localization/i18n/es/OrcaSlicer_es.po | 793 ++++++++++++-------------- 1 file changed, 353 insertions(+), 440 deletions(-) diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index a39f1db9f0..20650d3d01 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-06-21 20:03+0800\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -456,7 +456,7 @@ msgid "Cut position" msgstr "Posición de corte" msgid "Reset cutting plane" -msgstr "Editar conectores" +msgstr "Reiniciar plano de corte" msgid "Edit connectors" msgstr "Editar conectores" @@ -598,14 +598,14 @@ msgstr "Mostrar estructura de alambre" msgid "%1%" msgstr "%1%" -msgid "Can't apply when process preview." +msgid "Can't apply when proccess preview." msgstr "No se puede aplicar cuando la vista previa del proceso." msgid "Operation already cancelling. Please wait few seconds." msgstr "Operación ya cancelada. Por favor, espere unos segundos." msgid "Face recognition" -msgstr "Reconocimiento facial" +msgstr "Reconocimiento de caras" msgid "Perform Recognition" msgstr "Realizar el reconocimiento" @@ -667,7 +667,7 @@ msgstr "Superficie" msgid "Horizontal text" msgstr "Texto horizontal" -msgid "Shift + Mouse move up or down" +msgid "Shift + Mouse move up or dowm" msgstr "Shift + Mover ratón arriba u abajo" msgid "Rotate text" @@ -691,10 +691,10 @@ msgid "Embossed text" msgstr "Texto en relieve" msgid "Enter emboss gizmo" -msgstr "Introducir dispositivo de relieve" +msgstr "Entrar herramienta de relieve" msgid "Leave emboss gizmo" -msgstr "Abandonar dispositivo de relieve" +msgstr "Abandonar herramienta de relieve" msgid "Embossing actions" msgstr "Acciones de relieve" @@ -763,7 +763,7 @@ msgid "Text doesn't show current horizontal alignment." msgstr "El texto no muestra la alineación horizontal actual." msgid "Revert font changes." -msgstr "Revertir cambios de fuente." +msgstr "Deshacer cambios de fuente." #, boost-format msgid "Font \"%1%\" can't be selected." @@ -893,35 +893,35 @@ msgid "Style \"%1%\" can't be used and will be removed from a list." msgstr "El estilo \"%1%\" no se puede utilizar y se eliminará de una lista." msgid "Unset italic" -msgstr "Cursiva no definida" +msgstr "Desactivar cursiva" msgid "Set italic" -msgstr "Poner cursiva" +msgstr "Aplicar cursiva" msgid "Unset bold" msgstr "Desactivar negrita" msgid "Set bold" -msgstr "Activar negrita" +msgstr "Aplicar negrita" msgid "Revert text size." -msgstr "Revertir tamaño de texto." +msgstr "Deshacer tamaño de texto." msgid "Revert embossed depth." -msgstr "Revertir profundidad en relieve." +msgstr "Deshacer profundidad en relieve." msgid "" "Advanced options cannot be changed for the selected font.\n" "Select another font." msgstr "" -"Las opciones avanzadas no pueden modificarse para la fuente seleccionada. " +"Las opciones avanzadas no pueden modificarse para la fuente seleccionada.\n" "Seleccione otra fuente." msgid "Revert using of model surface." -msgstr "Revertir el uso de la superficie del modelo." +msgstr "Deshacer el uso de la superficie del modelo." msgid "Revert Transformation per glyph." -msgstr "Revertir Transformación por glifo." +msgstr "Deshacer Transformación por glifo." msgid "Set global orientation for whole text." msgstr "Establece la orientación global para todo el texto." @@ -954,35 +954,35 @@ msgid "Bottom" msgstr "Bajo" msgid "Revert alignment." -msgstr "Revertir alineamiento." +msgstr "Deshacer alineamiento." #. TRN EmbossGizmo: font units msgid "points" msgstr "puntos" msgid "Revert gap between characters" -msgstr "Revert gap between characters" +msgstr "Deshacer el espacio entre caracteres" msgid "Distance between characters" msgstr "Distancia entre caracteres" msgid "Revert gap between lines" -msgstr "Revertir el espacio entre líneas" +msgstr "Deshacer el espacio entre líneas" msgid "Distance between lines" msgstr "Distancia entre líneas" msgid "Undo boldness" -msgstr "Deshacer el atrevimiento" +msgstr "Deshacer engrosado" msgid "Tiny / Wide glyphs" msgstr "Glifos minúsculos / anchos" msgid "Undo letter's skew" -msgstr "Deshacer la inclinación de la letra" +msgstr "Deshacer la inclinación de letra" msgid "Italic strength ratio" -msgstr "Relación de fuerza de la cursiva" +msgstr "Relación de fuerza de cursiva" msgid "Undo translation" msgstr "Deshacer la traducción" @@ -1016,7 +1016,7 @@ msgstr "Orienta el texto hacia la cámara." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Application selected a similar " +"Can't load exactly same font(\"%1%\"). Aplication selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "No se puede cargar exactamente la misma fuente(\"%1%\"). La aplicación " @@ -1420,8 +1420,8 @@ msgid "" "OrcaSlicer will terminate because of a localization error. It will be " "appreciated if you report the specific scenario this issue happened." msgstr "" -"OrcaSlicer terminará debido a un error de posición. Le agradeceremos que nos " -"informe del escenario específico en el que se ha producido este problema." +"OrcaSlicer se cerrará debido a un error de posición. Le agradeceremos que " +"nos informe del escenario específico en el que se ha producido este problema." # msgid "OrcaSlicer will terminate because of a localization error. It will be # appreciated if you report the specific scenario this issue happened." @@ -1641,7 +1641,7 @@ msgid "Support" msgstr "Soportes" msgid "Flush options" -msgstr "Opciones de caudal" +msgstr "Opciones de flujo" msgid "Speed" msgstr "Velocidad" @@ -1676,7 +1676,7 @@ msgstr "Ancho de Extrusión" msgid "Wipe options" msgstr "Opciones de limpieza" -msgid "Bed adhesion" +msgid "Bed adhension" msgstr "Adhesión a la cama" msgid "Add part" @@ -1962,6 +1962,12 @@ msgid "Auto orient the object to improve print quality." msgstr "" "Orienta automáticamente el objeto para mejorar la calidad de la impresión." +msgid "Split the selected object into mutiple objects" +msgstr "Dividir el objeto seleccionado en múltiples objetos" + +msgid "Split the selected object into mutiple parts" +msgstr "Dividir el objeto seleccionado en múltiples piezas" + msgid "Select All" msgstr "Seleccionar Todo" @@ -2026,7 +2032,7 @@ msgid "Lock" msgstr "Bloquear" msgid "Edit Plate Name" -msgstr "Editar el nombre de la" +msgstr "Editar nombre de la bandeja" msgid "Name" msgstr "Nombre" @@ -2170,7 +2176,7 @@ msgid "Part Settings to modify" msgstr "Ajustes de pieza modificables" msgid "Layer range Settings to modify" -msgstr "Ajustes de Capa modificables" +msgstr "Ajustes de capa modificables" msgid "Part manipulation" msgstr "Manipulación de piezas" @@ -2232,8 +2238,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "Se ha reparado el siguiente modelo de objeto" msgstr[1] "Se han reparado los siguientes objetos del modelo" -msgid "Failed to repair following model object" -msgid_plural "Failed to repair following model objects" +msgid "Failed to repair folowing model object" +msgid_plural "Failed to repair folowing model objects" msgstr[0] "No se ha podido reparar el siguiente objeto modelo" msgstr[1] "No se han podido reparar los siguientes objetos del modelo" @@ -2241,7 +2247,7 @@ msgid "Repairing was canceled" msgstr "La reparación fue cancelada" msgid "Additional process preset" -msgstr "Proceso adicional preestablecido" +msgstr "Perfil de proceso adicional" msgid "Remove parameter" msgstr "Eliminar parámetro" @@ -2483,7 +2489,7 @@ msgid "Calibrate again" msgstr "Calibrar de nuevo" msgid "Cancel calibration" -msgstr "Cancelar calibración" +msgstr "Cancelar calibración" msgid "Idling..." msgstr "En espera..." @@ -2533,7 +2539,7 @@ msgstr "" "No podemos hacer un auto posicionamiento en estos objetos." msgid "No arrangable objects are selected." -msgstr "No se han seleccionado objetos de posicionamiento." +msgstr "No se han seleccionado objetos posicionables." msgid "" "This plate is locked,\n" @@ -2675,7 +2681,7 @@ msgstr "" msgid "Print file not found, Please slice it again and send it for printing." msgstr "" -"Archivo de impresión no encontrado; por favor, laminelo de nuevo y envíelo " +"Archivo de impresión no encontrado; por favor, lamínelo de nuevo y envíelo " "para imprimir." msgid "" @@ -2697,7 +2703,7 @@ msgstr "Tarea de envío de impresión fallida." msgid "Service Unavailable" msgstr "Servicio No Disponible" -msgid "Unknown Error." +msgid "Unkown Error." msgstr "Error Desconocido." msgid "Sending print configuration" @@ -2706,7 +2712,8 @@ msgstr "Enviando la configuración de impresión" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %ss" msgstr "" -"Envío exitoso. Se saltará automaticamente a la página del dispositivo en %ss" +"Envío exitoso. Se alternará automáticamente a la página del dispositivo en " +"%ss" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" @@ -2788,7 +2795,7 @@ msgid "License" msgstr "Licencia" msgid "Orca Slicer is licensed under " -msgstr "Orca Slicer tiene licencia bajo " +msgstr "Orca Slicer está licenciada sobre" msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versión 3" @@ -2829,7 +2836,7 @@ msgid "" "contributors." msgstr "" "Slic3r fue creado por Alessandro Ranellucci con la ayuda de muchos otros " -"contruyentes." +"contribuyentes." msgid "Version" msgstr "Versión" @@ -2868,13 +2875,13 @@ msgstr "SN" msgid "Setting AMS slot information while printing is not supported" msgstr "" -"Ajustes de información de ranura AMS mientras la impresión no sea soportada" +"Ajustes de información de ranura AMS mientras la impresión no tenga soportes" msgid "Factors of Flow Dynamics Calibration" msgstr "Factores de Calibración de Dinámicas de Caudal" msgid "PA Profile" -msgstr "Perfil de Avance de Presión de Línea" +msgstr "Perfil de Avance de Presión Lineal" msgid "Factor K" msgstr "Factor K" @@ -2908,7 +2915,7 @@ msgid "Custom Color" msgstr "Color Personalizado" msgid "Dynamic flow calibration" -msgstr "Calibración de caudal dinámico" +msgstr "Calibración de flujo dinámico" msgid "" "The nozzle temp and max volumetric speed will affect the calibration " @@ -2916,9 +2923,9 @@ msgid "" "auto-filled by selecting a filament preset." msgstr "" "La temperatura y la velocidad volumétrica máxima de la boquilla afectará a " -"los resultados de los ajustes. Por favor, rellena los mismos valores de la " -"actual impresión. Ellos pueden ser auto-rellenados seleccionando un perfil " -"de filamento." +"los resultados de calibración. Por favor, rellena los mismos valores de la " +"impresión. Ellos pueden ser auto-rellenados seleccionando un perfil de " +"filamento." msgid "Nozzle Diameter" msgstr "Diámetro" @@ -2939,7 +2946,7 @@ msgid "℃" msgstr "℃" msgid "Bed temperature" -msgstr "Temperatura de la cama" +msgstr "Temperatura de cama" msgid "mm³" msgstr "mm³" @@ -2980,7 +2987,7 @@ msgid "%s does not support %s" msgstr "%s no soporta %s" msgid "Dynamic flow Calibration" -msgstr "Calibración de caudal dinámico" +msgstr "Calibración Dinámica de Caudal" msgid "Step" msgstr "Paso" @@ -3023,8 +3030,8 @@ msgstr "" msgid "" "Config which AMS slot should be used for a filament used in the print job" msgstr "" -"La configuración de ranura la cual debe ser usada para el filamento es usada " -"en el trabajo de impresión" +"Configurar qué ranura AMS debe utilizarse para un filamento utilizado en el " +"trabajo de impresión." msgid "Filament used in this print job" msgstr "Filamento usado en este trabajo de impresión" @@ -3033,7 +3040,7 @@ msgid "AMS slot used for this filament" msgstr "Ranura AMS usada para este filamento" msgid "Click to select AMS slot manually" -msgstr "Presiona para seleccionar la ranura AMS automaticamente" +msgstr "Presiona para seleccionar la ranura AMS manualmente" msgid "Do not Enable AMS" msgstr "No Activar AMS" @@ -3112,7 +3119,7 @@ msgstr "" "información, dejándola en blanco para que usted la introduzca manualmente." msgid "Power on update" -msgstr "Actualización de encendido" +msgstr "Actualización al encender" msgid "" "The AMS will automatically read the information of inserted filament on " @@ -3142,7 +3149,7 @@ msgid "" msgstr "" "El AMS estimará la capacidad del filamento Bambú restante después de que la " "información sea actualizada. Durante la impresión, la capacidad restante " -"será actualizada automaticamente." +"será actualizada automáticamente." msgid "AMS filament backup" msgstr "Copia de Seguridad del Filamento AMS" @@ -3155,14 +3162,14 @@ msgstr "" "automáticamente cuando el filamento se termine" msgid "Air Printing Detection" -msgstr "Air Printing Detection" +msgstr "Detección de Aire de Impresión" msgid "" "Detects clogging and filament grinding, halting printing immediately to " "conserve time and filament." msgstr "" -"Detects clogging and filament grinding, halting printing immediately to " -"conserve time and filament." +"Detecta los atascos y el triturado de filamento, deteniendo la impresión " +"inmediatamente para ahorrar tiempo y filamento." msgid "File" msgstr "Archivo" @@ -3181,7 +3188,7 @@ msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " "by anti-virus software." msgstr "" -"Fallo al instalar el complemento. Por favor, compruebe si ha sido bloqueado " +"Fallo al instalar el complemento. Por favor, compruebe si ha sido bloqueado " "o borrado por un antivirus." msgid "click here to see more info" @@ -3223,28 +3230,28 @@ msgid "Illegal instruction" msgstr "Instrucción ilegal" msgid "Divide by zero" -msgstr "Dividir por cero" +msgstr "Dividir entre cero" msgid "Overflow" msgstr "Desbordamiento" msgid "Underflow" -msgstr "Sin caudal" +msgstr "Sin flujo" msgid "Floating reserved operand" msgstr "Operando reservado flotante" msgid "Stack overflow" -msgstr "Columna de Sobrecaudal" +msgstr "Desbordamiento de pila" msgid "Running post-processing scripts" msgstr "Ejecutando scripts de post-procesado" msgid "Successfully executed post-processing script" -msgstr "Successfully executed post-processing script" +msgstr "Script de post-procesamiento ejecutado correctamente" msgid "Unknown error occured during exporting G-code." -msgstr "Se produjo un error desconocido durante la exportación del código G." +msgstr "Se produjo un error desconocido durante la exportación del G-Code." #, boost-format msgid "" @@ -3252,7 +3259,7 @@ msgid "" "card is write locked?\n" "Error message: %1%" msgstr "" -"Error al copiar el código G temporal en el código G de salida. ¿Quizás la " +"Error al copiar el G-Code temporal en el G-Code de salida. ¿Quizás la " "tarjeta SD está bloqueada contra escritura?\n" "Mensaje de error: %1%" @@ -3262,16 +3269,16 @@ msgid "" "problem with target device, please try exporting again or using different " "device. The corrupted output G-code is at %1%.tmp." msgstr "" -"La copia del código G temporal al código G de salida ha fallado. Puede haber " -"un problema con el dispositivo de destino, intenta exportar nuevamente o usa " -"un dispositivo diferente. El código G de salida dañado está en %1%.tmp." +"La copia del G-Code temporal al G-Code de salida ha fallado. Puede haber un " +"problema con el dispositivo de destino, intenta exportar nuevamente o usa un " +"dispositivo diferente. El G-Code de salida dañado está en %1%.tmp." #, boost-format msgid "" "Renaming of the G-code after copying to the selected destination folder has " "failed. Current path is %1%.tmp. Please try exporting again." msgstr "" -"El cambio de nombre del código G después de copiar en la carpeta de destino " +"El cambio de nombre del G-Code después de copiar en la carpeta de destino " "seleccionada ha fallado. La ruta actual es %1%.tmp. Intenta exportar de " "nuevo." @@ -3280,22 +3287,22 @@ msgid "" "Copying of the temporary G-code has finished but the original code at %1% " "couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "" -"La copia del código G temporal ha finalizado, pero el código original en %1% " -"no se pudo abrir durante la verificación de copia. El código G de salida " -"está en %2%.tmp." +"La copia del G-Code temporal ha finalizado, pero el código original en %1% " +"no se pudo abrir durante la verificación de copia. El G-Code de salida está " +"en %2%.tmp." #, boost-format msgid "" "Copying of the temporary G-code has finished but the exported code couldn't " "be opened during copy check. The output G-code is at %1%.tmp." msgstr "" -"La copia del código G temporal ha finalizado, pero el código exportado no se " -"pudo abrir durante la verificación de la copia. El código G de salida está " -"en %1%.tmp." +"La copia del G-Code temporal ha finalizado, pero el código exportado no se " +"pudo abrir durante la verificación de la copia. El G-Code de salida está en " +"%1%.tmp." #, boost-format msgid "G-code file exported to %1%" -msgstr "Archivo de código G exportado a %1%" +msgstr "Archivo de G-Code exportado a %1%" msgid "Unknown error when export G-code." msgstr "Error desconocido al exportar el G-Code." @@ -3346,7 +3353,7 @@ msgid "Offline" msgstr "Fuera de línea" msgid "No task" -msgstr "Ninguna tarea" +msgstr "Sin tareas" msgid "View" msgstr "Vista" @@ -3462,7 +3469,7 @@ msgid "Preparing print job" msgstr "Preparando el trabajo de impresión" msgid "Abnormal print file data. Please slice again" -msgstr "Datos anormales del archivo de impresión. Por favor, procese de nuevo" +msgstr "Datos anormales del archivo de impresión. Por favor, lamine de nuevo" msgid "There is no device available to send printing." msgstr "No hay ningún dispositivo disponible para enviar impresiones." @@ -3492,7 +3499,7 @@ msgid "Timelapse" msgstr "Intervalo" msgid "Flow Dynamic Calibration" -msgstr "Calibración dinámica del caudal" +msgstr "Calibración Dinámica de Caudal" msgid "Send Options" msgstr "Opciones de envío" @@ -3512,17 +3519,16 @@ msgstr "Espere" msgid "" "minute each batch.(It depends on how long it takes to complete the heating.)" -msgstr "" -"minuto cada tanda. (Depende de lo que tarde en terminar de calentarse)." +msgstr "minuto por tanda. (Depende de lo que tarde en terminar de calentarse)." msgid "Send" msgstr "Enviar" msgid "Name is invalid;" -msgstr "El nombre no es válido;" +msgstr "El nombre es inválido" msgid "illegal characters:" -msgstr "caracteres no permitidos:" +msgstr "Caracteres no permitidos:" msgid "illegal suffix:" msgstr "sufijo no permitido:" @@ -3531,7 +3537,7 @@ msgid "The name is not allowed to be empty." msgstr "No se permite que el nombre esté vacío." msgid "The name is not allowed to start with space character." -msgstr "No se permite que el nombre comience con un carácter de espacio." +msgstr "No se permite que el nombre comience con un espacio." msgid "The name is not allowed to end with space character." msgstr "No se permite que el nombre termine con un espacio." @@ -3549,7 +3555,7 @@ msgid "" "Distance of the 0,0 G-code coordinate from the front left corner of the " "rectangle." msgstr "" -"Distancia de la coordenada del G-Code de 0,0 de la esquina frontal izquierda " +"Distancia de la coordenada 0,0 del G-Code desde la esquina frontal izquierda " "del rectángulo." msgid "" @@ -3623,10 +3629,11 @@ msgid "" "maximum temperature.\n" msgstr "" "La temperatura mínima recomendada no puede ser superior a la temperatura " -"máxima recomendada.\\n\n" +"máxima recomendada.\n" +"\n" msgid "Please check.\n" -msgstr "Por favor, compruébalo.\n" +msgstr "Por favor, compruébelo.\n" msgid "" "Nozzle may be blocked when the temperature is out of recommended range.\n" @@ -3636,6 +3643,7 @@ msgstr "" "La boquilla puede bloquearse cuando la temperatura está fuera del rango " "recomendado.\n" "Por favor, asegúrese de utilizar la temperatura para imprimir.\n" +"\n" #, c-format, boost-format msgid "" @@ -3659,7 +3667,7 @@ msgid "" "temperature for the material is %d" msgstr "" "La temperatura actual de la cámara es superior a la temperatura de seguridad " -"del material,puede provocar que el material se ablande y se atasque.La " +"del material, puede provocar que el material se ablande y se atasque. La " "temperatura máxima de seguridad para el material es %d" msgid "" @@ -3703,7 +3711,7 @@ msgstr "" "El valor se restablecerá a 0." msgid "" -"Too large elephant foot compensation is unreasonable.\n" +"Too large elefant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -3791,9 +3799,8 @@ msgid "" "layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" "El modo espiral sólo funciona cuando los bucles de perímetro son 1, el " -"soporte está desactivado, las capas superiores de la cubierta son 0, la " -"densidad de relleno de baja densidad es 0 y el tipo de timelapse es el " -"tradicional." +"soporte está desactivado, las capas superiores de la cubierta son 0, el " +"relleno de baja densidad es 0 y el tipo de timelapse es el tradicional." msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Las máquina con estructura I3 no generarán videos de timelapse." @@ -3811,7 +3818,7 @@ msgid "Auto bed leveling" msgstr "Nivelación de cama automática" msgid "Heatbed preheating" -msgstr "Precalentamiento de la cama caliente" +msgstr "Precalentamiento de la cama" msgid "Sweeping XY mech mode" msgstr "Barrido en XY modo mecánico" @@ -3841,7 +3848,7 @@ msgid "Identifying build plate type" msgstr "Identificando el tipo de bandeja de impresión" msgid "Calibrating Micro Lidar" -msgstr "Calibrando el Micro Lidar" +msgstr "Calibrando Micro Lidar" msgid "Homing toolhead" msgstr "Homing del Cabezal" @@ -3859,10 +3866,10 @@ msgid "Pause of front cover falling" msgstr "Pausa al caer la cubierta frontal" msgid "Calibrating the micro lida" -msgstr "Calibrando el micro lidar" +msgstr "Calibrando Micro Lidar" msgid "Calibrating extrusion flow" -msgstr "Calibrando el caudal de extrusión" +msgstr "Calibrando el flujo de extrusión" msgid "Paused due to nozzle temperature malfunction" msgstr "" @@ -3977,7 +3984,7 @@ msgstr "" "actualmente" msgid "Current flowrate cali param is invalid" -msgstr "El parámetro de caudal actual no es válido" +msgstr "El parámetro de flujo actual no es válido" msgid "Selected diameter and machine diameter do not match" msgstr "El diámetro seleccionado y el diámetro de la máquina no coinciden" @@ -3998,8 +4005,8 @@ msgid "" "Damp PVA will become flexible and get stuck inside AMS,please take care to " "dry it before use." msgstr "" -"Damp PVA se hará más flexible y se atascará dentro del AMS, por favor, tenga " -"cuidado de secarlo antes de usar." +"El PVA húmedo se hará más flexible y se atascará dentro del AMS, por favor, " +"tenga cuidado de secarlo antes de usar." msgid "" "CF/GF filaments are hard and brittle, It's easy to break or get stuck in " @@ -4036,7 +4043,7 @@ msgid "Read Only" msgstr "Sólo lectura" msgid "Read Write" -msgstr "Leer Escribir" +msgstr "Lectura Escritura" msgid "Slicing State" msgstr "Estado del Laminado" @@ -4170,7 +4177,7 @@ msgid "Temperature: " msgstr "Temperatura: " msgid "Loading G-codes" -msgstr "Carga de códigos G" +msgstr "Carga de G-Codes" msgid "Generating geometry vertex data" msgstr "Generación de datos de vértices de la geometría" @@ -4239,7 +4246,7 @@ msgid "Temperature (°C)" msgstr "Temperatura (°C)" msgid "Volumetric flow rate (mm³/s)" -msgstr "Tasa de caudal volumétrico (mm³/seg)" +msgstr "Tasa de flujo volumétrico (mm³/seg)" msgid "Travel" msgstr "Recorrido" @@ -4290,7 +4297,7 @@ msgid "ToolChange" msgstr "Cambio de Herramienta" msgid "Time Estimation" -msgstr "Estimación de Tiempo" +msgstr "Tiempo Estimado" msgid "Normal mode" msgstr "Modo normal" @@ -4359,7 +4366,7 @@ msgid "Mouse wheel:" msgstr "Rueda del ratón:" msgid "Increase/decrease edit area" -msgstr "Incrementar/decrementar el área de edición" +msgstr "Incrementar/disminuir el área de edición" msgid "Sequence" msgstr "Secuencia" @@ -4428,7 +4435,7 @@ msgid "Split to parts" msgstr "Separar en piezas" msgid "Assembly View" -msgstr "Vista de conjunto" +msgstr "Vista de Emsamblado" msgid "Select Plate" msgstr "Seleccione la Bandeja" @@ -4455,7 +4462,7 @@ msgid "Total Volume:" msgstr "Volumen total:" msgid "Assembly Info" -msgstr "Información sobre el montaje" +msgstr "Información de Ensamblado" msgid "Volume:" msgstr "Volumen:" @@ -4475,10 +4482,10 @@ msgid "An object is layed over the boundary of plate." msgstr "Un objeto está sobre el límite de la bandeja." msgid "A G-code path goes beyond the max print height." -msgstr "Una ruta de G-Code va más allá de la altura máxima de impresión." +msgstr "Una ruta de G-Code supera la altura máxima de impresión." msgid "A G-code path goes beyond the boundary of plate." -msgstr "Una ruta de G-Code va más allá del límite de la bandeja." +msgstr "Una ruta de G-Code supera el límite de la bandeja." msgid "Only the object being edit is visible." msgstr "Sólo es visible el objeto que se está editando." @@ -4497,16 +4504,16 @@ msgid "Calibration step selection" msgstr "Seleccionar paso de calibración" msgid "Micro lidar calibration" -msgstr "Calibración Micro lidar" +msgstr "Calibración Micro Lidar" msgid "Bed leveling" -msgstr "Nivelación de la cama" +msgstr "Nivelación de Cama" msgid "Vibration compensation" -msgstr "Compensación de vibraciones" +msgstr "Compensación de Vibraciones" msgid "Motor noise cancellation" -msgstr "Cancelación de ruido de motor" +msgstr "Cancelación de Ruido de Motor" msgid "Calibration program" msgstr "Programa de calibración" @@ -4542,7 +4549,7 @@ msgid "Go Live" msgstr "Ir A En Vivo" msgid "Liveview Retry" -msgstr "Reintentar Liveview" +msgstr "Reintentar Video en Vivo" msgid "Resolution" msgstr "Resolución" @@ -4600,7 +4607,7 @@ msgid "Preview" msgstr "Previsualización" msgid "Multi-device" -msgstr "Multi-device" +msgstr "Multi-dispositivo" msgid "Project" msgstr "Proyecto" @@ -4618,7 +4625,7 @@ msgid "Slice plate" msgstr "Laminar bandeja" msgid "Print plate" -msgstr "Imprimir bandeja de impresión" +msgstr "Imprimir bandeja" msgid "Slice all" msgstr "Laminar todo" @@ -4627,10 +4634,10 @@ msgid "Export G-code file" msgstr "Exportar archivo G-Code" msgid "Export plate sliced file" -msgstr "Explorar archivo de laminado de bandeja de impresión" +msgstr "Explorar archivo laminado de bandeja" msgid "Export all sliced file" -msgstr "Exportar todos los archivos de laminado" +msgstr "Exportar todos los archivos laminados" msgid "Print all" msgstr "Imprimir todo" @@ -4645,7 +4652,7 @@ msgid "Show the list of the keyboard shortcuts" msgstr "Mostrar la lista de los atajos de teclado" msgid "Setup Wizard" -msgstr "Asistente de configuración" +msgstr "Asistente de Configuración" msgid "Show Configuration Folder" msgstr "Mostrar Carpeta de Configuración" @@ -4774,10 +4781,10 @@ msgid "Export 3mf file without using some 3mf-extensions" msgstr "Exporte el archivo 3mf sin usar algunas de las extensiones" msgid "Export current sliced file" -msgstr "Exportar archivo de laminado actual" +msgstr "Exportar archivo laminado actual" msgid "Export all plate sliced file" -msgstr "Exportar todos los archivos de laminado de bandeja" +msgstr "Exportar todo el archivo de bandeja laminada" msgid "Export G-code" msgstr "Exportar G-Code" @@ -4786,7 +4793,7 @@ msgid "Export current plate as G-code" msgstr "Exportar bandeja actual cómo G-Code" msgid "Export Preset Bundle" -msgstr "Paquete de preajustes de exportación" +msgstr "Exportar Paquete de Perfiles" msgid "Export current configuration to files" msgstr "Exportar configuración actual a archivos" @@ -4867,19 +4874,19 @@ msgid "Show 3D navigator in Prepare and Preview scene" msgstr "Mostrar navegador 3D en escena Preparar y Vista previa" msgid "Reset Window Layout" -msgstr "Reiniciar Capa de Ventana" +msgstr "Reiniciar Diseño de Ventana" msgid "Reset to default window layout" msgstr "Restablecer el diseño de ventana por defecto" msgid "Show &Labels" -msgstr "Mostrar &Etiquetas" +msgstr "Mostrar Etiquetas(&L)" msgid "Show object labels in 3D scene" msgstr "Mostrar etiquetas en escena 3D" msgid "Show &Overhang" -msgstr "Show &Overhang" +msgstr "Mostrar Voladizo (&O)" msgid "Show object overhang highlight in 3D scene" msgstr "Mostrar resalte de voladizos de objeto en escena 3D" @@ -4891,13 +4898,13 @@ msgid "Help" msgstr "Ayuda" msgid "Temperature Calibration" -msgstr "Calibración de temperatura" +msgstr "Calibración de Temperatura" msgid "Pass 1" msgstr "Paso 1" msgid "Flow rate test - Pass 1" -msgstr "Test de caudal - Paso 1" +msgstr "Test de Caudal - Paso 1" msgid "Pass 2" msgstr "Paso 2" @@ -4906,19 +4913,19 @@ msgid "Flow rate test - Pass 2" msgstr "Test de Caudal - Paso 2" msgid "Flow rate" -msgstr "Test de caudal" +msgstr "Test de Caudal" msgid "Pressure advance" msgstr "Avance de Presión Lineal" msgid "Retraction test" -msgstr "Test de retracción" +msgstr "Test de Retracciones" msgid "Orca Tolerance Test" msgstr "Test de Tolerancia Orca" msgid "Max flowrate" -msgstr "Máximo caudal" +msgstr "Test de Caudal Máximo" msgid "VFA" msgstr "VFA" @@ -4942,22 +4949,22 @@ msgid "Open a G-code file" msgstr "Abrir un archivo G-Code" msgid "Re&load from Disk" -msgstr "Recargar desde el Disco" +msgstr "Recargar desde el Disco(&L)" msgid "Reload the plater from disk" msgstr "Cargar la base del disco" msgid "Export &Toolpaths as OBJ" -msgstr "Exportar &Movimientos como OBJ" +msgstr "Exportar Movimientos como OBJ (&T)" msgid "Export toolpaths as OBJ" msgstr "Exportar trayectorias de herramientas como OBJ" msgid "Open &Slicer" -msgstr "Abrir $Studio" +msgstr "Abrir &Laminador" msgid "Open Slicer" -msgstr "Abrir Studio" +msgstr "Abrir Laminador" msgid "&Quit" msgstr "Salir (&Q)" @@ -4967,7 +4974,7 @@ msgid "Quit %s" msgstr "Salir %s" msgid "&File" -msgstr "&Archivo" +msgstr "Archivo(&F)" msgid "&View" msgstr "&Ver" @@ -4982,7 +4989,7 @@ msgstr "Existe un archivo con el mismo nombre: %s, ¿desea sobreescribirlo?." #, c-format, boost-format msgid "A config exists with the same name: %s, do you want to override it." msgstr "" -"Existe unaconfiguración con el mismo nombre: %s, ¿desea sobreescribirla?." +"Existe una configuración con el mismo nombre: %s, ¿desea sobreescribirla?." msgid "Overwrite file" msgstr "Sobrescribir archivo" @@ -5054,15 +5061,15 @@ msgstr "" "¿Quieres sincronizar tus datos personales desde la Bambú Cloud? \n" "Esta contiene la siguiente información:\n" "1. Los Perfiles de Proceso\n" -"2. Los Perfiles de Filamento3. Los perfiles de la Impressora" +"2. Los Perfiles de Filamento\n" +"3. Los Perfiles de la Impresora" msgid "Synchronization" msgstr "Sincronización" msgid "The device cannot handle more conversations. Please retry later." msgstr "" -"El dispositivo no puede gestionar más conversaciones. Intentalo más tarde.El " -"aparato no puede manejar más conversaciones. Vuelva a intentarlo más tarde." +"El dispositivo no puede gestionar más conversaciones. Inténtalo más tarde." msgid "Player is malfunctioning. Please reinstall the system player." msgstr "" @@ -5095,7 +5102,8 @@ msgstr "" msgid "" "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." +"Sólo ver Video en Directo vía LAN está apagado. Por favor, encienda el video " +"en directo en la pantalla de la impresora." msgid "Please enter the IP of printer to connect." msgstr "Por favor, introduzca la IP de la impresora a conectar." @@ -5120,7 +5128,7 @@ msgid "Stopped." msgstr "Detenido." msgid "LAN Connection Failed (Failed to start liveview)" -msgstr "Fallo de Conexión de Red Local (Fallo al iniciar vista en vivo)" +msgstr "Fallo de Conexión de Red Local (Fallo al iniciar vista en directo)" msgid "" "Virtual Camera Tools is required for this task!\n" @@ -5146,7 +5154,7 @@ msgid "Virtual camera initialize failed (%s)!" msgstr "Inicialización de cámara virtual (%s)" msgid "Network unreachable" -msgstr "Red inalcanzable" +msgstr "Red no disponible" msgid "Information" msgstr "Información" @@ -5237,7 +5245,7 @@ msgstr "" "SD)." msgid "LAN Connection Failed (Failed to view sdcard)" -msgstr "Conexión LAN fallida (no se puede ver la tarjeta sdcard)" +msgstr "Conexión LAN fallida (no se encuentra la tarjeta SD)" msgid "Browsing file in SD card is not supported in LAN Only Mode." msgstr "" @@ -5251,8 +5259,8 @@ msgstr "¡Fallo al inicializar (%s)!" msgid "You are going to delete %u file from printer. Are you sure to continue?" msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" -msgstr[0] "Vas a borrar el archivo %u de la impresora. ¿Estás seguro?" -msgstr[1] "Vas a borrar los archivos %u de la impresora. ¿Estás seguro?" +msgstr[0] "Va a borrar el archivo %u de la impresora. ¿Estás seguro?" +msgstr[1] "Va a borrar los archivos %u de la impresora. ¿Estás seguro?" msgid "Delete files" msgstr "Borrar archivos" @@ -5278,7 +5286,7 @@ msgid "" "and export a new .gcode.3mf file." msgstr "" "El archivo .gcode. 3mf no contiene datos de G-Code. Por favor, lamine con " -"OrcaSlicer y exporte un nuevo archivo .gcode.3mf." +"Orca Slicer y exporte un nuevo archivo .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -5611,7 +5619,7 @@ msgstr "" "página web para la valoración?" msgid "You can select up to 16 images." -msgstr "Puede seleccionar hasta 15 imágenes." +msgstr "Puede seleccionar hasta 16 imágenes." msgid "" "At least one successful print record of this print profile is required \n" @@ -5690,7 +5698,7 @@ msgid "Latest Version: " msgstr "Ultima versión: " msgid "Not for now" -msgstr "Not for now" +msgstr "No por ahora" msgid "3D Mouse disconnected." msgstr "Ratón 3D desconectado." @@ -5838,11 +5846,11 @@ msgid "" "Unable to load shaders:\n" "%s" msgstr "" -"No se han podido cargar las sombras:\n" +"No se han podido cargar los shaders:\n" "%s" msgid "Error loading shaders" -msgstr "Error al cargar sombras" +msgstr "Error al cargar shaders" msgctxt "Layers" msgid "Top" @@ -5864,7 +5872,9 @@ msgstr "Activar detección de posición de bandeja" msgid "" "The localization tag of build plate is detected, and printing is paused if " "the tag is not in predefined range." -msgstr "La etiqueta de localización." +msgstr "" +"Se detecta la etiqueta de localización de la bandeja y se detiene la " +"impresión si la etiqueta no se encuentra dentro del intervalo predefinido." msgid "First Layer Inspection" msgstr "Inspección de Primera Capa" @@ -5909,14 +5919,11 @@ msgid "Advance" msgstr "Avanzado" msgid "Compare presets" -msgstr "Comparar justes" +msgstr "Comparar ajustes" msgid "View all object's settings" msgstr "Ver todos los ajustes del objeto" -msgid "Material settings" -msgstr "" - msgid "Remove current plate (if not last one)" msgstr "Quitar bandeja actual (si no es la última)" @@ -5967,7 +5974,7 @@ msgid "Filament changes" msgstr "Cambios de filamento" msgid "Click to edit preset" -msgstr "Clic para cambiar el ajuste inicial" +msgstr "Click para cambiar el ajuste inicial" msgid "Connection" msgstr "Conexión" @@ -5991,10 +5998,7 @@ msgid "Set filaments to use" msgstr "Elegir filamentos para usar" msgid "Search plate, object and part." -msgstr "Buscar placa, objeto y parte." - -msgid "Pellets" -msgstr "" +msgstr "Buscar bandeja, objeto y parte." msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." @@ -6026,7 +6030,7 @@ msgid "Resync" msgstr "Resincronizar" msgid "There are no compatible filaments, and sync is not performed." -msgstr "No hay filamentos compatible, y no se ha realizado la sincronización." +msgstr "No hay filamentos compatibles, y no se ha realizado la sincronización." msgid "" "There are some unknown filaments mapped to generic preset. Please update " @@ -6075,9 +6079,9 @@ msgid "" "filament, otherwise, the nozzle will be attrited or damaged." msgstr "" "La dureza de la boquilla requerida por el filamento es más alta que la " -"dureza por defecto de la impresora. Por favor, reemplace la boquilla " -"endurecida y el filamento, de otra forma, la boquilla se atascará o se " -"dañará." +"dureza de la boquilla por defecto de la impresora. Por favor, reemplace la " +"boquilla endurecida y el filamento, de otra forma, la boquilla se atascará o " +"se dañará." msgid "" "Enabling traditional timelapse photography may cause surface imperfections. " @@ -6111,26 +6115,26 @@ msgstr "" "siguientes llaves no reconocidas:" msgid "You'd better upgrade your software.\n" -msgstr "Será mejor que actualices tu software.\n" +msgstr "Debería actualizar el software.\n" #, c-format, boost-format msgid "" "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " "software." msgstr "" -"La versión de 3mf %s es más nueva que la versión de %s %s, se sugiere " -"actualizar su sofware." +"La versión de 3mf %s es más nueva que la versión de %s %s. Se aconseja " +"actualizar su software." msgid "Invalid values found in the 3mf:" msgstr "Valores inválidos encontrados en el 3mf:" msgid "Please correct them in the param tabs" -msgstr "Por favor, corrijalos en las pestañas de parámetros" +msgstr "Por favor, corríjalos en las pestañas de parámetros" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" "El archivo 3mf ha realizado las siguientes modificaciones en el G-Code de " -"filamento o impresora:" +"los perfiles de filamento o impresora:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6166,7 +6170,7 @@ msgid "The name may show garbage characters!" msgstr "¡El nombre puede mostrar caracteres no válidos!" msgid "Remember my choice." -msgstr "Recordar my elección." +msgstr "Recordar mi elección." #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." @@ -6198,8 +6202,8 @@ msgid "" "the file be loaded as a single object having multiple parts?" msgstr "" "Este archivo contiene varios objetos colocados a varias alturas.\n" -"En lugar de considerarlos como objetos múltiples, ¿debería \n" -"el archivo como un único objeto con múltiples piezas?" +"En lugar de considerarlos como objetos múltiples, debería \n" +"considerarlo como un único objeto con múltiples piezas?" msgid "Multi-part object detected" msgstr "Objeto multipieza detectado" @@ -6218,7 +6222,7 @@ msgid "" "heat bed automatically?" msgstr "" "Tu objeto parece demasiado grande, ¿Deseas disminuirlo para que quepa en la " -"cama caliente automaticamente?" +"cama caliente automáticamente?" msgid "Object too large" msgstr "Objeto demasiado grande" @@ -6243,8 +6247,8 @@ msgstr "" "El archivo %s ya existe\n" "¿Desea reemplazarlo?" -msgid "Confirm Save As" -msgstr "Salvar Como" +msgid "Comfirm Save As" +msgstr "Confirmar Guardar como" msgid "Delete object which is a part of cut object" msgstr "Borrar objeto el cual es una pieza del objeto cortado" @@ -6319,14 +6323,14 @@ msgstr "Por favor, resuelve los errores de corte y publica de nuevo." msgid "" "Network Plug-in is not detected. Network related features are unavailable." msgstr "" -"Complemento de red no detectado. Características relacionadas no disponibles." +"Complemento de red no detectado. Características de red no disponibles." msgid "" "Preview only mode:\n" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" "Previsualizar solo el modo:\n" -"El archivo cargado contiene solo G-Code, no puedo entrar a la página de " +"El archivo cargado contiene solo G-Code, no es posible entrar a la página de " "Preparación" msgid "You can keep the modified presets to the new project or discard them" @@ -6349,19 +6353,19 @@ msgstr "" "tienen abierto el archivo de proyecto." msgid "Save project" -msgstr "Salvar proyecto" +msgstr "Guardar proyecto" msgid "Importing Model" msgstr "Importando modelo" msgid "prepare 3mf file..." -msgstr "preparar el archivo 3mf..." +msgstr "Preparar el archivo 3mf..." msgid "Download failed, unknown file format." msgstr "Download failed; unknown file format." msgid "downloading project ..." -msgstr "descargando proyecto..." +msgstr "Descargando proyecto..." msgid "Download failed, File size exception." msgstr "Download failed; File size exception." @@ -6406,7 +6410,7 @@ msgstr "" "descomprimir el archivo." msgid "Drop project file" -msgstr "Soltar el archivo del proyecto" +msgstr "Descartar el archivo de proyecto" msgid "Please select an action" msgstr "Seleccione una acción" @@ -6446,7 +6450,7 @@ msgid "Save G-code file as:" msgstr "Guardar archivo G-Code como:" msgid "Save SLA file as:" -msgstr "Salvar archivo SLA como:" +msgstr "Guardar archivo SLA como:" msgid "The provided file name is not valid." msgstr "El nombre de archivo proporcionado no es válido." @@ -6468,7 +6472,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." +"will be kept. You may fix the meshes and try agian." msgstr "" "No se pueden realizar operaciones booleanas en las mallas del modelo. Sólo " "se conservarán las partes positivas. Puede arreglar las mallas e intentarlo " @@ -6582,7 +6586,7 @@ msgid "" "on Orca Slicer(windows) or CAD softwares." msgstr "" "La característica \"Arreglar Modelo\" está actualmente solo en Windows. Por " -"favor, en Orca Slicer(windows) o el software CAD." +"favor, repare el modelo en Orca Slicer(windows) o el programas CAD." #, c-format, boost-format msgid "" @@ -6601,12 +6605,11 @@ msgid "Do you want to continue?" msgstr "¿Quieres continuar?" msgid "Language selection" -msgstr "Selección de Iidiomas" +msgstr "Selección de idiomas" msgid "Switching application language while some presets are modified." msgstr "" -"Cambio de idioma de la aplicación mientras se modifican algunas " -"preselecciones." +"Cambiando idioma de la aplicación mientras se modifican algunos preajustes." msgid "Changing application language" msgstr "Cambiar el idioma de la aplicación" @@ -6626,21 +6629,6 @@ msgstr "Explorar" msgid "Choose Download Directory" msgstr "Elegir Directorio de Descarga" -msgid "Associate" -msgstr "" - -msgid "with OrcaSlicer so that Orca can open models from" -msgstr "" - -msgid "Current Association: " -msgstr "" - -msgid "Current Instance" -msgstr "" - -msgid "Current Instance Path: " -msgstr "" - msgid "General Settings" msgstr "Configuración General" @@ -6859,8 +6847,44 @@ msgstr "Asociar enlaces web a OrcaSlicer" msgid "Associate URLs to OrcaSlicer" msgstr "Asociar URLs a OrcaSlicer" +msgid "Current association: " +msgstr "Asociación actual:" + +msgid "Associate prusaslicer://" +msgstr "Asociar prusaslicer://" + +msgid "Not associated to any application" +msgstr "No asociado a ninguna aplicación" + +msgid "" +"Associate OrcaSlicer with prusaslicer:// links so that Orca can open models " +"from Printable.com" +msgstr "" +"Asociar OrcaSlicer con prusaslicer:// enlaces para que Orca puede abrir " +"modelos de Printables.com" + +msgid "Associate bambustudio://" +msgstr "Asociar bambustudio://" + +msgid "" +"Associate OrcaSlicer with bambustudio:// links so that Orca can open models " +"from makerworld.com" +msgstr "" +"Asociar OrcaSlicer con bambustudio:// enlaces para que Orca puede abrir " +"modelos de makerworld.com" + +msgid "Associate cura://" +msgstr "Asociar cura://" + +msgid "" +"Associate OrcaSlicer with cura:// links so that Orca can open models from " +"thingiverse.com" +msgstr "" +"Asociar OrcaSlicer con enlaces cura:// para que Orca pueda abrir modelos " +"desde thingiverse.com" + msgid "Maximum recent projects" -msgstr "Proyectos recientes máximos" +msgstr "Máximos proyectos recientes" msgid "Maximum count of recent projects" msgstr "Máxima cantidad de proyectos recientes" @@ -6877,7 +6901,7 @@ msgstr "Copia de seguridad automática" msgid "" "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Haga copia de seguridad periodicamente para restaurar en caso de fallo " +"Haga copia de seguridad periódicamente para restaurar en caso de fallo " "ocasional." msgid "every" @@ -6914,7 +6938,7 @@ msgid "User sync" msgstr "Sincronización del usuario" msgid "Preset sync" -msgstr "Sincronización preestablecida" +msgstr "Sincronización de perfil" msgid "Preferences sync" msgstr "Sincronización de preferencias" @@ -6965,7 +6989,7 @@ msgid "trace" msgstr "traza" msgid "Host Setting" -msgstr "Ajuste del Host" +msgstr "Ajuste de cliente" msgid "DEV host: api-dev.bambu-lab.com/v1" msgstr "DEV host: api-dev.bambu-lab.com/v1" @@ -6977,7 +7001,7 @@ msgid "PRE host: api-pre.bambu-lab.com/v1" msgstr "PRE host: api-pre.bambu-lab.com/v1" msgid "Product host" -msgstr "Fabricante de producto" +msgstr "Cliente de producto" msgid "debug save button" msgstr "botón de guardar la depuración" @@ -6998,7 +7022,7 @@ msgid "User presets" msgstr "Ajustes de usuario" msgid "Incompatible presets" -msgstr "Ajustes preestablecidos imcompatibles" +msgstr "Ajustes incompatibles" msgid "AMS filaments" msgstr "Filamentos AMS" @@ -7010,10 +7034,10 @@ msgid "Please choose the filament colour" msgstr "Por favor elija el color del filamento" msgid "Add/Remove presets" -msgstr "Añadir/Quitar ajustes preestablecidos" +msgstr "Añadir/Quitar ajustes" msgid "Edit preset" -msgstr "Editar ajuste preestablecido" +msgstr "Editar ajuste" msgid "Project-inside presets" msgstr "Perfiles internos del proyecto" @@ -7145,10 +7169,10 @@ msgid "Please note that saving action will replace this preset" msgstr "Tenga en cuenta que la acción de guardar reemplazará este perfil" msgid "The name cannot be the same as a preset alias name." -msgstr "El nombre no puede ser el mismo que un nombre de alias preestablecido." +msgstr "El nombre no puede ser el mismo que el nombre del perfil." msgid "Save preset" -msgstr "Guardar ajuste inicial" +msgstr "Guardar perfil" msgctxt "PresetName" msgid "Copy" @@ -7160,8 +7184,7 @@ msgstr "La impresora \"%1%\" está seleccionada con el perfil \"%2%\"" #, boost-format msgid "Please choose an action with \"%1%\" preset after saving." -msgstr "" -"Por favor, elija una acción con \"%1%\" preestablecido después de guardar." +msgstr "Por favor, elija una acción con \"%1%\" perfil después de guardar." #, boost-format msgid "For \"%1%\", change \"%2%\" to \"%3%\" " @@ -7206,7 +7229,7 @@ msgid "Busy" msgstr "Ocupado" msgid "Bambu Cool Plate" -msgstr "Bandeja frío Bambu" +msgstr "Bandeja Fría Bambu" msgid "PLA Plate" msgstr "Bandeja PLA" @@ -7271,14 +7294,14 @@ msgid "" "firmware to support AMS slot assignment." msgstr "" "El %s del filamento excede el número de ranuras AMS. Por favor actualice el " -"firmwareimpresora para que soporte la asignación de ranuras AMS." +"firmware para que soporte la asignación de ranuras AMS." msgid "" "Filament exceeds the number of AMS slots. Please update the printer firmware " "to support AMS slot assignment." msgstr "" "El %s del filamento excede el número de ranuras AMS. Por favor actualice el " -"firmwareimpresora para que soporte la asignación de ranuras AMS." +"firmware para que soporte la asignación de ranuras AMS." msgid "" "Filaments to AMS slots mappings have been established. You can click a " @@ -7291,7 +7314,7 @@ msgid "" "Please click each filament above to specify its mapping AMS slot before " "sending the print job" msgstr "" -"Por favor, haga clic en cada filamento de arriba para especificar su " +"Por favor, haga clic en cada filamento superior para especificar la " "asignación de ranura AMS antes de enviar el trabajo de impresión" #, c-format, boost-format @@ -7378,8 +7401,8 @@ msgid "" "start printing." msgstr "" "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " -"compruebe si son los filamentos requeridos. Si lo son, presione \"Confirmar" -"\" para empezar a imprimir." +"compruebe si son los filamentos requeridos. Si lo son, presione " +"\"Confirmar\" para empezar a imprimir." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7744,8 +7767,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Cuando grabamos timelapse sin cabezal de impresión, es recomendable añadir " "un \"Torre de Purga de Intervalo\" \n" @@ -7854,12 +7877,12 @@ msgid_plural "" "estimation." msgstr[0] "" "La siguiente línea %s contiene palabras clave reservadas.\n" -"Por favor, elimínela, o vencerá la visualización del código G y la " -"estimación del tiempo de impresión." +"Por favor, elimínela, o vencerá la visualización del G-Code y la estimación " +"del tiempo de impresión." msgstr[1] "" "Las siguientes líneas %s contienen palabras clave reservadas.\n" -"Por favor, elimínelas, o vencerá la visualización del código G y la " -"estimación del tiempo de impresión." +"Por favor, elimínelas, o vencerá la visualización del G-Code y la estimación " +"del tiempo de impresión." msgid "Reserved keywords found" msgstr "Palabras clave utilizadas y encontradas" @@ -8262,7 +8285,7 @@ msgid "" "You can save or discard the preset values you have modified." msgstr "" "\n" -"Puede guardar o descartar los valores preestablecidos que haya modificado." +"Puede guardar o descartar los valores perfils que haya modificado." msgid "" "\n" @@ -8270,8 +8293,8 @@ msgid "" "transfer the values you have modified to the new preset." msgstr "" "\n" -"Puede guardar o descartar los valores preestablecidos que ha modificado, o " -"elegir transferir los valores que ha modificado al nuevo preestablecido." +"Puede guardar o descartar los valores perfils que ha modificado, o elegir " +"transferir los valores que ha modificado al nuevo perfil." msgid "You have previously modified your settings." msgstr "Ha modificado previamente su configuración." @@ -8282,8 +8305,8 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Puede descartar los valores preestablecidos que haya modificado, o elegir " -"transferir los valores modificados al nuevo proyecto" +"Puede descartar los valores perfils que haya modificado, o elegir transferir " +"los valores modificados al nuevo proyecto" msgid "Extruders count" msgstr "Contador de extrusores" @@ -8322,7 +8345,7 @@ msgid "" "to right preset." msgstr "" "Si se activa, este cuadro de diálogo se puede utilizar para convertir los " -"valores seleccionados de izquierda a derecha preestablecidos." +"valores seleccionados de izquierda a derecha perfils." msgid "Add File" msgstr "Añadir archivo" @@ -8505,9 +8528,7 @@ msgid "" msgstr "" "Orca volverá a calcular sus volúmenes de descarga cada vez que se cambie el " "color de los filamentos. Puedes desactivar el cálculo automático en Orca " -"Slicer > PreferenciasOrca recalculaba los volúmenes de lavado cada vez que " -"cambiaba el color de los filamentos. Puedes desactivar el auto-cálculo en " -"Orca Slicer > Preferencias" +"Slicer > Preferencias." msgid "Flushing volume (mm³) for each filament pair." msgstr "Volumen de limpieza (mm³) para cada par de filamentos." @@ -9969,7 +9990,7 @@ msgstr "" "100%." msgid "Bridge flow ratio" -msgstr "Ratio de caudal en puentes" +msgstr "Ratio de flujo en puentes" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " @@ -9992,7 +10013,7 @@ msgstr "" "baja densidad." msgid "Top surface flow ratio" -msgstr "Ratio de caudal en superficie superior" +msgstr "Ratio de flujo en superficie superior" msgid "" "This factor affects the amount of material for top solid infill. You can " @@ -10003,7 +10024,7 @@ msgstr "" "superficie" msgid "Bottom surface flow ratio" -msgstr "Ratio de caudal en superficie inferior" +msgstr "Ratio de flujo en superficie inferior" msgid "This factor affects the amount of material for bottom solid infill" msgstr "" @@ -10859,7 +10880,7 @@ msgid "Extruder offset" msgstr "Offset del extrusor" msgid "Flow ratio" -msgstr "Proporción de caudal" +msgstr "Proporción de flujo" msgid "" "The material may have volumetric change after switching between molten state " @@ -10870,10 +10891,10 @@ msgid "" msgstr "" "El material puede tener un cambio volumétrico después de cambiar entre " "estado fundido y estado cristalino. Este ajuste cambia proporcionalmente " -"todo el caudal de extrusión de este filamento en G-Code. El rango de valores " +"todo el flujo de extrusión de este filamento en G-Code. El rango de valores " "recomendado es entre 0.95 y 1.05. Tal vez usted puede ajustar este valor " -"para obtener una superficie plana adecuada cuando hay un ligero sobre caudal " -"o infra caudal" +"para obtener una superficie plana adecuada cuando hay un ligero sobre flujo " +"o infra flujo" msgid "Enable pressure advance" msgstr "Activar Avance de Presión Lineal" @@ -11002,19 +11023,6 @@ msgstr "" "El diámetro del filamento se utiliza para calcular la extrusión en el G-" "Code, por lo que es importante y debe ser preciso" -msgid "Pellet flow coefficient" -msgstr "" - -msgid "" -"Pellet flow coefficient is emperically derived and allows for volume " -"calculation for pellet printers.\n" -"\n" -"Internally it is converted to filament_diameter. All other volume " -"calculations remain the same.\n" -"\n" -"filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" -msgstr "" - msgid "Shrinkage" msgstr "Contracción" @@ -11475,7 +11483,7 @@ msgstr "Altura de la primera capa" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhesion" +"can improve build plate adhension" msgstr "" "Altura de la primera capa. Hacer que la altura de la primera capa sea " "ligeramente gruesa puede mejorar la adherencia de la bandeja de impresión" @@ -11519,10 +11527,10 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocidad de ventilador se incrementará linealmente de cero a " "\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " @@ -11724,7 +11732,7 @@ msgid "" "command: M106 P2 S(0-255)." msgstr "" "Activar esta opción si la máquina dispone de ventilador auxiliar de " -"refrigeración de piezas. Comando código G: M106 P2 S(0-255)." +"refrigeración de piezas. Comando G-Code: M106 P2 S(0-255)." msgid "" "Start the fan this number of seconds earlier than its target start time (you " @@ -11810,12 +11818,6 @@ msgstr "Con qué tipo de G-Code es compatible la impresora" msgid "Klipper" msgstr "Klipper" -msgid "Pellet Modded Printer" -msgstr "" - -msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "" - msgid "Support multi bed types" msgstr "Admite varios tipos de cama" @@ -11940,51 +11942,6 @@ msgstr "" "Profundidad de entrelazado de una región segmentada. Zero desactiva esta " "característica." -msgid "Use beam interlocking" -msgstr "" - -msgid "" -"Generate interlocking beam structure at the locations where different " -"filaments touch. This improves the adhesion between filaments, especially " -"models printed in different materials." -msgstr "" - -msgid "Interlocking beam width" -msgstr "" - -msgid "The width of the interlocking structure beams." -msgstr "" - -msgid "Interlocking direction" -msgstr "" - -msgid "Orientation of interlock beams." -msgstr "" - -msgid "Interlocking beam layers" -msgstr "" - -msgid "" -"The height of the beams of the interlocking structure, measured in number of " -"layers. Less layers is stronger, but more prone to defects." -msgstr "" - -msgid "Interlocking depth" -msgstr "" - -msgid "" -"The distance from the boundary between filaments to generate interlocking " -"structure, measured in cells. Too few cells will result in poor adhesion." -msgstr "" - -msgid "Interlocking boundary avoidance" -msgstr "" - -msgid "" -"The distance from the outside of a model where interlocking structures will " -"not be generated, measured in cells." -msgstr "" - msgid "Ironing Type" msgstr "Tipo de alisado" @@ -11992,9 +11949,9 @@ msgid "" "Ironing is using small flow to print on same height of surface again to make " "flat surface more smooth. This setting controls which layer being ironed" msgstr "" -"El alisado es el uso de un pequeño caudal para imprimir en la misma altura " -"de la superficie de nuevo para hacer la superficie plana más suave. Este " -"ajuste controla la capa que se alisa" +"El alisado es el uso de un pequeño flujo para imprimir en la misma altura de " +"la superficie de nuevo para hacer la superficie plana más suave. Este ajuste " +"controla la capa que se alisa" msgid "No ironing" msgstr "Sin alisado" @@ -12021,7 +11978,7 @@ msgid "" "The amount of material to extrude during ironing. Relative to flow of normal " "layer height. Too high value results in overextrusion on the surface" msgstr "" -"La cantidad de material a extruir durante el alisado. Relativo al caudal de " +"La cantidad de material a extruir durante el alisado. Relativo al flujo de " "la altura de la capa normal. Un valor demasiado alto provoca una " "sobreextrusión en la superficie" @@ -12062,7 +12019,7 @@ msgstr "" "menor aceleración para imprimir" msgid "Emit limits to G-code" -msgstr "Emitir límites al código G" +msgstr "Emitir límites al G-Code" msgid "Machine limits" msgstr "Límites de la máquina" @@ -12092,7 +12049,7 @@ msgid "Enable flow compensation for small infill areas" msgstr "Permitir la compensación de flujo en zonas con poco relleno" msgid "Flow Compensation Model" -msgstr "Modelo de compensación de caudal" +msgstr "Modelo de compensación de flujo" msgid "" "Flow Compensation Model, used to adjust the flow for small infill areas. The " @@ -12100,7 +12057,7 @@ msgid "" "and flow correction factors, one per line, in the following format: " "\"1.234,5.678\"" msgstr "" -"Modelo de compensación del caudal, utilizado para ajustar el caudal en zonas " +"Modelo de compensación del flujo, utilizado para ajustar el flujo en zonas " "de relleno pequeñas. El modelo se expresa como un par de valores separados " "por comas para la longitud de extrusión y los factores de corrección del " "flujo, uno por línea, en el siguiente formato: \"1.234,5.678\"" @@ -12259,9 +12216,9 @@ msgid "" "Note: this parameter disables arc fitting." msgstr "" "Este parámetro suaviza los cambios bruscos de velocidad de extrusión que se " -"producen cuando la impresora pasa de imprimir una extrusión de alto caudal " -"(alta velocidad/ancho mayor) a una extrusión de menor caudal (menor " -"velocidad/ancho menor) y viceversa.\n" +"producen cuando la impresora pasa de imprimir una extrusión de alto flujo " +"(alta velocidad/ancho mayor) a una extrusión de menor flujo (menor velocidad/" +"ancho menor) y viceversa.\n" "\n" "Define la velocidad máxima a la que el flujo volumétrico extruido en mm3/" "seg2 puede cambiar con el tiempo. Valores más altos significan que se " @@ -12270,7 +12227,7 @@ msgstr "" "\n" "Un valor de 0 desactiva la función. \n" "\n" -"Para una impresora de accionamiento directo de alta velocidad y alto caudal " +"Para una impresora de accionamiento directo de alta velocidad y alto flujo " "(como la Bambu lab o la Voron) este valor no suele ser necesario. Sin " "embargo, puede proporcionar algún beneficio marginal en ciertos casos en los " "que las velocidades de las características varían mucho. Por ejemplo, cuando " @@ -12401,14 +12358,14 @@ msgstr "" "de los movimientos en su interior." msgid "High extruder current on filament swap" -msgstr "Alta corriente de extrusión en el cambio de filamento" +msgstr "Alto flujo de extrusión en los cambio de filamento" msgid "" "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." msgstr "" -"Puede ser beneficioso para incrementar la corriente de extrusión durante la " +"Puede ser beneficioso para incrementar el flujo de extrusión durante la " "secuencia de intercambio de filamento, para permitir ratios rápidos de " "moldeado de extremos y superar resistencias durante la carga de filamentos " "con puntas deformadas." @@ -12714,14 +12671,6 @@ msgstr "Pendiente" msgid "Spiral" msgstr "Espiral" -msgid "Traveling angle" -msgstr "" - -msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " -"in Normal Lift" -msgstr "" - msgid "Only lift Z above" msgstr "Solo elevar Z por encima" @@ -12789,7 +12738,7 @@ msgid "Speed of retractions" msgstr "Velocidad de las retracciones" msgid "Deretraction Speed" -msgstr "Velocidad de deretracción" +msgstr "Velocidad de desretracción" msgid "" "Speed for reloading filament into extruder. Zero means same speed with " @@ -12938,7 +12887,7 @@ msgstr "" "valor predeterminado es 100%." msgid "Scarf joint flow ratio" -msgstr "Relación de caudal de la unión de bufanda" +msgstr "Relación de flujo de la unión de bufanda" msgid "This factor affects the amount of material for scarf joints." msgstr "" @@ -13078,7 +13027,7 @@ msgid "" msgstr "" "Un protector contra corrientes de aire es útil para proteger una impresión " "en ABS o ASA de la deformación y el desprendimiento de la cama de impresión " -"debido a los caudales de aire. Suele ser necesario solo en impresoras de " +"debido a los flujoes de aire. Suele ser necesario solo en impresoras de " "bastidor abierto, es decir, sin cerramiento.\n" "\n" "Opciones:\n" @@ -13237,7 +13186,7 @@ msgid "" "printing, where we use M600/PAUSE to trigger the manual filament change " "action." msgstr "" -"Active esta opción para omitir el código G personalizado Cambiar filamento " +"Active esta opción para omitir el G-Code personalizado Cambiar filamento " "sólo al principio de la impresión. El comando de cambio de herramienta (por " "ejemplo, T0) se omitirá durante toda la impresión. Esto es útil para la " "impresión manual multi-material, donde utilizamos M600/PAUSE para activar la " @@ -13323,10 +13272,10 @@ msgstr "" "cama de impresión, establecer este valor a -0,3 compensará este desfase." msgid "Enable support" -msgstr "Habilitar el soporte" +msgstr "Habilitar los soportes" msgid "Enable support generation." -msgstr "Habilitar la generación de soporte." +msgstr "Habilitar la generación de soportes." msgid "" "normal(auto) and tree(auto) is used to generate support automatically. If " @@ -13860,14 +13809,14 @@ msgid "Purging volumes" msgstr "Volúmenes de purga" msgid "Flush multiplier" -msgstr "Multiplicador de caudal" +msgstr "Multiplicador de flujo" msgid "" "The actual flushing volumes is equal to the flush multiplier multiplied by " "the flushing volumes in the table." msgstr "" -"El volumen de caudal real es igual al multiplicador de caudal multiplicado " -"por los volúmenes de caudal de la tabla." +"El volumen de flujo real es igual al multiplicador de flujo multiplicado por " +"los volúmenes de flujo de la tabla." msgid "Prime volume" msgstr "Tamaño de purga" @@ -14895,7 +14844,7 @@ msgstr "Por favor, selecciona al menos un filamento por calibración" msgid "Flow rate calibration result has been saved to preset" msgstr "" -"El resultado de la calibración del ratio de caudal se ha guardado en los " +"El resultado de la calibración del ratio de flujo se ha guardado en los " "perfiles" msgid "Max volumetric speed calibration result has been saved to preset" @@ -14952,12 +14901,12 @@ msgstr "" "wiki.\n" "\n" "Normalmente la calibración es innecesaria. Cuando se inicia una impresión de " -"un solo color/material, con la opción \"calibración de la dinámica de flujo" -"\" marcada en el menú de inicio de impresión, la impresora seguirá el camino " -"antiguo, calibrar el filamento antes de la impresión; cuando se inicia una " -"impresión de varios colores/materiales, la impresora utilizará el parámetro " -"de compensación por defecto para el filamento durante cada cambio de " -"filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"un solo color/material, con la opción \"calibración de la dinámica de " +"flujo\" marcada en el menú de inicio de impresión, la impresora seguirá el " +"camino antiguo, calibrar el filamento antes de la impresión; cuando se " +"inicia una impresión de varios colores/materiales, la impresora utilizará el " +"parámetro de compensación por defecto para el filamento durante cada cambio " +"de filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos que pueden hacer que los resultados de " "la calibración no sean fiables, como una adhesión insuficiente en la placa " @@ -15000,9 +14949,9 @@ msgid "" "PLA used in RC planes. These materials expand greatly when heated, and " "calibration provides a useful reference flow rate." msgstr "" -"Además, la calibración del caudal es crucial para materiales espumosos como " +"Además, la calibración del flujo es crucial para materiales espumosos como " "el LW-PLA utilizado en los planos RC. Estos materiales se expanden mucho " -"cuando se calientan, y la calibración proporciona un caudal de referencia " +"cuando se calientan, y la calibración proporciona un flujo de referencia " "útil." msgid "" @@ -15013,7 +14962,7 @@ msgid "" "you still see the listed defects after you have done other calibrations. For " "more details, please check out the wiki article." msgstr "" -"La calibración del caudal mide la relación entre los volúmenes de extrusión " +"La calibración del flujo mide la relación entre los volúmenes de extrusión " "esperados y los reales. La configuración predeterminada funciona bien en las " "impresoras Bambu Lab y en los filamentos oficiales, ya que fueron " "precalibrados y ajustados con precisión. Para un filamento normal, " @@ -15116,7 +15065,7 @@ msgid "Input Value" msgstr "Valor de entrada" msgid "Save to Filament Preset" -msgstr "Salvar Perfil de Filamento" +msgstr "Guardar Perfil de Filamento" msgid "Preset" msgstr "Perfil" @@ -15125,13 +15074,13 @@ msgid "Record Factor" msgstr "Factor de guardado" msgid "We found the best flow ratio for you" -msgstr "Hemos encontrado el mejor ratio de caudal para usted" +msgstr "Hemos encontrado el mejor ratio de flujo para usted" msgid "Flow Ratio" msgstr "Ratio de Flujo" msgid "Please input a valid value (0.0 < flow ratio < 2.0)" -msgstr "Por favor, introduzca un valor válido (0.0 < ratio de caudal <2.0)" +msgstr "Por favor, introduzca un valor válido (0.0 < ratio de flujo <2.0)" msgid "Please enter the name of the preset you want to save." msgstr "Por favor, introduzca el nombre del perfil que quiera guardar." @@ -15154,7 +15103,7 @@ msgstr "Saltar Calibración2" #, c-format, boost-format msgid "flow ratio : %s " -msgstr "ratio de caudal: %s " +msgstr "ratio de flujo: %s " msgid "Please choose a block with smoothest top surface" msgstr "Por favor, escoja un bloque con la superficie superior más lisa" @@ -15174,7 +15123,7 @@ msgid "Complete Calibration" msgstr "Calibración Completa" msgid "Fine Calibration based on flow ratio" -msgstr "Calibración Fina basada en el ratio de caudal" +msgstr "Calibración Fina basada en el ratio de flujo" msgid "Title" msgstr "Título" @@ -15713,8 +15662,8 @@ msgstr "" "¿Quieres reescribirlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Cambiaríamos el nombre de los preajustes a \"Número de serie del Vendedor " @@ -15742,7 +15691,7 @@ msgstr "Importar Perfil" msgid "Create Type" msgstr "Crear Tipo" -msgid "The model is not found, place reselect vendor." +msgid "The model is not fond, place reselect vendor." msgstr "No se encuentra el modelo, vuelva a seleccionar fabricante." msgid "Select Model" @@ -15794,11 +15743,11 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "No se ha encontrado el modelo de impresora, vuelva a seleccionarlo." -msgid "The nozzle diameter is not found, place reselect." +msgid "The nozzle diameter is not fond, place reselect." msgstr "" "El diámetro de la boquilla no es adecuado, vuelva a seleccionar el lugar." -msgid "The printer preset is not found, place reselect." +msgid "The printer preset is not fond, place reselect." msgstr "" "El perfil de impresora se ha encontrado, por favor, vuelva a seleccionarlo." @@ -15923,7 +15872,7 @@ msgid "" "them carefully." msgstr "" "Por favor, vaya a la configuración de filamento para editar sus ajustes " -"preestablecidos si es necesario.\n" +"perfils si es necesario.\n" "Tenga en cuenta que la temperatura de la boquilla, la temperatura de la cama " "caliente y la velocidad volumétrica máxima tienen un impacto significativo " "en la calidad de impresión. Por favor, configúrelos con cuidado." @@ -16367,9 +16316,9 @@ msgid "" "much higher printing quality, but a much longer printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,2 mm, tiene " -"velocidades y aceleraciones más bajas, y el patrón de relleno disperso es " -"Gyroide. Esto da como resultado una calidad de impresión mucho mayor, pero " -"un tiempo de impresión mucho más largo." +"velocidades y aceleraciones más bajas, y el patrón de relleno de baja " +"densidad es Gyroide. Esto da como resultado una calidad de impresión mucho " +"mayor, pero un tiempo de impresión mucho más largo." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a slightly " @@ -16407,9 +16356,9 @@ msgid "" msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,2 mm, tiene " "unas líneas de capa más pequeñas, velocidades y aceleraciones más bajas, y " -"el patrón de relleno disperso es Gyroid. Esto da como resultado líneas de " -"capa casi invisibles y una calidad de impresión mucho mayor, pero un tiempo " -"de impresión mucho más largo." +"el patrón de relleno de baja densidad es Gyroide. Esto da como resultado " +"líneas de capa casi invisibles y una calidad de impresión mucho mayor, pero " +"un tiempo de impresión mucho más largo." msgid "" "Compared with the default profile of 0.2 mm nozzle, it has a smaller layer " @@ -16428,9 +16377,9 @@ msgid "" msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,2 mm, tiene " "unas líneas de capa más pequeñas, velocidades y aceleraciones más bajas, y " -"el patrón de relleno disperso es Gyroid. Por lo tanto, da como resultado " -"líneas de capa mínimas y una calidad de impresión mucho mayor, pero un " -"tiempo de impresión mucho más largo." +"el patrón de relleno de baja densidad es Gyroide. Por lo tanto, da como " +"resultado líneas de capa mínimas y una calidad de impresión mucho mayor, " +"pero un tiempo de impresión mucho más largo." msgid "" "It has a general layer height, and results in general layer lines and " @@ -16446,9 +16395,9 @@ msgid "" "prints, but more filament consumption and longer printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,4 mm, tiene " -"más bucles de pared y una mayor densidad de relleno disperso. Esto se " -"traduce en una mayor resistencia de impresión, pero un mayor consumo de " -"filamento y un tiempo de impresión más largo." +"más perímetros y un mayor relleno de baja densidad. Esto se traduce en una " +"mayor resistencia de impresión, pero un mayor consumo de filamento y un " +"tiempo de impresión más largo." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " @@ -16456,8 +16405,8 @@ msgid "" "but slightly shorter printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,4 mm, tiene " -"una mayor altura de capa. Esto da lugar a líneas de capa más aparentes y a " -"una menor calidad de impresión, pero a un tiempo de impresión ligeramente " +"una mayor altura de capa. Esto da lugar a líneas de capa más visibles y a " +"una menor calidad de impresión, pero un tiempo de impresión ligeramente " "inferior." msgid "" @@ -16466,7 +16415,7 @@ msgid "" "but shorter printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,4 mm, tiene " -"una mayor altura de capa, y da como resultado líneas de capa más aparentes y " +"una mayor altura de capa, y da como resultado líneas de capa más visibles y " "una menor calidad de impresión, pero un tiempo de impresión más corto." msgid "" @@ -16475,8 +16424,8 @@ msgid "" "quality, but longer printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,4 mm, tiene " -"una altura de capa menor. Esto se traduce en menos líneas de capa aparentes " -"y mayor calidad de impresión, pero mayor tiempo de impresión." +"una altura de capa menor. Esto se traduce en menos líneas de capa visibles y " +"mayor calidad de impresión, pero mayor tiempo de impresión." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16486,9 +16435,9 @@ msgid "" msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,4 mm, tiene " "una altura de capa menor, velocidades y aceleraciones más bajas, y el patrón " -"de relleno disperso es Gyroide. Por lo tanto, da como resultado menos líneas " -"de capa aparentes y una calidad de impresión mucho mayor, pero un tiempo de " -"impresión mucho más largo." +"de relleno de baja densidad es Gyroide. Por lo tanto, da como resultado " +"menos líneas de capa visibles y una calidad de impresión mucho mayor, pero " +"un tiempo de impresión mucho más largo." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16508,9 +16457,9 @@ msgid "" msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,4 mm, tiene " "una altura de capa menor, velocidades y aceleraciones más bajas, y el patrón " -"de relleno disperso es Gyroide. Por lo tanto, resulta en líneas de capa casi " -"insignificantes y una calidad de impresión mucho mayor, pero un tiempo de " -"impresión mucho más largo." +"de relleno de baja densidad es Gyroide. Por lo tanto, resulta en líneas de " +"capa casi insignificantes y una calidad de impresión mucho mayor, pero un " +"tiempo de impresión mucho más largo." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16525,7 +16474,7 @@ msgid "" "It has a big layer height, and results in apparent layer lines and ordinary " "printing quality and printing time." msgstr "" -"Tiene una gran altura de capa, y da lugar a líneas de capa aparentes y a una " +"Tiene una gran altura de capa, y da lugar a líneas de capa visibles y a una " "calidad y tiempo de impresión ordinarios." msgid "" @@ -16534,9 +16483,9 @@ msgid "" "prints, but more filament consumption and longer printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,6 mm, tiene " -"más bucles de pared y una mayor densidad de relleno disperso. Esto se " -"traduce en una mayor resistencia de impresión, pero un mayor consumo de " -"filamento y un tiempo de impresión más largo." +"más bucles de pared y una mayor relleno de baja densidad. Esto se traduce en " +"una mayor resistencia de impresión, pero un mayor consumo de filamento y un " +"tiempo de impresión más largo." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " @@ -16544,7 +16493,7 @@ msgid "" "but shorter printing time in some printing cases." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,6 mm, tiene " -"una mayor altura de capa. Esto da lugar a líneas de capa más aparentes y a " +"una mayor altura de capa. Esto da lugar a líneas de capa más visibles y a " "una menor calidad de impresión, pero a un menor tiempo de impresión en " "algunos casos." @@ -16554,8 +16503,8 @@ msgid "" "printing quality, but shorter printing time in some printing cases." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,6 mm, tiene " -"una mayor altura de capa. Esto da lugar a líneas de capa mucho más aparentes " -"y a una calidad de impresión mucho menor, pero a un tiempo de impresión más " +"una mayor altura de capa. Esto da lugar a líneas de capa mucho más visibles " +"y a una calidad de impresión mucho menor, pero un tiempo de impresión más " "corto en algunos casos." msgid "" @@ -16564,8 +16513,8 @@ msgid "" "quality, but longer printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,6 mm, tiene " -"una altura de capa menor. Esto se traduce en menos líneas de capa aparentes " -"y una calidad de impresión ligeramente superior, pero un tiempo de impresión " +"una altura de capa menor. Esto se traduce en menos líneas de capa visibles y " +"una calidad de impresión ligeramente superior, pero un tiempo de impresión " "más largo." msgid "" @@ -16574,7 +16523,7 @@ msgid "" "quality, but longer printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,6 mm, tiene " -"una altura de capa menor, y da como resultado líneas de capa menos aparentes " +"una altura de capa menor, y da como resultado líneas de capa menos visibles " "y una mayor calidad de impresión, pero un tiempo de impresión más largo." msgid "" @@ -16582,7 +16531,7 @@ msgid "" "low printing quality and general printing time." msgstr "" "Tiene una altura de capa muy grande, y da lugar a líneas de capa muy " -"aparentes, baja calidad de impresión y menor tiempo de impresión." +"visibles, baja calidad de impresión y menor tiempo de impresión." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " @@ -16590,9 +16539,9 @@ msgid "" "quality, but shorter printing time in some printing cases." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,8 mm, tiene " -"una mayor altura de capa. Esto da lugar a líneas de capa muy aparentes y a " -"una calidad de impresión mucho menor, pero a un tiempo de impresión más " -"corto en algunos casos." +"una mayor altura de capa. Esto da lugar a líneas de capa muy visibles y a " +"una calidad de impresión mucho menor, pero un tiempo de impresión más corto " +"en algunos casos." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -16601,7 +16550,7 @@ msgid "" msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,8 mm, tiene " "una altura de capa mucho mayor. Esto da lugar a líneas de capa " -"extremadamente aparentes y a una calidad de impresión mucho menor, pero a un " +"extremadamente visibles y a una calidad de impresión mucho menor, pero un " "tiempo de impresión mucho más corto en algunos casos." msgid "" @@ -16612,7 +16561,7 @@ msgid "" msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,8 mm, tiene " "una altura de capa ligeramente menor. Esto se traduce en líneas de capa " -"ligeramente menores pero aún aparentes y en una calidad de impresión " +"ligeramente menores pero aún visibles y en una calidad de impresión " "ligeramente superior, pero mayor tiempo de impresión en algunos casos." msgid "" @@ -16622,7 +16571,7 @@ msgid "" msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,8 mm, tiene " "una altura de capa menor. Esto se traduce en menos líneas de capa, aunque " -"aparentes, y en una calidad de impresión ligeramente superior, pero con un " +"visibles, y en una calidad de impresión ligeramente superior, pero con un " "tiempo de impresión más largo en algunos casos." msgid "Connected to Obico successfully!" @@ -16637,7 +16586,7 @@ msgstr "¡Se ha conectado correctamente a SimplyPrint!" msgid "Could not connect to SimplyPrint" msgstr "No se ha podido conectar con SimplyPrint" -msgid "Internal error" +msgid "Internel error" msgstr "Error interno" msgid "Unknown error" @@ -16918,8 +16867,8 @@ msgid "" "prints? Depending on the material, you can improve the overall finish of the " "printed model by doing some fine-tuning." msgstr "" -"Ajuste fino del caudal\n" -"¿Sabías que el caudal puede ajustarse para obtener impresiones aún más " +"Ajuste fino del flujo\n" +"¿Sabías que el flujo puede ajustarse para obtener impresiones aún más " "atractivas? Dependiendo del material, puede mejorar el acabado general del " "modelo impreso realizando algunos ajustes." @@ -17057,42 +17006,6 @@ msgstr "" "aumentar adecuadamente la temperatura del lecho térmico puede reducir la " "probabilidad de deformaciones." -#~ msgid "Current association: " -#~ msgstr "Asociación actual:" - -#~ msgid "Associate prusaslicer://" -#~ msgstr "Asociar prusaslicer://" - -#~ msgid "Not associated to any application" -#~ msgstr "No asociado a ninguna aplicación" - -#~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "models from Printable.com" -#~ msgstr "" -#~ "Asociar OrcaSlicer con prusaslicer:// enlaces para que Orca puede abrir " -#~ "modelos de Printables.com" - -#~ msgid "Associate bambustudio://" -#~ msgstr "Asociar bambustudio://" - -#~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " -#~ "models from makerworld.com" -#~ msgstr "" -#~ "Asociar OrcaSlicer con bambustudio:// enlaces para que Orca puede abrir " -#~ "modelos de makerworld.com" - -#~ msgid "Associate cura://" -#~ msgstr "Asociar cura://" - -#~ msgid "" -#~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " -#~ "thingiverse.com" -#~ msgstr "" -#~ "Asociar OrcaSlicer con enlaces cura:// para que Orca pueda abrir modelos " -#~ "desde thingiverse.com" - #~ msgid "" #~ "File size exceeds the 100MB upload limit. Please upload your file through " #~ "the panel." @@ -17538,8 +17451,8 @@ msgstr "" #~ msgstr "Capas de baja densidad (EXPERIMENTAL)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " From 5ba640ece90cfe13e7d823ca6fa029cfcfdfaf32 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 16 Jul 2024 22:37:28 +0800 Subject: [PATCH 040/151] pin cmake version to 3.28 (#6156) * pin cmake version to 3.28 * remove brew install cmake --- .github/workflows/build_deps.yml | 5 ++++- .github/workflows/build_orca.yml | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index a932cd7611..6c0dc9479c 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -41,6 +41,10 @@ jobs: path: ${{ inputs.cache-path }} key: ${{ inputs.cache-key }} + - uses: lukka/get-cmake@latest + with: + cmakeVersion: "~3.28.0" # use most recent 3.28.x version + - name: setup dev on Windows if: inputs.os == 'windows-latest' uses: microsoft/setup-msbuild@v2 @@ -72,7 +76,6 @@ jobs: if: inputs.os == 'macos-14' working-directory: ${{ github.workspace }} run: | - brew install cmake brew install automake texinfo ninja libtool brew list mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }} diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index a98b14f172..c44b4b010b 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -36,6 +36,10 @@ jobs: key: ${{ inputs.cache-key }} fail-on-cache-miss: true + - uses: lukka/get-cmake@latest + with: + cmakeVersion: "~3.28.0" # use most recent 3.28.x version + - name: Get the version and date on Ubuntu and macOS if: inputs.os != 'windows-latest' run: | @@ -77,7 +81,6 @@ jobs: - name: Install tools mac if: inputs.os == 'macos-14' run: | - brew install cmake brew install tree ninja libtool brew list mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}} From 976c3e3685b5286c22e5b19e46045067ba31b58a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 16 Jul 2024 22:39:43 +0800 Subject: [PATCH 041/151] Revert "Revert "Some flatpak fixing (#5510)"" This reverts commit e29cba2efff684d55b40339ba90e4c4803ca72a1. --- .github/workflows/build_all.yml | 35 +++++++++++----------- deps/OCCT/OCCT.cmake | 1 + flatpak/io.github.softfever.OrcaSlicer.yml | 16 ++++++++++ src/libslic3r/CMakeLists.txt | 4 +++ src/libslic3r/GCode/Thumbnails.cpp | 3 +- src/libslic3r/GCode/Thumbnails.hpp | 1 + src/libslic3r/MeshBoolean.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 5 ++-- 8 files changed, 45 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index a21bb03c94..b36d1990db 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -60,20 +60,21 @@ jobs: arch: ${{ matrix.arch }} build-deps-only: ${{ inputs.build-deps-only || false }} secrets: inherit - # flatpak: - # name: "Flatpak" - # runs-on: ubuntu-latest - # container: - # image: bilelmoussaoui/flatpak-github-actions:gnome-45 - # options: --privileged - # steps: - # # maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd - # - name: "Remove unneeded stuff to free disk space" - # run: - # sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY" - # - uses: actions/checkout@v4 - # - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 - # with: - # bundle: orcaslicer.flatpak - # manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml - # cache-key: flatpak-builder-${{ github.sha }} + flatpak: + name: "Flatpak" + runs-on: ubuntu-latest + container: + image: bilelmoussaoui/flatpak-github-actions:gnome-45 + options: --privileged + steps: + # maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd + - name: "Remove unneeded stuff to free disk space" + run: + sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY" + - uses: actions/checkout@v4 + - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + with: + bundle: orcaslicer.flatpak + manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml + cache-key: flatpak-builder-${{ github.sha }} + cache: false \ No newline at end of file diff --git a/deps/OCCT/OCCT.cmake b/deps/OCCT/OCCT.cmake index 651e40ec83..096da413d5 100644 --- a/deps/OCCT/OCCT.cmake +++ b/deps/OCCT/OCCT.cmake @@ -22,6 +22,7 @@ orcaslicer_add_cmake_project(OCCT #-DUSE_FREETYPE=OFF -DUSE_FFMPEG=OFF -DUSE_VTK=OFF + -DBUILD_DOC_Overview=OFF -DBUILD_MODULE_ApplicationFramework=OFF #-DBUILD_MODULE_DataExchange=OFF -DBUILD_MODULE_Draw=OFF diff --git a/flatpak/io.github.softfever.OrcaSlicer.yml b/flatpak/io.github.softfever.OrcaSlicer.yml index f5a148cda0..c5ba50f02c 100755 --- a/flatpak/io.github.softfever.OrcaSlicer.yml +++ b/flatpak/io.github.softfever.OrcaSlicer.yml @@ -44,6 +44,22 @@ modules: - type: archive url: http://mirrors.ircam.fr/pub/x.org/individual/app/xprop-1.2.5.tar.gz sha256: b7bf6b6be6cf23e7966a153fc84d5901c14f01ee952fbd9d930aa48e2385d670 + - name: python-flit_core + buildsystem: simple + build-commands: + - pip3 install --no-deps --no-build-isolation --verbose --prefix=${FLATPAK_DEST} . + sources: + - type: archive + url: https://files.pythonhosted.org/packages/c4/e6/c1ac50fe3eebb38a155155711e6e864e254ce4b6e17fe2429b4c4d5b9e80/flit_core-3.9.0.tar.gz + sha256: 72ad266176c4a3fcfab5f2930d76896059851240570ce9a98733b658cb786eba + - name: python-packaging + buildsystem: simple + build-commands: + - pip3 install --no-deps --no-build-isolation --verbose --prefix=${FLATPAK_DEST} . + sources: + - type: archive + url: https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz + sha256: 026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 - name: python-setuptools_scm buildsystem: simple build-commands: diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index f49a6a405f..9897bdfe63 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -580,6 +580,10 @@ target_link_libraries(libslic3r opencv_world ) +if(NOT SLIC3R_STATIC) + target_compile_definitions(libslic3r PUBLIC BOOST_ALL_DYN_LINK) +endif() + if(NOT WIN32) target_link_libraries(libslic3r freetype) if (NOT APPLE) diff --git a/src/libslic3r/GCode/Thumbnails.cpp b/src/libslic3r/GCode/Thumbnails.cpp index 43f2d4b2a6..526ba82498 100644 --- a/src/libslic3r/GCode/Thumbnails.cpp +++ b/src/libslic3r/GCode/Thumbnails.cpp @@ -2,6 +2,7 @@ #include "../miniz_extension.hpp" #include "format.hpp" +#include #include #include #include @@ -594,7 +595,7 @@ std::string get_error_string(const ThumbnailErrors& errors) std::string error_str; if (errors.has(ThumbnailError::InvalidVal)) - error_str += "\n - " + format("Invalid input format. Expected vector of dimensions in the following format: \"%1%\"", "XxY/EXT, XxY/EXT, ..."); + error_str += "\n - " + Slic3r::format("Invalid input format. Expected vector of dimensions in the following format: \"%1%\"", "XxY/EXT, XxY/EXT, ..."); if (errors.has(ThumbnailError::OutOfRange)) error_str += "\n - Input value is out of range"; if (errors.has(ThumbnailError::InvalidExt)) diff --git a/src/libslic3r/GCode/Thumbnails.hpp b/src/libslic3r/GCode/Thumbnails.hpp index 38a939b74c..bcee02fea1 100644 --- a/src/libslic3r/GCode/Thumbnails.hpp +++ b/src/libslic3r/GCode/Thumbnails.hpp @@ -3,6 +3,7 @@ #include "../Point.hpp" #include "../PrintConfig.hpp" +#include "../enum_bitmask.hpp" #include "ThumbnailData.hpp" #include "../enum_bitmask.hpp" diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index e246c16d49..c412553a22 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -6,6 +6,7 @@ #undef PI #include +#include "boost/log/trivial.hpp" // Include igl first. It defines "L" macro which then clashes with our localization #include #undef L @@ -27,7 +28,6 @@ #include // BBS: for boolean using mcut #include "mcut/include/mcut/mcut.h" -#include "boost/log/trivial.hpp" namespace Slic3r { namespace MeshBoolean { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 809368d38c..ddcb4bcbf8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -12,7 +12,6 @@ #include #include #include - #include namespace { @@ -6071,7 +6070,7 @@ void PrintConfigDef::handle_legacy_composite(DynamicPrintConfig &config) auto [thumbnails_list, errors] = GCodeThumbnails::make_and_check_thumbnail_list(thumbnails_str, extention); if (errors != enum_bitmask()) { - std::string error_str = "\n" + format("Invalid value provided for parameter %1%: %2%", "thumbnails", thumbnails_str); + std::string error_str = "\n" + Slic3r::format("Invalid value provided for parameter %1%: %2%", "thumbnails", thumbnails_str); error_str += GCodeThumbnails::get_error_string(errors); throw BadOptionValueException(error_str); } @@ -6080,7 +6079,7 @@ void PrintConfigDef::handle_legacy_composite(DynamicPrintConfig &config) const auto& extentions = ConfigOptionEnum::get_enum_names(); thumbnails_str.clear(); for (const auto& [ext, size] : thumbnails_list) - thumbnails_str += format("%1%x%2%/%3%, ", size.x(), size.y(), extentions[int(ext)]); + thumbnails_str += Slic3r::format("%1%x%2%/%3%, ", size.x(), size.y(), extentions[int(ext)]); thumbnails_str.resize(thumbnails_str.length() - 2); config.set_key_value("thumbnails", new ConfigOptionString(thumbnails_str)); From bc473ce94d050fc076d64d8924c6dd1bd2d2817b Mon Sep 17 00:00:00 2001 From: dewi-ny-je <2866139+dewi-ny-je@users.noreply.github.com> Date: Tue, 16 Jul 2024 17:22:50 +0200 Subject: [PATCH 042/151] Correction material settings for Ultimaker 2 (#5988) * Update UltiMaker Generic ABS.json * Update UltiMaker Generic PLA.json * Update fdm_filament_abs.json * Update UltiMaker Generic ABS.json --- .../filament/UltiMaker Generic ABS.json | 4 ++-- .../filament/UltiMaker Generic PLA.json | 2 +- .../UltiMaker/filament/fdm_filament_abs.json | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/resources/profiles/UltiMaker/filament/UltiMaker Generic ABS.json b/resources/profiles/UltiMaker/filament/UltiMaker Generic ABS.json index 9a59833457..a520c97e53 100644 --- a/resources/profiles/UltiMaker/filament/UltiMaker Generic ABS.json +++ b/resources/profiles/UltiMaker/filament/UltiMaker Generic ABS.json @@ -7,10 +7,10 @@ "instantiation": "true", "inherits": "fdm_filament_abs", "filament_flow_ratio": [ - "0.926" + "0.94" ], "filament_max_volumetric_speed": [ - "2" + "4.5" ], "compatible_printers": [ "UltiMaker 2 0.4 nozzle" diff --git a/resources/profiles/UltiMaker/filament/UltiMaker Generic PLA.json b/resources/profiles/UltiMaker/filament/UltiMaker Generic PLA.json index b6176c4a4f..f14c642978 100644 --- a/resources/profiles/UltiMaker/filament/UltiMaker Generic PLA.json +++ b/resources/profiles/UltiMaker/filament/UltiMaker Generic PLA.json @@ -10,7 +10,7 @@ "0.987" ], "filament_max_volumetric_speed": [ - "12" + "5" ], "slow_down_layer_time": [ "8" diff --git a/resources/profiles/UltiMaker/filament/fdm_filament_abs.json b/resources/profiles/UltiMaker/filament/fdm_filament_abs.json index a3a4574810..937d7c841d 100644 --- a/resources/profiles/UltiMaker/filament/fdm_filament_abs.json +++ b/resources/profiles/UltiMaker/filament/fdm_filament_abs.json @@ -5,28 +5,28 @@ "instantiation": "false", "inherits": "fdm_filament_common", "cool_plate_temp" : [ - "80" + "90" ], "eng_plate_temp" : [ - "80" + "90" ], "hot_plate_temp" : [ - "80" + "90" ], "textured_plate_temp" : [ - "80" + "90" ], "cool_plate_temp_initial_layer" : [ - "80" + "90" ], "eng_plate_temp_initial_layer" : [ - "80" + "90" ], "hot_plate_temp_initial_layer" : [ - "80" + "90" ], "textured_plate_temp_initial_layer" : [ - "80" + "90" ], "slow_down_for_layer_cooling": [ "1" From bda3a8e9c52bb552b0a6018c26e2984dc1532467 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Wed, 18 Oct 2023 10:47:11 +0200 Subject: [PATCH 043/151] preheat work - part 1 --- src/libslic3r/GCode.cpp | 1 + src/libslic3r/GCode/GCodeProcessor.cpp | 757 ++++++++++++++++++++++++- src/libslic3r/GCode/GCodeProcessor.hpp | 21 +- src/libslic3r/GCode/WipeTower2.cpp | 44 -- src/libslic3r/GCode/WipeTower2.hpp | 3 - src/libslic3r/GCodeReader.hpp | 10 + src/libslic3r/GCodeWriter.cpp | 44 +- src/libslic3r/GCodeWriter.hpp | 2 + src/libslic3r/Print.cpp | 24 + src/libslic3r/Print.hpp | 17 + src/libslic3r/PrintConfig.cpp | 16 + src/libslic3r/PrintConfig.hpp | 3 + 12 files changed, 866 insertions(+), 76 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 599292acbe..a2d4516022 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1527,6 +1527,7 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu path_tmp += ".tmp"; m_processor.initialize(path_tmp); + m_processor.set_print(print); GCodeOutputStream file(boost::nowide::fopen(path_tmp.c_str(), "wb"), m_processor); if (! file.is_open()) { BOOST_LOG_TRIVIAL(error) << std::string("G-code export to ") + path + " failed.\nCannot open the file for writing.\n" << std::endl; diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 648b570d82..a2393383e9 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -1,4 +1,5 @@ #include "ExtrusionEntity.hpp" +#include "GCodeWriter.hpp" #include "PrintConfig.hpp" #include "libslic3r/libslic3r.h" #include "libslic3r/Utils.hpp" @@ -20,6 +21,7 @@ #include #include #include +#include #include #if __has_include() @@ -369,7 +371,7 @@ void GCodeProcessor::TimeMachine::calculate_time(size_t keep_last_n_blocks, floa //BBS if (block.flags.prepare_stage) prepare_time += block_time; - g1_times_cache.push_back({ block.g1_line_id, time }); + g1_times_cache.push_back({ block.g1_line_id, block.remaining_internal_g1_lines, time }); // update times for remaining time to printer stop placeholders auto it_stop_time = std::lower_bound(stop_times.begin(), stop_times.end(), block.g1_line_id, [](const StopTime& t, unsigned int value) { return t.g1_line_id < value; }); @@ -941,6 +943,7 @@ void GCodeProcessorResult::reset() { printable_height = 0.0f; settings_ids.reset(); extruders_count = 0; + backtrace_enabled = false; extruder_colors = std::vector(); filament_diameters = std::vector(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DIAMETER); required_nozzle_HRC = std::vector(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_HRC); @@ -1048,10 +1051,15 @@ void GCodeProcessor::apply_config(const PrintConfig& config) m_flavor = config.gcode_flavor; - // BBS + m_single_extruder_multi_material = config.single_extruder_multi_material; + size_t extruders_count = config.filament_diameter.values.size(); m_result.extruders_count = extruders_count; + // Orca: + m_is_XL_printer = is_XL_printer(config); + m_result.backtrace_enabled = m_is_XL_printer || ( !m_single_extruder_multi_material && extruders_count > 1); + m_extruder_offsets.resize(extruders_count); m_extruder_colors.resize(extruders_count); m_result.filament_diameters.resize(extruders_count); @@ -1061,11 +1069,19 @@ void GCodeProcessor::apply_config(const PrintConfig& config) m_result.filament_costs.resize(extruders_count); m_result.filament_flow_ratios.resize(extruders_count); m_extruder_temps.resize(extruders_count); + m_extruder_temps_config.resize(extruders_count); + m_extruder_temps_first_layer_config.resize(extruders_count); m_result.nozzle_hrc = static_cast(config.nozzle_hrc.getInt()); m_result.nozzle_type = config.nozzle_type; for (size_t i = 0; i < extruders_count; ++ i) { m_extruder_offsets[i] = to_3d(config.extruder_offset.get_at(i).cast().eval(), 0.f); m_extruder_colors[i] = static_cast(i); + m_extruder_temps_first_layer_config[i] = static_cast(config.nozzle_temperature_initial_layer.get_at(i)); + m_extruder_temps_config[i] = static_cast(config.nozzle_temperature.get_at(i)); + if (m_extruder_temps_config[i] == 0) { + // This means the value should be ignored and first layer temp should be used. + m_extruder_temps_config[i] = m_extruder_temps_first_layer_config[i]; + } m_result.filament_diameters[i] = static_cast(config.filament_diameter.get_at(i)); m_result.required_nozzle_HRC[i] = static_cast(config.required_nozzle_HRC.get_at(i)); m_result.filament_densities[i] = static_cast(config.filament_density.get_at(i)); @@ -1716,6 +1732,9 @@ void GCodeProcessor::finalize(bool post_process) #endif // ENABLE_GCODE_VIEWER_STATISTICS //BBS: update slice warning update_slice_warnings(); + + if (post_process) + run_post_process(); } float GCodeProcessor::get_time(PrintEstimatedStatistics::ETimeMode mode) const @@ -2927,7 +2946,7 @@ void GCodeProcessor::process_G0(const GCodeReader::GCodeLine& line) process_G1(line); } -void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) +void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line, const std::optional& remaining_internal_g1_lines) { float filament_diameter = (static_cast(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back(); float filament_flowratio = (static_cast(m_extruder_id) < m_result.filament_flow_ratios.size()) ? m_result.filament_flow_ratios[m_extruder_id] : m_result.filament_flow_ratios.back(); @@ -2959,7 +2978,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) type = (delta_pos[Z] == 0.0f) ? EMoveType::Unretract : EMoveType::Travel; else if (delta_pos[X] != 0.0f || delta_pos[Y] != 0.0f) type = EMoveType::Extrude; - } + } else if (delta_pos[X] != 0.0f || delta_pos[Y] != 0.0f || delta_pos[Z] != 0.0f) type = EMoveType::Travel; @@ -3109,6 +3128,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) block.role = (type != EMoveType::Travel || m_extrusion_role == erCustom) ? m_extrusion_role : erNone; block.distance = distance; block.g1_line_id = m_g1_line_id; + block.remaining_internal_g1_lines = remaining_internal_g1_lines.has_value() ? *remaining_internal_g1_lines : 0; block.layer_id = std::max(1, m_layer_id); block.flags.prepare_stage = m_processing_start_custom_gcode; @@ -3163,7 +3183,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) } // calculates block acceleration - float acceleration = + float acceleration = (type == EMoveType::Travel) ? get_travel_acceleration(static_cast(i)) : (is_extrusion_only_move(delta_pos) ? get_retract_acceleration(static_cast(i)) : @@ -3303,10 +3323,10 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) if (!m_seams_detector.has_first_vertex()) { m_seams_detector.set_first_vertex(new_pos); } else if (m_detect_layer_based_on_tag) { - // We may have sloped loop, drop any previous start pos if we have z increment - const std::optional first_vertex = m_seams_detector.get_first_vertex(); - if (new_pos.z() > first_vertex->z()) { - m_seams_detector.set_first_vertex(new_pos); + // We may have sloped loop, drop any previous start pos if we have z increment + const std::optional first_vertex = m_seams_detector.get_first_vertex(); + if (new_pos.z() > first_vertex->z()) { + m_seams_detector.set_first_vertex(new_pos); } } } @@ -4348,6 +4368,725 @@ void GCodeProcessor::process_T(const std::string_view command) } } } +static void update_lines_ends_and_out_file_pos(const std::string& out_string, std::vector& lines_ends, size_t* out_file_pos) +{ + for (size_t i = 0; i < out_string.size(); ++i) { + if (out_string[i] == '\n') + lines_ends.emplace_back((out_file_pos != nullptr) ? *out_file_pos + i + 1 : i + 1); + } + if (out_file_pos != nullptr) + *out_file_pos += out_string.size(); +} + +void GCodeProcessor::run_post_process() +{ + FilePtr in{ boost::nowide::fopen(m_result.filename.c_str(), "rb") }; + if (in.f == nullptr) + throw Slic3r::RuntimeError(std::string("GCode processor post process export failed.\nCannot open file for reading.\n")); + + // temporary file to contain modified gcode + std::string out_path = m_result.filename + ".postprocess"; + FilePtr out{ boost::nowide::fopen(out_path.c_str(), "wb") }; + if (out.f == nullptr) + throw Slic3r::RuntimeError(std::string("GCode processor post process export failed.\nCannot open file for writing.\n")); + + std::vector filament_mm(m_result.extruders_count, 0.0); + std::vector filament_cm3(m_result.extruders_count, 0.0); + std::vector filament_g(m_result.extruders_count, 0.0); + std::vector filament_cost(m_result.extruders_count, 0.0); + + double filament_total_g = 0.0; + double filament_total_cost = 0.0; + + for (const auto& [id, volume] : m_result.print_statistics.total_volumes_per_extruder) { + filament_mm[id] = volume / (static_cast(M_PI) * sqr(0.5 * m_result.filament_diameters[id])); + filament_cm3[id] = volume * 0.001; + filament_g[id] = filament_cm3[id] * double(m_result.filament_densities[id]); + filament_cost[id] = filament_g[id] * double(m_result.filament_costs[id]) * 0.001; + filament_total_g += filament_g[id]; + filament_total_cost += filament_cost[id]; + } + + double total_g_wipe_tower = m_print->print_statistics().total_wipe_tower_filament; + + + auto time_in_minutes = [](float time_in_seconds) { + assert(time_in_seconds >= 0.f); + return int((time_in_seconds + 0.5f) / 60.0f); + }; + + auto time_in_last_minute = [](float time_in_seconds) { + assert(time_in_seconds <= 60.0f); + return time_in_seconds / 60.0f; + }; + + auto format_line_M73_main = [](const std::string& mask, int percent, int time) { + char line_M73[64]; + sprintf(line_M73, mask.c_str(), + std::to_string(percent).c_str(), + std::to_string(time).c_str()); + return std::string(line_M73); + }; + + auto format_line_M73_stop_int = [](const std::string& mask, int time) { + char line_M73[64]; + sprintf(line_M73, mask.c_str(), std::to_string(time).c_str()); + return std::string(line_M73); + }; + + auto format_time_float = [](float time) { + return Slic3r::float_to_string_decimal_point(time, 2); + }; + + auto format_line_M73_stop_float = [format_time_float](const std::string& mask, float time) { + char line_M73[64]; + sprintf(line_M73, mask.c_str(), format_time_float(time).c_str()); + return std::string(line_M73); + }; + + std::string gcode_line; + size_t g1_lines_counter = 0; + // keeps track of last exported pair + std::array, static_cast(PrintEstimatedStatistics::ETimeMode::Count)> last_exported_main; + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { + last_exported_main[i] = { 0, time_in_minutes(m_time_processor.machines[i].time) }; + } + + // keeps track of last exported remaining time to next printer stop + std::array(PrintEstimatedStatistics::ETimeMode::Count)> last_exported_stop; + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { + last_exported_stop[i] = time_in_minutes(m_time_processor.machines[i].time); + } + + // Helper class to modify and export gcode to file + class ExportLines + { + public: + struct Backtrace + { + float time{ 60.0f }; + unsigned int steps{ 10 }; + float time_step() const { return time / float(steps); } + }; + + enum class EWriteType + { + BySize, + ByTime + }; + + private: + struct LineData + { + std::string line; + std::array(PrintEstimatedStatistics::ETimeMode::Count)> times{ 0.0f, 0.0f }; + }; + + enum ETimeMode + { + Normal = static_cast(PrintEstimatedStatistics::ETimeMode::Normal), + Stealth = static_cast(PrintEstimatedStatistics::ETimeMode::Stealth) + }; + +#ifndef NDEBUG + class Statistics + { + ExportLines& m_parent; + size_t m_max_size{ 0 }; + size_t m_lines_count{ 0 }; + size_t m_max_lines_count{ 0 }; + + public: + explicit Statistics(ExportLines& parent) + : m_parent(parent) + {} + + void add_line(size_t line_size) { + ++m_lines_count; + m_max_size = std::max(m_max_size, m_parent.get_size() + line_size); + m_max_lines_count = std::max(m_max_lines_count, m_lines_count); + } + + void remove_line() { --m_lines_count; } + void remove_all_lines() { m_lines_count = 0; } + }; + + Statistics m_statistics; +#endif // NDEBUG + + EWriteType m_write_type{ EWriteType::BySize }; + // Time machines containing g1 times cache + const std::array(PrintEstimatedStatistics::ETimeMode::Count)>& m_machines; + // Current time + std::array(PrintEstimatedStatistics::ETimeMode::Count)> m_times{ 0.0f, 0.0f }; + // Current size in bytes + size_t m_size{ 0 }; + + // gcode lines cache + std::deque m_lines; + size_t m_added_lines_counter{ 0 }; + // map of gcode line ids from original to final + // used to update m_result.moves[].gcode_id + std::vector> m_gcode_lines_map; + + size_t m_times_cache_id{ 0 }; + size_t m_out_file_pos{ 0 }; + + + public: + ExportLines(EWriteType type, + const std::array(PrintEstimatedStatistics::ETimeMode::Count)>& machines) +#ifndef NDEBUG + : m_statistics(*this), m_write_type(type), m_machines(machines) {} +#else + : m_write_type(type), m_machines(machines) {} +#endif // NDEBUG + + // return: number of internal G1 lines (from G2/G3 splitting) processed + unsigned int update(const std::string& line, size_t lines_counter, size_t g1_lines_counter) { + unsigned int ret = 0; + m_gcode_lines_map.push_back({ lines_counter, 0 }); + + if (GCodeReader::GCodeLine::cmd_is(line, "G0") || + GCodeReader::GCodeLine::cmd_is(line, "G1") || + GCodeReader::GCodeLine::cmd_is(line, "G2") || + GCodeReader::GCodeLine::cmd_is(line, "G3") || + GCodeReader::GCodeLine::cmd_is(line, "G28")) + ++g1_lines_counter; + else + return ret; + + auto init_it = m_machines[Normal].g1_times_cache.begin() + m_times_cache_id; + auto it = init_it; + while (it != m_machines[Normal].g1_times_cache.end() && it->id < g1_lines_counter) { + ++it; + ++m_times_cache_id; + } + + if (it == m_machines[Normal].g1_times_cache.end() || it->id > g1_lines_counter) + return ret; + + // search for internal G1 lines + if (GCodeReader::GCodeLine::cmd_is(line, "G2") || GCodeReader::GCodeLine::cmd_is(line, "G3")) { + while (it != m_machines[Normal].g1_times_cache.end() && it->remaining_internal_g1_lines > 0) { + ++it; + ++m_times_cache_id; + ++g1_lines_counter; + ++ret; + } + } + + if (it != m_machines[Normal].g1_times_cache.end() && it->id == g1_lines_counter) { + m_times[Normal] = it->elapsed_time; + if (!m_machines[Stealth].g1_times_cache.empty()) + m_times[Stealth] = (m_machines[Stealth].g1_times_cache.begin() + std::distance(m_machines[Normal].g1_times_cache.begin(), it))->elapsed_time; + } + + return ret; + } + + // add the given gcode line to the cache + void append_line(const std::string& line) { + m_lines.push_back({ line, m_times }); +#ifndef NDEBUG + m_statistics.add_line(line.length()); +#endif // NDEBUG + m_size += line.length(); + ++m_added_lines_counter; + assert(!m_gcode_lines_map.empty()); + m_gcode_lines_map.back().second = m_added_lines_counter; + } + + // Insert the gcode lines required by the command cmd by backtracing into the cache + void insert_lines(const Backtrace& backtrace, const std::string& cmd, + std::function&)> line_inserter, + std::function line_replacer) { + assert(!m_lines.empty()); + const float time_step = backtrace.time_step(); + size_t rev_it_dist = 0; // distance from the end of the cache of the starting point of the backtrace + float last_time_insertion = 0.0f; // used to avoid inserting two lines at the same time + for (unsigned int i = 0; i < backtrace.steps; ++i) { + const float backtrace_time_i = (i + 1) * time_step; + const float time_threshold_i = m_times[Normal] - backtrace_time_i; + auto rev_it = m_lines.rbegin() + rev_it_dist; + auto start_rev_it = rev_it; + + std::string curr_cmd = GCodeReader::GCodeLine::extract_cmd(rev_it->line); + // backtrace into the cache to find the place where to insert the line + while (rev_it != m_lines.rend() && rev_it->times[Normal] > time_threshold_i && curr_cmd != cmd && curr_cmd != "G28" && curr_cmd != "G29") { + rev_it->line = line_replacer(rev_it->line); + ++rev_it; + if (rev_it != m_lines.rend()) + curr_cmd = GCodeReader::GCodeLine::extract_cmd(rev_it->line); + } + + // we met the previous evenience of cmd, or a G28/G29 command. stop inserting lines + // Orca: 1. Use boost::iequals to handle g28/g29 cases + // 2. Handle PRINT_START and START_PRINT to the stop condition + if (rev_it != m_lines.rend() && (curr_cmd == cmd || boost::iequals(curr_cmd, "G28") || boost::iequals(curr_cmd, "G29") || + boost::iequals(curr_cmd, "PRINT_START") || boost::iequals(curr_cmd, "START_PRINT"))) + break; + + // insert the line for the current step + if (rev_it != m_lines.rend() && rev_it != start_rev_it && rev_it->times[Normal] != last_time_insertion) { + last_time_insertion = rev_it->times[Normal]; + std::vector time_diffs; + time_diffs.push_back(m_times[Normal] - last_time_insertion); + if (!m_machines[Stealth].g1_times_cache.empty()) + time_diffs.push_back(m_times[Stealth] - rev_it->times[Stealth]); + const std::string out_line = line_inserter(i + 1, time_diffs); + rev_it_dist = std::distance(m_lines.rbegin(), rev_it) + 1; + m_lines.insert(rev_it.base(), { out_line, rev_it->times }); +#ifndef NDEBUG + m_statistics.add_line(out_line.length()); +#endif // NDEBUG + m_size += out_line.length(); + // synchronize gcode lines map + for (auto map_it = m_gcode_lines_map.rbegin(); map_it != m_gcode_lines_map.rbegin() + rev_it_dist - 1; ++map_it) { + ++map_it->second; + } + + ++m_added_lines_counter; + } + } + } + + // write to file: + // m_write_type == EWriteType::ByTime - all lines older than m_time - backtrace_time + // m_write_type == EWriteType::BySize - all lines if current size is greater than 65535 bytes + void write(FilePtr& out, float backtrace_time, GCodeProcessorResult& result, const std::string& out_path) { + if (m_lines.empty()) + return; + + // collect lines to write into a single string + std::string out_string; + if (!m_lines.empty()) { + if (m_write_type == EWriteType::ByTime) { + while (m_lines.front().times[Normal] < m_times[Normal] - backtrace_time) { + const LineData& data = m_lines.front(); + out_string += data.line; + m_size -= data.line.length(); + m_lines.pop_front(); +#ifndef NDEBUG + m_statistics.remove_line(); +#endif // NDEBUG + } + } + else { + if (m_size > 65535) { + while (!m_lines.empty()) { + out_string += m_lines.front().line; + m_lines.pop_front(); + } + m_size = 0; +#ifndef NDEBUG + m_statistics.remove_all_lines(); +#endif // NDEBUG + } + } + } + + { + write_to_file(out, out_string, result, out_path); + update_lines_ends_and_out_file_pos(out_string, result.lines_ends, &m_out_file_pos); + } + } + + // flush the current content of the cache to file + void flush(FilePtr& out, GCodeProcessorResult& result, const std::string& out_path) { + // collect lines to flush into a single string + std::string out_string; + while (!m_lines.empty()) { + out_string += m_lines.front().line; + m_lines.pop_front(); + } + m_size = 0; +#ifndef NDEBUG + m_statistics.remove_all_lines(); +#endif // NDEBUG + + { + write_to_file(out, out_string, result, out_path); + update_lines_ends_and_out_file_pos(out_string, result.lines_ends, &m_out_file_pos); + } + } + + void synchronize_moves(GCodeProcessorResult& result) const { + auto it = m_gcode_lines_map.begin(); + for (GCodeProcessorResult::MoveVertex& move : result.moves) { + while (it != m_gcode_lines_map.end() && it->first < move.gcode_id) { + ++it; + } + if (it != m_gcode_lines_map.end() && it->first == move.gcode_id) + move.gcode_id = it->second; + } + } + + size_t get_size() const { return m_size; } + + private: + void write_to_file(FilePtr& out, const std::string& out_string, GCodeProcessorResult& result, const std::string& out_path) { + if (!out_string.empty()) { + if (true) { + fwrite((const void*)out_string.c_str(), 1, out_string.length(), out.f); + if (ferror(out.f)) { + out.close(); + boost::nowide::remove(out_path.c_str()); + throw Slic3r::RuntimeError("GCode processor post process export failed.\nIs the disk full?"); + } + } + } + } + }; + + ExportLines export_lines(m_result.backtrace_enabled ? ExportLines::EWriteType::ByTime : ExportLines::EWriteType::BySize, + m_time_processor.machines); + + // replace placeholder lines with the proper final value + // gcode_line is in/out parameter, to reduce expensive memory allocation + auto process_placeholders = [&](std::string& gcode_line) { + bool processed = false; + + // remove trailing '\n' + auto line = std::string_view(gcode_line).substr(0, gcode_line.length() - 1); + + if (line.length() > 1) { + line = line.substr(1); + if (true && + (line == reserved_tag(ETags::First_Line_M73_Placeholder) || line == reserved_tag(ETags::Last_Line_M73_Placeholder))) { + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { + const TimeMachine& machine = m_time_processor.machines[i]; + if (machine.enabled) { + // export pair + export_lines.append_line(format_line_M73_main(machine.line_m73_main_mask.c_str(), + (line == reserved_tag(ETags::First_Line_M73_Placeholder)) ? 0 : 100, + (line == reserved_tag(ETags::First_Line_M73_Placeholder)) ? time_in_minutes(machine.time) : 0)); + processed = true; + + // export remaining time to next printer stop + if (line == reserved_tag(ETags::First_Line_M73_Placeholder) && !machine.stop_times.empty()) { + const int to_export_stop = time_in_minutes(machine.stop_times.front().elapsed_time); + export_lines.append_line(format_line_M73_stop_int(machine.line_m73_stop_mask.c_str(), to_export_stop)); + last_exported_stop[i] = to_export_stop; + } + } + } + } + else if (line == reserved_tag(ETags::Estimated_Printing_Time_Placeholder)) { + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { + const TimeMachine& machine = m_time_processor.machines[i]; + PrintEstimatedStatistics::ETimeMode mode = static_cast(i); + if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) { + char buf[128]; + sprintf(buf, "; estimated printing time (%s mode) = %s\n", + (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent", + get_time_dhms(machine.time).c_str()); + export_lines.append_line(buf); + processed = true; + } + } + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { + const TimeMachine& machine = m_time_processor.machines[i]; + PrintEstimatedStatistics::ETimeMode mode = static_cast(i); + if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) { + char buf[128]; + sprintf(buf, "; estimated first layer printing time (%s mode) = %s\n", + (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent", + get_time_dhms(machine.prepare_time).c_str()); + export_lines.append_line(buf); + processed = true; + } + } + } + } + + return processed; + }; + + auto process_used_filament = [&](std::string& gcode_line) { + // Prefilter for parsing speed. + if (gcode_line.size() < 8 || gcode_line[0] != ';' || gcode_line[1] != ' ') + return false; + if (const char c = gcode_line[2]; c != 'f' && c != 't') + return false; + auto process_tag = [](std::string& gcode_line, const std::string_view tag, const std::vector& values) { + if (boost::algorithm::starts_with(gcode_line, tag)) { + gcode_line = tag; + char buf[1024]; + for (size_t i = 0; i < values.size(); ++i) { + sprintf(buf, i == values.size() - 1 ? " %.2lf\n" : " %.2lf,", values[i]); + gcode_line += buf; + } + return true; + } + return false; + }; + + bool ret = false; + ret |= process_tag(gcode_line, PrintStatistics::FilamentUsedMmMask, filament_mm); + ret |= process_tag(gcode_line, PrintStatistics::FilamentUsedGMask, filament_g); + ret |= process_tag(gcode_line, PrintStatistics::TotalFilamentUsedGMask, { filament_total_g }); + ret |= process_tag(gcode_line, PrintStatistics::FilamentUsedCm3Mask, filament_cm3); + ret |= process_tag(gcode_line, PrintStatistics::FilamentCostMask, filament_cost); + ret |= process_tag(gcode_line, PrintStatistics::TotalFilamentCostMask, { filament_total_cost }); + return ret; + }; + + // check for temporary lines + auto is_temporary_decoration = [](const std::string_view gcode_line) { + // remove trailing '\n' + assert(!gcode_line.empty()); + assert(gcode_line.back() == '\n'); + + // return true for decorations which are used in processing the gcode but that should not be exported into the final gcode + // i.e.: + // bool ret = gcode_line.substr(0, gcode_line.length() - 1) == ";" + Layer_Change_Tag; + // ... + // return ret; + return false; + }; + + // Iterators for the normal and silent cached time estimate entry recently processed, used by process_line_G1. + auto g1_times_cache_it = Slic3r::reserve_vector::const_iterator>(m_time_processor.machines.size()); + for (const auto& machine : m_time_processor.machines) + g1_times_cache_it.emplace_back(machine.g1_times_cache.begin()); + + // add lines M73 to exported gcode + auto process_line_G1 = [this, + // Lambdas, mostly for string formatting, all with an empty capture block. + time_in_minutes, format_time_float, format_line_M73_main, format_line_M73_stop_int, format_line_M73_stop_float, time_in_last_minute, + // Caches, to be modified + &g1_times_cache_it, &last_exported_main, &last_exported_stop, + &export_lines] + (const size_t g1_lines_counter) { + if (true) { + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { + const TimeMachine& machine = m_time_processor.machines[i]; + if (machine.enabled) { + // export pair + // Skip all machine.g1_times_cache below g1_lines_counter. + auto& it = g1_times_cache_it[i]; + while (it != machine.g1_times_cache.end() && it->id < g1_lines_counter) + ++it; + if (it != machine.g1_times_cache.end() && it->id == g1_lines_counter) { + std::pair to_export_main = { int(100.0f * it->elapsed_time / machine.time), + time_in_minutes(machine.time - it->elapsed_time) }; + if (last_exported_main[i] != to_export_main) { + export_lines.append_line(format_line_M73_main(machine.line_m73_main_mask.c_str(), + to_export_main.first, to_export_main.second)); + last_exported_main[i] = to_export_main; + } + // export remaining time to next printer stop + auto it_stop = std::upper_bound(machine.stop_times.begin(), machine.stop_times.end(), it->elapsed_time, + [](float value, const TimeMachine::StopTime& t) { return value < t.elapsed_time; }); + if (it_stop != machine.stop_times.end()) { + int to_export_stop = time_in_minutes(it_stop->elapsed_time - it->elapsed_time); + if (last_exported_stop[i] != to_export_stop) { + if (to_export_stop > 0) { + if (last_exported_stop[i] != to_export_stop) { + export_lines.append_line(format_line_M73_stop_int(machine.line_m73_stop_mask.c_str(), to_export_stop)); + last_exported_stop[i] = to_export_stop; + } + } + else { + bool is_last = false; + auto next_it = it + 1; + is_last |= (next_it == machine.g1_times_cache.end()); + + if (next_it != machine.g1_times_cache.end()) { + auto next_it_stop = std::upper_bound(machine.stop_times.begin(), machine.stop_times.end(), next_it->elapsed_time, + [](float value, const TimeMachine::StopTime& t) { return value < t.elapsed_time; }); + is_last |= (next_it_stop != it_stop); + + std::string time_float_str = format_time_float(time_in_last_minute(it_stop->elapsed_time - it->elapsed_time)); + std::string next_time_float_str = format_time_float(time_in_last_minute(it_stop->elapsed_time - next_it->elapsed_time)); + is_last |= (string_to_double_decimal_point(time_float_str) > 0. && string_to_double_decimal_point(next_time_float_str) == 0.); + } + + if (is_last) { + if (std::distance(machine.stop_times.begin(), it_stop) == static_cast(machine.stop_times.size() - 1)) + export_lines.append_line(format_line_M73_stop_int(machine.line_m73_stop_mask.c_str(), to_export_stop)); + else + export_lines.append_line(format_line_M73_stop_float(machine.line_m73_stop_mask.c_str(), time_in_last_minute(it_stop->elapsed_time - it->elapsed_time))); + + last_exported_stop[i] = to_export_stop; + } + } + } + } + } + } + } + } + }; + + // add lines M104 to exported gcode + auto process_line_T = [this, &export_lines](const std::string& gcode_line, const size_t g1_lines_counter, const ExportLines::Backtrace& backtrace) { + const std::string cmd = GCodeReader::GCodeLine::extract_cmd(gcode_line); + if (cmd.size() >= 2) { + std::stringstream ss(cmd.substr(1)); + int tool_number = -1; + ss >> tool_number; + if (tool_number != -1) { + if (tool_number < 0 || (int)m_extruder_temps_config.size() <= tool_number) { + // found an invalid value, clamp it to a valid one + tool_number = std::clamp(0, m_extruder_temps_config.size() - 1, tool_number); + // emit warning + std::string warning = _u8L("GCode Post-Processor encountered an invalid toolchange, maybe from a custom gcode:"); + warning += "\n> "; + warning += gcode_line; + warning += _u8L("Generated M104 lines may be incorrect."); + BOOST_LOG_TRIVIAL(error) << warning; + // Orca todo + // if (m_print != nullptr) + // m_print->active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, warning); + } + } + export_lines.insert_lines( + backtrace, cmd, + // line inserter + [tool_number, this](unsigned int id, const std::vector& time_diffs) { + const int temperature = int(m_layer_id != 1 ? m_extruder_temps_config[tool_number] : + m_extruder_temps_first_layer_config[tool_number]); + // Orca: M104.1 for XL printers, I can't find the documentation for this so I copied the C++ comments from + // Prusa-Firmware-Buddy here + /** + * M104.1: Early Set Hotend Temperature (preheat, and with stealth mode support) + * + * This GCode is used to tell the XL printer the time estimate when a tool will be used next, + * so that the printer can start preheating the tool in advance. + * + * ## Parameters + * - `P` - - time in seconds till the temperature S is required (in standard mode) + * - `Q` - - time in seconds till the temperature S is required (in stealth mode) + * The rest is same as M104 + */ + if (this->m_is_XL_printer) { + std::string out = "M104.1 T" + std::to_string(tool_number); + if (time_diffs.size() > 0) + out += " P" + std::to_string(int(std::round(time_diffs[0]))); + if (time_diffs.size() > 1) + out += " Q" + std::to_string(int(std::round(time_diffs[1]))); + out += " S" + std::to_string(temperature) + "\n"; + return out; + } else { + std::string comment = "preheat tool " + std::to_string(tool_number) + + "time: " + std::to_string(std::round(time_diffs[0])) + "s"; + return GCodeWriter::set_temperature(temperature, this->m_flavor, false, tool_number, comment); + } + }, + // line replacer + [this, tool_number](const std::string& line) { + if (GCodeReader::GCodeLine::cmd_is(line, "M104")) { + GCodeReader::GCodeLine gline; + GCodeReader reader; + reader.parse_line(line, [&gline](GCodeReader& reader, const GCodeReader::GCodeLine& l) { gline = l; }); + + float val; + if (gline.has_value('T', val) && gline.raw().find("cooldown") != std::string::npos && m_is_XL_printer) { + if (static_cast(val) == tool_number) + return std::string("; removed M104\n"); + } + } + return line; + }); + } + }; + + m_result.lines_ends.clear(); + // m_result.lines_ends.emplace_back(std::vector()); + + unsigned int line_id = 0; + // Backtrace data for Tx gcode lines + static const ExportLines::Backtrace backtrace_T = { 120.0f, 10 }; + // In case there are multiple sources of backtracing, keeps track of the longest backtrack time needed + // to flush the backtrace cache accordingly + float max_backtrace_time = 120.0f; + + { + // Read the input stream 64kB at a time, extract lines and process them. + std::vector buffer(65536 * 10, 0); + // Line buffer. + assert(gcode_line.empty()); + for (;;) { + size_t cnt_read = ::fread(buffer.data(), 1, buffer.size(), in.f); + if (::ferror(in.f)) + throw Slic3r::RuntimeError(std::string("GCode processor post process export failed.\nError while reading from file.\n")); + bool eof = cnt_read == 0; + auto it = buffer.begin(); + auto it_bufend = buffer.begin() + cnt_read; + while (it != it_bufend || (eof && !gcode_line.empty())) { + // Find end of line. + bool eol = false; + auto it_end = it; + for (; it_end != it_bufend && !(eol = *it_end == '\r' || *it_end == '\n'); ++it_end); + // End of line is indicated also if end of file was reached. + eol |= eof && it_end == it_bufend; + gcode_line.insert(gcode_line.end(), it, it_end); + if (eol) { + ++line_id; + gcode_line += "\n"; + const unsigned int internal_g1_lines_counter = export_lines.update(gcode_line, line_id, g1_lines_counter); + // replace placeholder lines + bool processed = process_placeholders(gcode_line); + if (processed) + gcode_line.clear(); + if (!processed) + processed = process_used_filament(gcode_line); + if (!processed && !is_temporary_decoration(gcode_line)) { + if (GCodeReader::GCodeLine::cmd_is(gcode_line, "G0") || GCodeReader::GCodeLine::cmd_is(gcode_line, "G1")) { + export_lines.append_line(gcode_line); + // add lines M73 where needed + process_line_G1(g1_lines_counter++); + gcode_line.clear(); + } + else if (GCodeReader::GCodeLine::cmd_is(gcode_line, "G2") || GCodeReader::GCodeLine::cmd_is(gcode_line, "G3")) { + export_lines.append_line(gcode_line); + // add lines M73 where needed + process_line_G1(g1_lines_counter + internal_g1_lines_counter); + g1_lines_counter += (1 + internal_g1_lines_counter); + gcode_line.clear(); + } + else if (GCodeReader::GCodeLine::cmd_is(gcode_line, "G28")) { + ++g1_lines_counter; + } + else if (m_result.backtrace_enabled && GCodeReader::GCodeLine::cmd_starts_with(gcode_line, "T")) { + // add lines M104 where needed + process_line_T(gcode_line, g1_lines_counter, backtrace_T); + max_backtrace_time = std::max(max_backtrace_time, backtrace_T.time); + } + } + + if (!gcode_line.empty()) + export_lines.append_line(gcode_line); + export_lines.write(out, 1.1f * max_backtrace_time, m_result, out_path); + gcode_line.clear(); + } + // Skip EOL. + it = it_end; + if (it != it_bufend && *it == '\r') + ++it; + if (it != it_bufend && *it == '\n') + ++it; + } + if (eof) + break; + } + } + + export_lines.flush(out, m_result, out_path); + + + out.close(); + in.close(); + + const std::string result_filename = m_result.filename; + export_lines.synchronize_moves(m_result); + + if (rename_file(out_path, result_filename)) + throw Slic3r::RuntimeError(std::string("Failed to rename the output G-code file from ") + out_path + " to " + result_filename + '\n' + + "Is " + out_path + " locked?" + '\n'); +} void GCodeProcessor::store_move_vertex(EMoveType type, EMovePathType path_type) { diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index a1fd5237e3..2896583786 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -17,6 +17,8 @@ namespace Slic3r { +class Print; + // slice warnings enum strings #define NOZZLE_HRC_CHECKER "the_actual_nozzle_hrc_smaller_than_the_required_nozzle_hrc" #define BED_TEMP_TOO_HIGH_THAN_FILAMENT "bed_temperature_too_high_than_filament" @@ -207,6 +209,7 @@ namespace Slic3r { float printable_height; SettingsIds settings_ids; size_t extruders_count; + bool backtrace_enabled; std::vector extruder_colors; std::vector filament_diameters; std::vector required_nozzle_HRC; @@ -377,6 +380,7 @@ namespace Slic3r { EMoveType move_type{ EMoveType::Noop }; ExtrusionRole role{ erNone }; unsigned int g1_line_id{ 0 }; + unsigned int remaining_internal_g1_lines; unsigned int layer_id{ 0 }; float distance{ 0.0f }; // mm float acceleration{ 0.0f }; // mm/s^2 @@ -425,6 +429,7 @@ namespace Slic3r { struct G1LinesCacheItem { unsigned int id; + unsigned int remaining_internal_g1_lines; float elapsed_time; }; @@ -709,6 +714,9 @@ namespace Slic3r { unsigned char m_last_extruder_id; ExtruderColors m_extruder_colors; ExtruderTemps m_extruder_temps; + ExtruderTemps m_extruder_temps_config; + ExtruderTemps m_extruder_temps_first_layer_config; + bool m_is_XL_printer = false; int m_highest_bed_temp; float m_extruded_last_z; float m_first_layer_height; // mm @@ -722,6 +730,7 @@ namespace Slic3r { size_t m_last_default_color_id; bool m_detect_layer_based_on_tag {false}; int m_seams_count; + bool m_single_extruder_multi_material; #if ENABLE_GCODE_VIEWER_STATISTICS std::chrono::time_point m_start_time; #endif // ENABLE_GCODE_VIEWER_STATISTICS @@ -746,6 +755,8 @@ namespace Slic3r { TimeProcessor m_time_processor; UsedFilaments m_used_filaments; + Print* m_print{ nullptr }; + GCodeProcessorResult m_result; static unsigned int s_result_id; @@ -759,6 +770,7 @@ namespace Slic3r { GCodeProcessor(); void apply_config(const PrintConfig& config); + void set_print(Print* print) { m_print = print; } void enable_stealth_time_estimator(bool enabled); bool is_stealth_time_estimator_enabled() const { return m_time_processor.machines[static_cast(PrintEstimatedStatistics::ETimeMode::Stealth)].enabled; @@ -815,7 +827,7 @@ namespace Slic3r { // Move void process_G0(const GCodeReader::GCodeLine& line); - void process_G1(const GCodeReader::GCodeLine& line); + void process_G1(const GCodeReader::GCodeLine& line, const std::optional& remaining_internal_g1_lines = std::nullopt); void process_G2_G3(const GCodeReader::GCodeLine& line); // BBS: handle delay command @@ -930,6 +942,11 @@ namespace Slic3r { void process_T(const GCodeReader::GCodeLine& line); void process_T(const std::string_view command); + // post process the file with the given filename to: + // 1) add remaining time lines M73 and update moves' gcode ids accordingly + // 2) update used filament data + void run_post_process(); + //BBS: different path_type is only used for arc move void store_move_vertex(EMoveType type, EMovePathType path_type = EMovePathType::Noop_move); @@ -943,7 +960,7 @@ namespace Slic3r { Vec3f get_xyz_max_jerk(PrintEstimatedStatistics::ETimeMode mode) const; float get_retract_acceleration(PrintEstimatedStatistics::ETimeMode mode) const; void set_retract_acceleration(PrintEstimatedStatistics::ETimeMode mode, float value); - float get_acceleration(PrintEstimatedStatistics::ETimeMode mode) const; + float get_acceleration(PrintEstimatedStatistics::ETimeMode mode) const; void set_acceleration(PrintEstimatedStatistics::ETimeMode mode, float value); float get_travel_acceleration(PrintEstimatedStatistics::ETimeMode mode) const; void set_travel_acceleration(PrintEstimatedStatistics::ETimeMode mode, float value); diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index 71e532122b..521dd9b746 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -781,49 +781,7 @@ std::vector WipeTower2::prime( return results; } -#define FLAVOR_IS(val) this->m_gcode_flavor == val -#define FLAVOR_IS_NOT(val) this->m_gcode_flavor != val -std::string WipeTower2::set_preheat_temperature(unsigned int temperature, bool wait, int tool) -{ - if (wait && (FLAVOR_IS(gcfMakerWare) || FLAVOR_IS(gcfSailfish))) - return ""; - - std::string code, comment; - if (wait && FLAVOR_IS_NOT(gcfTeacup) && FLAVOR_IS_NOT(gcfRepRapFirmware)) { - code = "M109"; - comment = "set nozzle temperature and wait for it to be reached"; - } else { - if (FLAVOR_IS(gcfRepRapFirmware)) { // M104 is deprecated on RepRapFirmware - code = "G10"; - } else { - code = "M104"; - } - comment = "preheat next nozzle"; - } - - std::ostringstream gcode; - gcode << code << " "; - if (FLAVOR_IS(gcfMach3) || FLAVOR_IS(gcfMachinekit)) { - gcode << "P"; - } else { - gcode << "S"; - } - gcode << temperature; - if (tool != -1) { - if (FLAVOR_IS(gcfRepRapFirmware)) { - gcode << " P" << tool; - } else { - gcode << " T" << tool; - } - } - gcode << " ; " << comment << "\n"; - - if ((FLAVOR_IS(gcfTeacup) || FLAVOR_IS(gcfRepRapFirmware)) && wait) - gcode << "M116 ; wait for temperature to be reached\n"; - - return gcode.str(); -} WipeTower::ToolChangeResult WipeTower2::tool_change(size_t tool) { size_t old_tool = m_current_tool; @@ -879,8 +837,6 @@ WipeTower::ToolChangeResult WipeTower2::tool_change(size_t tool) // Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool. if (tool != (unsigned int)-1){ // This is not the last change. auto new_tool_temp = is_first_layer() ? m_filpar[tool].first_layer_temperature : m_filpar[tool].temperature; - // Orca: pre-heat next tool, it's a temperary solution before impelment the proper preheat. - writer.append(set_preheat_temperature(new_tool_temp, false, tool)); toolchange_Unload(writer, cleaning_box, m_filpar[m_current_tool].material, (is_first_layer() ? m_filpar[m_current_tool].first_layer_temperature : m_filpar[m_current_tool].temperature), new_tool_temp); diff --git a/src/libslic3r/GCode/WipeTower2.hpp b/src/libslic3r/GCode/WipeTower2.hpp index 1d37cbe791..0f377d00f7 100644 --- a/src/libslic3r/GCode/WipeTower2.hpp +++ b/src/libslic3r/GCode/WipeTower2.hpp @@ -255,9 +255,6 @@ private: // Goes through m_plan, calculates border and finish_layer extrusions and subtracts them from last wipe void save_on_last_wipe(); - // Orca: temp help function to set temperature - std::string set_preheat_temperature(unsigned int temperature, bool wait, int tool); - // to store information about tool changes for a given layer struct WipeTowerInfo{ struct ToolChange { diff --git a/src/libslic3r/GCodeReader.hpp b/src/libslic3r/GCodeReader.hpp index 52a37dde55..5d3b6a39ed 100644 --- a/src/libslic3r/GCodeReader.hpp +++ b/src/libslic3r/GCodeReader.hpp @@ -79,6 +79,16 @@ public: return strncmp(cmd, cmd_test, len) == 0 && GCodeReader::is_end_of_word(cmd[len]); } + static bool cmd_starts_with(const std::string& gcode_line, const char* cmd_test) { + return strncmp(GCodeReader::skip_whitespaces(gcode_line.c_str()), cmd_test, strlen(cmd_test)) == 0; + } + + static std::string extract_cmd(const std::string& gcode_line) { + GCodeLine temp; + temp.m_raw = gcode_line; + const std::string_view cmd = temp.cmd(); + return { cmd.begin(), cmd.end() }; + } private: std::string m_raw; float m_axis[NUM_AXES]; diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index d4ebb64362..f60d81a95a 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -90,48 +90,56 @@ std::string GCodeWriter::postamble() const return gcode.str(); } -std::string GCodeWriter::set_temperature(unsigned int temperature, bool wait, int tool) const -{ - if (wait && (FLAVOR_IS(gcfMakerWare) || FLAVOR_IS(gcfSailfish))) +std::string GCodeWriter::set_temperature(unsigned int temperature, GCodeFlavor flavor, bool wait, int tool, std::string comment){ + if (wait && (flavor == gcfMakerWare || flavor == gcfSailfish)) return ""; - - std::string code, comment; - if (wait && FLAVOR_IS_NOT(gcfTeacup) && FLAVOR_IS_NOT(gcfRepRapFirmware)) { - code = "M109"; - comment = "set nozzle temperature and wait for it to be reached"; + + std::string code; + if (wait && flavor != gcfTeacup && flavor != gcfRepRapFirmware) { + code = "M109"; + if(comment.empty()) + comment = "set nozzle temperature and wait for it to be reached"; } else { - if (FLAVOR_IS(gcfRepRapFirmware)) { // M104 is deprecated on RepRapFirmware + if (flavor == gcfRepRapFirmware) { // M104 is deprecated on RepRapFirmware code = "G10"; } else { code = "M104"; } - comment = "set nozzle temperature"; + if(comment.empty()) + comment = "set nozzle temperature"; } - + std::ostringstream gcode; gcode << code << " "; - if (FLAVOR_IS(gcfMach3) || FLAVOR_IS(gcfMachinekit)) { + if (flavor == gcfMach3 || flavor == gcfMachinekit) { gcode << "P"; } else { gcode << "S"; } gcode << temperature; - bool multiple_tools = this->multiple_extruders && ! m_single_extruder_multi_material; - if (tool != -1 && (multiple_tools || FLAVOR_IS(gcfMakerWare) || FLAVOR_IS(gcfSailfish)) ) { - if (FLAVOR_IS(gcfRepRapFirmware)) { + if (tool != -1) { + if (flavor == gcfRepRapFirmware) { gcode << " P" << tool; } else { gcode << " T" << tool; } } gcode << " ; " << comment << "\n"; - - if ((FLAVOR_IS(gcfTeacup) || FLAVOR_IS(gcfRepRapFirmware)) && wait) + + if ((flavor == gcfTeacup || flavor == gcfRepRapFirmware) && wait) gcode << "M116 ; wait for temperature to be reached\n"; - + return gcode.str(); } +std::string GCodeWriter::set_temperature(unsigned int temperature, bool wait, int tool) const +{ + // set tool to -1 to make sure we won't emit T parameter for single extruder or SEMM + if (!this->multiple_extruders || m_single_extruder_multi_material) + tool = -1; + return set_temperature(temperature, this->config.gcode_flavor, wait, tool); +} + // BBS std::string GCodeWriter::set_bed_temperature(int temperature, bool wait) { diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index 8e1effcc4e..df68f549fd 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -43,6 +43,8 @@ public: } std::string preamble(); std::string postamble() const; + static std::string set_temperature(unsigned int temperature, GCodeFlavor flavor, bool wait = false, int tool = -1, std::string comment = std::string()); + std::string set_temperature(unsigned int temperature, bool wait = false, int tool = -1) const; std::string set_bed_temperature(int temperature, bool wait = false); std::string set_chamber_temperature(int temperature, bool wait = false); diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 3650b4ef90..dd401776a4 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2935,6 +2935,30 @@ std::string PrintStatistics::finalize_output_path(const std::string &path_in) co return final_path; } +const std::string PrintStatistics::FilamentUsedG = "filament used [g]"; +const std::string PrintStatistics::FilamentUsedGMask = "; filament used [g] ="; + +const std::string PrintStatistics::TotalFilamentUsedG = "total filament used [g]"; +const std::string PrintStatistics::TotalFilamentUsedGMask = "; total filament used [g] ="; +const std::string PrintStatistics::TotalFilamentUsedGValueMask = "; total filament used [g] = %.2lf\n"; + +const std::string PrintStatistics::FilamentUsedCm3 = "filament used [cm3]"; +const std::string PrintStatistics::FilamentUsedCm3Mask = "; filament used [cm3] ="; + +const std::string PrintStatistics::FilamentUsedMm = "filament used [mm]"; +const std::string PrintStatistics::FilamentUsedMmMask = "; filament used [mm] ="; + +const std::string PrintStatistics::FilamentCost = "filament cost"; +const std::string PrintStatistics::FilamentCostMask = "; filament cost ="; + +const std::string PrintStatistics::TotalFilamentCost = "total filament cost"; +const std::string PrintStatistics::TotalFilamentCostMask = "; total filament cost ="; +const std::string PrintStatistics::TotalFilamentCostValueMask = "; total filament cost = %.2lf\n"; + +const std::string PrintStatistics::TotalFilamentUsedWipeTower = "total filament used for wipe tower [g]"; +const std::string PrintStatistics::TotalFilamentUsedWipeTowerValueMask = "; total filament used for wipe tower [g] = %.2lf\n"; + + /*add json export/import related functions */ #define JSON_POLYGON_CONTOUR "contour" #define JSON_POLYGON_HOLES "holes" diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index bd7b867b99..aebb46899f 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -771,6 +771,23 @@ struct PrintStatistics initial_tool = 0; filament_stats.clear(); } + static const std::string FilamentUsedG; + static const std::string FilamentUsedGMask; + static const std::string TotalFilamentUsedG; + static const std::string TotalFilamentUsedGMask; + static const std::string TotalFilamentUsedGValueMask; + static const std::string FilamentUsedCm3; + static const std::string FilamentUsedCm3Mask; + static const std::string FilamentUsedMm; + static const std::string FilamentUsedMmMask; + static const std::string FilamentCost; + static const std::string FilamentCostMask; + static const std::string TotalFilamentCost; + static const std::string TotalFilamentCostMask; + static const std::string TotalFilamentCostValueMask; + static const std::string TotalFilamentUsedWipeTower; + static const std::string TotalFilamentUsedWipeTowerValueMask; + }; typedef std::vector PrintObjectPtrs; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 57697dd8d1..7856bd6ba6 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -7677,6 +7677,22 @@ bool has_skirt(const DynamicPrintConfig& cfg) float get_real_skirt_dist(const DynamicPrintConfig& cfg) { return has_skirt(cfg) ? cfg.opt_float("skirt_distance") : 0; } +static bool is_XL_printer(const std::string& printer_notes) +{ + return boost::algorithm::contains(printer_notes, "PRINTER_VENDOR_PRUSA3D") + && boost::algorithm::contains(printer_notes, "PRINTER_MODEL_XL"); +} + +bool is_XL_printer(const DynamicPrintConfig &cfg) +{ + auto *printer_notes = cfg.opt("printer_notes"); + return printer_notes && is_XL_printer(printer_notes->value); +} + +bool is_XL_printer(const PrintConfig &cfg) +{ + return is_XL_printer(cfg.printer_notes.value); +} } // namespace Slic3r #include diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 89a020774e..620a24b381 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1651,6 +1651,9 @@ private: static PrintAndCLIConfigDef s_def; }; +bool is_XL_printer(const DynamicPrintConfig &cfg); +bool is_XL_printer(const PrintConfig &cfg); + Points get_bed_shape(const DynamicPrintConfig &cfg); Points get_bed_shape(const PrintConfig &cfg); Points get_bed_shape(const SLAPrinterConfig &cfg); From c44887ee7adaca03339ecefd790a4081c373dd87 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 21 Jul 2024 17:58:37 +0800 Subject: [PATCH 044/151] preheat work - done --- resources/profiles/Custom.json | 2 +- .../machine/fdm_toolchanger_common.json | 2 +- .../fdm_process_mytoolchanger_common.json | 6 ++- resources/profiles/Prusa.json | 2 +- .../Prusa/process/process_common_xl_5t.json | 4 +- src/libslic3r/GCode/GCodeProcessor.cpp | 37 ++++++++++++------- src/libslic3r/GCode/GCodeProcessor.hpp | 2 + src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 2 + src/libslic3r/PrintConfig.cpp | 20 ++++++++++ src/libslic3r/PrintConfig.hpp | 2 + src/slic3r/GUI/ConfigManipulation.cpp | 7 +++- src/slic3r/GUI/Tab.cpp | 2 + 13 files changed, 69 insertions(+), 21 deletions(-) diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json index 9aa9bfde7b..e4dae5bd72 100644 --- a/resources/profiles/Custom.json +++ b/resources/profiles/Custom.json @@ -1,6 +1,6 @@ { "name": "Custom Printer", - "version": "02.01.03.00", + "version": "02.01.04.00", "force_update": "0", "description": "My configurations", "machine_model_list": [ diff --git a/resources/profiles/Custom/machine/fdm_toolchanger_common.json b/resources/profiles/Custom/machine/fdm_toolchanger_common.json index 9d724ed88f..0d1fe9c165 100644 --- a/resources/profiles/Custom/machine/fdm_toolchanger_common.json +++ b/resources/profiles/Custom/machine/fdm_toolchanger_common.json @@ -182,7 +182,7 @@ "purge_in_prime_tower": "0", "machine_pause_gcode": "M601", "machine_start_gcode": "PRINT_START TOOL_TEMP={first_layer_temperature[initial_tool]} {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif} {if is_extruder_used[2]}T2_TEMP={first_layer_temperature[2]}{endif} {if is_extruder_used[3]}T3_TEMP={first_layer_temperature[3]}{endif} {if is_extruder_used[4]}T4_TEMP={first_layer_temperature[4]}{endif} {if is_extruder_used[5]}T5_TEMP={first_layer_temperature[5]}{endif} BED_TEMP=[first_layer_bed_temperature] TOOL=[initial_tool]\n\n", - "change_filament_gcode": "M104 S{nozzle_temperature[next_extruder]} T[next_extruder] ; set new tool temperature so it can start heating while changing", + "change_filament_gcode": "", "scan_first_layer": "0", "nozzle_type": "undefine", "auxiliary_fan": "0" diff --git a/resources/profiles/Custom/process/fdm_process_mytoolchanger_common.json b/resources/profiles/Custom/process/fdm_process_mytoolchanger_common.json index 9d6e497afe..88a499c8d6 100644 --- a/resources/profiles/Custom/process/fdm_process_mytoolchanger_common.json +++ b/resources/profiles/Custom/process/fdm_process_mytoolchanger_common.json @@ -23,5 +23,9 @@ "enable_prime_tower": "1", "wipe_tower_cone_angle": "25", "wipe_tower_extra_spacing": "150%", - "wipe_tower_rotation_angle": "90" + "wipe_tower_rotation_angle": "90", + "ooze_prevention": "1", + "standby_temperature_delta": "-40", + "preheat_time": "30", + "preheat_steps": "1" } \ No newline at end of file diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index 071bf1bfb0..b6b8322c6d 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.01.01.30", + "version": "02.01.02.30", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ diff --git a/resources/profiles/Prusa/process/process_common_xl_5t.json b/resources/profiles/Prusa/process/process_common_xl_5t.json index f624f7780a..1fe313aabe 100644 --- a/resources/profiles/Prusa/process/process_common_xl_5t.json +++ b/resources/profiles/Prusa/process/process_common_xl_5t.json @@ -10,5 +10,7 @@ "wipe_tower_rotation_angle": "90", "single_extruder_multi_material_priming": "0", "ooze_prevention": "1", - "standby_temperature_delta": "-40" + "standby_temperature_delta": "-40", + "preheat_time": "120", + "preheat_steps": "10" } \ No newline at end of file diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index a2393383e9..7506a105d7 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -1058,7 +1058,12 @@ void GCodeProcessor::apply_config(const PrintConfig& config) // Orca: m_is_XL_printer = is_XL_printer(config); - m_result.backtrace_enabled = m_is_XL_printer || ( !m_single_extruder_multi_material && extruders_count > 1); + m_preheat_time = config.preheat_time; + m_preheat_steps = config.preheat_steps; + // sanity check + if(m_preheat_steps < 1) + m_preheat_steps = 1; + m_result.backtrace_enabled = m_preheat_time > 0 && (m_is_XL_printer || (!m_single_extruder_multi_material && extruders_count > 1)); m_extruder_offsets.resize(extruders_count); m_extruder_colors.resize(extruders_count); @@ -1570,6 +1575,8 @@ void GCodeProcessor::reset() m_detect_layer_based_on_tag = false; m_seams_count = 0; + m_preheat_time = 0.f; + m_preheat_steps = 1; #if ENABLE_GCODE_VIEWER_DATA_CHECKING m_mm3_per_mm_compare.reset(); @@ -4465,7 +4472,7 @@ void GCodeProcessor::run_post_process() struct Backtrace { float time{ 60.0f }; - unsigned int steps{ 10 }; + int steps{ 10 }; float time_step() const { return time / float(steps); } }; @@ -4601,11 +4608,18 @@ void GCodeProcessor::run_post_process() void insert_lines(const Backtrace& backtrace, const std::string& cmd, std::function&)> line_inserter, std::function line_replacer) { + // Orca: find start pos by seaching G28/G29/PRINT_START/START_PRINT commands + auto is_start_pos = [](const std::string& curr_cmd) { + return boost::iequals(curr_cmd, "G28") + || boost::iequals(curr_cmd, "G29") + || boost::iequals(curr_cmd, "PRINT_START") + || boost::iequals(curr_cmd, "START_PRINT"); + }; assert(!m_lines.empty()); const float time_step = backtrace.time_step(); size_t rev_it_dist = 0; // distance from the end of the cache of the starting point of the backtrace float last_time_insertion = 0.0f; // used to avoid inserting two lines at the same time - for (unsigned int i = 0; i < backtrace.steps; ++i) { + for (int i = 0; i < backtrace.steps; ++i) { const float backtrace_time_i = (i + 1) * time_step; const float time_threshold_i = m_times[Normal] - backtrace_time_i; auto rev_it = m_lines.rbegin() + rev_it_dist; @@ -4613,18 +4627,15 @@ void GCodeProcessor::run_post_process() std::string curr_cmd = GCodeReader::GCodeLine::extract_cmd(rev_it->line); // backtrace into the cache to find the place where to insert the line - while (rev_it != m_lines.rend() && rev_it->times[Normal] > time_threshold_i && curr_cmd != cmd && curr_cmd != "G28" && curr_cmd != "G29") { + while (rev_it != m_lines.rend() && rev_it->times[Normal] > time_threshold_i && curr_cmd != cmd && !is_start_pos(curr_cmd)) { rev_it->line = line_replacer(rev_it->line); ++rev_it; if (rev_it != m_lines.rend()) curr_cmd = GCodeReader::GCodeLine::extract_cmd(rev_it->line); } - // we met the previous evenience of cmd, or a G28/G29 command. stop inserting lines - // Orca: 1. Use boost::iequals to handle g28/g29 cases - // 2. Handle PRINT_START and START_PRINT to the stop condition - if (rev_it != m_lines.rend() && (curr_cmd == cmd || boost::iequals(curr_cmd, "G28") || boost::iequals(curr_cmd, "G29") || - boost::iequals(curr_cmd, "PRINT_START") || boost::iequals(curr_cmd, "START_PRINT"))) + // we met the previous evenience of cmd, or the start position, stop inserting lines + if (rev_it != m_lines.rend() && (curr_cmd == cmd || is_start_pos(curr_cmd))) break; // insert the line for the current step @@ -4970,8 +4981,8 @@ void GCodeProcessor::run_post_process() out += " S" + std::to_string(temperature) + "\n"; return out; } else { - std::string comment = "preheat tool " + std::to_string(tool_number) + - "time: " + std::to_string(std::round(time_diffs[0])) + "s"; + std::string comment = "preheat T" + std::to_string(tool_number) + + " time: " + std::to_string((int) std::round(time_diffs[0])) + "s"; return GCodeWriter::set_temperature(temperature, this->m_flavor, false, tool_number, comment); } }, @@ -4983,7 +4994,7 @@ void GCodeProcessor::run_post_process() reader.parse_line(line, [&gline](GCodeReader& reader, const GCodeReader::GCodeLine& l) { gline = l; }); float val; - if (gline.has_value('T', val) && gline.raw().find("cooldown") != std::string::npos && m_is_XL_printer) { + if (gline.has_value('T', val) && gline.raw().find("cooldown") != std::string::npos) { if (static_cast(val) == tool_number) return std::string("; removed M104\n"); } @@ -4998,7 +5009,7 @@ void GCodeProcessor::run_post_process() unsigned int line_id = 0; // Backtrace data for Tx gcode lines - static const ExportLines::Backtrace backtrace_T = { 120.0f, 10 }; + const ExportLines::Backtrace backtrace_T = { m_preheat_time, m_preheat_steps }; // In case there are multiple sources of backtracing, keeps track of the longest backtrack time needed // to flush the backtrace cache accordingly float max_backtrace_time = 120.0f; diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 2896583786..a89ba785c9 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -731,6 +731,8 @@ class Print; bool m_detect_layer_based_on_tag {false}; int m_seams_count; bool m_single_extruder_multi_material; + float m_preheat_time; + int m_preheat_steps; #if ENABLE_GCODE_VIEWER_STATISTICS std::chrono::time_point m_start_time; #endif // ENABLE_GCODE_VIEWER_STATISTICS diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 1a3a984a74..f3d34aab9d 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -784,7 +784,7 @@ static std::vector s_Preset_print_options { "support_top_z_distance", "support_on_build_plate_only","support_critical_regions_only", "bridge_no_support", "thick_bridges", "thick_internal_bridges","dont_filter_internal_bridges", "max_bridge_length", "print_sequence", "print_order", "support_remove_small_overhang", "filename_format", "wall_filament", "support_bottom_z_distance", "sparse_infill_filament", "solid_infill_filament", "support_filament", "support_interface_filament","support_interface_not_for_body", - "ooze_prevention", "standby_temperature_delta", "interface_shells", "line_width", "initial_layer_line_width", + "ooze_prevention", "standby_temperature_delta", "preheat_time","preheat_steps", "interface_shells", "line_width", "initial_layer_line_width", "inner_wall_line_width", "outer_wall_line_width", "sparse_infill_line_width", "internal_solid_infill_line_width", "top_surface_line_width", "support_line_width", "infill_wall_overlap","top_bottom_infill_wall_overlap", "bridge_flow", "internal_bridge_flow", "elefant_foot_compensation", "elefant_foot_compensation_layers", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index dd401776a4..b4bc6dadab 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -161,6 +161,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "use_firmware_retraction", "slow_down_layer_time", "standby_temperature_delta", + "preheat_time", + "preheat_steps", "machine_start_gcode", "filament_start_gcode", "change_filament_gcode", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 7856bd6ba6..2b320b331d 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4079,6 +4079,26 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(-5)); + def = this->add("preheat_time", coFloat); + def->label = L("Preheat time"); + def->tooltip = L("To reduce the waiting time after tool change, Orca can preheat the next tool while the current tool is still in use. " + "This setting specifies the time in seconds to preheat the next tool. Orca will insert a M104 command to preheat the tool in advance."); + def->sidetext = "s"; + def->min = 0; + def->max = 120; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(30.0)); + + def = this->add("preheat_steps", coInt); + def->label = L("Preheat steps"); + def->tooltip = L("Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1."); + // def->sidetext = ""; + def->min = 1; + def->max = 10; + def->mode = comDevelop; + def->set_default_value(new ConfigOptionInt(1)); + + def = this->add("machine_start_gcode", coString); def->label = L("Start G-code"); def->tooltip = L("Start G-code when start the whole printing"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 620a24b381..6fc3491862 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1225,6 +1225,8 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionBool, spiral_mode_smooth)) ((ConfigOptionFloatOrPercent, spiral_mode_max_xy_smoothing)) ((ConfigOptionInt, standby_temperature_delta)) + ((ConfigOptionFloat, preheat_time)) + ((ConfigOptionInt, preheat_steps)) ((ConfigOptionInts, nozzle_temperature)) ((ConfigOptionBools, wipe)) // BBS diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 39f8591ec8..ddf34bf7b9 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -667,8 +667,11 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_field("print_order", !have_sequential_printing); bool have_ooze_prevention = config->opt_bool("ooze_prevention"); - toggle_field("standby_temperature_delta", have_ooze_prevention); - + toggle_line("standby_temperature_delta", have_ooze_prevention); + toggle_line("preheat_time", have_ooze_prevention); + int preheat_steps = config->opt_int("preheat_steps"); + toggle_line("preheat_steps", have_ooze_prevention && (preheat_steps > 0)); + bool have_prime_tower = config->opt_bool("enable_prime_tower"); for (auto el : { "prime_tower_width", "prime_tower_brim_width"}) toggle_line(el, have_prime_tower); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index fab5980700..b7d3e3d5c9 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2299,6 +2299,8 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Ooze prevention")); optgroup->append_single_option_line("ooze_prevention"); optgroup->append_single_option_line("standby_temperature_delta"); + optgroup->append_single_option_line("preheat_time"); + optgroup->append_single_option_line("preheat_steps"); optgroup = page->new_optgroup(L("Flush options"), L"param_flush"); optgroup->append_single_option_line("flush_into_infill", "reduce-wasting-during-filament-change#wipe-into-infill"); From e612a44112e4188e12530d3237b22ddf29b48cd7 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 21 Jul 2024 23:29:06 +0800 Subject: [PATCH 045/151] force restore Z --- src/libslic3r/GCode.cpp | 9 +++++++-- src/libslic3r/GCodeWriter.hpp | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index a2d4516022..f5c27e949c 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -762,8 +762,13 @@ static std::vector get_path_of_change_filament(const Print& print) if (is_ramming) gcodegen.m_wipe.reset_path(); // We don't want wiping on the ramming lines. toolchange_gcode_str = gcodegen.set_extruder(new_extruder_id, tcr.print_z); // TODO: toolchange_z vs print_z - if (gcodegen.config().enable_prime_tower) - deretraction_str = gcodegen.unretract(); + if (gcodegen.config().enable_prime_tower) { + deretraction_str += gcodegen.writer().travel_to_z(z, "restore layer Z"); + Vec3d position{gcodegen.writer().get_position()}; + position.z() = z; + gcodegen.writer().set_position(position); + deretraction_str += gcodegen.unretract(); + } } // Insert the toolchange and deretraction gcode into the generated gcode. diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index df68f549fd..ccdd460fe0 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -82,7 +82,7 @@ public: std::string lift(LiftType lift_type = LiftType::NormalLift, bool spiral_vase = false); std::string unlift(); Vec3d get_position() const { return m_pos; } - void set_position(const Vec3d& in) { m_pos = in; } + void set_position(const Vec3d& in) { m_pos = in; } double get_zhop() const { return m_lifted; } //BBS: set offset for gcode writer From d252a6f7f54f61ffad122fab2b19637289d9d39a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 22 Jul 2024 08:54:01 +0800 Subject: [PATCH 046/151] Fixed an issue that tall skirt is generated when ooze prevention and skirt are both enabled. --- src/libslic3r/Print.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index b4bc6dadab..8292e576ef 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -499,7 +499,10 @@ std::vector Print::print_object_ids() const bool Print::has_infinite_skirt() const { - return (m_config.draft_shield == dsEnabled && m_config.skirt_loops > 0) || (m_config.ooze_prevention && this->extruders().size() > 1); + // Orca: unclear why (m_config.ooze_prevention && this->extruders().size() > 1) logic is here, removed. + // return (m_config.draft_shield == dsEnabled && m_config.skirt_loops > 0) || (m_config.ooze_prevention && this->extruders().size() > 1); + + return (m_config.draft_shield == dsEnabled && m_config.skirt_loops > 0); } bool Print::has_skirt() const From 1929537fb0ceb19dc111b2c1c37892269a85b371 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 23 Jul 2024 00:12:54 +0800 Subject: [PATCH 047/151] Fix misc bugs --- .../0.20mm Standard @Artillery X3Plus 0.4 nozzle.json | 2 +- .../0.20mm Standard @Artillery X3Pro 0.4 nozzle.json | 2 +- .../0.20mm Standard @Artillery X4Plus 0.4 nozzle.json | 2 +- .../0.20mm Standard @Artillery X4Pro 0.4 nozzle.json | 2 +- .../Comgrow/process/fdm_process_comgrow_common.json | 2 +- .../0.20mm Standard @Flashforge G3U 0.4 Nozzle.json | 2 +- .../FlyingBear/process/S1/fdm_process_common_S1.json | 2 +- .../profiles/FlyingBear/process/fdm_process_common.json | 2 +- .../Ginger Additive/process/fdm_process_common.json | 2 +- .../InfiMech/process/HSN/fdm_process_common_HSN.json | 2 +- .../profiles/InfiMech/process/fdm_process_common.json | 2 +- src/libslic3r/GCode.cpp | 8 +------- src/libslic3r/GCode/ToolOrdering.cpp | 2 +- src/libslic3r/PlaceholderParser.cpp | 2 +- src/libslic3r/Print.cpp | 5 +++-- src/libslic3r/PrintConfig.cpp | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 2 -- 17 files changed, 18 insertions(+), 25 deletions(-) diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json index ca2afafa24..cd1de6b7e4 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json @@ -156,7 +156,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json index 63c52ab260..bab2091fdd 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json @@ -156,7 +156,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json index 6541d48fb2..e72063a41c 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json @@ -156,7 +156,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json index 3f2e3ca406..59b4db5f67 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json @@ -156,7 +156,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Comgrow/process/fdm_process_comgrow_common.json b/resources/profiles/Comgrow/process/fdm_process_comgrow_common.json index 8f144ff59a..194e40a196 100644 --- a/resources/profiles/Comgrow/process/fdm_process_comgrow_common.json +++ b/resources/profiles/Comgrow/process/fdm_process_comgrow_common.json @@ -128,7 +128,7 @@ "role_based_wipe_speed": "1", "seam_gap": "5%", "seam_position": "aligned", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "3", "skirt_height": "2", "skirt_loops": "0", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json index 6995772a4d..15f4fa3add 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json @@ -136,7 +136,7 @@ "role_based_wipe_speed": "1", "seam_gap": "10%", "seam_position": "aligned", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "2", diff --git a/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json b/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json index 43964daced..e116191460 100644 --- a/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json +++ b/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json @@ -115,7 +115,7 @@ "role_based_wipe_speed": "1", "seam_gap": "10%", "seam_position": "aligned", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/FlyingBear/process/fdm_process_common.json b/resources/profiles/FlyingBear/process/fdm_process_common.json index 6f9e1e1fcb..8e20a992b1 100644 --- a/resources/profiles/FlyingBear/process/fdm_process_common.json +++ b/resources/profiles/FlyingBear/process/fdm_process_common.json @@ -115,7 +115,7 @@ "role_based_wipe_speed": "1", "seam_gap": "10%", "seam_position": "aligned", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Ginger Additive/process/fdm_process_common.json b/resources/profiles/Ginger Additive/process/fdm_process_common.json index 11b16c1391..81075c236f 100644 --- a/resources/profiles/Ginger Additive/process/fdm_process_common.json +++ b/resources/profiles/Ginger Additive/process/fdm_process_common.json @@ -154,7 +154,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "external", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "1", diff --git a/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json b/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json index fc457c76d8..2afeaf2cb0 100644 --- a/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json +++ b/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json @@ -114,7 +114,7 @@ "role_based_wipe_speed": "1", "seam_gap": "10%", "seam_position": "aligned", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/InfiMech/process/fdm_process_common.json b/resources/profiles/InfiMech/process/fdm_process_common.json index cb944ca97d..0bb51b5c68 100644 --- a/resources/profiles/InfiMech/process/fdm_process_common.json +++ b/resources/profiles/InfiMech/process/fdm_process_common.json @@ -114,7 +114,7 @@ "role_based_wipe_speed": "1", "seam_gap": "10%", "seam_position": "aligned", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index f5c27e949c..535c304389 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2147,7 +2147,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato throw Slic3r::SlicingError(_(L("No object can be printed. Maybe too small"))); has_wipe_tower = print.has_wipe_tower() && tool_ordering.has_wipe_tower(); // Orca: support all extruder priming - initial_extruder_id = (has_wipe_tower && !print.config().single_extruder_multi_material_priming) ? + initial_extruder_id = (!is_bbl_printers && has_wipe_tower && !print.config().single_extruder_multi_material_priming) ? // The priming towers will be skipped. tool_ordering.all_extruders().back() : // Don't skip the priming towers. @@ -6157,13 +6157,7 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b std::string toolchange_gcode_parsed; //Orca: Ignore change_filament_gcode if is the first call for a tool change and manual_filament_change is enabled if (!change_filament_gcode.empty() && !(m_config.manual_filament_change.value && m_toolchange_count == 1)) { - dyn_config.set_key_value("previous_extruder", - new ConfigOptionInt((int) (m_writer.extruder() != nullptr ? m_writer.extruder()->id() : -1))); - dyn_config.set_key_value("next_extruder", new ConfigOptionInt((int) extruder_id)); - dyn_config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); - dyn_config.set_key_value("layer_z", new ConfigOptionFloat(print_z)); dyn_config.set_key_value("toolchange_z", new ConfigOptionFloat(print_z)); - dyn_config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); toolchange_gcode_parsed = placeholder_parser_process("change_filament_gcode", change_filament_gcode, extruder_id, &dyn_config); check_add_eol(toolchange_gcode_parsed); diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index e5c3260084..7f270b69c2 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -875,7 +875,7 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume() return false; }; - std::optionalcurrent_extruder_id; + std::optionalcurrent_extruder_id(-1); for (int i = 0; i < m_layer_tools.size(); ++i) { LayerTools& lt = m_layer_tools[i]; if (lt.extruders.empty()) diff --git a/src/libslic3r/PlaceholderParser.cpp b/src/libslic3r/PlaceholderParser.cpp index c6e4bc525d..04935ae481 100644 --- a/src/libslic3r/PlaceholderParser.cpp +++ b/src/libslic3r/PlaceholderParser.cpp @@ -1063,7 +1063,7 @@ namespace client case coPercents: output.set_d(static_cast(opt.opt)->values[idx]); break; case coPoints: output.set_s(to_string(static_cast(opt.opt)->values[idx])); break; case coBools: output.set_b(static_cast(opt.opt)->values[idx] != 0); break; - //case coEnums: output.set_s(opt.opt->vserialize()[idx]); break; + case coEnums: output.set_i(static_cast(opt.opt)->values[idx]); break; default: ctx->throw_exception("Unsupported vector variable type", opt.it_range); } diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 8292e576ef..b7b99f7a51 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2581,6 +2581,7 @@ void Print::_make_wipe_tower() for (unsigned int i = 0; i(flush_matrix.begin()+i*number_of_extruders, flush_matrix.begin()+(i+1)*number_of_extruders)); + const auto bUseWipeTower2 = is_BBL_printer() ? false : true; // Orca: itertate over wipe_volumes and change the non-zero values to the prime_volume if (!m_config.purge_in_prime_tower && !is_BBL_printer()) { for (unsigned int i = 0; i < number_of_extruders; ++i) { @@ -2593,7 +2594,7 @@ void Print::_make_wipe_tower() } // Let the ToolOrdering class know there will be initial priming extrusions at the start of the print. - m_wipe_tower_data.tool_ordering = ToolOrdering(*this, (unsigned int)-1, true); + m_wipe_tower_data.tool_ordering = ToolOrdering(*this, (unsigned int) -1, bUseWipeTower2 ? true : false); if (!m_wipe_tower_data.tool_ordering.has_wipe_tower()) // Don't generate any wipe tower. @@ -2636,7 +2637,7 @@ void Print::_make_wipe_tower() } this->throw_if_canceled(); - if (is_BBL_printer()) { + if (!bUseWipeTower2) { // in BBL machine, wipe tower is only use to prime extruder. So just use a global wipe volume. WipeTower wipe_tower(m_config, m_plate_index, m_origin, m_config.prime_volume, m_wipe_tower_data.tool_ordering.first_extruder(), m_wipe_tower_data.tool_ordering.empty() ? 0.f : m_wipe_tower_data.tool_ordering.back().print_z); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 2b320b331d..7eea47014a 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4156,7 +4156,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Prime all printing extruders"); def->tooltip = L("If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print."); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionBool(true)); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("slice_closing_radius", coFloat); def->label = L("Slice gap closing radius"); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index a378f63970..e6d841d102 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -9186,8 +9186,6 @@ void GLCanvas3D::_load_wipe_tower_toolpaths(const BuildVolume& build_volume, con ctxt.print = print; ctxt.tool_colors = tool_colors.empty() ? nullptr : &tool_colors; - //BBS: has no single_extruder_multi_material_priming - //if (print->wipe_tower_data().priming && print->config().single_extruder_multi_material_priming) if (print->wipe_tower_data().priming) for (int i=0; i<(int)print->wipe_tower_data().priming.get()->size(); ++i) ctxt.priming.emplace_back(print->wipe_tower_data().priming.get()->at(i)); From 1ef97913d8a8725c175803ec973dee40439f2c70 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 23 Jul 2024 00:43:12 +0800 Subject: [PATCH 048/151] hide/disable options accordingly --- src/libslic3r/GCode.cpp | 6 +++--- src/slic3r/GUI/ConfigManipulation.cpp | 10 ++++++---- src/slic3r/GUI/Tab.cpp | 14 ++++++++++---- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 535c304389..ec400c1ae6 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2233,7 +2233,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->placeholder_parser().set("current_object_idx", 0); // For the start / end G-code to do the priming and final filament pull in case there is no wipe tower provided. this->placeholder_parser().set("has_wipe_tower", has_wipe_tower); - this->placeholder_parser().set("has_single_extruder_multi_material_priming", has_wipe_tower && print.config().single_extruder_multi_material_priming); + this->placeholder_parser().set("has_single_extruder_multi_material_priming", !is_bbl_printers && has_wipe_tower && print.config().single_extruder_multi_material_priming); this->placeholder_parser().set("total_toolchanges", std::max(0, print.wipe_tower_data().number_of_toolchanges)); // Check for negative toolchanges (single extruder mode) and set to 0 (no tool change). this->placeholder_parser().set("num_extruders", int(print.config().nozzle_diameter.values.size())); this->placeholder_parser().set("retract_length", new ConfigOptionFloats(print.config().retraction_length)); @@ -2475,7 +2475,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato } // Orca: support extruder priming - if (! (has_wipe_tower && print.config().single_extruder_multi_material_priming)) + if (is_bbl_printers || ! (has_wipe_tower && print.config().single_extruder_multi_material_priming)) { // Set initial extruder only after custom start G-code. // Ugly hack: Do not set the initial extruder if the extruder is primed using the MMU priming towers at the edge of the print bed. @@ -2606,7 +2606,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato //BBS file.write(m_writer.travel_to_z(initial_layer_print_height + m_config.z_offset.value, "Move to the first layer height")); - if (print.config().single_extruder_multi_material_priming) { + if (!is_bbl_printers && print.config().single_extruder_multi_material_priming) { file.write(m_wipe_tower->prime(*this)); // Verify, whether the print overaps the priming extrusions. BoundingBoxf bbox_print(get_print_extrusions_extents(print)); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index ddf34bf7b9..a9fd41f8b8 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -665,7 +665,12 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co // for (auto el : { "extruder_clearance_radius", "extruder_clearance_height_to_rod", "extruder_clearance_height_to_lid" }) // toggle_field(el, have_sequential_printing); toggle_field("print_order", !have_sequential_printing); + + toggle_field("single_extruder_multi_material", !is_BBL_Printer); + auto bSEMM = preset_bundle->printers.get_edited_preset().config.opt_bool("single_extruder_multi_material"); + + toggle_field("ooze_prevention", !bSEMM); bool have_ooze_prevention = config->opt_bool("ooze_prevention"); toggle_line("standby_temperature_delta", have_ooze_prevention); toggle_line("preheat_time", have_ooze_prevention); @@ -676,9 +681,6 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co for (auto el : { "prime_tower_width", "prime_tower_brim_width"}) toggle_line(el, have_prime_tower); - auto bSEMM = preset_bundle->printers.get_edited_preset().config.opt_bool("single_extruder_multi_material"); - toggle_field("purge_in_prime_tower", bSEMM); - for (auto el : {"wall_filament", "sparse_infill_filament", "solid_infill_filament", "wipe_tower_filament"}) toggle_line(el, !bSEMM); @@ -689,7 +691,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co "wipe_tower_bridging", "wipe_tower_extra_flow", "wipe_tower_no_sparse_layers", "single_extruder_multi_material_priming"}) - toggle_line(el, have_prime_tower); + toggle_line(el, have_prime_tower && !is_BBL_Printer); toggle_line("prime_volume",have_prime_tower && (!purge_in_primetower || !bSEMM)); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index b7d3e3d5c9..a59803efe7 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -4447,9 +4447,15 @@ void TabPrinter::toggle_options() if (m_active_page->title() == L("Multimaterial")) { // SoftFever: hide specific settings for BBL printer - for (auto el : - {"purge_in_prime_tower", "enable_filament_ramming", "cooling_tube_retraction", "cooling_tube_length", "parking_pos_retraction", "extra_loading_move", "high_current_on_filament_swap", }) - toggle_option(el, !is_BBL_printer); + for (auto el : { + "enable_filament_ramming", + "cooling_tube_retraction", + "cooling_tube_length", + "parking_pos_retraction", + "extra_loading_move", + "high_current_on_filament_swap", + }) + toggle_option(el, !is_BBL_printer); auto bSEMM = m_config->opt_bool("single_extruder_multi_material"); if (!bSEMM && m_config->opt_bool("manual_filament_change")) { @@ -4459,7 +4465,7 @@ void TabPrinter::toggle_options() } toggle_option("extruders_count", !bSEMM); toggle_option("manual_filament_change", bSEMM); - toggle_option("purge_in_prime_tower", bSEMM); + toggle_option("purge_in_prime_tower", bSEMM && !is_BBL_printer); } wxString extruder_number; long val = 1; From bdbb502ee67452516605e881f364c2a749a48cbb Mon Sep 17 00:00:00 2001 From: yw4z Date: Tue, 23 Jul 2024 13:00:21 +0300 Subject: [PATCH 049/151] Color fixes (#5712) * Flushing volumes button background color for active state * Sliced plates bar > Use different colors on plate numbers for light / dark theme * Remove 3D navigator background * Device & Project Tab > Sidebar > Selected tab background color * Merge branch 'SoftFever:main' into color-fixes-3 * Correct sidebar button color for light mode for bbl monitor / calibration and project page * Homepage fixes * Fix parameters group title color too bright on dark theme * Search popup hovered item background color * Sidebar > Search box > match border color with other input/combo boxes * fix indents * Add descriptions to statecolors * Paint gizmos > remove background of non active Tool / Brush buttons on dark mode * Merge branch 'SoftFever:main' into color-fixes-3 * Top bar / Main tab bar button hover background * Fix broken color change from last merges * Gizmos selected text background * Keyboard shortcuts window selected tab bg color * About page link color * Project page fixes * match disabled text color on combo boxes with input boxes * Use better background color for disabled elements on dark mode * match all colors for disabled elements * BBL > Monitor tab > Add printer text and icon not visible on dark theme * even darker bg color for homepage thumbnails * Sidebar arrow not visible * Better bg color for row highlighting * match style of gizmo combo box * Merge branch 'SoftFever:main' into color-fixes-3 * Revert changes for main tab bar background color of button while hover --- resources/images/bind_device_ping_code.svg | 2 +- resources/images/hms_arrow.svg | 2 +- resources/web/homepage/css/dark.css | 20 ++++-- resources/web/homepage/css/home.css | 10 +-- src/slic3r/GUI/AboutDialog.cpp | 2 +- src/slic3r/GUI/Auxiliary.cpp | 1 + src/slic3r/GUI/Auxiliary.hpp | 2 +- src/slic3r/GUI/BitmapCache.cpp | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- src/slic3r/GUI/GUI_App.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 13 ++-- .../GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 13 ++-- src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp | 13 ++-- src/slic3r/GUI/ImGuiWrapper.cpp | 14 ++-- src/slic3r/GUI/KBShortcutsDialog.cpp | 4 +- src/slic3r/GUI/OptionsGroup.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 2 +- src/slic3r/GUI/Project.hpp | 2 +- src/slic3r/GUI/Search.cpp | 4 +- src/slic3r/GUI/SelectMachine.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 6 +- src/slic3r/GUI/TabButton.cpp | 4 +- src/slic3r/GUI/Tabbook.cpp | 2 +- src/slic3r/GUI/Widgets/ComboBox.cpp | 2 +- src/slic3r/GUI/Widgets/SpinInput.cpp | 4 +- src/slic3r/GUI/Widgets/StateColor.cpp | 70 +++++++++---------- src/slic3r/GUI/Widgets/TabCtrl.cpp | 2 +- src/slic3r/GUI/Widgets/TextInput.cpp | 4 +- 28 files changed, 111 insertions(+), 97 deletions(-) diff --git a/resources/images/bind_device_ping_code.svg b/resources/images/bind_device_ping_code.svg index 5c1ff4742d..2d83240adb 100644 --- a/resources/images/bind_device_ping_code.svg +++ b/resources/images/bind_device_ping_code.svg @@ -1,3 +1,3 @@ - + diff --git a/resources/images/hms_arrow.svg b/resources/images/hms_arrow.svg index 5cebec4000..c48bfd9a3a 100644 --- a/resources/images/hms_arrow.svg +++ b/resources/images/hms_arrow.svg @@ -1,3 +1,3 @@ - + diff --git a/resources/web/homepage/css/dark.css b/resources/web/homepage/css/dark.css index 8f585744da..69df4c34a0 100644 --- a/resources/web/homepage/css/dark.css +++ b/resources/web/homepage/css/dark.css @@ -33,7 +33,7 @@ body /*----Left Menu Button----*/ #LogoutBtn:hover { - background: #004942; + background: #223C3C; color: #efeff0; } @@ -45,7 +45,7 @@ body .BtnItem:hover { color: #efeff0; - background-color: #004942; + background-color: #223C3C; } .BtnItem:hover .LeftIcon @@ -56,7 +56,7 @@ body .BtnItemSelected { color: #efeff0; - background-color: #004942; + background-color: #223C3C; } .BtnItemSelected .LeftIcon @@ -67,8 +67,8 @@ body /*-----Right Top MenuBtn-----*/ .MenuItem:hover { - border-color: #4db6ac; - background-color: #004942; + border-color: #00675b; + background-color: #223C3C; } #RecentClearAllBtn:hover @@ -76,6 +76,11 @@ body color: #000; } +.FileImg +{ + background-color: #36363C; /*ORCA use darker color for dark theme for thumbnails*/ +} + #recnet_context_menu { color: #efeff0; @@ -84,6 +89,11 @@ body box-shadow: 0px 0px 3px #DCDCDC; } +.CT_Item:hover +{ + background-color:#00675b; /*ORCA color*/ +} + /*----User Manual------*/ .UG_DESC { diff --git a/resources/web/homepage/css/home.css b/resources/web/homepage/css/home.css index eb4d595534..ce70b28692 100644 --- a/resources/web/homepage/css/home.css +++ b/resources/web/homepage/css/home.css @@ -203,12 +203,12 @@ body .BtnItem:hover { - background-color: #E0FCEB; + background-color: #BFE1DE; /*ORCA color with %25 opacity*/ } .BtnItemSelected { - background-color: #e0fcf3; + background-color: #BFE1DE; /*ORCA color with %25 opacity*/ } .BtnIcon @@ -277,8 +277,8 @@ body .MenuItem:hover { - border-color: #4db6ac; - background-color: #E0FCEB; + border-color: #009688; /*ORCA color*/ + background-color: #E5F0EE; /*ORCA color with %25 opacity*/ } .MenuIcon @@ -465,7 +465,7 @@ body .CT_Item:hover { cursor: pointer; - background-color: #0078D4; + background-color:#009688; /*ORCA color*/ border-radius: 4px; color: #fff; } diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index f4e69dd587..52d04bed54 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -339,7 +339,7 @@ AboutDialog::AboutDialog() (boost::format( "" "" - "

" + "

https://github.com/SoftFever/Orcaslicer

" "" "") ).str()); diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index c28457ea03..8d338edc21 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -843,6 +843,7 @@ void AuxiliaryPanel::init_tabpanel() auto back_btn = new Button(this, _L("return"), "assemble_return", wxBORDER_NONE | wxBU_LEFT | wxBU_EXACTFIT); back_btn->SetSize(wxSize(FromDIP(220), FromDIP(18))); back_btn->SetBackgroundColor(btn_bg_green); + back_btn->SetTextColor(StateColor (std::pair(wxColour("#FDFFFD"), StateColor::Normal))); // ORCA fixes color change on text. icon stays white color but text changes to black without this back_btn->SetCornerRadius(0); back_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](wxEvent& e) { auto event = wxCommandEvent(EVT_AUXILIARY_DONE); diff --git a/src/slic3r/GUI/Auxiliary.hpp b/src/slic3r/GUI/Auxiliary.hpp index b1378d0878..878f032b9a 100644 --- a/src/slic3r/GUI/Auxiliary.hpp +++ b/src/slic3r/GUI/Auxiliary.hpp @@ -52,7 +52,7 @@ #define AUFILE_GREY300 wxColour(238, 238, 238) #define AUFILE_GREY200 wxColour(248, 248, 248) #define AUFILE_BRAND wxColour(0, 150, 136) -#define AUFILE_BRAND_TRANSPARENT wxColour(215, 232, 222) +#define AUFILE_BRAND_TRANSPARENT wxColour("#E5F0EE") // ORCA color with %10 opacity //#define AUFILE_PICTURES_SIZE wxSize(FromDIP(300), FromDIP(300)) //#define AUFILE_PICTURES_PANEL_SIZE wxSize(FromDIP(300), FromDIP(340)) #define AUFILE_PICTURES_SIZE wxSize(FromDIP(168), FromDIP(168)) diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index ae0678f6b1..db334cd998 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -336,7 +336,7 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ replaces["\"#00FF00\""] = "\"#FF0000\""; replaces["\"#009688\""] = "\"#00675b\""; replaces["#DBDBDB"] = "#4A4A51"; // ORCA border color - replaces["#F0F0F1"] = "#404040"; // ORCA disabled background color + replaces["#F0F0F1"] = "#333337"; // ORCA disabled background color replaces["#262E30"] = "#EFEFF0"; // ORCA } else { replaces["#949494"] = "#7C8282"; // ORCA replace icon line color for light theme diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index a378f63970..511bbfa6fc 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -7852,7 +7852,7 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() ImVec4 scroll_col = ImVec4(0.77f, 0.77f, 0.77f, 1.0f); //ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(0.f, 0.f, 0.f, 1.0f)); //use white text as the background switch to black - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 1.0f, 1.0f, 1.0f)); + ImGui::PushStyleColor(ImGuiCol_Text, m_is_dark ? ImVec4(.9f, .9f, .9f, 1) : ImVec4(.3f, .3f, .3f, 1)); // ORCA Plate number text > Add support for dark mode ImGui::PushStyleColor(ImGuiCol_WindowBg, window_bg); ImGui::PushStyleColor(ImGuiCol_ScrollbarBg, ImVec4(0.f, 0.f, 0.f, 0.f)); // ORCA using background color with opacity creates a second color. This prevents secondary color ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabActive, scroll_col); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 842909985b..eedf223ae9 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2876,7 +2876,7 @@ void GUI_App::init_label_colours() #if defined(_WIN32) || defined(__linux__) || defined(__APPLE__) m_color_label_default = is_dark_mode ? wxColour(250, 250, 250) : m_color_label_sys; // wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); m_color_highlight_label_default = is_dark_mode ? wxColour(230, 230, 230): wxSystemSettings::GetColour(/*wxSYS_COLOUR_HIGHLIGHTTEXT*/wxSYS_COLOUR_WINDOWTEXT); - m_color_highlight_default = is_dark_mode ? wxColour(78, 78, 78) : wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT); + m_color_highlight_default = is_dark_mode ? wxColour("#36363B") : wxColour("#F1F1F1"); // ORCA row highlighting m_color_hovered_btn_label = is_dark_mode ? wxColour(255, 255, 254) : wxColour(0,0,0); m_color_default_btn_label = is_dark_mode ? wxColour(255, 255, 254): wxColour(0,0,0); m_color_selected_btn_bg = is_dark_mode ? wxColour(84, 84, 91) : wxColour(206, 206, 206); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 0329d7c508..6ad62f1a8e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -291,12 +291,13 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.3f)); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA: Fixes icon rendered without colors while using Light theme + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.f, 0.f, 0.f)); // ORCA Removes button background on dark mode + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA: Fixes icon rendered without colors while using Light theme if (m_current_tool == tool_ids[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); } @@ -306,7 +307,7 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l ImGui::PopStyleColor(4); ImGui::PopStyleVar(2); } - ImGui::PopStyleColor(1); + ImGui::PopStyleColor(2); ImGui::PopStyleVar(1); if (btn_clicked && m_current_tool != tool_ids[i]) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 283ccacb10..3167266a5e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -514,12 +514,13 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.5f)); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA: Fixes icon rendered without colors while using Light theme + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.f, 0.f, 0.f)); // ORCA Removes button background on dark mode + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA Fixes icon rendered without colors while using Light theme if (m_current_tool == tool_ids[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); } @@ -529,7 +530,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGui::PopStyleColor(4); ImGui::PopStyleVar(2); } - ImGui::PopStyleColor(1); + ImGui::PopStyleColor(2); ImGui::PopStyleVar(1); if (btn_clicked && m_current_tool != tool_ids[i]) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index 935a76ca0f..0f903a0aad 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -240,12 +240,13 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) if (i != 0) ImGui::SameLine((empty_button_width + m_imgui->scaled(1.75f)) * i + m_imgui->scaled(1.3f)); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0); - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA: Fixes icon rendered without colors while using Light theme + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.f, 0.f, 0.f)); // ORCA Removes button background on dark mode + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.f)); // ORCA: Fixes icon rendered without colors while using Light theme if (m_current_tool == tool_ids[i]) { - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush - ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.f, 0.59f, 0.53f, 0.25f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.f, 0.59f, 0.53f, 0.30f)); // ORCA use orca color for selected tool / brush + ImGui::PushStyleColor(ImGuiCol_Border, ImGuiWrapper::COL_ORCA); // ORCA use orca color for border on selected tool / brush ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0); } @@ -255,7 +256,7 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) ImGui::PopStyleColor(4); ImGui::PopStyleVar(2); } - ImGui::PopStyleColor(1); + ImGui::PopStyleColor(2); ImGui::PopStyleVar(1); if (btn_clicked && m_current_tool != tool_ids[i]) { m_current_tool = tool_ids[i]; diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 6240d73c30..2595d3804d 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -163,7 +163,7 @@ const ImVec4 ImGuiWrapper::COL_BUTTON_ACTIVE = COL_BUTTON_HOVERED; //BBS const ImVec4 ImGuiWrapper::COL_BLUE_LIGHT = ImVec4(0.122f, 0.557f, 0.918f, 1.0f); -const ImVec4 ImGuiWrapper::COL_GREEN_LIGHT = ImVec4(0.86f, 0.99f, 0.91f, 1.0f); +const ImVec4 ImGuiWrapper::COL_GREEN_LIGHT = { 0.f, 156 / 255.f, 136 / 255.f, 0.25f }; // ORCA used on various places like text selection bg. Replaced with orca color const ImVec4 ImGuiWrapper::COL_HOVER = { 0.933f, 0.933f, 0.933f, 1.0f }; const ImVec4 ImGuiWrapper::COL_ACTIVE = { 0.675f, 0.675f, 0.675f, 1.0f }; const ImVec4 ImGuiWrapper::COL_SEPARATOR = { 0.93f, 0.93f, 0.93f, 1.0f }; @@ -2585,20 +2585,20 @@ void ImGuiWrapper::push_combo_style(const float scale) ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0f * scale); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f * scale); ImGui::PushStyleColor(ImGuiCol_PopupBg, ImGuiWrapper::COL_WINDOW_BG_DARK); - ImGui::PushStyleColor(ImGuiCol_BorderActive, COL_ORCA); - ImGui::PushStyleColor(ImGuiCol_HeaderHovered, to_ImVec4(to_rgba(ColorRGB::ORCA(), 0.5f))); + ImGui::PushStyleColor(ImGuiCol_BorderActive, ImVec4(0.f, 150.f / 255.f, 136.f / 255.f, 0.6f)); // ORCA hovered item border color + ImGui::PushStyleColor(ImGuiCol_HeaderHovered, {0.f, 0.f, 0.f, 0.f}); // ORCA hovered item background color ImGui::PushStyleColor(ImGuiCol_HeaderActive, COL_ORCA); - ImGui::PushStyleColor(ImGuiCol_Header, COL_ORCA); + ImGui::PushStyleColor(ImGuiCol_Header, ImVec4(0.f, 150.f / 255.f, 136.f / 255.f, 0.25f)); // ORCA active item background color ImGui::PushStyleColor(ImGuiCol_ScrollbarBg, ImGuiWrapper::COL_WINDOW_BG_DARK); ImGui::PushStyleColor(ImGuiCol_Button, {1.00f, 1.00f, 1.00f, 0.0f}); } else { ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 1.0f * scale); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f * scale); ImGui::PushStyleColor(ImGuiCol_PopupBg, ImGuiWrapper::COL_WINDOW_BG); - ImGui::PushStyleColor(ImGuiCol_BorderActive, COL_ORCA); - ImGui::PushStyleColor(ImGuiCol_HeaderHovered, to_ImVec4(to_rgba(ColorRGB::ORCA(), 0.5f))); + ImGui::PushStyleColor(ImGuiCol_BorderActive, ImVec4(0.f, 150.f / 255.f, 136.f / 255.f, 0.6f)); // ORCA hovered item border color + ImGui::PushStyleColor(ImGuiCol_HeaderHovered, {0.f, 0.f, 0.f, 0.f}); // ORCA hovered item background color ImGui::PushStyleColor(ImGuiCol_HeaderActive, COL_ORCA); - ImGui::PushStyleColor(ImGuiCol_Header, COL_ORCA); + ImGui::PushStyleColor(ImGuiCol_Header, ImVec4(0.f, 150.f / 255.f, 136.f / 255.f, 0.25f)); // ORCA active item background color ImGui::PushStyleColor(ImGuiCol_ScrollbarBg, ImGuiWrapper::COL_WINDOW_BG); ImGui::PushStyleColor(ImGuiCol_Button, {1.00f, 1.00f, 1.00f, 0.0f}); } diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index bda65536b5..9d368f9e86 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -95,8 +95,8 @@ void KBShortcutsDialog::OnSelectTabel(wxCommandEvent &event) while (i != m_hash_selector.end()) { Select *sel = i->second; if (id == sel->m_index) { - sel->m_tab_button->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#FFFFFF"))); - sel->m_tab_text->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#FFFFFF"))); + sel->m_tab_button->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#BFE1DE"))); // ORCA color for selected tab background + sel->m_tab_text->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#BFE1DE"))); // ORCA color for selected tab background sel->m_tab_text->SetFont(::Label::Head_13); sel->m_tab_button->Refresh(); sel->m_tab_text->Refresh(); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 4a1299b119..936afcacb9 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -483,7 +483,7 @@ bool OptionsGroup::activate(std::function throw_if_canceled/* = [](){}*/ // BBS: new layout ::StaticLine* stl = new ::StaticLine(m_parent, false, _(title), icon); stl->SetFont(Label::Head_14); - stl->SetForegroundColour("#262E30"); + stl->SetForegroundColour("#363636"); // ORCA Match Parameters title color with tab title color sizer = new wxBoxSizer(wxVERTICAL); if (title.IsEmpty()) { stl->Hide(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index e810c4d7f7..3dd1bb7075 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -834,7 +834,7 @@ Sidebar::Sidebar(Plater *parent) p->m_flushing_volume_btn->SetPaddingSize(wxSize(FromDIP(8),FromDIP(3))); p->m_flushing_volume_btn->SetCornerRadius(FromDIP(8)); - StateColor flush_bg_col(std::pair(wxColour(219, 253, 231), StateColor::Pressed), + StateColor flush_bg_col(std::pair(wxColour("#BFE1DE"), StateColor::Pressed), // ORCA std::pair(wxColour(238, 238, 238), StateColor::Hovered), std::pair(wxColour(238, 238, 238), StateColor::Normal)); diff --git a/src/slic3r/GUI/Project.hpp b/src/slic3r/GUI/Project.hpp index 99b081527a..0071685e7d 100644 --- a/src/slic3r/GUI/Project.hpp +++ b/src/slic3r/GUI/Project.hpp @@ -39,7 +39,7 @@ #define AUFILE_GREY300 wxColour(238, 238, 238) #define AUFILE_GREY200 wxColour(248, 248, 248) #define AUFILE_BRAND wxColour(0, 150, 136) -#define AUFILE_BRAND_TRANSPARENT wxColour(215, 232, 222) +#define AUFILE_BRAND_TRANSPARENT wxColour("#E5F0EE") // ORCA color with %10 opacity //#define AUFILE_PICTURES_SIZE wxSize(FromDIP(300), FromDIP(300)) //#define AUFILE_PICTURES_PANEL_SIZE wxSize(FromDIP(300), FromDIP(340)) #define AUFILE_PICTURES_SIZE wxSize(FromDIP(168), FromDIP(168)) diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index 5579fb7bcf..186124a2c1 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -494,7 +494,7 @@ void SearchItem::OnPaint(wxPaintEvent &event) void SearchItem::on_mouse_enter(wxMouseEvent &evt) { - SetBackgroundColour(StateColor::darkModeColorFor(wxColour(238, 238, 238))); + SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#BFE1DE"))); // ORCA color with %25 opacity Refresh(); } @@ -506,7 +506,7 @@ void SearchItem::on_mouse_leave(wxMouseEvent &evt) void SearchItem::on_mouse_left_down(wxMouseEvent &evt) { - SetBackgroundColour(StateColor::darkModeColorFor(wxColour(228, 228, 228))); + SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#BFE1DE"))); // ORCA color with %25 opacity Refresh(); } diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 4638a9a4f8..e6b2ac81c5 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -4901,7 +4901,7 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) auto size = GetSize(); dc.DrawBitmap(m_bitmap.bmp(), wxPoint(FromDIP(20), (size.y - m_bitmap.GetBmpSize().y) / 2)); dc.SetFont(::Label::Head_13); - dc.SetTextForeground(wxColour(38, 46, 48)); + dc.SetTextForeground(StateColor::darkModeColorFor(wxColour("#262E30"))); // ORCA fix text not visible on dark theme wxString txt = _L("Bind with Pin Code"); auto txt_size = dc.GetTextExtent(txt); dc.DrawText(txt, wxPoint(FromDIP(40), (size.y - txt_size.y) / 2)); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 6db2ff4c37..b4f9959ebc 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -272,7 +272,7 @@ void Tab::create_preset_tab() //search input m_search_item = new StaticBox(m_top_panel); StateColor box_colour(std::pair(*wxWHITE, StateColor::Normal)); - StateColor box_border_colour(std::pair(wxColour(238, 238, 238), StateColor::Normal)); + StateColor box_border_colour(std::pair(wxColour("#DBDBDB"), StateColor::Normal)); // ORCA match border color with other input/combo boxes m_search_item->SetBackgroundColor(box_colour); m_search_item->SetBorderColor(box_border_colour); @@ -301,7 +301,7 @@ void Tab::create_preset_tab() if (m_presets_choice) m_presets_choice->Show(); m_btn_save_preset->Show(); - m_btn_delete_preset->Show(); // ORCA: fixes delete preset button visible while search box focused + m_btn_delete_preset->Show(); // ORCA: fixes delete preset button visible while search box focused m_undo_btn->Show(); // ORCA: fixes revert preset button visible while search box focused m_btn_search->Show(); m_search_item->Hide(); @@ -331,7 +331,7 @@ void Tab::create_preset_tab() m_presets_choice->Hide(); m_btn_save_preset->Hide(); - m_btn_delete_preset->Hide(); // ORCA: fixes delete preset button visible while search box focused + m_btn_delete_preset->Hide(); // ORCA: fixes delete preset button visible while search box focused m_undo_btn->Hide(); // ORCA: fixes revert preset button visible while search box focused m_btn_search->Hide(); m_search_item->Show(); diff --git a/src/slic3r/GUI/TabButton.cpp b/src/slic3r/GUI/TabButton.cpp index 04742223c3..49c153c286 100644 --- a/src/slic3r/GUI/TabButton.cpp +++ b/src/slic3r/GUI/TabButton.cpp @@ -17,7 +17,7 @@ END_EVENT_TABLE() static wxColour BORDER_HOVER_COL = wxColour(0, 150, 136); const static wxColour TAB_BUTTON_BG = wxColour("#FEFFFF"); -const static wxColour TAB_BUTTON_SEL = wxColour(219, 253, 213, 255); +const static wxColour TAB_BUTTON_SEL = wxColour("#BFE1DE"); // ORCA TabButton::TabButton() : paddingSize(43, 16) @@ -29,7 +29,7 @@ TabButton::TabButton() std::make_pair(wxColour("#FEFFFF"), (int) StateColor::Normal)); border_color = StateColor( - std::make_pair(wxColour("#FEFFFF"), (int) StateColor::Checked), + std::make_pair(TAB_BUTTON_SEL, (int) StateColor::Checked), // ORCA use same color for border to prevent 1px blank border std::make_pair(BORDER_HOVER_COL, (int) StateColor::Hovered), std::make_pair(wxColour("#FEFFFF"), (int)StateColor::Normal)); } diff --git a/src/slic3r/GUI/Tabbook.cpp b/src/slic3r/GUI/Tabbook.cpp index 9b3174540e..cda915ba77 100644 --- a/src/slic3r/GUI/Tabbook.cpp +++ b/src/slic3r/GUI/Tabbook.cpp @@ -15,7 +15,7 @@ wxDEFINE_EVENT(wxCUSTOMEVT_TABBOOK_SEL_CHANGED, wxCommandEvent); const static wxColour TAB_BUTTON_BG = wxColour("#FEFFFF"); -const static wxColour TAB_BUTTON_SEL = wxColour(219, 253, 213, 255); +const static wxColour TAB_BUTTON_SEL = wxColour("#BFE1DE"); // ORCA static const wxFont& TAB_BUTTON_FONT = Label::Body_14; static const wxFont& TAB_BUTTON_FONT_SEL = Label::Head_14; diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index 79ae2fc8ba..55b8e12bcb 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -58,7 +58,7 @@ ComboBox::ComboBox(wxWindow *parent, std::make_pair(0xE5F0EE, (int) StateColor::Focused), // ORCA updated background color for focused item std::make_pair(*wxWHITE, (int) StateColor::Normal))); TextInput::SetLabelColor(StateColor( - std::make_pair(wxColour("#ACACAC"), (int) StateColor::Disabled), // ORCA: Use same color for disabled text on combo boxes + std::make_pair(0x6B6B6B, (int) StateColor::Disabled), // ORCA: Use same color for disabled text on combo boxes std::make_pair(0x262E30, (int) StateColor::Normal))); } if (auto scroll = GetScrollParent(this)) diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp index 795b38df89..5c8b91a0c7 100644 --- a/src/slic3r/GUI/Widgets/SpinInput.cpp +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -21,8 +21,8 @@ END_EVENT_TABLE() */ SpinInput::SpinInput() - : label_color(std::make_pair(0x909090, (int) StateColor::Disabled), std::make_pair(0x6B6B6B, (int) StateColor::Normal)) - , text_color(std::make_pair(0x909090, (int) StateColor::Disabled), std::make_pair(0x262E30, (int) StateColor::Normal)) + : label_color(std::make_pair(0x6B6B6B, (int) StateColor::Disabled), std::make_pair(0x6B6B6B, (int) StateColor::Normal)) + , text_color(std::make_pair(0x6B6B6B, (int) StateColor::Disabled), std::make_pair(0x262E30, (int) StateColor::Normal)) { radius = 0; border_width = 1; diff --git a/src/slic3r/GUI/Widgets/StateColor.cpp b/src/slic3r/GUI/Widgets/StateColor.cpp index 9038d9c62f..f2e1b07027 100644 --- a/src/slic3r/GUI/Widgets/StateColor.cpp +++ b/src/slic3r/GUI/Widgets/StateColor.cpp @@ -6,43 +6,43 @@ static bool gDarkMode = false; static bool operator<(wxColour const &l, wxColour const &r) { return l.GetRGBA() < r.GetRGBA(); } static std::map gDarkColors{ - {"#009688", "#00675b"}, - {"#1F8EEA", "#2778D2"}, - {"#FF6F00", "#D15B00"}, - {"#D01B1B", "#BB2A3A"}, - {"#262E30", "#EFEFF0"}, - {"#2C2C2E", "#B3B3B4"}, - {"#6B6B6B", "#818183"}, - {"#ACACAC", "#54545A"}, - {"#EEEEEE", "#4C4C55"}, - {"#E8E8E8", "#3E3E45"}, - {"#323A3D", "#E5E5E4"}, - {"#FFFFFF", "#2D2D31"}, - {"#F8F8F8", "#36363C"}, - {"#F1F1F1", "#36363B"}, - {"#3B4446", "#2D2D30"}, - {"#CECECE", "#54545B"}, - {"#DBFDD5", "#3B3B40"}, - {"#000000", "#FFFFFE"}, - {"#F4F4F4", "#36363D"}, - {"#DBDBDB", "#4A4A51"}, - {"#EDFAF2", "#283232"}, - {"#323A3C", "#E5E5E6"}, - {"#6B6B6A", "#B3B3B5"}, - {"#303A3C", "#E5E5E5"}, - {"#FEFFFF", "#242428"}, - {"#A6A9AA", "#2D2D29"}, - {"#363636", "#B2B3B5"}, - {"#F0F0F1", "#404040"}, - {"#9E9E9E", "#53545A"}, - {"#D7E8DE", "#1F2B27"}, - {"#2B3436", "#808080"}, + {"#009688", "#00675b"}, // rgb(0, 150, 136) ORCA color + {"#1F8EEA", "#2778D2"}, // rgb(31, 142, 234) ??? + {"#FF6F00", "#D15B00"}, // rgb(255, 111, 0) Secondary color + {"#D01B1B", "#BB2A3A"}, // rgb(208, 27, 27) ??? + {"#262E30", "#EFEFF0"}, // rgb(38, 46, 48) Button text color | Input Text Color + {"#2C2C2E", "#B3B3B4"}, // rgb(44, 44, 46) ??? + {"#6B6B6B", "#818183"}, // rgb(107, 107, 107) Disabled Text + {"#ACACAC", "#65656A"}, // rgb(172, 172, 172) Disabled Text on boxes | Dimmed Elements + {"#EEEEEE", "#4C4C55"}, // rgb(238, 238, 238) Separator Line | Title Line Color + {"#E8E8E8", "#3E3E45"}, // rgb(232, 232, 232) ??? + {"#323A3D", "#E5E5E4"}, // rgb(50, 58, 61) Softer text color + {"#FFFFFF", "#2D2D31"}, // rgb(255, 255, 255) Window background + {"#F8F8F8", "#36363C"}, // rgb(248, 248, 248) Sidebar > Titlebar > Gradient Top | BBL monitor page titlebar bg + {"#F1F1F1", "#36363B"}, // rgb(241, 241, 241) Sidebar > Titlebar > Gradient Bottom + {"#3B4446", "#2D2D30"}, // rgb(59, 68, 78) Top Bar / Main tab bar bg color + {"#CECECE", "#54545B"}, // rgb(206, 206, 206) Sidebar wxPanel bg | + {"#DBFDD5", "#3B3B40"}, // rgb(219, 253, 213) Not Used anymore // Was used for BBS combo boxes etc + {"#000000", "#FFFFFE"}, // rgb(0, 0, 0) Mostly Text color wxBlack + {"#F4F4F4", "#36363D"}, // rgb(244, 244, 244) ??? + {"#DBDBDB", "#4A4A51"}, // rgb(219, 219, 219) Input/Combo Box Border Color + {"#EDFAF2", "#283232"}, // rgb(229, 240, 238) Not Used anymore // Was used for BBS Combo / Dropdown focused background color + {"#323A3C", "#E5E5E6"}, // rgb(50, 58, 60) Text color used on search list | + {"#6B6B6A", "#B3B3B5"}, // rgb(107, 107, 106) Button Dimmed text | Input box side text + {"#303A3C", "#E5E5E5"}, // rgb(48, 58, 60) Object Table > Column header text color | StaticBox Border Color + {"#FEFFFF", "#242428"}, // rgb(254, 255, 255) Side Tabbar bg | + {"#A6A9AA", "#2D2D29"}, // rgb(166, 169, 170) Seperator color + {"#363636", "#B2B3B5"}, // rgb(54, 54, 54) Sidebar > Parameter Label/Title color | Sidebar tab text | Create Filament window text + {"#F0F0F1", "#333337"}, // rgb(240, 240, 241) Disabled element background // ORCA Used better background color for dark mode + {"#9E9E9E", "#53545A"}, // rgb(158, 158, 158) ??? + {"#D7E8DE", "#1F2B27"}, // rgb(215, 232, 222) Not Used anymore // Leftover from BBS + {"#2B3436", "#808080"}, // rgb(43, 52, 54) Not Used anymore // Leftover from BBS. Was used as main fill color of icons {"#ABABAB", "#ABABAB"}, - {"#D9D9D9", "#2D2D32"}, + {"#D9D9D9", "#2D2D32"}, // rgb(217, 217, 217) Sidebar > Toggle button track color //{"#F0F0F0", "#4C4C54"}, - // ORCA - {"#BFE1DE", "#223C3C"}, // rgb(191, 225, 222) Dropdown checked item background color > ORCA color with %25 opacity - {"#E5F0EE", "#283232"}, // rgb(229, 240, 238) Combo / Dropdown focused background color > ORCA color with %10 opacity + // ORCA + {"#BFE1DE", "#223C3C"}, // rgb(191, 225, 222) Dropdown checked item background color > ORCA color with %25 opacity + {"#E5F0EE", "#283232"}, // rgb(229, 240, 238) Combo / Dropdown focused background color > ORCA color with %10 opacity }; std::tuple StateColor::GetLAB(const wxColour& color) { diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 36778f6816..73d792a4e0 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -304,7 +304,7 @@ void TabCtrl::doRender(wxDC& dc) #else dc.SetPen(wxPen(border_color.colorForStates(states), border_width)); dc.DrawLine(0, size.y - BS2, size.x, size.y - BS2); - wxColour c(0xf2, 0x75, 0x4e, 0xff); + wxColour c("#009688"); // ORCA selected tab underline stroke color dc.SetPen(wxPen(c, 1)); dc.SetBrush(c); dc.DrawRoundedRectangle(x1 - radius, size.y - BS2 - border_width * 3, x2 + radius * 2 - x1, border_width * 3, radius); diff --git a/src/slic3r/GUI/Widgets/TextInput.cpp b/src/slic3r/GUI/Widgets/TextInput.cpp index 6e1c0f11e2..0aaeaa23da 100644 --- a/src/slic3r/GUI/Widgets/TextInput.cpp +++ b/src/slic3r/GUI/Widgets/TextInput.cpp @@ -19,9 +19,9 @@ END_EVENT_TABLE() */ TextInput::TextInput() - : label_color(std::make_pair(0x909090, (int) StateColor::Disabled), + : label_color(std::make_pair(0x6B6B6B, (int) StateColor::Disabled), std::make_pair(0x6B6B6B, (int) StateColor::Normal)) - , text_color(std::make_pair(0x909090, (int) StateColor::Disabled), + , text_color(std::make_pair(0x6B6B6B, (int) StateColor::Disabled), std::make_pair(0x262E30, (int) StateColor::Normal)) { radius = 0; From 7976534e9b299cf3c781d7a40e6f046c324c743d Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 23 Jul 2024 18:18:27 +0800 Subject: [PATCH 050/151] fix flatpak build --- src/libslic3r/GCode/GCodeProcessor.cpp | 8 ++++---- src/libslic3r/PrintBase.hpp | 21 ++++++++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 7506a105d7..70e8a9d91d 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -4943,14 +4943,14 @@ void GCodeProcessor::run_post_process() // found an invalid value, clamp it to a valid one tool_number = std::clamp(0, m_extruder_temps_config.size() - 1, tool_number); // emit warning - std::string warning = _u8L("GCode Post-Processor encountered an invalid toolchange, maybe from a custom gcode:"); + std::string warning = "GCode Post-Processor encountered an invalid toolchange, maybe from a custom gcode:"; warning += "\n> "; warning += gcode_line; - warning += _u8L("Generated M104 lines may be incorrect."); + warning += "Generated M104 lines may be incorrect."; BOOST_LOG_TRIVIAL(error) << warning; // Orca todo - // if (m_print != nullptr) - // m_print->active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, warning); + if (m_print != nullptr) + m_print->active_step_add_warning(PrintStateBase::WarningLevel::CRITICAL, warning); } } export_lines.insert_lines( diff --git a/src/libslic3r/PrintBase.hpp b/src/libslic3r/PrintBase.hpp index aecef8a238..b680ac274e 100644 --- a/src/libslic3r/PrintBase.hpp +++ b/src/libslic3r/PrintBase.hpp @@ -583,7 +583,16 @@ public: bool is_step_done(PrintStepEnum step) const { return m_state.is_done(step, this->state_mutex()); } PrintStateBase::StateWithTimeStamp step_state_with_timestamp(PrintStepEnum step) const { return m_state.state_with_timestamp(step, this->state_mutex()); } PrintStateBase::StateWithWarnings step_state_with_warnings(PrintStepEnum step) const { return m_state.state_with_warnings(step, this->state_mutex()); } - + // Add a slicing warning to the active Print step and send a status notification. + // This method could be called multiple times between this->set_started() and this->set_done(). + void active_step_add_warning(PrintStateBase::WarningLevel warning_level, const std::string &message, + PrintStateBase::SlicingNotificationType message_id = PrintStateBase::SlicingDefaultNotification) + { + std::pair active_step = m_state.active_step_add_warning(warning_level, message, (int)message_id, this->state_mutex()); + if (active_step.second) + // Update UI. + this->status_update_warnings(static_cast(active_step.first), warning_level, message, nullptr, message_id); + } protected: bool set_started(PrintStepEnum step) { return m_state.set_started(step, this->state_mutex(), [this](){ this->throw_if_canceled(); }); } PrintStateBase::TimeStamp set_done(PrintStepEnum step) { @@ -605,16 +614,6 @@ protected: bool is_step_started_unguarded(PrintStepEnum step) const { return m_state.is_started_unguarded(step); } bool is_step_done_unguarded(PrintStepEnum step) const { return m_state.is_done_unguarded(step); } - // Add a slicing warning to the active Print step and send a status notification. - // This method could be called multiple times between this->set_started() and this->set_done(). - void active_step_add_warning(PrintStateBase::WarningLevel warning_level, const std::string &message, - PrintStateBase::SlicingNotificationType message_id = PrintStateBase::SlicingDefaultNotification) - { - std::pair active_step = m_state.active_step_add_warning(warning_level, message, (int)message_id, this->state_mutex()); - if (active_step.second) - // Update UI. - this->status_update_warnings(static_cast(active_step.first), warning_level, message, nullptr, message_id); - } private: PrintState m_state; From 2f4b05844b2c6a77d3ddd8abfce2c8e7bc207c1e Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 24 Jul 2024 19:58:34 +0800 Subject: [PATCH 051/151] add "temperature" variable support --- src/libslic3r/GCode.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index ec400c1ae6..3d54ffe0cc 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2221,9 +2221,11 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->placeholder_parser().set("initial_no_support_tool", initial_non_support_extruder_id); this->placeholder_parser().set("initial_no_support_extruder", initial_non_support_extruder_id); this->placeholder_parser().set("current_extruder", initial_extruder_id); - //set the key for compatibilty + //Orca: set the key for compatibilty this->placeholder_parser().set("retraction_distance_when_cut", m_config.retraction_distances_when_cut.get_at(initial_extruder_id)); this->placeholder_parser().set("long_retraction_when_cut", m_config.long_retractions_when_cut.get_at(initial_extruder_id)); + this->placeholder_parser().set("temperature", new ConfigOptionInts(print.config().nozzle_temperature)); + this->placeholder_parser().set("retraction_distances_when_cut", new ConfigOptionFloats(m_config.retraction_distances_when_cut)); this->placeholder_parser().set("long_retractions_when_cut",new ConfigOptionBools(m_config.long_retractions_when_cut)); From f8a22722656c9aba066ea295b36bfdccc9c98ad4 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 24 Jul 2024 19:59:23 +0800 Subject: [PATCH 052/151] update "change_filament_gcode" for Prusa XL, fix extra tool park issue after final purge --- resources/profiles/Prusa.json | 2 +- resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index b6b8322c6d..b9a7435e4b 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.01.02.30", + "version": "02.01.02.40", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ diff --git a/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json b/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json index eedd38b152..7bdc573b39 100644 --- a/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json +++ b/resources/profiles/Prusa/machine/fdm_machine_common_xl_5t.json @@ -14,7 +14,7 @@ "machine_pause_gcode": "M601", "machine_start_gcode": "M17 ; enable steppers\nM862.3 P \"XL\" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P\"Input shaper\" ; FW feature check\nM115 U6.0.3+14902\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; set print area\nM555 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])}\n; inform about nozzle diameter\n{if (is_extruder_used[0])}M862.1 T0 P{nozzle_diameter[0]}{endif}\n{if (is_extruder_used[1])}M862.1 T1 P{nozzle_diameter[1]}{endif}\n{if (is_extruder_used[2])}M862.1 T2 P{nozzle_diameter[2]}{endif}\n{if (is_extruder_used[3])}M862.1 T3 P{nozzle_diameter[3]}{endif}\n{if (is_extruder_used[4])}M862.1 T4 P{nozzle_diameter[4]}{endif}\n\n; turn off unused heaters\n{if ! is_extruder_used[0]} M104 T0 S0 {endif}\n{if ! is_extruder_used[1]} M104 T1 S0 {endif}\n{if num_extruders > 2 and ! is_extruder_used[2]} M104 T2 S0 {endif}\n{if num_extruders > 3 and ! is_extruder_used[3]} M104 T3 S0 {endif}\n{if num_extruders > 4 and ! is_extruder_used[4]} M104 T4 S0 {endif}\n\nM217 Z{max(zhop, 2.0)} ; set toolchange z hop to 2mm, or zhop variable from slicer if higher\n; set bed and extruder temp for MBL\nM140 S[first_layer_bed_temperature] ; set bed temp\nG0 Z5 ; add Z clearance\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == \"PC\" or filament_type[initial_tool] == \"PA\") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == \"FLEX\") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; Home XY\nG28 XY\n; try picking tools used in print\nG1 F{travel_speed * 60}\n{if (is_extruder_used[0]) and (initial_tool != 0)}T0 S1 L0 D0{endif}\n{if (is_extruder_used[1]) and (initial_tool != 1)}T1 S1 L0 D0{endif}\n{if (is_extruder_used[2]) and (initial_tool != 2)}T2 S1 L0 D0{endif}\n{if (is_extruder_used[3]) and (initial_tool != 3)}T3 S1 L0 D0{endif}\n{if (is_extruder_used[4]) and (initial_tool != 4)}T4 S1 L0 D0{endif}\n; select tool that will be used to home & MBL\nT{initial_tool} S1 L0 D0\n; home Z with MBL tool\nM84 E ; turn off E motor\nG28 Z\nG0 Z5 ; add Z clearance\n\nM104 T{initial_tool} S{if idle_temperature[initial_tool] == 0}70{else}{idle_temperature[initial_tool]}{endif} ; set idle temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nG29 G ; absorb heat\n\nM109 T{initial_tool} S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == \"PC\" or filament_type[initial_tool] == \"PA\") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == \"FLEX\") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\n; move to the nozzle cleanup area\nG1 X{(min(((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))), first_layer_print_min[0])) + 32} Y{(min((first_layer_print_min[1] - 7), first_layer_print_min[1]))} Z{5} F{(travel_speed * 60)}\nM302 S160 ; lower cold extrusion limit to 160C\nG1 E{-(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; retraction for nozzle cleanup\n; nozzle cleanup\nM84 E ; turn off E motor\nG29 P9 X{((((first_layer_print_min[0] + first_layer_print_max[0]) / 2) < ((print_bed_min[0] + print_bed_max[0]) / 2)) ? (((first_layer_print_min[1] - 7) < -2) ? 70 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)) : (((first_layer_print_min[1] - 7) < -2) ? 260 : (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)))} Y{(first_layer_print_min[1] - 7)} W{32} H{7}\nG0 Z5 F480 ; move away in Z\nM107 ; turn off the fan\n; MBL\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X30 Y0 W{(((is_extruder_used[4]) or ((is_extruder_used[3]) or (is_extruder_used[2]))) ? \"300\" : ((is_extruder_used[1]) ? \"130\" : \"50\"))} H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\nG1 Z10 F720 ; move away in Z\nG1 F{travel_speed * 60}\nP0 S1 L1 D0; park the tool\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T0 S{first_layer_temperature[0]}\nT0 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(0 == 0 ? 30 : (0 == 1 ? 150 : (0 == 2 ? 210 : 330)))} Y{(0 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[0]}10{else}30{endif} X40 Z0.2 F{if filament_multitool_ramming[0]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X70 E9 F800 ; continue purging and wipe the nozzle\nG0 X{70 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{70 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[0]} F2400 ; retract\n{e_retracted[0] = 1.5 * retract_length[0]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[0] == 0 ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T1 S{first_layer_temperature[1]}\nT1 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(1 == 0 ? 30 : (1 == 1 ? 150 : (1 == 2 ? 210 : 330)))} Y{(1 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[1]}10{else}30{endif} X140 Z0.2 F{if filament_multitool_ramming[1]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X110 E9 F800 ; continue purging and wipe the nozzle\nG0 X{110 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{110 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[1]} F2400 ; retract\n{e_retracted[1] = 1.5 * retract_length[1]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[1] == 0 ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T2 S{first_layer_temperature[2]}\nT2 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(2 == 0 ? 30 : (2 == 1 ? 150 : (2 == 2 ? 210 : 330)))} Y{(2 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[2]}10{else}30{endif} X220 Z0.2 F{if filament_multitool_ramming[2]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X250 E9 F800 ; continue purging and wipe the nozzle\nG0 X{250 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{250 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[2]} F2400 ; retract\n{e_retracted[2] = 1.5 * retract_length[2]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[2] == 0 ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T3 S{first_layer_temperature[3]}\nT3 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(3 == 0 ? 30 : (3 == 1 ? 150 : (3 == 2 ? 210 : 330)))} Y{(3 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[3]}10{else}30{endif} X320 Z0.2 F{if filament_multitool_ramming[3]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[3]} F2400 ; retract\n{e_retracted[3] = 1.5 * retract_length[3]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[3] == 0 ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T4 S{first_layer_temperature[4]}\nT4 S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(4 == 0 ? 30 : (4 == 1 ? 150 : (4 == 2 ? 210 : 330)))} Y{(4 < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[4]}10{else}30{endif} X320 Z0.2 F{if filament_multitool_ramming[4]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X290 E9 F800 ; continue purging and wipe the nozzle\nG0 X{290 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{290 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[4]} F2400 ; retract\n{e_retracted[4] = 1.5 * retract_length[4]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[4] == 0 ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nP0 S1 L2 D0; park the tool\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool} S1 L0 D0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330)))} Y{(initial_tool < 4 ? -7 : -4.5)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[initial_tool]}10{else}30{endif} X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if filament_multitool_ramming[initial_tool]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 30 : (initial_tool == 1 ? 150 : (initial_tool == 2 ? 210 : 330))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = 1.5 * retract_length[initial_tool]}\nG92 E0 ; reset extruder position\n", "machine_end_gcode": "G4 ; wait\n\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+5, max_print_height)}{endif} ; Move bed down\n\nP0 S1 ; park tool\n\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+97, max_print_height)} F300{endif} ; Move bed further down\n\n; turn off extruder heaters\n{if is_extruder_used[0]} M104 T0 S0 {endif}\n{if is_extruder_used[1]} M104 T1 S0 {endif}\n{if is_extruder_used[2]} M104 T2 S0 {endif}\n{if is_extruder_used[3]} M104 T3 S0 {endif}\n{if is_extruder_used[4]} M104 T4 S0 {endif}\n\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow percentage\nM84 ; disable motors\nM77 ; stop print timer\n; max_layer_z = [max_layer_z]", - "change_filament_gcode": "; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])\n{\nposition[2] = position[2] + 2.0;\n}\n{if travel_speed > 350.0}\nG1 F{350.0 * 60} \n{else}\nG1 F{travel_speed * 60} \n{endif}\nP0 S1 L2 D0\n; [layer_num]\n{if layer_num == 0}\nM109 S{first_layer_temperature[next_extruder]} T[next_extruder]\n{else}\nM109 S{nozzle_temperature[next_extruder]} T[next_extruder]\n{endif}\nT[next_extruder] S1 L0 D0\n", + "change_filament_gcode": "; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])\n{\nlocal max_speed_toolchange = 350.0;\nlocal wait_for_extruder_temp = true;\nposition[2] = position[2] + 2.0;\n\nlocal speed_toolchange = max_speed_toolchange;\nif travel_speed < max_speed_toolchange then\n speed_toolchange = travel_speed;\nendif\n\"G1 F\" + (speed_toolchange * 60) + \"\n\";\nif wait_for_extruder_temp and not((layer_num < 0) and (next_extruder == initial_tool)) then\n \"P0 S1 L2 D0\n\";\n \"; \" + layer_num + \"\n\";\n if layer_num == 0 then\n \"M109 S\" + first_layer_temperature[next_extruder] + \" T\" + next_extruder + \"\n\";\n else\n \"M109 S\" + temperature[next_extruder] + \" T\" + next_extruder + \"\n\";\n endif\nendif\n\"T\" + next_extruder + \" S1 L0 D0\n\";\n}", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", From 92d6664db2dae5527b834214f8cb2bbf79687f0d Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 24 Jul 2024 23:41:08 +0800 Subject: [PATCH 053/151] Always calculate wipe volume and hence provide correct flush_length to custom change filament g-code, so that MMU devices with cutter and purge bin (e.g. ERCF_v2 with a filament cutter or Filametrix can take advantage of it) --- src/libslic3r/GCode.cpp | 87 +++-------------------------------------- 1 file changed, 6 insertions(+), 81 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 3d54ffe0cc..07e53c5ef0 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -776,79 +776,9 @@ static std::vector get_path_of_change_filament(const Print& print) DynamicConfig config; config.set_key_value("change_filament_gcode", new ConfigOptionString(toolchange_gcode_str)); config.set_key_value("deretraction_from_wipe_tower_generator", new ConfigOptionString(deretraction_str)); - - int previous_extruder_id = gcodegen.writer().extruder() ? (int) gcodegen.writer().extruder()->id() : -1; - config.set_key_value("previous_extruder", new ConfigOptionInt(previous_extruder_id)); - config.set_key_value("next_extruder", new ConfigOptionInt((int) new_extruder_id)); config.set_key_value("layer_num", new ConfigOptionInt(gcodegen.m_layer_index)); config.set_key_value("layer_z", new ConfigOptionFloat(tcr.print_z)); config.set_key_value("toolchange_z", new ConfigOptionFloat(z)); - GCodeWriter &gcode_writer = gcodegen.m_writer; - FullPrintConfig &full_config = gcodegen.m_config; - float old_retract_length = gcode_writer.extruder() != nullptr ? full_config.retraction_length.get_at(previous_extruder_id) : 0; - float new_retract_length = full_config.retraction_length.get_at(new_extruder_id); - float old_retract_length_toolchange = gcode_writer.extruder() != nullptr ? - full_config.retract_length_toolchange.get_at(previous_extruder_id) : - 0; - float new_retract_length_toolchange = full_config.retract_length_toolchange.get_at(new_extruder_id); - int old_filament_temp = gcode_writer.extruder() != nullptr ? - (gcodegen.on_first_layer() ? full_config.nozzle_temperature_initial_layer.get_at(previous_extruder_id) : - full_config.nozzle_temperature.get_at(previous_extruder_id)) : - 210; - int new_filament_temp = gcodegen.on_first_layer() ? full_config.nozzle_temperature_initial_layer.get_at(new_extruder_id) : - full_config.nozzle_temperature.get_at(new_extruder_id); - Vec3d nozzle_pos = gcode_writer.get_position(); - - float purge_volume = tcr.purge_volume < EPSILON ? 0 : std::max(tcr.purge_volume, g_min_purge_volume); - float filament_area = float((M_PI / 4.f) * pow(full_config.filament_diameter.get_at(new_extruder_id), 2)); - float purge_length = purge_volume / filament_area; - - int old_filament_e_feedrate = gcode_writer.extruder() != nullptr ? - (int) (60.0 * full_config.filament_max_volumetric_speed.get_at(previous_extruder_id) / - filament_area) : - 200; - old_filament_e_feedrate = old_filament_e_feedrate == 0 ? 100 : old_filament_e_feedrate; - int new_filament_e_feedrate = (int) (60.0 * full_config.filament_max_volumetric_speed.get_at(new_extruder_id) / filament_area); - new_filament_e_feedrate = new_filament_e_feedrate == 0 ? 100 : new_filament_e_feedrate; - - config.set_key_value("max_layer_z", new ConfigOptionFloat(gcodegen.m_max_layer_z)); - config.set_key_value("relative_e_axis", new ConfigOptionBool(full_config.use_relative_e_distances)); - config.set_key_value("toolchange_count", new ConfigOptionInt((int) gcodegen.m_toolchange_count)); - config.set_key_value("fan_speed", new ConfigOptionInt((int) 0)); - config.set_key_value("old_retract_length", new ConfigOptionFloat(old_retract_length)); - config.set_key_value("new_retract_length", new ConfigOptionFloat(new_retract_length)); - config.set_key_value("old_retract_length_toolchange", new ConfigOptionFloat(old_retract_length_toolchange)); - config.set_key_value("new_retract_length_toolchange", new ConfigOptionFloat(new_retract_length_toolchange)); - config.set_key_value("old_filament_temp", new ConfigOptionInt(old_filament_temp)); - config.set_key_value("new_filament_temp", new ConfigOptionInt(new_filament_temp)); - config.set_key_value("x_after_toolchange", new ConfigOptionFloat(start_pos(0))); - config.set_key_value("y_after_toolchange", new ConfigOptionFloat(start_pos(1))); - config.set_key_value("z_after_toolchange", new ConfigOptionFloat(nozzle_pos(2))); - config.set_key_value("first_flush_volume", new ConfigOptionFloat(purge_length / 2.f)); - config.set_key_value("second_flush_volume", new ConfigOptionFloat(purge_length / 2.f)); - config.set_key_value("old_filament_e_feedrate", new ConfigOptionInt(old_filament_e_feedrate)); - config.set_key_value("new_filament_e_feedrate", new ConfigOptionInt(new_filament_e_feedrate)); - config.set_key_value("travel_point_1_x", new ConfigOptionFloat(float(travel_point_1.x()))); - config.set_key_value("travel_point_1_y", new ConfigOptionFloat(float(travel_point_1.y()))); - config.set_key_value("travel_point_2_x", new ConfigOptionFloat(float(travel_point_2.x()))); - config.set_key_value("travel_point_2_y", new ConfigOptionFloat(float(travel_point_2.y()))); - config.set_key_value("travel_point_3_x", new ConfigOptionFloat(float(travel_point_3.x()))); - config.set_key_value("travel_point_3_y", new ConfigOptionFloat(float(travel_point_3.y()))); - - int flush_count = std::min(g_max_flush_count, (int) std::round(purge_volume / g_purge_volume_one_time)); - float flush_unit = purge_length / flush_count; - int flush_idx = 0; - for (; flush_idx < flush_count; flush_idx++) { - char key_value[64] = {0}; - snprintf(key_value, sizeof(key_value), "flush_length_%d", flush_idx + 1); - config.set_key_value(key_value, new ConfigOptionFloat(flush_unit)); - } - - for (; flush_idx < g_max_flush_count; flush_idx++) { - char key_value[64] = {0}; - snprintf(key_value, sizeof(key_value), "flush_length_%d", flush_idx + 1); - config.set_key_value(key_value, new ConfigOptionFloat(0.f)); - } std::string tcr_gcode, tcr_escaped_gcode = gcodegen.placeholder_parser_process("tcr_rotated_gcode", tcr_rotated_gcode, new_extruder_id, &config); @@ -2240,11 +2170,8 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->placeholder_parser().set("num_extruders", int(print.config().nozzle_diameter.values.size())); this->placeholder_parser().set("retract_length", new ConfigOptionFloats(print.config().retraction_length)); - // PlaceholderParser currently substitues non-existent vector values with the zero'th value, which is harmful in the - // case of "is_extruder_used[]" as Slicer may lie about availability of such non-existent extruder. We rather - // sacrifice 256B of memory before we change the behavior of the PlaceholderParser, which should really only fill in - // the non-existent vector elements for filament parameters. - std::vector is_extruder_used(std::max(size_t(255), print.config().filament_diameter.size()), 0); + //Orca: support max MAXIMUM_EXTRUDER_NUMBER extruders/filaments + std::vector is_extruder_used(std::max(size_t(MAXIMUM_EXTRUDER_NUMBER), print.config().filament_diameter.size()), 0); for (unsigned int extruder : tool_ordering.all_extruders()) is_extruder_used[extruder] = true; this->placeholder_parser().set("is_extruder_used", new ConfigOptionBools(is_extruder_used)); @@ -6085,12 +6012,10 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b old_retract_length = m_config.retraction_length.get_at(previous_extruder_id); old_retract_length_toolchange = m_config.retract_length_toolchange.get_at(previous_extruder_id); old_filament_temp = this->on_first_layer()? m_config.nozzle_temperature_initial_layer.get_at(previous_extruder_id) : m_config.nozzle_temperature.get_at(previous_extruder_id); - if (m_config.purge_in_prime_tower || is_BBL_Printer()) { - wipe_volume = flush_matrix[previous_extruder_id * number_of_extruders + extruder_id]; - wipe_volume *= m_config.flush_multiplier; - } else { - wipe_volume = m_config.prime_volume; - } + //Orca: always calculate wipe volume and hence provide correct flush_length, so that MMU devices with cutter and purge bin (e.g. ERCF_v2 with a filament cutter or Filametrix can take advantage of it) + wipe_volume = flush_matrix[previous_extruder_id * number_of_extruders + extruder_id]; + wipe_volume *= m_config.flush_multiplier; + old_filament_e_feedrate = (int)(60.0 * m_config.filament_max_volumetric_speed.get_at(previous_extruder_id) / filament_area); old_filament_e_feedrate = old_filament_e_feedrate == 0 ? 100 : old_filament_e_feedrate; //BBS: must clean m_start_gcode_filament From e7de979028ee3517e13f4cc13e4ecabce54178dc Mon Sep 17 00:00:00 2001 From: Carlos Francisco Caruncho Serrano Date: Thu, 25 Jul 2024 16:26:25 +0200 Subject: [PATCH 054/151] Update spanish translation (#6189) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update OrcaSlicer_es.po * some changes * Some fixes * More fixes * More fixes and improves * More fixes * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Traducción español Beta 2.1.0 * Update text.js * Update OrcaSlicer_es.po Cambiado punto por coma * Minor fix PR * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update Spanish Language * Updated strings * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Fixed Spanish Strings in English Fixed a lot of string whose are translations were english to english. * Some spanish strings improved * Update Spanish Strings in RC * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Some fixes * More fixes and improves * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po Cambiado punto por coma * Update Spanish Language * Some spanish strings improved * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Some fixes to PR * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Traducción español Beta 2.1.0 * Update text.js * Minor fix PR * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Some fixes to PR * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Some fixes * More fixes and improves * Some spanish strings improved * some changes * Some fixes * More fixes * More fixes and improves * Update OrcaSlicer_es.po * Fixed Spanish Strings in English Fixed a lot of string whose are translations were english to english. * Some spanish strings improved * Update Spanish Strings in RC * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Revert "Some Spanish Translation Fixes (#6115)" This reverts commit c37a871dd2d1cc4bd75cab5dc1fd00b5a3dbfcb3. * Calibration: retraction test * Fix a regression: Generic filament profiles conflicts #981 * support full_fan_speed_layer * Support interface fan speed * profile cover image reorg * Traducción español Beta 2.1.0 * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Some fixes to PR * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Revert "profile cover image reorg" This reverts commit 041d41fa9f8bf2d927fa32a557e2427dddb1c849. * Revert "Support interface fan speed" This reverts commit a657d851218c95356771f4a839fdeea537e9919c. * Revert "support full_fan_speed_layer" This reverts commit ac6dcadeb034a2e74365c6268ef9ed7162fc59af. * Revert "Fix a regression: Generic filament profiles conflicts #981" This reverts commit 97118f8e9401f895f585053ded1b40ad3a71ef78. * Revert "Calibration: retraction test" This reverts commit b210c294346c077385f4c1f8dab70f8596067dc5. * Update OrcaSlicer_es.po * More fixes * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Final fixes * Update OrcaSlicer_es.po * Update Spanish Strings --------- Co-authored-by: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Co-authored-by: SoftFever Co-authored-by: SoftFever <103989404+SoftFever@users.noreply.github.com> --- localization/i18n/es/OrcaSlicer_es.po | 689 +++++++++++++++----------- resources/web/data/text.js | 4 +- 2 files changed, 402 insertions(+), 291 deletions(-) diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 20650d3d01..8b2cdd8172 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-21 20:03+0800\n" +"POT-Creation-Date: 2024-06-30 15:44+0200\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -57,7 +57,7 @@ msgid "Highlight overhang areas" msgstr "Resaltar las zonas de voladizos" msgid "Gap fill" -msgstr "Rellenar hueco" +msgstr "Rellenar huecos" msgid "Perform" msgstr "Realizar" @@ -72,7 +72,7 @@ msgid "Smart fill angle" msgstr "Ángulo de relleno en puente" msgid "On overhangs only" -msgstr "Solo voladizos" +msgstr "Solo en voladizos" msgid "Auto support threshold angle: " msgstr "Ángulo del umbral de soporte automático: " @@ -87,7 +87,7 @@ msgid "Fill" msgstr "Llenar" msgid "Gap Fill" -msgstr "Rellenar hueco" +msgstr "Rellenar huecos" #, boost-format msgid "Allows painting only on facets selected by: \"%1%\"" @@ -486,7 +486,7 @@ msgid "After cut" msgstr "Después del corte" msgid "Cut to parts" -msgstr "Separar en piezas" +msgstr "Cortar en piezas" msgid "Perform cut" msgstr "Realizar corte" @@ -598,7 +598,7 @@ msgstr "Mostrar estructura de alambre" msgid "%1%" msgstr "%1%" -msgid "Can't apply when proccess preview." +msgid "Can't apply when process preview." msgstr "No se puede aplicar cuando la vista previa del proceso." msgid "Operation already cancelling. Please wait few seconds." @@ -667,7 +667,7 @@ msgstr "Superficie" msgid "Horizontal text" msgstr "Texto horizontal" -msgid "Shift + Mouse move up or dowm" +msgid "Shift + Mouse move up or down" msgstr "Shift + Mover ratón arriba u abajo" msgid "Rotate text" @@ -1016,7 +1016,7 @@ msgstr "Orienta el texto hacia la cámara." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Aplication selected a similar " +"Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" "No se puede cargar exactamente la misma fuente(\"%1%\"). La aplicación " @@ -1676,7 +1676,7 @@ msgstr "Ancho de Extrusión" msgid "Wipe options" msgstr "Opciones de limpieza" -msgid "Bed adhension" +msgid "Bed adhesion" msgstr "Adhesión a la cama" msgid "Add part" @@ -1848,7 +1848,7 @@ msgid "Scale an object to fit the build volume" msgstr "Escalar un objeto para que se ajuste al volumen de impresión" msgid "Flush Options" -msgstr "Opciones de Caudal" +msgstr "Opciones de Flujo" msgid "Flush into objects' infill" msgstr "Purgar en el relleno de objetos" @@ -1929,7 +1929,7 @@ msgid "Add Primitive" msgstr "Añadir Primitivo" msgid "Add Handy models" -msgstr "Añadir modelos prácticos" +msgstr "Añadir Modelos Prácticos" msgid "Add Models" msgstr "Añadir Modelos" @@ -1962,12 +1962,6 @@ msgid "Auto orient the object to improve print quality." msgstr "" "Orienta automáticamente el objeto para mejorar la calidad de la impresión." -msgid "Split the selected object into mutiple objects" -msgstr "Dividir el objeto seleccionado en múltiples objetos" - -msgid "Split the selected object into mutiple parts" -msgstr "Dividir el objeto seleccionado en múltiples piezas" - msgid "Select All" msgstr "Seleccionar Todo" @@ -1984,7 +1978,7 @@ msgid "Arrange" msgstr "Organizar" msgid "arrange current plate" -msgstr "Posicionar la bandeja actual" +msgstr "Ordenar la bandeja actual" msgid "Reload All" msgstr "Recargar todo" @@ -2238,8 +2232,8 @@ msgid_plural "Following model objects have been repaired" msgstr[0] "Se ha reparado el siguiente modelo de objeto" msgstr[1] "Se han reparado los siguientes objetos del modelo" -msgid "Failed to repair folowing model object" -msgid_plural "Failed to repair folowing model objects" +msgid "Failed to repair following model object" +msgid_plural "Failed to repair following model objects" msgstr[0] "No se ha podido reparar el siguiente objeto modelo" msgstr[1] "No se han podido reparar los siguientes objetos del modelo" @@ -2460,7 +2454,7 @@ msgid "AMS not connected" msgstr "AMS no conectado" msgid "Load" -msgstr "Carga" +msgstr "Cargar" msgid "Unload" msgstr "Descarga" @@ -2703,7 +2697,7 @@ msgstr "Tarea de envío de impresión fallida." msgid "Service Unavailable" msgstr "Servicio No Disponible" -msgid "Unkown Error." +msgid "Unknown Error." msgstr "Error Desconocido." msgid "Sending print configuration" @@ -2878,7 +2872,7 @@ msgstr "" "Ajustes de información de ranura AMS mientras la impresión no tenga soportes" msgid "Factors of Flow Dynamics Calibration" -msgstr "Factores de Calibración de Dinámicas de Caudal" +msgstr "Factores de Calibración de Dinámicas de Flujo" msgid "PA Profile" msgstr "Perfil de Avance de Presión Lineal" @@ -2902,7 +2896,7 @@ msgstr "Necesitas seleccionar el tipo y el color del material primero." #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f)" -msgstr "Por favor, introduzca un valor válido (K en %.1f~%.1f)" +msgstr "Por favor, introduzca un valor válido (K in %.1f~%.1f)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" @@ -2987,7 +2981,7 @@ msgid "%s does not support %s" msgstr "%s no soporta %s" msgid "Dynamic flow Calibration" -msgstr "Calibración Dinámica de Caudal" +msgstr "Calibración Dinámica de Flujo" msgid "Step" msgstr "Paso" @@ -3014,7 +3008,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "Imprimir con el filamento montado en la parte posterior del chasis" msgid "Current Cabin humidity" -msgstr "Humedad actual de la cabina" +msgstr "Humedad de cabina actual" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -3023,9 +3017,9 @@ msgid "" "temperatures also slow down the process." msgstr "" "Cambie el desecante cuando esté demasiado húmedo. El indicador puede no ser " -"preciso en los siguientes casos: cuando la tapa está abierta o se cambia el " -"paquete de desecante, tarda horas en absorber la humedad, las bajas " -"temperaturas también ralentizan el proceso." +"preciso en los siguientes casos: cuando la tapa está abierta o al paquete de " +"desecante. Este tarda horas en absorber la humedad, y las bajas temperaturas " +"también ralentizan el proceso." msgid "" "Config which AMS slot should be used for a filament used in the print job" @@ -3162,13 +3156,13 @@ msgstr "" "automáticamente cuando el filamento se termine" msgid "Air Printing Detection" -msgstr "Detección de Aire de Impresión" +msgstr "Detección de Aire en Impresión" msgid "" "Detects clogging and filament grinding, halting printing immediately to " "conserve time and filament." msgstr "" -"Detecta los atascos y el triturado de filamento, deteniendo la impresión " +"Detecta los atascos y el rascado de filamento, deteniendo la impresión " "inmediatamente para ahorrar tiempo y filamento." msgid "File" @@ -3260,7 +3254,7 @@ msgid "" "Error message: %1%" msgstr "" "Error al copiar el G-Code temporal en el G-Code de salida. ¿Quizás la " -"tarjeta SD está bloqueada contra escritura?\n" +"tarjeta SD está protegida contra escritura?\n" "Mensaje de error: %1%" #, boost-format @@ -3499,7 +3493,7 @@ msgid "Timelapse" msgstr "Intervalo" msgid "Flow Dynamic Calibration" -msgstr "Calibración Dinámica de Caudal" +msgstr "Calibración Dinámica de Flujo" msgid "Send Options" msgstr "Opciones de envío" @@ -3711,7 +3705,7 @@ msgstr "" "El valor se restablecerá a 0." msgid "" -"Too large elefant foot compensation is unreasonable.\n" +"Too large elephant foot compensation is unreasonable.\n" "If really have serious elephant foot effect, please check other settings.\n" "For example, whether bed temperature is too high.\n" "\n" @@ -3792,18 +3786,21 @@ msgid "" "Reset to 0." msgstr "" "seam_slope_start_height debe ser menor que layer_height.\n" -"Restablecer a 0." +"Reiniciar a 0." msgid "" "Spiral mode only works when wall loops is 1, support is disabled, top shell " "layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" "El modo espiral sólo funciona cuando los bucles de perímetro son 1, el " -"soporte está desactivado, las capas superiores de la cubierta son 0, el " -"relleno de baja densidad es 0 y el tipo de timelapse es el tradicional." +"soporte está desactivado, las capas superiores de cubierta son 0, la " +"cantidad de relleno de baja densidad es 0 y el tipo de timelapse es " +"tradicional." msgid " But machines with I3 structure will not generate timelapse videos." -msgstr " Las máquina con estructura I3 no generarán videos de timelapse." +msgstr "" +"Cuando imprima por objeto, las máquinas con estructura I3 no generará videos " +"timelapse." msgid "" "Change these settings automatically? \n" @@ -4028,7 +4025,7 @@ msgstr "" "añadirlo al G-Code)" msgid "Search gcode placeholders" -msgstr "Buscar marcadores de posición gcode" +msgstr "Buscar marcadores de posición G-Code" msgid "Add selected placeholder to G-code" msgstr "Añadir el marcador de posición seleccionado al G-Code" @@ -4309,7 +4306,7 @@ msgid "Model Filament" msgstr "Modelo Filamento" msgid "Prepare time" -msgstr "Planificar tiempo" +msgstr "Tiempo estimado" msgid "Model printing time" msgstr "Tiempo de impresión del modelo" @@ -4528,7 +4525,7 @@ msgstr "" "Mantiene el dispositivo con un rendimiento óptimo." msgid "Calibration Flow" -msgstr "Calibración del Caudal" +msgstr "Calibración del Flujo" msgid "Start Calibration" msgstr "Iniciar Calibración" @@ -4634,7 +4631,7 @@ msgid "Export G-code file" msgstr "Exportar archivo G-Code" msgid "Export plate sliced file" -msgstr "Explorar archivo laminado de bandeja" +msgstr "Explorar archivo laminado" msgid "Export all sliced file" msgstr "Exportar todos los archivos laminados" @@ -4802,7 +4799,7 @@ msgid "Export" msgstr "Exportar" msgid "Quit" -msgstr "Quitar" +msgstr "Salir del programa" msgid "Undo" msgstr "Deshacer" @@ -4811,7 +4808,7 @@ msgid "Redo" msgstr "Rehacer" msgid "Cut selection to clipboard" -msgstr "Cortar la selección al portapapeles" +msgstr "Cortar selección al portapapeles" msgid "Copy" msgstr "Copiar" @@ -4904,16 +4901,16 @@ msgid "Pass 1" msgstr "Paso 1" msgid "Flow rate test - Pass 1" -msgstr "Test de Caudal - Paso 1" +msgstr "Test de Flujo - Paso 1" msgid "Pass 2" msgstr "Paso 2" msgid "Flow rate test - Pass 2" -msgstr "Test de Caudal - Paso 2" +msgstr "Test de Flujo - Paso 2" msgid "Flow rate" -msgstr "Test de Caudal" +msgstr "Test de Flujo" msgid "Pressure advance" msgstr "Avance de Presión Lineal" @@ -4925,7 +4922,7 @@ msgid "Orca Tolerance Test" msgstr "Test de Tolerancia Orca" msgid "Max flowrate" -msgstr "Test de Caudal Máximo" +msgstr "Test de Flujo Máximo" msgid "VFA" msgstr "VFA" @@ -5058,7 +5055,7 @@ msgid "" "2. The Filament presets\n" "3. The Printer presets" msgstr "" -"¿Quieres sincronizar tus datos personales desde la Bambú Cloud? \n" +"¿Quiere sincronizar sus datos personales desde Bambú Cloud? \n" "Esta contiene la siguiente información:\n" "1. Los Perfiles de Proceso\n" "2. Los Perfiles de Filamento\n" @@ -5069,7 +5066,7 @@ msgstr "Sincronización" msgid "The device cannot handle more conversations. Please retry later." msgstr "" -"El dispositivo no puede gestionar más conversaciones. Inténtalo más tarde." +"El dispositivo no puede gestionar más conversaciones. Inténtelo más tarde." msgid "Player is malfunctioning. Please reinstall the system player." msgstr "" @@ -5919,11 +5916,14 @@ msgid "Advance" msgstr "Avanzado" msgid "Compare presets" -msgstr "Comparar ajustes" +msgstr "Comparar perfiles" msgid "View all object's settings" msgstr "Ver todos los ajustes del objeto" +msgid "Material settings" +msgstr "Configuración de Material" + msgid "Remove current plate (if not last one)" msgstr "Quitar bandeja actual (si no es la última)" @@ -6000,6 +6000,9 @@ msgstr "Elegir filamentos para usar" msgid "Search plate, object and part." msgstr "Buscar bandeja, objeto y parte." +msgid "Pellets" +msgstr "" + msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" @@ -6247,7 +6250,7 @@ msgstr "" "El archivo %s ya existe\n" "¿Desea reemplazarlo?" -msgid "Comfirm Save As" +msgid "Confirm Save As" msgstr "Confirmar Guardar como" msgid "Delete object which is a part of cut object" @@ -6472,7 +6475,7 @@ msgstr "" msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try agian." +"will be kept. You may fix the meshes and try again." msgstr "" "No se pueden realizar operaciones booleanas en las mallas del modelo. Sólo " "se conservarán las partes positivas. Puede arreglar las mallas e intentarlo " @@ -6609,7 +6612,7 @@ msgstr "Selección de idiomas" msgid "Switching application language while some presets are modified." msgstr "" -"Cambiando idioma de la aplicación mientras se modifican algunos preajustes." +"Cambiando idioma de la aplicación mientras se modifican algunos perfiles." msgid "Changing application language" msgstr "Cambiar el idioma de la aplicación" @@ -6629,6 +6632,21 @@ msgstr "Explorar" msgid "Choose Download Directory" msgstr "Elegir Directorio de Descarga" +msgid "Associate" +msgstr "Asociar" + +msgid "with OrcaSlicer so that Orca can open models from" +msgstr "porque OrcaSlicer así que no puede abrir modelos desde" + +msgid "Current Association: " +msgstr "Asociación actual:" + +msgid "Current Instance" +msgstr "Instancia actual" + +msgid "Current Instance Path: " +msgstr "Ruta de Instancia Actual:" + msgid "General Settings" msgstr "Configuración General" @@ -6847,42 +6865,6 @@ msgstr "Asociar enlaces web a OrcaSlicer" msgid "Associate URLs to OrcaSlicer" msgstr "Asociar URLs a OrcaSlicer" -msgid "Current association: " -msgstr "Asociación actual:" - -msgid "Associate prusaslicer://" -msgstr "Asociar prusaslicer://" - -msgid "Not associated to any application" -msgstr "No asociado a ninguna aplicación" - -msgid "" -"Associate OrcaSlicer with prusaslicer:// links so that Orca can open models " -"from Printable.com" -msgstr "" -"Asociar OrcaSlicer con prusaslicer:// enlaces para que Orca puede abrir " -"modelos de Printables.com" - -msgid "Associate bambustudio://" -msgstr "Asociar bambustudio://" - -msgid "" -"Associate OrcaSlicer with bambustudio:// links so that Orca can open models " -"from makerworld.com" -msgstr "" -"Asociar OrcaSlicer con bambustudio:// enlaces para que Orca puede abrir " -"modelos de makerworld.com" - -msgid "Associate cura://" -msgstr "Asociar cura://" - -msgid "" -"Associate OrcaSlicer with cura:// links so that Orca can open models from " -"thingiverse.com" -msgstr "" -"Asociar OrcaSlicer con enlaces cura:// para que Orca pueda abrir modelos " -"desde thingiverse.com" - msgid "Maximum recent projects" msgstr "Máximos proyectos recientes" @@ -7016,13 +6998,13 @@ msgid "Switch cloud environment, Please login again!" msgstr "¡Cambiado a entorno de nube, Por favor vuelva a autenticarse!" msgid "System presets" -msgstr "Ajustes del sistema" +msgstr "Perfiles del sistema" msgid "User presets" -msgstr "Ajustes de usuario" +msgstr "Perfiles de usuario" msgid "Incompatible presets" -msgstr "Ajustes incompatibles" +msgstr "Perfiles incompatibles" msgid "AMS filaments" msgstr "Filamentos AMS" @@ -7091,7 +7073,7 @@ msgid "First layer filament sequence" msgstr "Secuencia de primera capa de filamento" msgid "Same as Global Plate Type" -msgstr "Igual que el tipo de placa global" +msgstr "Igual que el Tipo de Bandeja Global" msgid "Same as Global Bed Type" msgstr "Lo mismo que el Tipo de Cama Global" @@ -7238,19 +7220,19 @@ msgid "Bambu Engineering Plate" msgstr "Bandeja de Ingeniería Bambú" msgid "Bambu Smooth PEI Plate" -msgstr "Placa PEI Lisa Bambu" +msgstr "Bandeja PEI Lisa Bambu" msgid "High temperature Plate" msgstr "Bandeja de Alta Temperatura" msgid "Bambu Textured PEI Plate" -msgstr "Placa PEI Texturizada Bambu" +msgstr "Bandeja PEI Texturizada Bambu" msgid "Send print job to" msgstr "Enviar el trabajo de impresión a" msgid "Flow Dynamics Calibration" -msgstr "Calibración de Dinámicas de Flujo" +msgstr "Calibración de Dinámica de Flujo" msgid "Click here if you can't connect to the printer" msgstr "Presione aquí si no puede conectar a la impresora" @@ -7331,7 +7313,7 @@ msgid "" "firmware to support AMS slot assignment." msgstr "" "El %s del filamento excede el número de ranuras AMS. Por favor actualice el " -"firmwareimpresora para que soporte la asignación de ranuras AMS." +"firmware de la impresora para que soporte la asignación de ranuras AMS." msgid "" "The printer firmware only supports sequential mapping of filament => AMS " @@ -7402,11 +7384,13 @@ msgid "" msgstr "" "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " "compruebe si son los filamentos requeridos. Si lo son, presione " -"\"Confirmar\" para empezar a imprimir." +"\"Confirmar\" para empezar a imprimir. Por favor, compruebe si son los " +"filamentos requeridos. Si lo son, presione \"Confirmar\" para empezar a " +"imprimir." #, c-format, boost-format msgid "nozzle in preset: %s %s" -msgstr "Boquilla preestablecida: %s %s" +msgstr "Boquilla en perfil: %s %s" #, c-format, boost-format msgid "nozzle memorized: %.2f %s" @@ -7452,7 +7436,7 @@ msgstr "" "fallar debido a la superficie dispersa." msgid "Automatic flow calibration using Micro Lidar" -msgstr "Calibración automática de flujo usando Micro Lidar" +msgstr "Calibración Automática de Flujo usando Micro Lidar" msgid "Modifying the device name" msgstr "Modificar el nombre del dispositivo" @@ -7470,7 +7454,7 @@ msgstr "" msgid "The selected printer is incompatible with the chosen printer presets." msgstr "" -"La impresora seleccionada es incompatible con los ajustes seleccionados." +"La impresora seleccionada es incompatible con los perfiles seleccionados." msgid "An SD card needs to be inserted before send to printer SD card." msgstr "" @@ -7482,7 +7466,7 @@ msgstr "" "Es necesaria que la impresora esté en la misma red local que Orca Slicer." msgid "The printer does not support sending to printer SD card." -msgstr "La impresora no soporta el envio directo a la tarjeta SD." +msgstr "La impresora no soporta el envío directo a la tarjeta SD." msgid "Slice ok." msgstr "Laminado correcto." @@ -7636,14 +7620,14 @@ msgid "Save current %s" msgstr "Guardar %s actuales" msgid "Delete this preset" -msgstr "Borra este ajuste" +msgstr "Borra este perfil" msgid "Search in preset" -msgstr "Buscar en los ajustes por defecto" +msgstr "Buscar en el perfil" msgid "Click to reset all settings to the last saved preset." msgstr "" -"Presionar para reiniciar todos los ajustes a los últimos ajustes por defecto." +"Presionar para reiniciar todos los ajustes al perfil guardado por defecto." msgid "" "Prime tower is required for smooth timeplase. There may be flaws on the " @@ -7668,8 +7652,8 @@ msgid "" "support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" -"Hemos añadido al estilo esperimental \"Árboles Delgados\" que presenta " -"volumenes de soportemás pequeños con menos fuerza.\n" +"Hemos añadido el ajuste experimental \"Árboles Delgados\" que presenta " +"volúmenes de soporte más pequeños con menos fuerza.\n" "Recomendamos usarlo con: 0 capas de interfaz, 0 distancia superior, 2 " "perímetros." @@ -7678,8 +7662,8 @@ msgid "" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" -"Cambiar estos ajustes automaticamente? \n" -"Sí - Cambiar estos ajustes automaticamente\n" +"Cambiar estos ajustes automáticamente? \n" +"Sí - Cambiar estos ajustes automáticamente\n" "No - No cambiar estos ajustes" msgid "" @@ -7708,7 +7692,7 @@ msgid "" "whether this change in geometry impacts the functionality of your print." msgstr "" "Al activar esta opción modificará la forma del modelo. Si la impresión " -"requiere dimensiones precisas o forma parte de un ensamblaje, es importante " +"requiere dimensiones precisas o forma parte de un ensamblado, es importante " "comprobar si este cambio en la geometría afecta a la funcionalidad de la " "impresión." @@ -7721,8 +7705,6 @@ msgid "" msgstr "" "La altura de la capa es demasiado pequeña.\n" "Se establecerá en min_layer_height\n" -"La altura de la capa es demasiado pequeña.\n" -"Se establecerá en min_layer_height\n" msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " @@ -7761,8 +7743,8 @@ msgstr "" "Característica experimental: Retraer y cortar el filamento a mayor distancia " "durante los cambios de filamento para minimizar el flujo. Aunque puede " "reducir notablemente el flujo, también puede elevar el riesgo de atascos de " -"la boquilla u otras complicaciones de impresión. Utilizar con el último " -"firmware de la impresora." +"boquilla u otras complicaciones de impresión. Por favor, utilícelo con el " +"último firmware de la impresora." msgid "" "When recording timelapse without toolhead, it is recommended to add a " @@ -7770,10 +7752,10 @@ msgid "" "by right-click the empty position of build plate and choose \"Add " "Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" -"Cuando grabamos timelapse sin cabezal de impresión, es recomendable añadir " -"un \"Torre de Purga de Intervalo\" \n" -"presionando con el botón derecho la posición vacía de la bandeja de " -"construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga\"." +"Cuando se graba un timelapse sin cabezal, se recomienda añadir una \"Torre " +"de Purga de Timelapse\" haciendo clic con el botón derecho del ratón en la " +"posición vacía de la bandeja de impresión y seleccionando \"Añadir " +"Primitivo\"->Torre de Purga de Timelapse\"." msgid "Line width" msgstr "Ancho de extrusión" @@ -7948,7 +7930,7 @@ msgid "" msgstr "" "Temperatura de la cama cuando está instalada la bandeja PEI lisa/ Bandeja de " "Alta Temperatura. El valor 0 significa que el filamento no admite la " -"impresión en la placa PEI lisa/placa de alta temperatura" +"impresión en la bandeja PEI lisa/bandeja de alta temperatura" msgid "Textured PEI Plate" msgstr "Bandeja PEI Texturizada" @@ -8078,7 +8060,7 @@ msgid "Layer change G-code" msgstr "Cambiar el G-Code tras el cambio de capa" msgid "Time lapse G-code" -msgstr "Timelapse G-code" +msgstr "Timelapse G-Code" msgid "Change filament G-code" msgstr "G-Code para el cambio de filamento" @@ -8147,7 +8129,7 @@ msgid "" "presets would be deleted if the printer is deleted." msgstr "" "El perfil de Filamento %d y el perfil de Proceso %d están adjuntos a esta " -"impresora." +"impresora. Esos perfiles se borrarían si se elimina la impresora." msgid "Presets inherited by other presets can not be deleted!" msgstr "¡Los perfiles heredados de otros perfiles no pueden borrarse!" @@ -8278,14 +8260,14 @@ msgstr "" #, boost-format msgid "You have changed some settings of preset \"%1%\". " -msgstr "Ha cambiado algunos ajustes del preajuste \"%1%\"." +msgstr "Ha cambiado algunos ajustes del perfil \"%1%\"." msgid "" "\n" "You can save or discard the preset values you have modified." msgstr "" "\n" -"Puede guardar o descartar los valores perfils que haya modificado." +"Puede guardar o descartar los perfiles que haya modificado." msgid "" "\n" @@ -8293,7 +8275,7 @@ msgid "" "transfer the values you have modified to the new preset." msgstr "" "\n" -"Puede guardar o descartar los valores perfils que ha modificado, o elegir " +"Puede guardar o descartar los valores perfiles que ha modificado, o elegir " "transferir los valores que ha modificado al nuevo perfil." msgid "You have previously modified your settings." @@ -8305,8 +8287,8 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Puede descartar los valores perfils que haya modificado, o elegir transferir " -"los valores modificados al nuevo proyecto" +"Puede descartar los valores perfiles que haya modificado, o elegir " +"transferir los valores modificados al nuevo proyecto" msgid "Extruders count" msgstr "Contador de extrusores" @@ -8333,8 +8315,8 @@ msgid "" "Note: New modified presets will be selected in settings tabs after close " "this dialog." msgstr "" -"Transfiera las opciones seleccionadas del preajuste izquierdo al derecho. \n" -"Nota: Los nuevos preajustes modificados se seleccionarán en las pestañas de " +"Transfiera las opciones seleccionadas del perfil izquierdo al derecho. \n" +"Nota: Los nuevos perfiles modificados se seleccionarán en las pestañas de " "configuración después de cerrar este cuadro de diálogo." msgid "Transfer values from left to right" @@ -8345,7 +8327,7 @@ msgid "" "to right preset." msgstr "" "Si se activa, este cuadro de diálogo se puede utilizar para convertir los " -"valores seleccionados de izquierda a derecha perfils." +"valores seleccionados de izquierda a derecha perfiles." msgid "Add File" msgstr "Añadir archivo" @@ -8450,7 +8432,7 @@ msgid "Approximate color matching." msgstr "Coincidencia de color aproximada." msgid "Append" -msgstr "Añada" +msgstr "Añadir" msgid "Add consumable extruder after existing extruders." msgstr "Añadir extrusora consumible después de las extrusoras existentes." @@ -8459,7 +8441,7 @@ msgid "Reset mapped extruders." msgstr "Restablecer extrusoras mapeadas." msgid "Cluster colors" -msgstr "Colores de los grupos" +msgstr "Colores de grupos" msgid "Map Filament" msgstr "Mapear Filamento" @@ -8468,15 +8450,17 @@ msgid "" "Note:The color has been selected, you can choose OK \n" " to continue or manually adjust it." msgstr "" -"Nota: Una vez seleccionado el color, puede seleccionar OK \n" -" para continuar o ajustarlo manualmente." +"Nota: Una vez seleccionado el color, puede elegir OK\n" +"para continuar o ajustarlo manualmente." msgid "" "Waring:The count of newly added and \n" " current extruders exceeds 16." msgstr "" -"Advertencia: El número de extrusoras añadidas y \n" -"actuales supera los 16." +"Advertencia: El recuento de extrusores recién añadidos y \n" +"actuales es superior a 16.Advertencia: El recuento de extrusores recién " +"añadidos y \n" +"actuales es superior a 16." msgid "Ramming customization" msgstr "Personalización de Moldeado de Extremo" @@ -8535,7 +8519,7 @@ msgstr "Volumen de limpieza (mm³) para cada par de filamentos." #, c-format, boost-format msgid "Suggestion: Flushing Volume in range [%d, %d]" -msgstr "Sugerencias: Volumen de Flujo en rango [%d, %d]" +msgstr "Sugerencias: Volumen de Flujo en rango [%d, %d]" #, c-format, boost-format msgid "The multiplier should be in range [%.2f, %.2f]." @@ -9046,7 +9030,7 @@ msgstr "" "siguiente arranque de la impresora o cuando arranque Orca Slicer." msgid "Extension Board" -msgstr "Placa de ampliación" +msgstr "Placa de Ampliación" msgid "Saving objects into the 3mf failed." msgstr "El guardado de objetos en el 3mf no ha funcionado." @@ -9763,9 +9747,9 @@ msgid "" "either as an absolute value or as percentage (for example 50%) of a direct " "travel path. Zero to disable" msgstr "" -"Distancia de desvio máximo para evitar cruzar el perímetro. No lo evite si " +"Distancia de desvío máximo para evitar cruzar el perímetro. No lo evite si " "la distancia de desvío es más alta que este valor. La distancia de desvío " -"podría tanto como un valor absoluto como pocentaje (por ejemplo 50%) de una " +"podría tanto como un valor absoluto como porcentaje (por ejemplo 50%) de una " "trayectoria de viaje directa. Cero para deshabilitar" msgid "mm or %" @@ -10141,7 +10125,7 @@ msgstr "" "Esta configuración reduce en gran medida las tensiones de la pieza, ya que " "ahora se distribuyen en direcciones alternas. Esto debería reducir " "deformaciones de la pieza mientras se mantiene la calidad de el perímetro " -"externa. Esta característica puede ser muy útil para materiales propensos a " +"externo. Esta característica puede ser muy útil para materiales propensos a " "deformarse, como ABS/ASA, y también para filamentos elásticos, como TPU y " "Silk PLA. También puede ayudar a reducir deformaciones en regiones flotantes " "en soportes.\n" @@ -10252,7 +10236,7 @@ msgid "" msgstr "" "Esto controla la generación del borde de adherencia en el lado exterior y/o " "interior de los modelos. Auto significa que el ancho de borde de adherencia " -"es analizado y calculado automaticamente." +"es analizado y calculado automáticamente." msgid "Brim-object gap" msgstr "Espacio borde de adherencia-objeto" @@ -10694,7 +10678,7 @@ msgstr "" "superficie exterior y precisión dimensional, ya que el perímetro exterior se " "imprime sin perturbaciones desde un perímetro interior. Sin embargo, el " "rendimiento del voladizo se reducirá al no haber un perímetro interno contra " -"el que imprimir el perímetro externa. Esta opción requiere un mínimo de 3 " +"el que imprimir el perímetro externo. Esta opción requiere un mínimo de 3 " "perímetros para ser efectiva, ya que imprime primero los perímetros " "interiores a partir del 3er perímetro, después el perímetro exterior y, " "finalmente, el primer perímetro interior. En la mayoría de los casos, se " @@ -10729,14 +10713,16 @@ msgid "" "external surface finish. It can also cause the infill to shine through the " "external surfaces of the part." msgstr "" -"Orden de las paredes/relleno. Cuando la casilla no está marcada, los muros " -"se imprimen primero, lo que funciona mejor en la mayoría de los casos.\n" +"Orden de los perímetros/relleno. Cuando la casilla no está marcada, los " +"muros se imprimen primero, lo que funciona mejor en la mayoría de los " +"casos.\n" "\n" "Imprimir primero el relleno puede ayudar con voladizos extremos ya que los " "muros tienen el relleno vecino al que adherirse. Sin embargo, el relleno " -"empujará ligeramente hacia fuera las paredes impresas donde se une a ellos, " -"lo que resulta en un peor acabado de la superficie exterior. También puede " -"hacer que el relleno brille a través de las superficies externas de la pieza." +"empujará ligeramente hacia fuera los perímetros impresos donde se une a " +"ellos, lo que resulta en un peor acabado de la superficie exterior. También " +"puede hacer que el relleno brille a través de las superficies externas de la " +"pieza." msgid "Wall loop direction" msgstr "Dirección del bucle de perímetro" @@ -10946,10 +10932,10 @@ msgstr "" "especialmente útil en los siguientes escenarios:\n" "\n" " 1. Para evitar cambios de brillo al imprimir filamentos brillantes\n" -"2. Para evitar cambios en la velocidad de la pared externa que pueden crear " -"ligeros artefactos de pared que aparecen como z banding\n" +"2. Para evitar cambios en la velocidad de el perímetros externo que pueden " +"crear ligeros artefactos de perímetro que aparecen como z banding\n" "3. Para evitar imprimir a velocidades que provoquen VFA (artefactos finos) " -"en las paredes externas\n" +"en las perímetros externas\n" "\n" msgid "Layer time" @@ -11023,6 +11009,26 @@ msgstr "" "El diámetro del filamento se utiliza para calcular la extrusión en el G-" "Code, por lo que es importante y debe ser preciso" +msgid "Pellet flow coefficient" +msgstr "Coeficiente de Flujo de Pellets" + +msgid "" +"Pellet flow coefficient is emperically derived and allows for volume " +"calculation for pellet printers.\n" +"\n" +"Internally it is converted to filament_diameter. All other volume " +"calculations remain the same.\n" +"\n" +"filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" +msgstr "" +"El coeficiente de flujo de pellets se obtiene de forma empírica y permite " +"calcular el volumen para impresoras de pellets.\n" +"\n" +"Internamente se convierte a filament_diameter. Todos los demás cálculos de " +"volumen siguen siendo los mismos.\n" +"\n" +"diámetro_filamento = sqrt( (4 * coeficiente_flujo_pellets) / PI )" + msgid "Shrinkage" msgstr "Contracción" @@ -11184,7 +11190,7 @@ msgstr "Flujo de Moldeado de Extremo multiherramienta" msgid "Flow used for ramming the filament before the toolchange." msgstr "" "Flujo usado por el Moldeado de Extremo de filamento antes del cambio de " -"herramienta." +"cabezal." msgid "Density" msgstr "Densidad" @@ -11321,7 +11327,7 @@ msgid "Lightning" msgstr "Rayo" msgid "Cross Hatch" -msgstr "Escotilla Transversal" +msgstr "Rayado Cruzado" msgid "Sparse infill anchor length" msgstr "Longitud del anclaje de relleno de baja densidad" @@ -11343,10 +11349,12 @@ msgstr "" "es calculado sobre el ancho de extrusión de relleno. OrcaSlicer intenta " "conectar dos líneas de relleno cercanas a un segmento de perímetro corto. Si " "no se encuentra ningún segmento más corto que relleno_anclaje_max, la línea " -"de relleno se conecta a un semento de perímetro en un solo lado y la " -"longitud del ancho de segmento de perímetro escogido se limita a este " -"parámetro, pero no más largo que anclage_longitud_max. \n" -"Configue este parámetro a cero para deshabilitar los perímetros de anclaje " +"de relleno se conecta a un segmento de perímetro en un solo lado y la de " +"relleno se conecta a un segmento de perímetro en un solo lado y la longitud " +"del ancho de segmento de perímetro escogido se limita a este parámetro, pero " +"no más largo que anclage_longitud_max. \n" +"Configure este parámetro a cero para deshabilitar los perímetros de anclaje " +"Configure este parámetro a cero para deshabilitar los perímetros de anclaje " "conectados a una sola línea de relleno." msgid "0 (no open anchors)" @@ -11443,7 +11451,7 @@ msgid "Enable accel_to_decel" msgstr "Activar acel_a_decel" msgid "Klipper's max_accel_to_decel will be adjusted automatically" -msgstr "El max_accel_a_decel de Klipper será ajustado automaticamente" +msgstr "El max_accel_to_decel de Klipper será ajustado automáticamente" msgid "accel_to_decel" msgstr "accel_to_decel" @@ -11483,7 +11491,7 @@ msgstr "Altura de la primera capa" msgid "" "Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"can improve build plate adhesion" msgstr "" "Altura de la primera capa. Hacer que la altura de la primera capa sea " "ligeramente gruesa puede mejorar la adherencia de la bandeja de impresión" @@ -11534,7 +11542,7 @@ msgid "" msgstr "" "La velocidad de ventilador se incrementará linealmente de cero a " "\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " -"\"full_fan_speed_layer\" se ignorará si es menor que " +"\"full_fan_speed_layer\" se ignorará si es menor que " "\"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará al " "máximo permitido de capa \"close_fan_the_first_x_layers\" + 1." @@ -11807,7 +11815,7 @@ msgid "" "G-code command: M106 P3 S(0-255)" msgstr "" "Active esta opción si la impresora admite filtración de aire\n" -"Comando G-code: M106 P3 S(0-255)" +"Comando G-Code: M106 P3 S(0-255)" msgid "G-code flavor" msgstr "Tipo de G-Code" @@ -11818,6 +11826,13 @@ msgstr "Con qué tipo de G-Code es compatible la impresora" msgid "Klipper" msgstr "Klipper" +msgid "Pellet Modded Printer" +msgstr "Impresora Pellet Modificada" + +msgid "Enable this option if your printer uses pellets instead of filaments" +msgstr "" +"Active esta opción si su impresora utiliza pellets en lugar de filamentos" + msgid "Support multi bed types" msgstr "Admite varios tipos de cama" @@ -11888,14 +11903,14 @@ msgid "" "value to ~10-15% to minimize potential over extrusion and accumulation of " "material resulting in rough top surfaces." msgstr "" -"El área de relleno se amplía ligeramente para solaparse con la pared y " +"El área de relleno se amplía ligeramente para solaparse con el perímetro y " "mejorar la adherencia. El valor porcentual es relativo a la anchura de línea " "del de baja densidad. Ajuste este valor a ~10-15% para minimizar la " "sobreextrusión potencial y la acumulación de material que resulta en " "superficies superiores ásperas." msgid "Top/Bottom solid infill/wall overlap" -msgstr "Relleno sólido superior/inferior/solapamiento de paredes" +msgstr "Relleno sólido superior/inferior/solapamiento de perímetros" #, no-c-format, no-boost-format msgid "" @@ -11906,10 +11921,10 @@ msgid "" "sparse infill" msgstr "" "El área de relleno sólido de cubierta superior se amplía ligeramente para " -"solaparse con la pared y mejorar la adherencia y minimizar la aparición de " -"agujeros de alfiler donde el relleno de cubierta superior se une a las " -"paredes. Un valor del 25-30% es un buen punto de partida para minimizar la " -"aparición de agujeros. El valor porcentual es relativo a la anchura de la " +"solaparse con el perímetro y mejorar la adherencia y minimizar la aparición " +"de agujeros de alfiler donde el relleno de cubierta superior se une a las " +"perímetros. Un valor del 25-30% es un buen punto de partida para minimizar " +"la aparición de agujeros. El valor porcentual es relativo a la anchura de la " "línea de relleno de baja densidad" msgid "Speed of internal sparse infill" @@ -11932,16 +11947,71 @@ msgstr "Máximo ancho de una región segmentada" msgid "Maximum width of a segmented region. Zero disables this feature." msgstr "" -"Máximo ancho de una región segmentada. Zero desactiva está característica." +"Máximo ancho de una región segmentada. Cero desactiva está característica." msgid "Interlocking depth of a segmented region" msgstr "Profundidad de entrelazado de una región segmentada" msgid "Interlocking depth of a segmented region. Zero disables this feature." msgstr "" -"Profundidad de entrelazado de una región segmentada. Zero desactiva esta " +"Profundidad de entrelazado de una región segmentada. Cero desactiva esta " "característica." +msgid "Use beam interlocking" +msgstr "Usar entrelazado de vigas" + +msgid "" +"Generate interlocking beam structure at the locations where different " +"filaments touch. This improves the adhesion between filaments, especially " +"models printed in different materials." +msgstr "" +"Genera una estructura de vigas de entrelazado en los lugares donde se tocan " +"los distintos filamentos. Esto mejora la adherencia entre filamentos, " +"especialmente en modelos impresos en distintos materiales." + +msgid "Interlocking beam width" +msgstr "Ancho de viga de entrelazado" + +msgid "The width of the interlocking structure beams." +msgstr "El ancho de estructura de vigas de entrelazado." + +msgid "Interlocking direction" +msgstr "Dirección de entrelazado" + +msgid "Orientation of interlock beams." +msgstr "Orientación de vigas entrelazadas." + +msgid "Interlocking beam layers" +msgstr "Capas de vigas de entrelazado" + +msgid "" +"The height of the beams of the interlocking structure, measured in number of " +"layers. Less layers is stronger, but more prone to defects." +msgstr "" +"La altura de las vigas de la estructura de entrelazado, medida en número de " +"capas. Menos capas es más fuerte, pero más propenso a defectos." + +msgid "Interlocking depth" +msgstr "Profundidad de entrelazado" + +msgid "" +"The distance from the boundary between filaments to generate interlocking " +"structure, measured in cells. Too few cells will result in poor adhesion." +msgstr "" +"La distancia desde el límite entre filamentos para generar estructura " +"entrelazada, medida en celdas. Un número demasiado bajo de celdas dará lugar " +"a una adhesión deficiente." + +msgid "Interlocking boundary avoidance" +msgstr "Evitar los limites de entrelazado" + +msgid "" +"The distance from the outside of a model where interlocking structures will " +"not be generated, measured in cells." +msgstr "" +"La distancia desde el exterior de un modelo donde no se generarán " +"estructuras entrelazadas, medida en celdas." + msgid "Ironing Type" msgstr "Tipo de alisado" @@ -12029,8 +12099,8 @@ msgid "" "This option will be ignored if the g-code flavor is set to Klipper." msgstr "" "Si está activada, los límites de la máquina se emitirán en un archivo G-" -"code. \n" -"Esta opción se ignorará si el tipo de g-code es Klipper." +"Code. \n" +"Esta opción se ignorará si el tipo de G-Code es Klipper." msgid "" "This G-code will be used as a code for the pause print. User can insert " @@ -12220,10 +12290,10 @@ msgstr "" "(alta velocidad/ancho mayor) a una extrusión de menor flujo (menor velocidad/" "ancho menor) y viceversa.\n" "\n" -"Define la velocidad máxima a la que el flujo volumétrico extruido en mm3/" -"seg2 puede cambiar con el tiempo. Valores más altos significan que se " -"permiten cambios de velocidad de extrusión más altos, lo que resulta en " -"transiciones de velocidad más rápidas.\n" +"Define la velocidad máxima a la que el flujo volumétrico extruido en mm3/seg " +"puede cambiar con el tiempo. Valores más altos significan que se permiten " +"cambios de velocidad de extrusión más altos, lo que resulta en transiciones " +"de velocidad más rápidas.\n" "\n" "Un valor de 0 desactiva la función. \n" "\n" @@ -12262,8 +12332,8 @@ msgid "" "Allowed values: 1-5" msgstr "" "Un valor más bajo resulta en transiciones de velocidad de extrusión más " -"suaves. Sin embargo, esto resulta en un archivo gcode significativamente más " -"grande y más instrucciones para que la impresora procese. \n" +"suaves. Sin embargo, esto resulta en un archivo G-Code significativamente " +"más grande y más instrucciones para que la impresora procese. \n" "\n" "El valor por defecto de 3 funciona bien en la mayoría de los casos. Si su " "impresora está tartamudeando, aumente este valor para reducir el número de " @@ -12285,7 +12355,7 @@ msgstr "" "auxiliar funcionará a esta velocidad durante la impresión, excepto en las " "primeras capas, que se define como sin capas de refrigeración.\n" "Por favor, active auxiliary_fan en la configuración de la impresora para " -"utilizar esta función. Comando G-code: M106 P2 S(0-255)" +"utilizar esta función. Comando G-Code: M106 P2 S(0-255)" msgid "Min" msgstr "Min" @@ -12310,10 +12380,10 @@ msgstr "" "ralentización para un mejor ventilación de la capa está activada." msgid "Nozzle diameter" -msgstr "Diámetro de la boquilla" +msgstr "Diámetro de boquilla" msgid "Diameter of nozzle" -msgstr "Diámetro de la boquilla" +msgstr "Diámetro de boquilla" msgid "Configuration notes" msgstr "Anotaciones de configuración" @@ -12358,7 +12428,7 @@ msgstr "" "de los movimientos en su interior." msgid "High extruder current on filament swap" -msgstr "Alto flujo de extrusión en los cambio de filamento" +msgstr "Aumentar el flujo de extrusión en el cambio de filamento" msgid "" "It may be beneficial to increase the extruder motor current during the " @@ -12671,6 +12741,16 @@ msgstr "Pendiente" msgid "Spiral" msgstr "Espiral" +msgid "Traveling angle" +msgstr "Ángulo de desplazamiento" + +msgid "" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " +"in Normal Lift" +msgstr "" +"Ángulo de desplazamiento para el tipo de salto de Pendiente y Espiral Z. Si " +"se ajusta a 90°, se obtiene una elevación normal." + msgid "Only lift Z above" msgstr "Solo elevar Z por encima" @@ -12738,7 +12818,7 @@ msgid "Speed of retractions" msgstr "Velocidad de las retracciones" msgid "Deretraction Speed" -msgstr "Velocidad de desretracción" +msgstr "Velocidad de Desretracción" msgid "" "Speed for reloading filament into extruder. Zero means same speed with " @@ -12992,13 +13072,14 @@ msgid "" "be calculated based on the travel speed setting above.The default value for " "this parameter is 80%" msgstr "" -"La velocidad de barrido viene determinada por el ajuste de velocidad " -"especificado en esta configuración. Si el valor se expresa en porcentaje " -"(por ejemplo, 80%), se calculará en función del ajuste de velocidad de " -"desplazamiento anterior. El valor por defecto de este parámetro es 80%" +"La velocidad de limpieza es determinada por el ajuste de velocidad La " +"velocidad de limpieza es determinada por el ajuste de velocidad especificado " +"en esta configuración. Si el valor se expresa en porcentaje (por ejemplo, " +"80%), se calculará en función del ajuste de velocidad de desplazamiento " +"anterior. El valor por defecto de este parámetro es 80%" msgid "Skirt distance" -msgstr "Distancia de la falda" +msgstr "Distancia de falda" msgid "Distance from skirt to brim or object" msgstr "Distancia de la falda al borde de adherencia o al objeto" @@ -13010,7 +13091,7 @@ msgid "How many layers of skirt. Usually only one layer" msgstr "C capas de falda. Normalmente sólo una capa" msgid "Draft shield" -msgstr "Escudo de protección" +msgstr "Protector contra corrientes de aire" msgid "" "A draft shield is useful to protect an ABS or ASA print from warping and " @@ -13027,18 +13108,21 @@ msgid "" msgstr "" "Un protector contra corrientes de aire es útil para proteger una impresión " "en ABS o ASA de la deformación y el desprendimiento de la cama de impresión " -"debido a los flujoes de aire. Suele ser necesario solo en impresoras de " +"debido a los flujos de aire. Suele ser necesario solo en impresoras de " "bastidor abierto, es decir, sin cerramiento.\n" "\n" "Opciones:\n" -"Activado = la falda es tan alto como el objeto impreso más alto.\n" -"Limitado = la altura de la falda es la especificada por la altura del " -"falda.\n" +"Activado = la falda es tan alta como el objeto impreso más alto.\n" +"Limitado = la falda es tan alta cómo se especifica en el ajuste \"Altura de " +"falda\"\n" "\n" "Nota: Con el protector contra corrientes de aire activo, la falda se " -"imprimirá a la distancia del faldón del objeto. Por lo tanto, si los bordes " -"están activos, puede cruzarse con ellos. Para evitarlo, aumente el valor de " -"la distancia de la falda.\n" +"imprimirá a la distancia especificada en \"Distancia de falda\" del objeto. " +"Por lo tanto, si los bordes están activos, puede cruzarse con ellos. Para " +"evitarlo, aumente el valor de la \"Distancia de falda\".\n" +"imprimirá a la distancia especificada en \"Distancia de falda\" del objeto. " +"Por lo tanto, si los bordes están activos, puede cruzarse con ellos. Para " +"evitarlo, aumente el valor de la \"Distancia de la falda\".\n" msgid "Limited" msgstr "Limitado" @@ -13709,11 +13793,11 @@ msgid "" "This gcode is inserted when change filament, including T command to trigger " "tool change" msgstr "" -"Este gcode se inserta al cambiar de filamento, incluyendo el comando T para " +"Este G-Code se inserta al cambiar de filamento, incluyendo el comando T para " "activar el cambio de herramienta" msgid "This gcode is inserted when the extrusion role is changed" -msgstr "Este gcode se inserta cuando se cambia el rol de extrusión" +msgstr "Este G-Code se inserta cuando se cambia el rol de extrusión" msgid "" "Line width for top surfaces. If expressed as a %, it will be computed over " @@ -14165,7 +14249,11 @@ msgstr "" "\n" "NOTA: Las superficies inferior y superior no se verán afectadas por este " "valor para evitar huecos visuales en el exterior del modelo. Ajuste \"Umbral " -"de perímetro\" en la configuración avanzada para ajustar la sensibilidad de " +"de Perímetro\" en la configuración avanzada para ajustar la sensibilidad de " +"lo que se considera una superficie superior. El \"Umbral de un Solo " +"Perímetro\" sólo es visible si este valor es superior al valor " +"predeterminado de 0,5, o si las superficies superiores de un solo perímetro " +"están activados." msgid "First layer minimum wall width" msgstr "Ancho mínimo del perímetro de la primera capa" @@ -14495,26 +14583,26 @@ msgid "Minute" msgstr "Minuto" msgid "Print preset name" -msgstr "Imprimir nombre de preajuste" +msgstr "Imprimir nombre de perfil" msgid "Name of the print preset used for slicing." -msgstr "Nombre del preajuste de impresión utilizado para el corte." +msgstr "Nombre del perfil de impresión utilizado para el corte." msgid "Filament preset name" -msgstr "Nombre del preajuste de filamento" +msgstr "Nombre del perfil de filamento" msgid "" "Names of the filament presets used for slicing. The variable is a vector " "containing one name for each extruder." msgstr "" -"Nombres de los preajustes de filamento utilizados para el corte. La variable " +"Nombres de los perfiles de filamento utilizados para el corte. La variable " "es un vector que contiene un nombre para cada extrusor." msgid "Printer preset name" -msgstr "Nombre de preajuste de la impresora" +msgstr "Nombre de perfil de la impresora" msgid "Name of the printer preset used for slicing." -msgstr "Nombre del preajuste de impresora utilizado para laminar." +msgstr "Nombre del perfil de impresora utilizado para laminar." msgid "Physical printer name" msgstr "Nombre físico de la impresora" @@ -14833,8 +14921,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"This machine type can only hold %d historical results per nozzle. This " -"result will not be saved." +"Este tipo de máquina sólo puede guardar %d resultados históricos por " +"boquilla. Este resultado no se guardará." msgid "Internal Error" msgstr "Error interno" @@ -14901,6 +14989,12 @@ msgstr "" "wiki.\n" "\n" "Normalmente la calibración es innecesaria. Cuando se inicia una impresión de " +"un solo color/material, con la opción \"Calibración de Dinámica de Flujo\" " +"marcada en el menú de inicio de impresión, la impresora seguirá el camino " +"antiguo, calibrar el filamento antes de la impresión; cuando se inicia una " +"impresión de varios colores/materiales, la impresora utilizará el parámetro " +"de compensación por defecto para el filamento durante cada cambio de " +"filamento que tendrá un buen resultado en la mayoría de los casos.\n" "un solo color/material, con la opción \"calibración de la dinámica de " "flujo\" marcada en el menú de inicio de impresión, la impresora seguirá el " "camino antiguo, calibrar el filamento antes de la impresión; cuando se " @@ -14909,10 +15003,10 @@ msgstr "" "de filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos que pueden hacer que los resultados de " -"la calibración no sean fiables, como una adhesión insuficiente en la placa " -"de impresión. Se puede mejorar la adherencia lavando la placa de impresión o " -"aplicando pegamento. Para obtener más información sobre este tema, consulte " -"nuestra Wiki.\n" +"la calibración no sean fiables, como una adhesión insuficiente en la bandeja " +"de impresión. Se puede mejorar la adherencia lavando la bandeja de impresión " +"o aplicando pegamento. Para obtener más información sobre este tema, " +"consulte nuestra Wiki.\n" "\n" "Los resultados de la calibración tienen alrededor de un 10 por ciento de " "fluctuación en nuestra prueba, lo que puede causar que el resultado no sea " @@ -14934,6 +15028,7 @@ msgid "" "they should be." msgstr "" "Después de usar la Calibración de Dinámicas de Flujo, puede haber algunos " +"Después de usar la Calibración de Dinámicas de Flujo, puede haber algunos " "problemas de extrusión, como:\n" "1. Sobre extrusión: Exceso de material en la impresión, formando truños o " "capas más anchas y no uniformes.\n" @@ -14966,7 +15061,7 @@ msgstr "" "esperados y los reales. La configuración predeterminada funciona bien en las " "impresoras Bambu Lab y en los filamentos oficiales, ya que fueron " "precalibrados y ajustados con precisión. Para un filamento normal, " -"normalmente no necesitarás realizar una Calibración de Caudal a menos que " +"normalmente no necesitarás realizar una Calibración de Flujo a menos que " "sigas viendo los defectos listados después de haber realizado otras " "calibraciones. Para más detalles, consulte el artículo de la wiki." @@ -14989,6 +15084,7 @@ msgid "" "read and understand the process before doing it." msgstr "" "La auto Calibración de Ratio de Flujo utiliza la tecnología Micro-Lidar de " +"La auto Calibración de Ratio de Flujo utiliza la tecnología Micro-Lidar de " "Bambu Lab, midiendo directamente los patrones de calibración. Sin embargo, " "tenga en cuenta que la eficacia y precisión puede verse comprometida con " "algunos tipos de material. Particularmente, los filamentos que son " @@ -15000,7 +15096,7 @@ msgstr "" "filamento. Seguimos mejorando la precisión y compatibilidad de esta " "calibración mediante actualizaciones de firmware a lo largo del tiempo.\n" "\n" -"Precaución: La Calibración del Caudal es un proceso avanzado, que sólo debe " +"Precaución: La Calibración del Flujo es un proceso avanzado, que sólo debe " "ser realizado por aquellos que entiendan completamente su propósito e " "implicaciones. Un uso incorrecto puede dar lugar a impresiones de calidad " "inferior o a daños en la impresora. Por favor asegúrese de leer " @@ -15017,10 +15113,10 @@ msgstr "" "Se recomienda calibrar la Velocidad Volumétrica Máxima cuando imprima con:" msgid "material with significant thermal shrinkage/expansion, such as..." -msgstr "material con importante contracción/expansión térmica, como..." +msgstr "Material con importante contracción/expansión térmica, como..." msgid "materials with inaccurate filament diameter" -msgstr "materiales con diámetro de filamento inpreciso" +msgstr "Materiales con diámetro de filamento inpreciso" msgid "We found the best Flow Dynamics Calibration Factor" msgstr "Hemos encontrado el mejor Factor de Calibración de Dinámicas de Flujo" @@ -15103,7 +15199,7 @@ msgstr "Saltar Calibración2" #, c-format, boost-format msgid "flow ratio : %s " -msgstr "ratio de flujo: %s " +msgstr "Ratio de flujo: %s " msgid "Please choose a block with smoothest top surface" msgstr "Por favor, escoja un bloque con la superficie superior más lisa" @@ -15142,7 +15238,7 @@ msgid "Plate Type" msgstr "Tipo de Bandeja" msgid "filament position" -msgstr "posición de filamento" +msgstr "Posición de filamento" msgid "External Spool" msgstr "Bobina Externa" @@ -15202,13 +15298,13 @@ msgid "Flow Dynamics Calibration Result" msgstr "Resultado de Calibración de Dinámicas de Flujo" msgid "New" -msgstr "New" +msgstr "Nuevo" msgid "No History Result" -msgstr "Sin Resultados Históricos" +msgstr "Sin Historial de Resultados" msgid "Success to get history result" -msgstr "Éxito recuperando los resultados históricos" +msgstr "Éxito recuperando el historial de resultados" msgid "Refreshing the historical Flow Dynamics Calibration records" msgstr "" @@ -15227,13 +15323,13 @@ msgid "Edit Flow Dynamics Calibration" msgstr "Editar Calibración de Dinámicas de Flujo" msgid "New Flow Dynamic Calibration" -msgstr "Nueva Calibración Dinámica del Caudal" +msgstr "Nueva Calibración Dinámica del Flujo" msgid "Ok" msgstr "Ok" msgid "The filament must be selected." -msgstr "Debe seleccionarse el filamento." +msgstr "Debe seleccionar el filamento." msgid "Network lookup" msgstr "Búsqueda de red" @@ -15368,7 +15464,7 @@ msgid "End volumetric speed: " msgstr "Velocidad volumétrica final: " msgid "step: " -msgstr "paso: " +msgstr "Paso: " msgid "" "Please input valid values:\n" @@ -15402,10 +15498,10 @@ msgstr "" "final > inicio + paso)" msgid "Start retraction length: " -msgstr "Iniciar anchura de retracción: " +msgstr "Longitud de retracción inicial:" msgid "End retraction length: " -msgstr "Finalizar " +msgstr "Longitud de retracción final:" msgid "mm/mm" msgstr "mm/mm" @@ -15417,9 +15513,7 @@ msgid "Upload to Printer Host with the following filename:" msgstr "Subido al Host de Impresión con el siguiente nombre de archivo:" msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" -"Use barras oblicuas como separador de directorio \n" -"si es necesario." +msgstr "Use barras oblicuas como separador de directorio si es necesario." msgid "Upload to storage" msgstr "Subir a almacenamiento" @@ -15549,7 +15643,7 @@ msgid "Log Info" msgstr "Información de Registro" msgid "Select filament preset" -msgstr "Seleccionar Filamento Preestablecido" +msgstr "Seleccionar perfil de filamento" msgid "Create Filament" msgstr "Crear Filamento" @@ -15646,7 +15740,7 @@ msgid "" "name. Do you want to continue?" msgstr "" "El nombre del filamento %s que ha creado ya existe. \n" -"Si continúa, el preajuste creado se mostrará con su nombre completo. ¿Desea " +"Si continúa, el perfil creado se mostrará con su nombre completo. ¿Desea " "continuar?" msgid "Some existing presets have failed to be created, as follows:\n" @@ -15666,9 +15760,9 @@ msgid "" "selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" -"Cambiaríamos el nombre de los preajustes a \"Número de serie del Vendedor " -"@impresora que ha seleccionado\". \n" -"Para añadir preajustes para más impresoras, vaya a selección de impresoras" +"Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " +"seleccionados\". \n" +"Para añadir perfiles para más impresoras, vaya a la selección de impresoras" msgid "Create Printer/Nozzle" msgstr "Crear Impresora/Boquilla" @@ -15691,7 +15785,7 @@ msgstr "Importar Perfil" msgid "Create Type" msgstr "Crear Tipo" -msgid "The model is not fond, place reselect vendor." +msgid "The model is not found, place reselect vendor." msgstr "No se encuentra el modelo, vuelva a seleccionar fabricante." msgid "Select Model" @@ -15743,11 +15837,11 @@ msgstr "" msgid "The printer model was not found, please reselect." msgstr "No se ha encontrado el modelo de impresora, vuelva a seleccionarlo." -msgid "The nozzle diameter is not fond, place reselect." +msgid "The nozzle diameter is not found, place reselect." msgstr "" "El diámetro de la boquilla no es adecuado, vuelva a seleccionar el lugar." -msgid "The printer preset is not fond, place reselect." +msgid "The printer preset is not found, place reselect." msgstr "" "El perfil de impresora se ha encontrado, por favor, vuelva a seleccionarlo." @@ -15796,7 +15890,7 @@ msgid "" msgstr "" "El perfil de impresora que ha creado ya tiene un perfil con el mismo nombre. " "¿Desea sobrescribirlo?\n" -"\tSí: sobrescriba el perfil de impresora con el mismo nombre, y los perfiles " +"\tSí: sobrescribe el perfil de impresora con el mismo nombre, y los perfiles " "de filamento y proceso con el mismo nombre de perfil se volverán a crear \n" "y los perfiles de filamento y proceso sin el mismo nombre de perfil se " "reservarán.\n" @@ -15872,7 +15966,7 @@ msgid "" "them carefully." msgstr "" "Por favor, vaya a la configuración de filamento para editar sus ajustes " -"perfils si es necesario.\n" +"perfiles si es necesario.\n" "Tenga en cuenta que la temperatura de la boquilla, la temperatura de la cama " "caliente y la velocidad volumétrica máxima tienen un impacto significativo " "en la calidad de impresión. Por favor, configúrelos con cuidado." @@ -15887,11 +15981,11 @@ msgid "" msgstr "" "\n" "\n" -"Orca ha detectado que la función de sincronización de las preconfiguraciones " -"de usuario no está activada, lo que puede dar lugar a una configuración " +"Orca ha detectado que la función de sincronización de los perfiles de " +"usuario no está activada, lo que puede dar lugar a una configuración " "incorrecta del filamento en la página Dispositivo.\n" -"Haga clic en \"Sincronizar preajustes de usuario\" para activar la función " -"de sincronización." +"Haga clic en \"Sincronizar perfiles de usuario\" para activar la función de " +"sincronización." msgid "Printer Setting" msgstr "Ajustes de Impresora" @@ -16065,7 +16159,7 @@ msgid "The filament choice not find filament preset, please reselect it" msgstr "Perfil de filamento no encontrado, por favor, seleccione otro" msgid "[Delete Required]" -msgstr "[Suprimir Obligatorio]" +msgstr "[Necesario Eliminar]" msgid "Edit Preset" msgstr "Editar Perfil" @@ -16346,7 +16440,6 @@ msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,2 mm, tiene " "una altura de capa menor. Esto da como resultado líneas de capa casi " "invisibles y una mayor calidad de impresión, pero un tiempo de impresión más " -"largo." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -16483,9 +16576,9 @@ msgid "" "prints, but more filament consumption and longer printing time." msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,6 mm, tiene " -"más bucles de pared y una mayor relleno de baja densidad. Esto se traduce en " -"una mayor resistencia de impresión, pero un mayor consumo de filamento y un " -"tiempo de impresión más largo." +"más bucles de perímetro y una mayor relleno de baja densidad. Esto se " +"traduce en una mayor resistencia de impresión, pero un mayor consumo de " +"filamento y un tiempo de impresión más largo." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " @@ -16586,7 +16679,7 @@ msgstr "¡Se ha conectado correctamente a SimplyPrint!" msgid "Could not connect to SimplyPrint" msgstr "No se ha podido conectar con SimplyPrint" -msgid "Internel error" +msgid "Internal error" msgstr "Error interno" msgid "Unknown error" @@ -17006,6 +17099,66 @@ msgstr "" "aumentar adecuadamente la temperatura del lecho térmico puede reducir la " "probabilidad de deformaciones." +#~ msgid "" +#~ "When recording timelapse without toolhead, it is recommended to add a " +#~ "\"Timelapse Wipe Tower\" \n" +#~ "by right-click the empty position of build plate and choose \"Add " +#~ "Primitive\"->\"Timelapse Wipe Tower\".by right-click the empty position " +#~ "of build plate and choose \"Add Primitive\"->\"Timelapse Wipe Tower\"." +#~ msgstr "" +#~ "Cuando grabamos timelapse sin cabezal de impresión, es recomendable " +#~ "añadir un \"Torre de Purga de Intervalo\" \n" +#~ "presionando con el botón derecho la posición vacía de la bandeja de " +#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de " +#~ "Purga\"." + +#~ msgid "" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" +#~ "To add preset for more printers, Please go to printer selection" +#~ msgstr "" +#~ "Cambiaríamos el nombre de los preajustes a \"Número de serie del Vendedor " +#~ "@impresora que ha seleccionado\". \n" +#~ "Para añadir preajustes para más impresoras, vaya a selección de impresoras" + +#~ msgid "Current association: " +#~ msgstr "Asociación actual:" + +#~ msgid "Associate prusaslicer://" +#~ msgstr "Asociar prusaslicer://" + +#~ msgid "Not associated to any application" +#~ msgstr "No asociado a ninguna aplicación" + +#~ msgid "" +#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " +#~ "models from Printable.com" +#~ msgstr "" +#~ "Asociar OrcaSlicer con prusaslicer:// enlaces para que Orca puede abrir " +#~ "modelos de Printables.com" + +#~ msgid "Associate bambustudio://" +#~ msgstr "Asociar bambustudio://" + +#~ msgid "" +#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " +#~ "models from makerworld.com" +#~ msgstr "" +#~ "Asociar OrcaSlicer con bambustudio:// enlaces para que Orca puede abrir " +#~ "modelos de makerworld.com" + +#~ msgid "Associate cura://" +#~ msgstr "Asociar cura://" + +#~ msgid "" +#~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " +#~ "thingiverse.com" +#~ msgstr "" +#~ "Asociar OrcaSlicer con enlaces cura:// para que Orca pueda abrir modelos " +#~ "desde thingiverse.com" + #~ msgid "" #~ "File size exceeds the 100MB upload limit. Please upload your file through " #~ "the panel." @@ -17450,16 +17603,6 @@ msgstr "" #~ msgid "No sparse layers (EXPERIMENTAL)" #~ msgstr "Capas de baja densidad (EXPERIMENTAL)" -#~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" -#~ "To add preset for more prinetrs, Please go to printer selection" -#~ msgstr "" -#~ "Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " -#~ "seleccionados\". \n" -#~ "Para añadir perfiles para más impresoras, vaya a la selección de " -#~ "impresoras" - #~ msgid "The Config can not be loaded." #~ msgstr "La Configuración no será cargada." @@ -17737,13 +17880,6 @@ msgstr "" #~ msgid "Add/Remove printers" #~ msgstr "Añadir/Borrar impresoras" -#~ msgid "" -#~ "When print by object, machines with I3 structure will not generate " -#~ "timelapse videos." -#~ msgstr "" -#~ "Cuando imprima por objeto, las máquinas con estructura I3 no generará " -#~ "videos timelapse." - #, c-format, boost-format #~ msgid "%s is not supported by AMS." #~ msgstr "%s no está soportado por el AMS." @@ -19142,15 +19278,6 @@ msgstr "" #~ msgid "Spiral mode" #~ msgstr "Modo espiral" -#~ msgid "" -#~ "Spiral mode only works when wall loops is 1, \n" -#~ "support is disabled, top shell layers is 0 and sparse infill density is " -#~ "0\n" -#~ msgstr "" -#~ "El modo espiral sólo funciona cuando los bucles de pared son 1, \n" -#~ "el soporte está desactivado, las capas superiores de la cáscara es 0 y la " -#~ "densidad de relleno dispersa es 0\n" - #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" #~ msgstr "" #~ "Enviado con éxito. Saltará automáticamente a la página del dispositivo en " @@ -19257,13 +19384,6 @@ msgstr "" #~ msgid "Waiting" #~ msgstr "Esperando" -#~ msgid "" -#~ "When recording timelapse without toolhead, it is recommended to add a " -#~ "\"Timelapse Wipe Tower\" \n" -#~ "by right-click the empty position of build plate and choose \"Add " -#~ "Primitive\"->\"Timelapse Wipe Tower\".\n" -#~ msgstr "\n" - #~ msgid "" #~ "You have changed some preset settings. \n" #~ "Would you like to keep these changed settings after switching preset?" @@ -19625,15 +19745,6 @@ msgstr "" #~ "Detección de hilos en la impresión y exceso de material de purga en el " #~ "vertedero." -#~ msgid "" -#~ "Spiral mode only works when wall loops is 1, support is disabled, top " -#~ "shell layers is 0, sparse infill density is 0 and timelapse type is " -#~ "traditional" -#~ msgstr "" -#~ "El modo espiral solo funciona cuando los bucles de pared son 1, el " -#~ "soporte está desactivado, las capas superiores son 0, la densidad de " -#~ "relleno disperso es 0 y el tipo de lapso de tiempo es tradicional" - #~ msgid "Start" #~ msgstr "Iniciar" diff --git a/resources/web/data/text.js b/resources/web/data/text.js index c80bb979c8..a7577abc56 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -323,8 +323,8 @@ var LangText = { t111: "Crear nuevo", t112: "Unirse al programa", t113: "Puede cambiar su elección en preferencias en cualquier momento.", - orca1: "Edit Project Info", - orca2: "no model information", + orca1: "Editar información del proyecto", + orca2: "No hay información sobre el modelo", }, de_DE: { t1: "Willkommen im Orca Slicer", From 5bf386c003163992780254dd5bb97060d8ed60b3 Mon Sep 17 00:00:00 2001 From: Handle Date: Thu, 25 Jul 2024 22:28:35 +0800 Subject: [PATCH 055/151] Update zh_CN translaton. (#6222) --- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 54 ++++++++++++--------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index d46ccfef31..6c6b4258a8 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -4425,38 +4425,38 @@ msgstr "默认视图" #. TRN To be shown in the main menu View->Top msgid "Top" -msgstr "顶部" +msgstr "上" msgid "Top View" msgstr "顶部视图" #. TRN To be shown in the main menu View->Bottom msgid "Bottom" -msgstr "底部" +msgstr "下" msgid "Bottom View" msgstr "底部视图" msgid "Front" -msgstr "前面" +msgstr "前" msgid "Front View" msgstr "前视图" msgid "Rear" -msgstr "后面" +msgstr "后" msgid "Rear View" msgstr "后视图" msgid "Left" -msgstr "左面" +msgstr "左" msgid "Left View" msgstr "左视图" msgid "Right" -msgstr "右面" +msgstr "右" msgid "Right View" msgstr "右视图" @@ -8177,7 +8177,7 @@ msgid "Camera view - Bottom" msgstr "摄像机视角 - 底部" msgid "Camera view - Front" -msgstr "摄像机视角 - 前面" +msgstr "摄像机视角 - 正面" msgid "Camera view - Behind" msgstr "摄像机视角 - 后面" @@ -9435,7 +9435,7 @@ msgid "Slow down for overhang" msgstr "悬垂降速" msgid "Enable this option to slow printing down for different overhang degree" -msgstr "打开这个选项将降低不同悬垂程度的走线的打印速度" +msgstr "启用此选项将降低不同悬垂程度的走线的打印速度" msgid "Slow down for curled perimeters" msgstr "翘边降速" @@ -10691,12 +10691,18 @@ msgid "" "quality as line segments are converted to arcs by the slicer and then back " "to line segments by the firmware." msgstr "" +"启用此设置,导出的G-code将包含G2 G3指令。圆弧拟合的容许值和精度相同。\n" +"\n" +"请注意:对于使用Klipper的打印机,建议禁用此选项。\n" +"Klipper打印机并不会从圆弧拟合中受益,因为这些命令会被固件\n" +"重新分割为线段。由于切片软件将线段转换为圆弧后再次被转换为\n" +"线段进行打印,这样操作会导致打印件表面质量下降。" msgid "Add line number" msgstr "标注行号" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "打开这个设置,G-code的每一行的开头会增加Nx标注行号。" +msgstr "启用该设置,G-code的每一行的开头会增加Nx标注行号。" msgid "Scan first layer" msgstr "首层扫描" @@ -15048,43 +15054,43 @@ msgstr "" "耗时较长。" msgid "Connected to Obico successfully!" -msgstr "" +msgstr "已成功连接到Obico" msgid "Could not connect to Obico" -msgstr "" +msgstr "无法连接到Obico" msgid "Connected to SimplyPrint successfully!" -msgstr "" +msgstr "已成功连接到SimplyPrint" msgid "Could not connect to SimplyPrint" -msgstr "" +msgstr "无法连接到SimplyPrint" msgid "Internal error" -msgstr "" +msgstr "内部错误" msgid "Unknown error" -msgstr "" +msgstr "未知错误" msgid "SimplyPrint account not linked. Go to Connect options to set it up." -msgstr "" +msgstr "尚未连接到SimplyPrint账户,前往连接选项来进行配置。" msgid "Connection to Flashforge works correctly." -msgstr "" +msgstr "与Flashforge的连接工作正常。" msgid "Could not connect to Flashforge" -msgstr "" +msgstr "无法连接至Flashforge" msgid "The provided state is not correct." -msgstr "" +msgstr "提供的状态不正确。" msgid "Please give the required permissions when authorizing this application." -msgstr "" +msgstr "在您为此应用程序进行授权时,请允许所需的权限。" msgid "Something unexpected happened when trying to log in, please try again." -msgstr "" +msgstr "在尝试登录时发生了异常,请重试。" msgid "User cancelled." -msgstr "" +msgstr "用户已取消。" #: resources/data/hints.ini: [hint:Precise wall] msgid "" @@ -15092,6 +15098,8 @@ msgid "" "Did you know that turning on precise wall can improve precision and layer " "consistency?" msgstr "" +"精准外墙尺寸\n" +"您知道吗?您可以启用精准外墙尺寸选项,提高精度和层一致性。" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" @@ -15452,7 +15460,7 @@ msgstr "" #~ "Enable this to get a G-code file which has G2 and G3 moves. And the " #~ "fitting tolerance is same with resolution" #~ msgstr "" -#~ "打开这个设置,导出的G-code将包含G2 G3指令。圆弧拟合的容许值和精度相同。" +#~ "启用此设置,导出的G-code将包含G2 G3指令。圆弧拟合的容许值和精度相同。" #~ msgid "" #~ "Infill area is enlarged slightly to overlap with wall for better bonding. " From ce642ed533a26b927ad3ee19ddb9ef390c71b9d6 Mon Sep 17 00:00:00 2001 From: KrisMorr <154343071+KrisMorr@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:33:56 +0200 Subject: [PATCH 056/151] Update Polish translation (#6163) * Update Polish translation * fix johnny-bit suggestion Thx --- localization/i18n/pl/OrcaSlicer_pl.po | 108 ++++++++++++++------------ 1 file changed, 59 insertions(+), 49 deletions(-) diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 34c2a6bc8d..41b75b0150 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -346,7 +346,7 @@ msgid "Groove Angle" msgstr "Kąt rowka" msgid "Part" -msgstr "Part" +msgstr "Wydruk" msgid "Object" msgstr "Obiekt" @@ -2433,7 +2433,7 @@ msgid "Load" msgstr "Ładuj" msgid "Unload" -msgstr "Wyładuj" +msgstr "Rozładuj" msgid "Ext Spool" msgstr "zew.szpula" @@ -2498,8 +2498,8 @@ msgid "" "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " "load or unload filaments." msgstr "" -"Wybierz gniazdo AMS, a następnie naciśnij przycisk \"Ładuj\" lub \"Wyładuj" -"\" ,aby automatycznie załadować lub wyładować filamenty." +"Wybierz gniazdo AMS, a następnie naciśnij przycisk \"Ładuj\" lub " +"\"Rozładuj\" ,aby automatycznie załadować lub wyładować filamenty." msgid "Edit" msgstr "Edytuj" @@ -2840,7 +2840,8 @@ msgid "SN" msgstr "Numer seryjny" msgid "Setting AMS slot information while printing is not supported" -msgstr "Ustawianie informacji o slocie AMS podczas druku nie jest obsługiwane" +msgstr "" +"Ustawianie informacji o gnieździe AMS podczas druku nie jest obsługiwane" msgid "Factors of Flow Dynamics Calibration" msgstr "współczynnik kalibracji dynamiki przepływu" @@ -2975,7 +2976,7 @@ msgid "Disable AMS" msgstr "Wyłącz AMS" msgid "Print with the filament mounted on the back of chassis" -msgstr "Drukuj z filamentem zamontowanym na tylnej części obudowy" +msgstr "Drukukowanie filamentem zamontowanym na tylnej części obudowy" msgid "Current Cabin humidity" msgstr "Aktualna wilgotność w komorze" @@ -3760,8 +3761,8 @@ msgid "" "layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" "Tryb Wazy działa tylko wtedy gdy liczba pętli ściany wynosi 1, wyłączone są " -"podpory, ilość warstw górnej powłoki wynosi 0, gęstość wypełnienia wynosi 0, " -"a tryb Timelaps ustawiony jest na Tradycyjny." +"podpory, liczba warstw górnej powłoki wynosi 0, gęstość wypełnienia wynosi " +"0, a tryb Timelaps ustawiony jest na Tradycyjny." msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Jednak maszyny z budową I3 nie będą generować filmów timelapse." @@ -5397,7 +5398,7 @@ msgid "Aux" msgstr "Aux" msgid "Cham" -msgstr "Cham" +msgstr "Komora" msgid "Bed" msgstr "Stół" @@ -5439,7 +5440,7 @@ msgid "" "Please heat the nozzle to above 170 degree before loading or unloading " "filament." msgstr "" -"Przed załadowaniem lub wyładunkiem filamentu, podgrzej dyszę do temperatury " +"Przed załadowaniem lub rozładunkiem filamentu, podgrzej dyszę do temperatury " "powyżej 170 stopni." msgid "Still unload" @@ -6088,9 +6089,7 @@ msgid "Please correct them in the param tabs" msgstr "Proszę poprawić je na kartach parametrów" msgid "The 3mf has following modified G-codes in filament or printer presets:" -msgstr "" -"Plik 3MF ma następujące zmodyfikowane G-code w profilach filamentu lub " -"drukarki:" +msgstr "Plik 3MF ma zmodyfikowane G-code w profilach filamentu lub drukarki:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6103,13 +6102,13 @@ msgid "Modified G-codes" msgstr "Zmodyfikowane G-codes" msgid "The 3mf has following customized filament or printer presets:" -msgstr "Plik 3MF ma następujące dostosowane profile filamentu lub drukarki:" +msgstr "Plik 3MF ma już dostosowane profile filamentu lub drukarki:" msgid "" "Please confirm that the G-codes within these presets are safe to prevent any " "damage to the machine!" msgstr "" -"Proszę potwierdzić, że G-code w tych profilach są bezpieczne, aby zapobiec " +"Proszę potwierdź, że G-code w tych profilach jest bezpieczny, aby zapobiec " "ewentualnym uszkodzeniom maszyny!" msgid "Customized Preset" @@ -7681,8 +7680,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Podczas nagrywania timelapse'a bez głowicy drukującej zaleca się dodanie " "\"Timelaps - Wieża Czyszcząca\" \n" @@ -9537,10 +9536,10 @@ msgid "" "the next layers will be linearly shrunk less, up to the layer indicated by " "this value." msgstr "" -"Ilość warstw, na które będzie rozciągać się kompensacja \"stopy słonia\". " +"Liczba warstw, na które będzie rozciągać się kompensacja \"stopy słonia\". " "Pierwsza warstwa zostanie zmniejszona o wartość kompensacji 'stopy słonia', " -"a następne warstwy będą liniowo zmniejszane mniej, aż do warstwy wskazanej " -"przez tę wartość." +"a następne warstwy będą zmniejszane liniowo, aż do warstwy wskazanej przez " +"tę wartość." msgid "layers" msgstr "warstwy" @@ -9676,10 +9675,10 @@ msgid "" msgstr "" "Unikaj ruchów nad obrysami-\n" "Maksymalna długość objazdu przy unikaniu przejeżdżania nad obrysami. Jeśli " -"objazd miałby wykroczyć poza tę wartość, funkcja \"unikaj ruchów nad obrysami" -"\" zostanie zignorowana dla tej ścieżki. Długość objazdu można zdefiniować " -"jako wartość absolutna lub obliczona procentowo (np. 50%) z długości ruchu " -"bezpośredniego." +"objazd miałby wykroczyć poza tę wartość, funkcja \"unikaj ruchów nad " +"obrysami\" zostanie zignorowana dla tej ścieżki. Długość objazdu można " +"zdefiniować jako wartość absolutna lub obliczona procentowo (np. 50%) z " +"długości ruchu bezpośredniego." msgid "mm or %" msgstr "mm lub %" @@ -9768,7 +9767,7 @@ msgid "Other layers print sequence" msgstr "Inna kolejność druku warstw" msgid "The number of other layers print sequence" -msgstr "Ilość warstw ze zmienioną kolejnością drukowania" +msgstr "Liczba warstw ze zmienioną kolejnością drukowania" msgid "Other layers filament sequence" msgstr "Kolejność filamenu dla pozostałych warstw" @@ -9806,7 +9805,7 @@ msgstr "" "jest mniejsza niż ta wartość. Dzięki temu można uniknąć zbyt cienkiej " "powłoki, gdy wysokość warstwy jest niska. Wartość 0 oznacza wyłączenie tego " "ustawienia, a grubość dolnej powłoki jest wówczas wyznaczana wyłącznie przez " -"ilość warstw dolnej powłoki" +"liczbę warstw dolnej powłoki" msgid "Apply gap fill" msgstr "Zastosuj wypełnienie szczelin" @@ -11424,7 +11423,7 @@ msgid "Travel speed of initial layer" msgstr "Prędkość jałowa dla pierwszej warstwy" msgid "Number of slow layers" -msgstr "Ilość warstw o niższej prędkości" +msgstr "Liczba warstw o niższej prędkości" msgid "" "The first few layers are printed slower than normal. The speed is gradually " @@ -11445,10 +11444,10 @@ msgstr "Pełna prędkość wentylatora na warstwie" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Prędkość wentylatora będzie stopniowo zwiększana liniowo od zera na warstwie " "\"close_fan_the_first_x_layers\" do maksymalnej na warstwie " @@ -11863,52 +11862,63 @@ msgstr "Głębokość zazębiania się podzielonego na segmenty obszaru" msgid "Interlocking depth of a segmented region. Zero disables this feature." msgstr "" -"Głębokość blokowania obszaru segmentowego. Wartość zero wyłącza tę funkcję." +"Głębokość zazębiania się podzielonego na segmenty regionu. Wartość zero " +"wyłącza tę funkcję." msgid "Use beam interlocking" -msgstr "" +msgstr "Użyj struktury zazębiającej" msgid "" "Generate interlocking beam structure at the locations where different " "filaments touch. This improves the adhesion between filaments, especially " "models printed in different materials." msgstr "" +"Wygeneruj strukturę zazębiającą się w miejscach, gdzie stykają się różne " +"filamenty. Poprawia to przyczepność między filamentami, szczególnie w " +"modelach drukowanych z różnych materiałów." msgid "Interlocking beam width" -msgstr "" +msgstr "Szerokość zazębiania" msgid "The width of the interlocking structure beams." -msgstr "" +msgstr "Określa szerokość struktury zazębiającej" msgid "Interlocking direction" -msgstr "" +msgstr "Kierunek zazębiania" msgid "Orientation of interlock beams." -msgstr "" +msgstr "Orientacja struktury zatrzaskowej" msgid "Interlocking beam layers" -msgstr "" +msgstr "Liczba warstw zazębienia" msgid "" "The height of the beams of the interlocking structure, measured in number of " "layers. Less layers is stronger, but more prone to defects." msgstr "" +"Wysokość struktury zazębiającej wyrażona w liczbie warstw. Mniejsza liczba " +"warstw oznacza większą wytrzymałość, ale większą podatność na wady." msgid "Interlocking depth" -msgstr "" +msgstr "Głębokość zazębiania" msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" +"Odległość od granicy między filamentami potrzebna do generowania struktur " +"zazębiających, mierzona w komórkach. Zbyt mało komórek skutkuje słabą " +"adhezją." msgid "Interlocking boundary avoidance" -msgstr "" +msgstr "Odległość zapobiegająca zazębieniu" msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" +"Odległość od zewnętrznej strony modelu, gdzie struktury zazębiające nie będą " +"generowane, mierzona w komórkach." msgid "Ironing Type" msgstr "Rodzaj prasowania" @@ -13212,10 +13222,10 @@ msgid "" "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Szpary mniejsze niż dwukrotność wartości parametru \"promień zamykania szpar" -"\" zostaną zamknięte przy cięciu. Operacja zamykania szpar może zmniejszyć " -"finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej wartości na " -"rozsądnie niskim poziomie." +"Szpary mniejsze niż dwukrotność wartości parametru \"promień zamykania " +"szpar\" zostaną zamknięte przy cięciu. Operacja zamykania szpar może " +"zmniejszyć finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej " +"wartości na rozsądnie niskim poziomie." msgid "Slicing Mode" msgstr "Tryb cięcia" @@ -14365,7 +14375,7 @@ msgid "Total layer count" msgstr "Całkowita liczba warstw" msgid "Number of layers in the entire print." -msgstr "Ilość warstw w całym procesie drukowania" +msgstr "Liczba warstw w całym procesie drukowania" msgid "Number of objects" msgstr "Liczba obiektów" @@ -15601,8 +15611,8 @@ msgstr "" "Czy chcesz go zastąpić?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Nazwa profilu zostanie zmieniona na \"Dostawca Typ Seria @nazwa drukarki, " @@ -18213,8 +18223,8 @@ msgstr "" #~ "Elevation is too low for object. Use the \"Pad around object\" feature to " #~ "print the object without elevation." #~ msgstr "" -#~ "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół modelu" -#~ "\", aby wydrukować model bez podniesienia." +#~ "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół " +#~ "modelu\", aby wydrukować model bez podniesienia." #~ msgid "" #~ "The endings of the support pillars will be deployed on the gap between " From d58289c3c4c735dad8c141fa89288f145b3588da Mon Sep 17 00:00:00 2001 From: Azi Date: Thu, 25 Jul 2024 07:38:05 -0700 Subject: [PATCH 057/151] Fixing high GPU usage when color scheme is set to "Filament" or "Speed" (#6223) removed imgui.set_requires_extra_frame(), this line causes Slic3r::GUI::GLCanvas3D::render() to be called repeatedly when 'Filament' or 'Speed' is selected for preview panel --- src/slic3r/GUI/GCodeViewer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index e2a4f00a56..0d649b9a6a 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -4547,7 +4547,6 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv const auto preferred_offset = ImGui::GetWindowWidth() - ImGui::CalcTextSize(_u8L("Display").c_str()).x - ImGui::GetFrameHeight() / 2 - 2 * window_padding - ImGui::GetStyle().ScrollbarSize; if (preferred_offset > offsets.back()) { offsets.back() = preferred_offset; - imgui.set_requires_extra_frame(); } } From a46a05b538de1e9412216a584f97c9227b0258a5 Mon Sep 17 00:00:00 2001 From: Duan Gauche Date: Thu, 25 Jul 2024 16:40:17 +0200 Subject: [PATCH 058/151] Added Styrene Butadiene Styrene (SBS) to filament_types (#6217) Co-authored-by: Duan Gauche --- src/slic3r/GUI/CreatePresetsDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 22ddd98e4b..e02509c2a7 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -62,7 +62,7 @@ static const std::vector filament_vendors = static const std::vector filament_types = {"PLA", "rPLA", "PLA+", "PLA Tough", "PETG", "ABS", "ASA", "FLEX", "HIPS", "PA", "PACF", "NYLON", "PVA", "PVB", "PC", "PCABS", "PCTG", "PCCF", "PHA", "PP", "PEI", "PET", "PETG", "PETGCF", "PTBA", "PTBA90A", "PEEK", "TPU93A", "TPU75D", "TPU", "TPU92A", "TPU98A", "Misc", - "TPE", "GLAZE", "Nylon", "CPE", "METAL", "ABST", "Carbon Fiber"}; + "TPE", "GLAZE", "Nylon", "CPE", "METAL", "ABST", "Carbon Fiber", "SBS"}; static const std::vector printer_vendors = {"Anker", "Anycubic", "Artillery", "Bambulab", "BIQU", From 5739f960681128c4efb298c7f565c0c648faab85 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Sat, 27 Jul 2024 07:27:58 +0300 Subject: [PATCH 059/151] Use one loop for draft shield (#5786) --- src/libslic3r/GCode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index cdeaa1f159..f81a1c9438 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4064,7 +4064,7 @@ LayerResult GCode::process_layer( m_avoid_crossing_perimeters.use_external_mp(); Flow layer_skirt_flow = print.skirt_flow().with_height(float(m_skirt_done.back() - (m_skirt_done.size() == 1 ? 0. : m_skirt_done[m_skirt_done.size() - 2]))); double mm3_per_mm = layer_skirt_flow.mm3_per_mm(); - for (size_t i = loops.first; i < loops.second; ++i) { + for (size_t i = (layer.id() == 0) ? loops.first : loops.second - 1; i < loops.second; ++i) { // Adjust flow according to this layer's layer height. ExtrusionLoop loop = *dynamic_cast(print.skirt().entities[i]); for (ExtrusionPath &path : loop.paths) { From 39f8236af982cf02ed150a93c251c6ea93c455e3 Mon Sep 17 00:00:00 2001 From: legonigel Date: Sat, 27 Jul 2024 13:58:33 -0700 Subject: [PATCH 060/151] Update bambulab profiles to 01.09.00.18 Copied files from BambuStudio after downloading updated profiles. --- resources/profiles/BBL.json | 54 ++++++++++++- .../Bambu PETG HF @BBL A1 0.2 nozzle.json | 35 ++++++++ .../Bambu PETG HF @BBL A1 0.8 nozzle.json | 36 +++++++++ .../BBL/filament/Bambu PETG HF @BBL A1.json | 35 ++++++++ .../Bambu PETG HF @BBL A1M 0.2 nozzle.json | 35 ++++++++ .../Bambu PETG HF @BBL A1M 0.8 nozzle.json | 36 +++++++++ .../BBL/filament/Bambu PETG HF @BBL A1M.json | 35 ++++++++ .../Bambu PETG HF @BBL X1C 0.2 nozzle.json | 33 ++++++++ .../Bambu PETG HF @BBL X1C 0.8 nozzle.json | 35 ++++++++ .../BBL/filament/Bambu PETG HF @BBL X1C.json | 30 +++++++ .../BBL/filament/Bambu PETG HF @base.json | 80 +++++++++++++++++++ .../Bambu Support for ABS @BBL A1.json | 13 +++ .../Bambu Support for ABS @BBL X1C.json | 25 ++++++ .../filament/Bambu Support for ABS @base.json | 35 ++++++++ .../BBL/filament/Generic PPA-CF @BBL X1C.json | 10 ++- .../BBL/filament/Generic PPA-CF @BBL X1E.json | 10 ++- .../BBL/filament/fdm_filament_abs.json | 2 +- .../BBL/filament/fdm_filament_asa.json | 2 +- .../BBL/machine/Bambu Lab A1 0.4 nozzle.json | 2 +- .../BBL/machine/Bambu Lab A1 mini.json | 4 +- .../profiles/BBL/machine/Bambu Lab A1.json | 4 +- .../profiles/BBL/machine/Bambu Lab P1P.json | 4 +- .../profiles/BBL/machine/Bambu Lab P1S.json | 4 +- .../BBL/machine/Bambu Lab X1 Carbon.json | 4 +- .../profiles/BBL/machine/Bambu Lab X1.json | 4 +- .../profiles/BBL/machine/Bambu Lab X1E.json | 4 +- .../BBL/machine/fdm_machine_common.json | 4 +- ....06mm High Quality @BBL A1 0.2 nozzle.json | 2 +- ...06mm High Quality @BBL A1M 0.2 nozzle.json | 2 +- ...06mm High Quality @BBL P1P 0.2 nozzle.json | 2 +- ...06mm High Quality @BBL X1C 0.2 nozzle.json | 2 +- ....08mm High Quality @BBL A1 0.2 nozzle.json | 2 +- .../process/0.08mm High Quality @BBL A1.json | 2 +- ...08mm High Quality @BBL A1M 0.2 nozzle.json | 2 +- .../process/0.08mm High Quality @BBL A1M.json | 2 +- ...08mm High Quality @BBL P1P 0.2 nozzle.json | 2 +- .../process/0.08mm High Quality @BBL P1P.json | 2 +- ...08mm High Quality @BBL X1C 0.2 nozzle.json | 2 +- .../process/0.08mm High Quality @BBL X1C.json | 2 +- ....10mm High Quality @BBL A1 0.2 nozzle.json | 2 +- ...10mm High Quality @BBL A1M 0.2 nozzle.json | 2 +- ...10mm High Quality @BBL P1P 0.2 nozzle.json | 2 +- ...10mm High Quality @BBL X1C 0.2 nozzle.json | 2 +- .../process/0.12mm High Quality @BBL A1.json | 2 +- .../process/0.12mm High Quality @BBL A1M.json | 2 +- .../process/0.12mm High Quality @BBL P1P.json | 2 +- .../process/0.12mm High Quality @BBL X1C.json | 2 +- .../process/0.16mm High Quality @BBL A1.json | 2 +- .../process/0.16mm High Quality @BBL A1M.json | 2 +- .../process/0.16mm High Quality @BBL P1P.json | 2 +- .../process/0.16mm High Quality @BBL X1C.json | 2 +- .../BBL/process/fdm_process_common.json | 2 +- 52 files changed, 575 insertions(+), 50 deletions(-) create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.8 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL A1.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG HF @base.json create mode 100644 resources/profiles/BBL/filament/Bambu Support for ABS @BBL A1.json create mode 100644 resources/profiles/BBL/filament/Bambu Support for ABS @BBL X1C.json create mode 100644 resources/profiles/BBL/filament/Bambu Support for ABS @base.json diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 775288cbd3..3cd51ed347 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.09.00.14", + "version": "01.09.00.18", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ @@ -821,6 +821,10 @@ "name": "Generic PCTG @base", "sub_path": "filament/Generic PCTG @base.json" }, + { + "name": "Bambu PETG HF @base", + "sub_path": "filament/Bambu PETG HF @base.json" + }, { "name": "Bambu ABS @base", "sub_path": "filament/Bambu ABS @base.json" @@ -837,6 +841,10 @@ "name": "Bambu ABS-GF @base", "sub_path": "filament/Bambu ABS-GF @base.json" }, + { + "name": "Bambu Support for ABS @base", + "sub_path": "filament/Bambu Support for ABS @base.json" + }, { "name": "Bambu PC @base", "sub_path": "filament/Bambu PC @base.json" @@ -1869,6 +1877,42 @@ "name": "Bambu PETG Translucent @BBL A1", "sub_path": "filament/Bambu PETG Translucent @BBL A1.json" }, + { + "name": "Bambu PETG HF @BBL X1C", + "sub_path": "filament/Bambu PETG HF @BBL X1C.json" + }, + { + "name": "Bambu PETG HF @BBL X1C 0.2 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL A1", + "sub_path": "filament/Bambu PETG HF @BBL A1.json" + }, + { + "name": "Bambu PETG HF @BBL A1 0.2 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL A1 0.2 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL A1 0.8 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL A1 0.8 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL A1M", + "sub_path": "filament/Bambu PETG HF @BBL A1M.json" + }, + { + "name": "Bambu PETG HF @BBL A1M 0.2 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL A1M 0.8 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json" + }, { "name": "Generic PCTG @BBL X1C", "sub_path": "filament/Generic PCTG @BBL X1C.json" @@ -1961,6 +2005,14 @@ "name": "Bambu ABS-GF @BBL A1", "sub_path": "filament/Bambu ABS-GF @BBL A1.json" }, + { + "name": "Bambu Support for ABS @BBL X1C", + "sub_path": "filament/Bambu Support for ABS @BBL X1C.json" + }, + { + "name": "Bambu Support for ABS @BBL A1", + "sub_path": "filament/Bambu Support for ABS @BBL A1.json" + }, { "name": "Bambu PC @BBL X1C", "sub_path": "filament/Bambu PC @BBL X1C.json" diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.2 nozzle.json new file mode 100644 index 0000000000..7335bcaffe --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.2 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL A1 0.2 nozzle", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_04", + "instantiation": "true", + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "1" + ], + "nozzle_temperature": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + "Bambu Lab A1 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.8 nozzle.json new file mode 100644 index 0000000000..a4db6b85bd --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.8 nozzle.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL A1 0.8 nozzle", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_05", + "instantiation": "true", + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "nozzle_temperature": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + "Bambu Lab A1 0.6 nozzle", + "Bambu Lab A1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1.json new file mode 100644 index 0000000000..2a9f8a264c --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL A1", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "nozzle_temperature": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..17106138f6 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL A1M 0.2 nozzle", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_07", + "instantiation": "true", + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "1" + ], + "nozzle_temperature": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json new file mode 100644 index 0000000000..2d3ea73731 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL A1M 0.8 nozzle", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_08", + "instantiation": "true", + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "nozzle_temperature": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M.json new file mode 100644 index 0000000000..f6d16e8d47 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL A1M", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_06", + "instantiation": "true", + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "nozzle_temperature": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json new file mode 100644 index 0000000000..b0d8d37374 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json @@ -0,0 +1,33 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL X1C 0.2 nozzle", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_01", + "instantiation": "true", + "fan_cooling_layer_time": [ + "20" + ], + "fan_min_speed": [ + "20" + ], + "filament_max_volumetric_speed": [ + "1" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle", + "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle", + "Bambu Lab X1 Carbon 0.2 nozzle", + "Bambu Lab X1E 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json new file mode 100644 index 0000000000..44193c3c43 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL X1C 0.8 nozzle", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "20" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C.json new file mode 100644 index 0000000000..c02f8e2609 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C.json @@ -0,0 +1,30 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @BBL X1C", + "inherits": "Bambu PETG HF @base", + "from": "system", + "setting_id": "GFSG02_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "20" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @base.json b/resources/profiles/BBL/filament/Bambu PETG HF @base.json new file mode 100644 index 0000000000..ebc2159925 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG HF @base.json @@ -0,0 +1,80 @@ +{ + "type": "filament", + "name": "Bambu PETG HF @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFG02", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "24.99" + ], + "filament_density": [ + "1.28" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "245" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support for ABS @BBL A1.json b/resources/profiles/BBL/filament/Bambu Support for ABS @BBL A1.json new file mode 100644 index 0000000000..f084186496 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support for ABS @BBL A1.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Bambu Support for ABS @BBL A1", + "inherits": "Bambu Support for ABS @base", + "from": "system", + "setting_id": "GFSS06_01", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle", + "Bambu Lab A1 0.6 nozzle", + "Bambu Lab A1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support for ABS @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support for ABS @BBL X1C.json new file mode 100644 index 0000000000..5029095bca --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support for ABS @BBL X1C.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Bambu Support for ABS @BBL X1C", + "inherits": "Bambu Support for ABS @base", + "from": "system", + "setting_id": "GFSS06_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1E 0.4 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support for ABS @base.json b/resources/profiles/BBL/filament/Bambu Support for ABS @base.json new file mode 100644 index 0000000000..506ffa39ac --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support for ABS @base.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Bambu Support for ABS @base", + "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "GFS06", + "instantiation": "false", + "fan_max_speed": [ + "30" + ], + "filament_cost": [ + "29.98" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "90" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1C.json b/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1C.json index 2df7f15255..ca1d8fc926 100644 --- a/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1C.json @@ -5,8 +5,14 @@ "from": "system", "setting_id": "GFSN97_00", "instantiation": "true", - "filament_type": [ - "PPA-CF" + "fan_max_speed": [ + "35" + ], + "filament_max_volumetric_speed": [ + "6.5" + ], + "overhang_fan_threshold": [ + "25%" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1E.json b/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1E.json index b032627561..7e1c4d8f63 100644 --- a/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1E.json +++ b/resources/profiles/BBL/filament/Generic PPA-CF @BBL X1E.json @@ -8,8 +8,14 @@ "chamber_temperatures": [ "60" ], - "filament_type": [ - "PPA-CF" + "fan_max_speed": [ + "35" + ], + "filament_max_volumetric_speed": [ + "6.5" + ], + "overhang_fan_threshold": [ + "25%" ], "compatible_printers": [ "Bambu Lab X1E 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/fdm_filament_abs.json b/resources/profiles/BBL/filament/fdm_filament_abs.json index 74eb871518..461dd5e610 100644 --- a/resources/profiles/BBL/filament/fdm_filament_abs.json +++ b/resources/profiles/BBL/filament/fdm_filament_abs.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "activate_air_filtration": [ - "0" + "1" ], "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/fdm_filament_asa.json b/resources/profiles/BBL/filament/fdm_filament_asa.json index a0da767a75..ac7a9294c1 100644 --- a/resources/profiles/BBL/filament/fdm_filament_asa.json +++ b/resources/profiles/BBL/filament/fdm_filament_asa.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "activate_air_filtration": [ - "0" + "1" ], "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json index 86fcc31826..a9da758709 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json @@ -61,7 +61,7 @@ "255" ], "scan_first_layer": "0", - "machine_start_gcode": ";===== machine: A1 =========================\n;===== date: 20240606 =====================\nG392 S0\nM9833.2\n;M400\n;M73 P1.717\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\n\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A43 B10 L100 C46 D10 M70 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C43 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C41 D10 M80 E41 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E44 F10 N80\nM1006 A0 B10 L100 C49 D10 M80 E49 F10 N80\nM1006 A0 B10 L100 C0 D10 M80 E0 F10 N80\nM1006 A44 B10 L100 C48 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A43 B10 L100 C46 D10 M60 E39 F10 N80\nM1006 W\nM18 \n;=====start printer sound ===================\n\n;=====avoid end stop =================\nG91\nG380 S2 Z40 F1200\nG380 S3 Z-15 F1200\nG90\n\n;===== reset machine status =================\n;M290 X39 Y39 Z8\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.65 Y1.2 Z0.6 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;M211 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\nM1002 gcode_claim_action : 13\n\nG28 X\nG91\nG1 Z5 F1200\nG90\nG0 X128 F30000\nG0 Y254 F3000\nG91\nG1 Z-5 F1200\n\nM109 S25 H140\n\nM17 E0.3\nM83\nG1 E10 F1200\nG1 E-0.5 F30\nM17 D\n\nG28 Z P0 T140; home z with low precision,permit 300deg temperature\nM104 S{nozzle_temperature_initial_layer[initial_extruder]}\n\nM1002 judge_flag build_plate_detect_flag\nM622 S1\n G39.4\n G90\n G1 Z5 F1200\nM623\n\n;M400\n;M73 P1.717\n\n;===== prepare print temperature and material ==========\nM1002 gcode_claim_action : 24\n\nM400\n;G392 S1\nM211 X0 Y0 Z0 ;turn off soft endstop\nM975 S1 ; turn on\n\nG90\nG1 X-28.5 F30000\nG1 X-48.2 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-48.2 F3000\n M400\n\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM621 S[initial_no_support_extruder]A\n\nM109 S{nozzle_temperature_range_high[initial_no_support_extruder]} H300\nG92 E0\nG1 E50 F200 ; lower extrusion speed to avoid clog\nM400\nM106 P1 S178\nG92 E0\nG1 E5 F200\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG92 E0\nG1 E-0.5 F300\n\nG1 X-28.5 F30000\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\n\n;G392 S0\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n;M400\n;M73 P1.717\n\n;===== auto extrude cali start =========================\nM975 S1\n;G392 S1\n\nG90\nM83\nT1000\nG1 X-48.2 Y0 Z10 F10000\nM400\nM1002 set_filament_type:UNKNOWN\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\n\nM622 J1\n M1002 gcode_claim_action : 8\n\n M109 S{nozzle_temperature[initial_extruder]}\n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\n \n G1 X-48.2 F3000\n M400\n M984 A0.1 E1 S1 F{outer_wall_volumetric_speed/2.4}\n M106 P1 S178\n M400 S7\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0\nM623 ; end of \"draw extrinsic para cali paint\"\n\n;G392 S0\n;===== auto extrude cali end ========================\n\n;M400\n;M73 P1.717\n\nM104 S170 ; prepare to wipe nozzle\nM106 S255 ; turn on fan\n\n;===== mech mode fast check start =====================\nM1002 gcode_claim_action : 3\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q1 A5 K0 O3\nM974 Q1 S2 P0\n\nM970.2 Q1 K1 W58 Z0.11\nM974 S2\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q0 A10 K0 O1\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X0 Y5\nG28 X ; re-home XY\n\nG1 Z4 F1200\n\n;===== mech mode fast check end =======================\n\n;M400\n;M73 P1.717\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\n\nM975 S1\nM106 S255 ; turn on fan (G28 has turn off fan)\nM211 S; push soft endstop status\nM211 X0 Y0 Z0 ;turn off Z axis endstop\n\n;===== remove waste by touching start =====\n\nM104 S170 ; set temp down to heatbed acceptable\n\nM83\nG1 E-1 F500\nG90\nM83\n\nM109 S170\nG0 X108 Y-0.5 F30000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X110 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X112 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X114 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X116 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X118 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X120 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X122 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X124 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X126 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X128 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X130 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X132 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X134 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X136 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X138 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X140 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X142 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X144 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X146 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X148 F10000\nG380 S3 Z-5 F1200\n\nG1 Z5 F30000\n;===== remove waste by touching end =====\n\nG1 Z10 F1200\nG0 X118 Y261 F30000\nG1 Z5 F1200\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-50}\n\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nM104 S140 ; prepare to abl\nG0 Z5 F20000\n\nG0 X128 Y261 F20000 ; move to exposed steel surface\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z10 F1200\n\n;===== brush material wipe nozzle =====\n\nG90\nG1 Y250 F30000\nG1 X55\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X-35 F30000\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Z5.000 F1200\n\nG90\nG1 X30 Y250.000 F30000\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X35 F30000\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Z10.000 F1200\n\n;===== brush material wipe nozzle end =====\n\nG90\n;G0 X128 Y261 F20000 ; move to exposed steel surface\nG1 Y250 F30000\nG1 X138\nG1 Y261\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nM109 S140\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM211 R; pop softend status\n\n;===== wipe nozzle end ================================\n\n;M400\n;M73 P1.717\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\n\nG90\nG1 Z5 F1200\nG1 X0 Y0 F30000\nG29.2 S1 ; turn on ABL\n\nM190 S[bed_temperature_initial_layer_single]; ensure bed temp\nM109 S140\nM106 S0 ; turn off fan , too noisy\n\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A1 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n\n;===== home after wipe mouth end =======================\n\n;M400\n;M73 P1.717\n\nG1 X108.000 Y-0.5 F30000\nG1 Z0.300 F1200\nM400\nG2814 Z0.32\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; prepare to print\n\n;===== nozzle load line ===============================\n;G90\n;M83\n;G1 Z5 F1200\n;G1 X88 Y1.0 F20000\n;G1 Z0.3 F1200\n\n;M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n\n;G1 E2 F300\n;G1 X168 E4.989 F6000\n;G1 Z1 F1200\n;===== nozzle load line end ===========================\n\n;===== extrude cali test ===============================\n\nM400\n M900 S\n M900 C\n G90\n M83\n\n M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n G0 X128 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G91\n G1 X1 Z-0.300\n G1 X4\n G1 Z1 F1200\n G90\n M83\n M400\n\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M900 R\n G90\n G1 X108.000 Y1.0 F30000\n G91\n G1 Z-0.700 F1200\n G90\n M83\n G0 X128 E4 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G91\n G1 X1 Z-0.300\n G1 X4\n G1 Z1 F1200\n G90\n M400\nM623\n\nG1 Z0.2\n\n;M400\n;M73 P1.717\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\n;G392 S1 ; turn on clog detection\nM1007 S1 ; turn on mass estimation\nG29.4\n", + "machine_start_gcode": ";===== machine: A1 =========================\n;===== date: 20240620 =====================\nG392 S0\nM9833.2\n;M400\n;M73 P1.717\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\n\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A43 B10 L100 C46 D10 M70 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C43 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C41 D10 M80 E41 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E44 F10 N80\nM1006 A0 B10 L100 C49 D10 M80 E49 F10 N80\nM1006 A0 B10 L100 C0 D10 M80 E0 F10 N80\nM1006 A44 B10 L100 C48 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A43 B10 L100 C46 D10 M60 E39 F10 N80\nM1006 W\nM18 \n;=====start printer sound ===================\n\n;=====avoid end stop =================\nG91\nG380 S2 Z40 F1200\nG380 S3 Z-15 F1200\nG90\n\n;===== reset machine status =================\n;M290 X39 Y39 Z8\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.65 Y1.2 Z0.6 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;M211 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\nM1002 gcode_claim_action : 13\n\nG28 X\nG91\nG1 Z5 F1200\nG90\nG0 X128 F30000\nG0 Y254 F3000\nG91\nG1 Z-5 F1200\n\nM109 S25 H140\n\nM17 E0.3\nM83\nG1 E10 F1200\nG1 E-0.5 F30\nM17 D\n\nG28 Z P0 T140; home z with low precision,permit 300deg temperature\nM104 S{nozzle_temperature_initial_layer[initial_extruder]}\n\nM1002 judge_flag build_plate_detect_flag\nM622 S1\n G39.4\n G90\n G1 Z5 F1200\nM623\n\n;M400\n;M73 P1.717\n\n;===== prepare print temperature and material ==========\nM1002 gcode_claim_action : 24\n\nM400\n;G392 S1\nM211 X0 Y0 Z0 ;turn off soft endstop\nM975 S1 ; turn on\n\nG90\nG1 X-28.5 F30000\nG1 X-48.2 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-48.2 F3000\n M400\n\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM621 S[initial_no_support_extruder]A\n\nM109 S{nozzle_temperature_range_high[initial_no_support_extruder]} H300\nG92 E0\nG1 E50 F200 ; lower extrusion speed to avoid clog\nM400\nM106 P1 S178\nG92 E0\nG1 E5 F200\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG92 E0\nG1 E-0.5 F300\n\nG1 X-28.5 F30000\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\n\n;G392 S0\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n;M400\n;M73 P1.717\n\n;===== auto extrude cali start =========================\nM975 S1\n;G392 S1\n\nG90\nM83\nT1000\nG1 X-48.2 Y0 Z10 F10000\nM400\nM1002 set_filament_type:UNKNOWN\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\n\nM622 J1\n M1002 gcode_claim_action : 8\n\n M109 S{nozzle_temperature[initial_extruder]}\n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\n \n G1 X-48.2 F3000\n M400\n M984 A0.1 E1 S1 F{outer_wall_volumetric_speed/2.4} H[nozzle_diameter]\n M106 P1 S178\n M400 S7\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0\nM623 ; end of \"draw extrinsic para cali paint\"\n\n;G392 S0\n;===== auto extrude cali end ========================\n\n;M400\n;M73 P1.717\n\nM104 S170 ; prepare to wipe nozzle\nM106 S255 ; turn on fan\n\n;===== mech mode fast check start =====================\nM1002 gcode_claim_action : 3\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q1 A5 K0 O3\nM974 Q1 S2 P0\n\nM970.2 Q1 K1 W58 Z0.1\nM974 S2\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q0 A10 K0 O1\nM974 Q0 S2 P0\n\nM970.2 Q0 K1 W78 Z0.1\nM974 S2\n\nM975 S1\nG1 F30000\nG1 X0 Y5\nG28 X ; re-home XY\n\nG1 Z4 F1200\n\n;===== mech mode fast check end =======================\n\n;M400\n;M73 P1.717\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\n\nM975 S1\nM106 S255 ; turn on fan (G28 has turn off fan)\nM211 S; push soft endstop status\nM211 X0 Y0 Z0 ;turn off Z axis endstop\n\n;===== remove waste by touching start =====\n\nM104 S170 ; set temp down to heatbed acceptable\n\nM83\nG1 E-1 F500\nG90\nM83\n\nM109 S170\nG0 X108 Y-0.5 F30000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X110 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X112 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X114 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X116 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X118 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X120 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X122 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X124 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X126 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X128 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X130 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X132 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X134 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X136 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X138 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X140 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X142 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X144 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X146 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X148 F10000\nG380 S3 Z-5 F1200\n\nG1 Z5 F30000\n;===== remove waste by touching end =====\n\nG1 Z10 F1200\nG0 X118 Y261 F30000\nG1 Z5 F1200\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-50}\n\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nM104 S140 ; prepare to abl\nG0 Z5 F20000\n\nG0 X128 Y261 F20000 ; move to exposed steel surface\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z10 F1200\n\n;===== brush material wipe nozzle =====\n\nG90\nG1 Y250 F30000\nG1 X55\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X-35 F30000\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Z5.000 F1200\n\nG90\nG1 X30 Y250.000 F30000\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X35 F30000\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Z10.000 F1200\n\n;===== brush material wipe nozzle end =====\n\nG90\n;G0 X128 Y261 F20000 ; move to exposed steel surface\nG1 Y250 F30000\nG1 X138\nG1 Y261\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nM109 S140\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM211 R; pop softend status\n\n;===== wipe nozzle end ================================\n\n;M400\n;M73 P1.717\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\n\nG90\nG1 Z5 F1200\nG1 X0 Y0 F30000\nG29.2 S1 ; turn on ABL\n\nM190 S[bed_temperature_initial_layer_single]; ensure bed temp\nM109 S140\nM106 S0 ; turn off fan , too noisy\n\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A1 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n\n;===== home after wipe mouth end =======================\n\n;M400\n;M73 P1.717\n\nG1 X108.000 Y-0.500 F30000\nG1 Z0.300 F1200\nM400\nG2814 Z0.32\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; prepare to print\n\n;===== nozzle load line ===============================\n;G90\n;M83\n;G1 Z5 F1200\n;G1 X88 Y-0.5 F20000\n;G1 Z0.3 F1200\n\n;M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n\n;G1 E2 F300\n;G1 X168 E4.989 F6000\n;G1 Z1 F1200\n;===== nozzle load line end ===========================\n\n;===== extrude cali test ===============================\n\nM400\n M900 S\n M900 C\n G90\n M83\n\n M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n G0 X128 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G91\n G1 X1 Z-0.300\n G1 X4\n G1 Z1 F1200\n G90\n M400\n\nM900 R\n\nM1002 judge_flag extrude_cali_flag\nM622 J1\n G90\n G1 X108.000 Y1.000 F30000\n G91\n G1 Z-0.700 F1200\n G90\n M83\n G0 X128 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G91\n G1 X1 Z-0.300\n G1 X4\n G1 Z1 F1200\n G90\n M400\nM623\n\nG1 Z0.2\n\n;M400\n;M73 P1.717\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\n;G392 S1 ; turn on clog detection\nM1007 S1 ; turn on mass estimation\nG29.4\n", "machine_end_gcode": ";===== date: 20231229 =====================\nG392 S0 ;turn off nozzle clog detect\n\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\n{if !spiral_mode && print_sequence != \"by object\"}\nM1002 judge_flag timelapse_record_flag\nM622 J1\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM991 S0 P-1 ;end timelapse at safe pos\nM623\n{endif}\n\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\n;G1 X27 F15000 ; wipe\n\n; pull back filament to AMS\nM620 S255\nG1 X267 F15000\nT255\nG1 X-28.5 F18000\nG1 X-48.2 F3000\nG1 X-28.5 F18000\nG1 X-48.2 F3000\nM621 S255\n\nM104 S0 ; turn off hotend\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 256}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z256 F600\n G1 Z256\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X-48 Y180 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A44 B20 L100 C49 D20 M80 E41 F20 N80\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N80\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n;=====printer finish sound=========\n\n;M17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM400\nM18 X Y Z\n\n", "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", "time_lapse_gcode": ";===================== date: 20240606 =====================\n{if !spiral_mode && print_sequence != \"by object\"}\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-48.2 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nM623\n\nM622.1 S1\nM1002 judge_flag g39_3rd_layer_detect_flag\nM622 J1\n ; enable nozzle clog detect at 3rd layer\n {if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X261 Y250 F20000\n M400 P200\n G39 S1\n G0 Z2 F4000\n {endif}\n\n\n M622.1 S1\n M1002 judge_flag g39_detection_flag\n M622 J1\n {if !in_head_wrap_detect_zone}\n M622.1 S0\n M1002 judge_flag g39_mass_exceed_flag\n M622 J1\n {if layer_num > 2}\n G392 S0\n M400\n G90\n M83\n M204 S5000\n G0 Z{max_layer_z + 0.4} F4000\n G39.3 S1\n G0 Z{max_layer_z + 0.4} F4000\n G392 S0\n {endif}\n M623\n {endif}\n M623\nM623\n{endif}\n", diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json index 31896bebf5..26ba6994c7 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json @@ -2,12 +2,12 @@ "type": "machine_model", "name": "Bambu Lab A1 mini", "nozzle_diameter": "0.4;0.2;0.6;0.8", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", "bed_model": "bbl-3dp-A1M.stl", "bed_texture": "bbl-3dp-logo.svg", "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "N1", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "default_materials": "Bambu PLA Matte @BBL A1M;Bambu PLA Basic @BBL A1M;Bambu PLA Silk @BBL A1M;Bambu Support For PLA @BBL A1M;Bambu PETG Basic @BBL A1M 0.4 nozzle;Bambu TPU 95A @BBL A1M;Generic PLA @BBL A1M;Generic PLA High Speed @BBL A1M;Bambu PLA Metal @BBL A1M;Generic PETG @BBL A1M;Bambu PLA Marble @BBL A1M;Bambu PLA-CF @BBL A1M;Bambu PETG-CF @BBL A1M" + "default_materials": "Bambu PLA Matte @BBL A1M;Bambu PLA Basic @BBL A1M;Bambu PLA Silk @BBL A1M;Bambu Support For PLA @BBL A1M;Bambu TPU 95A @BBL A1M;Generic PLA @BBL A1M;Generic PLA High Speed @BBL A1M;Bambu PLA Metal @BBL A1M;Generic PETG @BBL A1M;Bambu PLA Marble @BBL A1M;Bambu PLA-CF @BBL A1M;Bambu PETG-CF @BBL A1M;Bambu PETG HF @BBL A1M" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1.json b/resources/profiles/BBL/machine/Bambu Lab A1.json index bd63f6ca8e..d818efa48b 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1.json @@ -2,12 +2,12 @@ "type": "machine_model", "name": "Bambu Lab A1", "nozzle_diameter": "0.4;0.2;0.6;0.8", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "N2S", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "default_materials": "Bambu PLA Matte @BBL A1;Bambu PLA Basic @BBL A1;Bambu PLA Silk @BBL A1;Bambu Support For PA/PET @BBL A1;Bambu ABS @BBL A1;Bambu PETG Basic @BBL A1;Bambu TPU 95A @BBL A1;Bambu PLA Tough @BBL A1;Generic PLA @BBL A1;Generic PLA High Speed @BBL A1;Generic PETG @BBL A1;Generic PVA @BBL A1" + "default_materials": "Bambu PLA Matte @BBL A1;Bambu PLA Basic @BBL A1;Bambu PLA Silk @BBL A1;Bambu Support For PA/PET @BBL A1;Bambu ABS @BBL A1;Bambu TPU 95A @BBL A1;Bambu PLA Tough @BBL A1;Generic PLA @BBL A1;Generic PLA High Speed @BBL A1;Generic PETG @BBL A1;Generic PVA @BBL A1;Bambu PETG HF @BBL A1" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P.json b/resources/profiles/BBL/machine/Bambu Lab P1P.json index 41036ba641..ec860165ee 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P.json @@ -2,12 +2,12 @@ "type": "machine_model", "name": "Bambu Lab P1P", "nozzle_diameter": "0.4;0.2;0.6;0.8", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C11", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "default_materials": "Bambu PLA Matte @BBL P1P;Bambu PLA Basic @BBL P1P;Bambu PLA-CF @BBL P1P;Bambu PETG Basic @BBL X1C;Bambu PETG-CF @BBL P1P;Bambu ABS @BBL P1P;Bambu PLA Silk @BBL P1P;Bambu PAHT-CF @BBL P1P;Bambu Support For PA/PET @BBL P1P;Bambu Support For PLA @BBL P1P;Generic PLA @BBL P1P;Generic PLA High Speed @BBL P1P;Generic PETG @BBL P1P" + "default_materials": "Bambu PLA Matte @BBL P1P;Bambu PLA Basic @BBL P1P;Bambu PLA-CF @BBL P1P;Bambu PETG-CF @BBL P1P;Bambu ABS @BBL P1P;Bambu PLA Silk @BBL P1P;Bambu PAHT-CF @BBL P1P;Bambu Support For PA/PET @BBL P1P;Bambu Support For PLA @BBL P1P;Generic PLA @BBL P1P;Generic PLA High Speed @BBL P1P;Generic PETG @BBL P1P;Bambu PETG HF @BBL X1C" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S.json b/resources/profiles/BBL/machine/Bambu Lab P1S.json index 8a9bb02cf2..f8bc9cfa71 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S.json @@ -2,12 +2,12 @@ "type": "machine_model", "name": "Bambu Lab P1S", "nozzle_diameter": "0.4;0.2;0.6;0.8", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C12", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG Basic @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PLA Silk @BBL X1C;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Generic PETG" + "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PLA Silk @BBL X1C;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Generic PETG;Bambu PETG HF @BBL X1C" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json index 3b36361af0..cf585efc06 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json @@ -2,12 +2,12 @@ "type": "machine_model", "name": "Bambu Lab X1 Carbon", "nozzle_diameter": "0.4;0.2;0.6;0.8", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1 Carbon.json", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "BL-P001", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1 Carbon.json", - "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG Basic @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu TPU 95A @BBL X1C;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C" + "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu TPU 95A @BBL X1C;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Bambu PETG HF @BBL X1C" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1.json b/resources/profiles/BBL/machine/Bambu Lab X1.json index d8e4794eab..8c498d3b23 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1.json @@ -2,12 +2,12 @@ "type": "machine_model", "name": "Bambu Lab X1", "nozzle_diameter": "0.4;0.2;0.6;0.8", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "BL-P002", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", - "default_materials": "Bambu PLA Matte @BBL X1;Bambu PLA Basic @BBL X1;Bambu PLA-CF @BBL X1C;Bambu PETG Basic @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PLA Silk @BBL X1;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Generic PETG" + "default_materials": "Bambu PLA Matte @BBL X1;Bambu PLA Basic @BBL X1;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PLA Silk @BBL X1;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Generic PETG;Bambu PETG HF @BBL X1C" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1E.json b/resources/profiles/BBL/machine/Bambu Lab X1E.json index 8687b5137f..12bbe848a5 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1E.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1E.json @@ -2,12 +2,12 @@ "type": "machine_model", "name": "Bambu Lab X1E", "nozzle_diameter": "0.4;0.2;0.6;0.8", + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1 Carbon.json", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C13", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1 Carbon.json", - "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG Basic @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1E;Bambu ASA @BBL X1E;Bambu PC @BBL X1E;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PPA-CF @BBL X1E;Generic PPS @BBL X1E;Generic PPS-CF @BBL X1E" + "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1E;Bambu ASA @BBL X1E;Bambu PC @BBL X1E;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PPA-CF @BBL X1E;Generic PPS @BBL X1E;Generic PPS-CF @BBL X1E;Bambu PETG HF @BBL X1C" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/fdm_machine_common.json b/resources/profiles/BBL/machine/fdm_machine_common.json index 59c372c15f..c9426f5c62 100644 --- a/resources/profiles/BBL/machine/fdm_machine_common.json +++ b/resources/profiles/BBL/machine/fdm_machine_common.json @@ -123,7 +123,5 @@ "upward_compatible_machine": [], "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end", - "change_filament_gcode": "", - "purge_in_prime_tower": "0", - "enable_filament_ramming": "0" + "change_filament_gcode": "" } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json index fe4a28ca20..19c218e4e3 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json @@ -12,7 +12,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json index 6faf0c5994..15f97d190e 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json @@ -11,7 +11,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 mini 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json index 5f501034b5..da1f6a89c3 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" ] diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json index 3b06a8db08..70e54ac6c2 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json index 6f6bcb9366..7745977387 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json @@ -12,7 +12,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json index 0e81a4944c..7d7f7be457 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "150", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "150", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json index 94e8922f4a..2d181eae1b 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json @@ -11,7 +11,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 mini 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json index 5726784144..71e2f43b7d 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "150", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "150", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json index a20f5b62b8..6424eae3c0 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" ] diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json index 09a573a2c3..f135573cf2 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "150", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "150", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json index ebdca7e8b7..5b04803ced 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json index 6772c21195..1c7a15e91b 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "150", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "150", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json index 330d2650a7..23393e37b9 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json @@ -12,7 +12,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json index 8d56afe4a1..cb96b785af 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json @@ -12,7 +12,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 mini 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json index eff310601d..f463a9e060 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" ] diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json index 9e065b37e6..60f8e2686b 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json index 6123087146..0a1a283141 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "180", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "180", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json index 8996567139..dbe1743fbc 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "180", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "180", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json index 4585e25672..1acd431c12 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "180", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "180", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json index 7c8599fc9a..f2e438994e 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "180", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "180", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json index 59cd4239de..5632bdbe26 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "200", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "200", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json index b81470853f..fe51c4740f 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "200", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "200", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json index aa06dca1de..a3cd2eb87c 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "200", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "200", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json index 316fca9956..e5f73eab5b 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "200", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "200", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/fdm_process_common.json b/resources/profiles/BBL/process/fdm_process_common.json index fd909fd1c7..921718b995 100644 --- a/resources/profiles/BBL/process/fdm_process_common.json +++ b/resources/profiles/BBL/process/fdm_process_common.json @@ -17,7 +17,7 @@ "line_width": "0.45", "infill_direction": "45", "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "grid", "initial_layer_line_width": "0.42", "initial_layer_print_height": "0.2", "initial_layer_speed": "20", From 080d06858d9b94bcbbaa88000ee59e1fc60a020c Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Sun, 28 Jul 2024 15:52:08 +0100 Subject: [PATCH 061/151] Enhancement: Adaptive Pressure advance (#5609) * Adaptive Pressure advance options setup * Dynamic PA - PCHIP interpolator code and tests * Integrate dynamic PA with slicing code - emit new PA values per speed change * Link adaptive PA to role change instead of speed change * Adaptive PA - Alpha 2 Reduce the frequency of requested PA changes by introducing a "state" variable. Implement user toggle for adapting PA for external walls for overhangs * Hide adaptive PA for overhangs * Convert Adaptive PA to use volumetric flow model and start preparing for converting to Gcode post processor * Converted Dynamic PA to a post processing filter. Reverted changes in GCode cpp and created tagging mechanism to allow filter to apply PA changes. * Removed adaptive PA for overhangs * Foundations for two dimensional adaptive PA based on acceleration and volumetric flow speed * Minor code cleanup and updating of tooltips * Renaming files for better clarity and generate classes documentation * Update src/libslic3r/PrintConfig.cpp Co-authored-by: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> * Update src/libslic3r/PrintConfig.cpp Co-authored-by: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> * Update src/libslic3r/PrintConfig.cpp Co-authored-by: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> * Introduce average mm3_mm over the length of a multipath for adaptive PA * Updates for multipath handling part 2 * Introduce average mm3_mm over the length of a multipath for adaptive PA * Trigger PA evaluation more frequently to catch edge cases where speed changes across islands of the same feature type. * Updates for multipath handling part 2 * Adaptive PA: Implement average flow estimation on loops * Code formatting * Fix adaptive PA not adapting for small disconnected external wall line segments. * Updated to take max print speed of upcoming feature to calculate new PA value. This is to resolve issue of incorrect PA value used when starting a new feature at an overhang. * Code clean up * Performance tuning * Further performance tuning by reducing use of regex commands in the nested loops and fix bug preventing gcode line output * Further performance tuning and tweaks to stop searching for max speed after the first travel move. * Reduce debug information * Updated debug info * Fix an issue on seams on specific models when wipe before external perimeter was enabled. Also cleanup documentation and add new to-do's * Prepare for adaptive PA for overhangs, fix wipe bug & clean up code and comments * Initial commit for adapting PA when extruding fully overhanging perimeters * Ignore wipe command when identifying current print speed * Option to evaluate adaptive PA on overhang regions in preparation for Klipper experimental option testing * Update to issue PA changes for varying flow conditions within the same feature * Fix bug where adaptive PA was enabled erroneously for role changes and ignoring user's preference. * Refactored some code * More refactoring * Some bug fixes and enabled comments only when verbose g-code is enabled * Introduced dedicated PA option for bridges * Code refactoring to optimise initialisation of PA processor (making it faster). Fix a bug where PA was not always set after a toolchange. Improve general error handling and robustness. * Updates to adaptive PA tooltips * Bridging PA check with Epsilon instead of 0. * Adaptive PA: addressing comments --------- Co-authored-by: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> --- src/libslic3r/CMakeLists.txt | 6 + src/libslic3r/GCode.cpp | 239 ++++++++++++++- src/libslic3r/GCode.hpp | 19 +- .../GCode/AdaptivePAInterpolator.cpp | 114 +++++++ .../GCode/AdaptivePAInterpolator.hpp | 54 ++++ src/libslic3r/GCode/AdaptivePAProcessor.cpp | 285 ++++++++++++++++++ src/libslic3r/GCode/AdaptivePAProcessor.hpp | 85 ++++++ src/libslic3r/GCode/GCodeProcessor.cpp | 6 +- src/libslic3r/GCode/GCodeProcessor.hpp | 1 + .../GCode/PchipInterpolatorHelper.cpp | 100 ++++++ .../GCode/PchipInterpolatorHelper.hpp | 76 +++++ src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 54 ++++ src/libslic3r/PrintConfig.hpp | 6 + src/slic3r/GUI/Tab.cpp | 35 ++- 15 files changed, 1067 insertions(+), 15 deletions(-) create mode 100644 src/libslic3r/GCode/AdaptivePAInterpolator.cpp create mode 100644 src/libslic3r/GCode/AdaptivePAInterpolator.hpp create mode 100644 src/libslic3r/GCode/AdaptivePAProcessor.cpp create mode 100644 src/libslic3r/GCode/AdaptivePAProcessor.hpp create mode 100644 src/libslic3r/GCode/PchipInterpolatorHelper.cpp create mode 100644 src/libslic3r/GCode/PchipInterpolatorHelper.hpp diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 9897bdfe63..52b38af4f8 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -156,6 +156,12 @@ set(lisbslic3r_sources GCode/RetractWhenCrossingPerimeters.hpp GCode/SmallAreaInfillFlowCompensator.cpp GCode/SmallAreaInfillFlowCompensator.hpp + GCode/PchipInterpolatorHelper.cpp + GCode/PchipInterpolatorHelper.hpp + GCode/AdaptivePAInterpolator.cpp + GCode/AdaptivePAInterpolator.hpp + GCode/AdaptivePAProcessor.cpp + GCode/AdaptivePAProcessor.hpp GCode/SpiralVase.cpp GCode/SpiralVase.hpp GCode/SeamPlacer.cpp diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index f81a1c9438..693fd36b25 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -668,6 +668,9 @@ static std::vector get_path_of_change_filament(const Print& print) // SoftFever: set new PA for new filament if (gcodegen.config().enable_pressure_advance.get_at(new_extruder_id)) { gcode += gcodegen.writer().set_pressure_advance(gcodegen.config().pressure_advance.get_at(new_extruder_id)); + // Orca: Adaptive PA + // Reset Adaptive PA processor last PA value + gcodegen.m_pa_processor->resetPreviousPA(gcodegen.config().pressure_advance.get_at(new_extruder_id)); } // A phony move to the end position at the wipe tower. @@ -856,6 +859,9 @@ static std::vector get_path_of_change_filament(const Print& print) // SoftFever: set new PA for new filament if (new_extruder_id != -1 && gcodegen.config().enable_pressure_advance.get_at(new_extruder_id)) { gcode += gcodegen.writer().set_pressure_advance(gcodegen.config().pressure_advance.get_at(new_extruder_id)); + // Orca: Adaptive PA + // Reset Adaptive PA processor last PA value + gcodegen.m_pa_processor->resetPreviousPA(gcodegen.config().pressure_advance.get_at(new_extruder_id)); } // A phony move to the end position at the wipe tower. @@ -1979,6 +1985,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato if (!print.config().small_area_infill_flow_compensation_model.empty()) m_small_area_infill_flow_compensator = make_unique(print.config()); + file.write_format("; HEADER_BLOCK_START\n"); // Write information on the generator. @@ -2227,6 +2234,9 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato m_cooling_buffer = make_unique(*this); m_cooling_buffer->set_current_extruder(initial_extruder_id); + + // Orca: Initialise AdaptivePA processor filter + m_pa_processor = std::make_unique(*this, tool_ordering.all_extruders()); // Emit machine envelope limits for the Marlin firmware. this->print_machine_envelope(file, print); @@ -2870,6 +2880,12 @@ void GCode::process_layers( return in.gcode; return cooling_buffer.process_layer(std::move(in.gcode), in.layer_id, in.cooling_buffer_flush); }); + const auto pa_processor_filter = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, + [&pa_processor = *this->m_pa_processor](std::string in) -> std::string { + return pa_processor.process_layer(std::move(in)); + } + ); + const auto output = tbb::make_filter(slic3r_tbb_filtermode::serial_in_order, [&output_stream](std::string s) { output_stream.write(s); } ); @@ -2900,9 +2916,9 @@ void GCode::process_layers( else if (m_spiral_vase) tbb::parallel_pipeline(12, generator & spiral_mode & cooling & fan_mover & output); else if (m_pressure_equalizer) - tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & fan_mover & output); + tbb::parallel_pipeline(12, generator & pressure_equalizer & cooling & fan_mover & pa_processor_filter & output); else - tbb::parallel_pipeline(12, generator & cooling & fan_mover & output); + tbb::parallel_pipeline(12, generator & cooling & fan_mover & pa_processor_filter & output); } // Process all layers of a single object instance (sequential mode) with a parallel pipeline: @@ -4548,6 +4564,7 @@ static std::unique_ptr calculate_layer_edge_grid(const Layer& la std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, double speed, const ExtrusionEntitiesPtr& region_perimeters) { + // get a copy; don't modify the orientation of the original loop object otherwise // next copies (if any) would not detect the correct orientation @@ -4673,7 +4690,9 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou if(discoveredTouchingLines > 1){ // use extrude instead of travel_to_xy to trigger the unretract ExtrusionPath fake_path_wipe(Polyline{pt, current_point}, paths.front()); + fake_path_wipe.set_force_no_extrusion(true); fake_path_wipe.mm3_per_mm = 0; + //fake_path_wipe.set_extrusion_role(erExternalPerimeter); gcode += extrude_path(fake_path_wipe, "move inwards before retraction/seam", speed); } } @@ -4685,9 +4704,32 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou return is_small_peri ? small_peri_speed : speed; }; + + //Orca: Adaptive PA: calculate average mm3_per_mm value over the length of the loop. + //This is used for adaptive PA + m_multi_flow_segment_path_pa_set = false; // always emit PA on the first path of the loop + m_multi_flow_segment_path_average_mm3_per_mm = 0; + double weighted_sum_mm3_per_mm = 0.0; + double total_multipath_length = 0.0; + for (const ExtrusionPath& path : paths) { + if(!path.is_force_no_extrusion()){ + double path_length = unscale(path.length()); //path length in mm + weighted_sum_mm3_per_mm += path.mm3_per_mm * path_length; + total_multipath_length += path_length; + } + } + if (total_multipath_length > 0.0) + m_multi_flow_segment_path_average_mm3_per_mm = weighted_sum_mm3_per_mm / total_multipath_length; + // Orca: end of multipath average mm3_per_mm value calculation + if (!enable_seam_slope) { for (ExtrusionPaths::iterator path = paths.begin(); path != paths.end(); ++path) { gcode += this->_extrude(*path, description, speed_for_path(*path)); + // Orca: Adaptive PA - dont adapt PA after the first pultipath extrusion is completed + // as we have already set the PA value to the average flow over the totality of the path + // in the first extrude move + // TODO: testing is needed with slope seams and adaptive PA. + m_multi_flow_segment_path_pa_set = true; } } else { // Create seam slope @@ -4719,6 +4761,10 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou // Then extrude it for (const auto& p : new_loop.get_all_paths()) { gcode += this->_extrude(*p, description, speed_for_path(*p)); + // Orca: Adaptive PA - dont adapt PA after the first pultipath extrusion is completed + // as we have already set the PA value to the average flow over the totality of the path + // in the first extrude move + m_multi_flow_segment_path_pa_set = true; } // Fix path for wipe @@ -4790,8 +4836,31 @@ std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, std::string { // extrude along the path std::string gcode; - for (ExtrusionPath path : multipath.paths) + + //Orca: calculate multipath average mm3_per_mm value over the length of the path. + //This is used for adaptive PA + m_multi_flow_segment_path_pa_set = false; // always emit PA on the first path of the multi-path + m_multi_flow_segment_path_average_mm3_per_mm = 0; + double weighted_sum_mm3_per_mm = 0.0; + double total_multipath_length = 0.0; + for (const ExtrusionPath& path : multipath.paths) { + if(!path.is_force_no_extrusion()){ + double path_length = unscale(path.length()); //path length in mm + weighted_sum_mm3_per_mm += path.mm3_per_mm * path_length; + total_multipath_length += path_length; + } + } + if (total_multipath_length > 0.0) + m_multi_flow_segment_path_average_mm3_per_mm = weighted_sum_mm3_per_mm / total_multipath_length; + // Orca: end of multipath average mm3_per_mm value calculation + + for (ExtrusionPath path : multipath.paths){ gcode += this->_extrude(path, description, speed); + // Orca: Adaptive PA - dont adapt PA after the first pultipath extrusion is completed + // as we have already set the PA value to the average flow over the totality of the path + // in the first extrude move. + m_multi_flow_segment_path_pa_set = true; + } // BBS if (m_wipe.enable) { @@ -4825,7 +4894,10 @@ std::string GCode::extrude_entity(const ExtrusionEntity &entity, std::string des std::string GCode::extrude_path(ExtrusionPath path, std::string description, double speed) { -// description += ExtrusionEntity::role_to_string(path.role()); + // Orca: Reset average multipath flow as this is a single line, single extrude volumetric speed path + m_multi_flow_segment_path_pa_set = false; + m_multi_flow_segment_path_average_mm3_per_mm = 0; + // description += ExtrusionEntity::role_to_string(path.role()); std::string gcode = this->_extrude(path, description, speed); if (m_wipe.enable) { m_wipe.path = std::move(path.polyline); @@ -5291,7 +5363,28 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } double F = speed * 60; // convert mm/sec to mm/min - + + // Orca: Dynamic PA + // If adaptive PA is enabled, by default evaluate PA on all extrusion moves + bool evaluate_adaptive_pa = false; + bool role_change = (m_last_extrusion_role != path.role()); + if(EXTRUDER_CONFIG(adaptive_pressure_advance) && EXTRUDER_CONFIG(enable_pressure_advance)){ + evaluate_adaptive_pa = true; + // If we have already emmited a PA change because the m_multi_flow_segment_path_pa_set is set + // skip re-issuing the PA change tag. + if (m_multi_flow_segment_path_pa_set && evaluate_adaptive_pa) + evaluate_adaptive_pa = false; + // TODO: Explore forcing evaluation of PA if a role change is happening mid extrusion. + // TODO: This would enable adapting PA for overhang perimeters as they are part of the current loop + // TODO: The issue with simply enabling PA evaluation on a role change is that the speed change + // TODO: is issued before the overhang perimeter role change is triggered + // TODO: because for some reason (maybe path segmentation upstream?) there is a short path extruded + // TODO: with the overhang speed and flow before the role change is flagged in the path.role() function. + if(role_change) + evaluate_adaptive_pa = true; + } + // Orca: End of dynamic PA trigger flag segment + //Orca: process custom gcode for extrusion role change if (path.role() != m_last_extrusion_role && !m_config.change_extrusion_role_gcode.value.empty()) { DynamicConfig config; @@ -5347,6 +5440,45 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, sprintf(buf, ";%s%g\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Height).c_str(), m_last_height); gcode += buf; } + + // Orca: Dynamic PA + // Post processor flag generation code segment when option to emit only at role changes is enabled + // Variables published to the post processor: + // 1) Tag to trigger a PA evaluation (because a role change was identified and the user has requested dynamic PA adjustments) + // 2) Current extruder ID (to identify the PA model for the currently used extruder) + // 3) mm3_per_mm value (to then multiply by the final model print speed after slowdown for cooling is applied) + // 4) the current acceleration (to pass to the model for evaluation) + // 5) whether this is an external perimeter (for future use) + // 6) whether this segment is triggered because of a role change (to aid in calculation of average speed for the role) + // This tag simplifies the creation of the gcode post processor while also keeping the feature decoupled from other tags. + if (evaluate_adaptive_pa) { + bool isOverhangPerimeter = (path.role() == erOverhangPerimeter); + if (m_multi_flow_segment_path_average_mm3_per_mm > 0) { + sprintf(buf, ";%sT%u MM3MM:%g ACCEL:%u BR:%d RC:%d OV:%d\n", + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::PA_Change).c_str(), + m_writer.extruder()->id(), + m_multi_flow_segment_path_average_mm3_per_mm, + acceleration_i, + ((path.role() == erBridgeInfill) ||(path.role() == erOverhangPerimeter)), + role_change, + isOverhangPerimeter); + gcode += buf; + } else if(_mm3_per_mm >0 ){ // Triggered when extruding a single segment path (like a line). + // Check if mm3_mm value is greater than zero as the wipe before external perimeter + // is a zero mm3_mm path to force de-retraction to happen and we dont want + // to issue a zero flow PA change command for this + sprintf(buf, ";%sT%u MM3MM:%g ACCEL:%u BR:%d RC:%d OV:%d\n", + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::PA_Change).c_str(), + m_writer.extruder()->id(), + _mm3_per_mm, + acceleration_i, + ((path.role() == erBridgeInfill) ||(path.role() == erOverhangPerimeter)), + role_change, + isOverhangPerimeter); + gcode += buf; + } + } + auto overhang_fan_threshold = EXTRUDER_CONFIG(overhang_fan_threshold); auto enable_overhang_bridge_fan = EXTRUDER_CONFIG(enable_overhang_bridge_fan); @@ -5397,6 +5529,54 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, if (!variable_speed) { // F is mm per minute. + if( (std::abs(writer().get_current_speed() - F) > EPSILON) || (std::abs(_mm3_per_mm - m_last_mm3_mm) > EPSILON) ){ + // ORCA: Adaptive PA code segment when adjusting PA within the same feature + // There is a speed change coming out of an overhang region + // or a flow change, so emit the flag to evaluate PA for the upcomming extrusion + // Emit tag before new speed is set so the post processor reads the next speed immediately and uses it. + // Dont emit tag if it has just already been emitted from a role change above + if(_mm3_per_mm >0 && + EXTRUDER_CONFIG(adaptive_pressure_advance) && + EXTRUDER_CONFIG(enable_pressure_advance) && + EXTRUDER_CONFIG(adaptive_pressure_advance_overhangs) && + !evaluate_adaptive_pa){ + if(writer().get_current_speed() > F){ // Ramping down speed - use overhang logic where the minimum speed is used between current and upcoming extrusion + if(m_config.gcode_comments){ + sprintf(buf, "; Ramp down-non-variable\n"); + gcode += buf; + } + sprintf(buf, ";%sT%u MM3MM:%g ACCEL:%u BR:%d RC:%d OV:%d\n", + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::PA_Change).c_str(), + m_writer.extruder()->id(), + _mm3_per_mm, + acceleration_i, + ((path.role() == erBridgeInfill) ||(path.role() == erOverhangPerimeter)), + 1, // Force a dummy "role change" & "overhang perimeter" for the post processor, as, while technically it is not a role change, + // the properties of the extrusion in the overhang are different so it behaves similarly to a role + // change for the Adaptive PA post processor. + 1); + }else{ // Ramping up speed - use baseline logic where max speed is used between current and upcoming extrusion + if(m_config.gcode_comments){ + sprintf(buf, "; Ramp up-non-variable\n"); + gcode += buf; + } + sprintf(buf, ";%sT%u MM3MM:%g ACCEL:%u BR:%d RC:%d OV:%d\n", + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::PA_Change).c_str(), + m_writer.extruder()->id(), + _mm3_per_mm, + acceleration_i, + ((path.role() == erBridgeInfill) ||(path.role() == erOverhangPerimeter)), + 1, // Force a dummy "role change" & "overhang perimeter" for the post processor, as, while technically it is not a role change, + // the properties of the extrusion in the overhang are different so it is technically similar to a role + // change for the Adaptive PA post processor. + 0); + } + gcode += buf; + m_last_mm3_mm = _mm3_per_mm; + } + // ORCA: End of adaptive PA code segment + } + gcode += m_writer.set_speed(F, "", comment); { if (m_enable_cooling_markers) { @@ -5591,6 +5771,52 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, continue; path_length += line_length; double new_speed = pre_processed_point.speed * 60.0; + + if ((std::abs(last_set_speed - new_speed) > EPSILON) || (std::abs(_mm3_per_mm - m_last_mm3_mm) > EPSILON)) { + // ORCA: Adaptive PA code segment when adjusting PA within the same feature + // There is a speed change or flow change so emit the flag to evaluate PA for the upcomming extrusion + // Emit tag before new speed is set so the post processor reads the next speed immediately and uses it. + if(_mm3_per_mm >0 && + EXTRUDER_CONFIG(adaptive_pressure_advance) && + EXTRUDER_CONFIG(enable_pressure_advance) && + EXTRUDER_CONFIG(adaptive_pressure_advance_overhangs) ){ + if(last_set_speed > new_speed){ // Ramping down speed - use overhang logic where the minimum speed is used between current and upcoming extrusion + if(m_config.gcode_comments) { + sprintf(buf, "; Ramp up-variable\n"); + gcode += buf; + } + sprintf(buf, ";%sT%u MM3MM:%g ACCEL:%u BR:%d RC:%d OV:%d\n", + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::PA_Change).c_str(), + m_writer.extruder()->id(), + _mm3_per_mm, + acceleration_i, + ((path.role() == erBridgeInfill) ||(path.role() == erOverhangPerimeter)), + 1, // Force a dummy "role change" & "overhang perimeter" for the post processor, as, while technically it is not a role change, + // the properties of the extrusion in the overhang are different so it is technically similar to a role + // change for the Adaptive PA post processor. + 1); + }else{ // Ramping up speed - use baseline logic where max speed is used between current and upcoming extrusion + if(m_config.gcode_comments) { + sprintf(buf, "; Ramp down-variable\n"); + gcode += buf; + } + sprintf(buf, ";%sT%u MM3MM:%g ACCEL:%u BR:%d RC:%d OV:%d\n", + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::PA_Change).c_str(), + m_writer.extruder()->id(), + _mm3_per_mm, + acceleration_i, + ((path.role() == erBridgeInfill) ||(path.role() == erOverhangPerimeter)), + 1, // Force a dummy "role change" & "overhang perimeter" for the post processor, as, while technically it is not a role change, + // the properties of the extrusion in the overhang are different so it is technically similar to a role + // change for the Adaptive PA post processor. + 0); + } + gcode += buf; + m_last_mm3_mm = _mm3_per_mm; + } + }// ORCA: End of adaptive PA code segment + + if (last_set_speed != new_speed) { gcode += m_writer.set_speed(new_speed, "", comment); last_set_speed = new_speed; @@ -6029,6 +6255,9 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b } if (m_config.enable_pressure_advance.get_at(extruder_id)) { gcode += m_writer.set_pressure_advance(m_config.pressure_advance.get_at(extruder_id)); + // Orca: Adaptive PA + // Reset Adaptive PA processor last PA value + m_pa_processor->resetPreviousPA(m_config.pressure_advance.get_at(extruder_id)); } gcode += m_writer.toolchange(extruder_id); diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 18ea653546..141ad2f366 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -24,6 +24,8 @@ #include "GCode/PressureEqualizer.hpp" #include "GCode/SmallAreaInfillFlowCompensator.hpp" +// ORCA: post processor below used for Dynamic Pressure advance +#include "GCode/AdaptivePAProcessor.hpp" #include #include @@ -358,6 +360,19 @@ private: std::string extrude_loop(ExtrusionLoop loop, std::string description, double speed = -1., const ExtrusionEntitiesPtr& region_perimeters = ExtrusionEntitiesPtr()); std::string extrude_multi_path(ExtrusionMultiPath multipath, std::string description = "", double speed = -1.); std::string extrude_path(ExtrusionPath path, std::string description = "", double speed = -1.); + + // Orca: Adaptive PA variables + // Used for adaptive PA when extruding paths with multiple, varying flow segments. + // This contains the sum of the mm3_per_mm values weighted by the length of each path segment. + // The m_multi_flow_segment_path_pa_set constrains the PA change request to the first extrusion segment. + // It sets the mm3_mm value for the adaptive PA post processor to be the average of that path + // as calculated and stored in the m_multi_segment_path_average_mm3_per_mm value + double m_multi_flow_segment_path_average_mm3_per_mm = 0; + bool m_multi_flow_segment_path_pa_set = false; + // Adaptive PA last set flow to enable issuing of PA change commands when adaptive PA for overhangs + // is enabled + double m_last_mm3_mm = 0; + // Orca: Adaptive PA code segment end // Extruding multiple objects with soluble / non-soluble / combined supports // on a multi-material printer, trying to minimize tool switches. @@ -540,11 +555,13 @@ private: std::unique_ptr m_spiral_vase; std::unique_ptr m_pressure_equalizer; + + std::unique_ptr m_pa_processor; std::unique_ptr m_wipe_tower; std::unique_ptr m_small_area_infill_flow_compensator; - + // Heights (print_z) at which the skirt has already been extruded. std::vector m_skirt_done; // Has the brim been extruded already? Brim is being extruded only for the first object of a multi-object print. diff --git a/src/libslic3r/GCode/AdaptivePAInterpolator.cpp b/src/libslic3r/GCode/AdaptivePAInterpolator.cpp new file mode 100644 index 0000000000..2681ab13b2 --- /dev/null +++ b/src/libslic3r/GCode/AdaptivePAInterpolator.cpp @@ -0,0 +1,114 @@ +// AdaptivePAInterpolator.cpp +// OrcaSlicer +// +// Implementation file for the AdaptivePAInterpolator class, providing methods to parse data and perform PA interpolation. + +#include "AdaptivePAInterpolator.hpp" +#include +#include +#include +#include + +/** + * @brief Parses the input data and sets up the interpolators. + * @param data A string containing the data in CSV format (PA, flow rate, acceleration). + * @return 0 on success, -1 on error. + */ +int AdaptivePAInterpolator::parseAndSetData(const std::string& data) { + flow_interpolators_.clear(); + accelerations_.clear(); + + try { + std::istringstream ss(data); + std::string line; + std::map>> acc_to_flow_pa; + + while (std::getline(ss, line)) { + std::istringstream lineStream(line); + std::string value; + double paValue, flowRate, acceleration; + paValue = flowRate = acceleration = 0.f; // initialize all to zero. + + // Parse PA value + if (std::getline(lineStream, value, ',')) { + paValue = std::stod(value); + } + + // Parse flow rate value + if (std::getline(lineStream, value, ',')) { + flowRate = std::stod(value); + } + + // Parse acceleration value + if (std::getline(lineStream, value, ',')) { + acceleration = std::stod(value); + } + + // Store the parsed values in a map with acceleration as the key + acc_to_flow_pa[acceleration].emplace_back(flowRate, paValue); + } + + // Iterate through the map to set up the interpolators + for (const auto& kv : acc_to_flow_pa) { + double acceleration = kv.first; + const auto& data = kv.second; + + std::vector flowRates; + std::vector paValues; + + for (const auto& pair : data) { + flowRates.push_back(pair.first); + paValues.push_back(pair.second); + } + + // Only set up the interpolator if there are enough data points + if (flowRates.size() > 1) { + PchipInterpolatorHelper interpolator(flowRates, paValues); + flow_interpolators_[acceleration] = interpolator; + accelerations_.push_back(acceleration); + } + } + } catch (const std::exception&) { + m_isInitialised = false; + return -1; // Error: Exception during parsing + } + m_isInitialised = true; + return 0; // Success +} + +/** + * @brief Interpolates the PA value for the given flow rate and acceleration. + * @param flow_rate The flow rate at which to interpolate. + * @param acceleration The acceleration at which to interpolate. + * @return The interpolated PA value, or -1 if interpolation fails. + */ +double AdaptivePAInterpolator::operator()(double flow_rate, double acceleration) { + std::vector pa_values; + std::vector acc_values; + + // Estimate PA value for every flow to PA model for the given flow rate + for (const auto& kv : flow_interpolators_) { + double pa_value = kv.second.interpolate(flow_rate); + + // Check if the interpolated PA value is valid + if (pa_value != -1) { + pa_values.push_back(pa_value); + acc_values.push_back(kv.first); + } + } + + // Check if there are enough acceleration values for interpolation + if (acc_values.size() < 2) { + // Special case: Only one acceleration value + if (acc_values.size() == 1) { + return std::round(pa_values[0] * 1000.0) / 1000.0; // Rounded to 3 decimal places + } + return -1; // Error: Not enough data points for interpolation + } + + // Create a new PchipInterpolatorHelper for PA-acceleration interpolation + // Use the estimated PA values from the for loop above and their corresponding accelerations to + // generate the new PCHIP model. Then run this model to interpolate the PA value for the given acceleration value. + PchipInterpolatorHelper pa_accel_interpolator(acc_values, pa_values); + return std::round(pa_accel_interpolator.interpolate(acceleration) * 1000.0) / 1000.0; // Rounded to 3 decimal places +} diff --git a/src/libslic3r/GCode/AdaptivePAInterpolator.hpp b/src/libslic3r/GCode/AdaptivePAInterpolator.hpp new file mode 100644 index 0000000000..8303af5490 --- /dev/null +++ b/src/libslic3r/GCode/AdaptivePAInterpolator.hpp @@ -0,0 +1,54 @@ +// AdaptivePAInterpolator.hpp +// OrcaSlicer +// +// Header file for the AdaptivePAInterpolator class, responsible for interpolating pressure advance (PA) values based on flow rate and acceleration using PCHIP interpolation. + +#ifndef ADAPTIVEPAINTERPOLATOR_HPP +#define ADAPTIVEPAINTERPOLATOR_HPP + +#include +#include +#include +#include "PchipInterpolatorHelper.hpp" + +/** + * @class AdaptivePAInterpolator + * @brief A class to interpolate pressure advance (PA) values based on flow rate and acceleration using Piecewise Cubic Hermite Interpolating Polynomial (PCHIP) interpolation. + */ +class AdaptivePAInterpolator { +public: + /** + * @brief Default constructor. + */ + AdaptivePAInterpolator() : m_isInitialised(false) {} + + /** + * @brief Parses the input data and sets up the interpolators. + * @param data A string containing the data in CSV format (PA, flow rate, acceleration). + * @return 0 on success, -1 on error. + */ + int parseAndSetData(const std::string& data); + + /** + * @brief Interpolates the PA value for the given flow rate and acceleration. + * @param flow_rate The flow rate at which to interpolate. + * @param acceleration The acceleration at which to interpolate. + * @return The interpolated PA value, or -1 if interpolation fails. + */ + double operator()(double flow_rate, double acceleration); + + /** + * @brief Returns the initialization status. + * @return The value of m_isInitialised. + */ + bool isInitialised() const { + return m_isInitialised; + } + +private: + std::map flow_interpolators_; ///< Map each acceleration to a flow-rate-to-PA interpolator. + std::vector accelerations_; ///< Store unique accelerations. + bool m_isInitialised; +}; + +#endif // ADAPTIVEPAINTERPOLATOR_HPP diff --git a/src/libslic3r/GCode/AdaptivePAProcessor.cpp b/src/libslic3r/GCode/AdaptivePAProcessor.cpp new file mode 100644 index 0000000000..3d87a660ad --- /dev/null +++ b/src/libslic3r/GCode/AdaptivePAProcessor.cpp @@ -0,0 +1,285 @@ +// AdaptivePAProcessor.cpp +// OrcaSlicer +// +// Implementation of the AdaptivePAProcessor class, responsible for processing G-code layers with adaptive pressure advance. + +#include "../GCode.hpp" +#include "AdaptivePAProcessor.hpp" +#include +#include +#include + +namespace Slic3r { + +/** + * @brief Constructor for AdaptivePAProcessor. + * + * This constructor initializes the AdaptivePAProcessor with a reference to a GCode object. + * It also initializes the configuration reference, pressure advance interpolation object, + * and regular expression patterns used for processing the G-code. + * + * @param gcodegen A reference to the GCode object that generates the G-code. + */ +AdaptivePAProcessor::AdaptivePAProcessor(GCode &gcodegen, const std::vector &tools_used) + : m_gcodegen(gcodegen), + m_config(gcodegen.config()), + m_last_predicted_pa(0.0), + m_max_next_feedrate(0.0), + m_next_feedrate(0.0), + m_current_feedrate(0.0), + m_last_extruder_id(-1), + m_pa_change_pattern(R"(; PA_CHANGE:T(\d+) MM3MM:([0-9]*\.[0-9]+) ACCEL:(\d+) BR:(\d+) RC:(\d+) OV:(\d+))"), + m_g1_f_pattern(R"(G1 F([0-9]+))") +{ + // Constructor body can be used for further initialization if necessary + for (unsigned int tool : tools_used) { + // Only enable model for the tool if both PA and adaptive PA options are enabled + if(m_config.adaptive_pressure_advance.get_at(tool) && m_config.enable_pressure_advance.get_at(tool)){ + auto interpolator = std::make_unique(); + // Get calibration values from extruder + std::string pa_calibration_values = m_config.adaptive_pressure_advance_model.get_at(tool); + // Setup the model and store it in the tool-interpolation model map + interpolator->parseAndSetData(pa_calibration_values); + m_AdaptivePAInterpolators[tool] = std::move(interpolator); + } + } +} + +// Method to get the interpolator for a specific tool ID +AdaptivePAInterpolator* AdaptivePAProcessor::getInterpolator(unsigned int tool_id) { + auto it = m_AdaptivePAInterpolators.find(tool_id); + if (it != m_AdaptivePAInterpolators.end()) { + return it->second.get(); + } + return nullptr; // Handle the case where the tool_id is not found +} + +/** + * @brief Processes a layer of G-code and applies adaptive pressure advance. + * + * This method processes the G-code for a single layer, identifying the appropriate + * pressure advance settings and applying them based on the current state and configurations. + * + * @param gcode A string containing the G-code for the layer. + * @return A string containing the processed G-code with adaptive pressure advance applied. + */ +std::string AdaptivePAProcessor::process_layer(std::string &&gcode) { + std::istringstream stream(gcode); + std::string line; + std::ostringstream output; + double mm3mm_value = 0.0; + unsigned int accel_value = 0; + std::string pa_change_line; + bool wipe_command = false; + + // Iterate through each line of the layer G-code + while (std::getline(stream, line)) { + + // If a wipe start command is found, ignore all speed changes till the wipe end part is found + if (line.find("WIPE_START") != std::string::npos) { + wipe_command = true; + } + + // Update current feed rate (this is preceding an extrude or wipe command only). Ignore any speed changes that are emitted during a wipe move. + // Travel feedrate is output as part of a G1 X Y (Z) F command + if ( (line.find("G1 F") == 0) && (!wipe_command) ) { // prune lines quickly before running pattern matching + std::size_t pos = line.find('F'); + if (pos != std::string::npos){ + m_current_feedrate = std::stod(line.substr(pos + 1)) / 60.0; // Convert from mm/min to mm/s + } + } + + // Wipe end found, continue searching for current feed rate. + if (line.find("WIPE_END") != std::string::npos) { + wipe_command = false; + } + + // Reset next feedrate to zero enable searching for the first encountered + // feedrate change command after the PA change tag. + m_next_feedrate = 0; + + // Check for PA_CHANGE pattern in the line + // We will only find this pattern for extruders where adaptive PA is enabled. + // If there is mixed extruders in the layer (i.e. with adaptive PA on and off + // this will only update the extruders where the adaptive PA is enabled + // as these are the only ones where the PA pattern is output + // For a mixed extruder layer with both adaptive PA enabled and disabled when the new tool is selected + // the PA for that material is set. As no tag below will be found for this extruder, the original PA is retained. + if (line.find("; PA_CHANGE") == 0) { // prune lines quickly before running regex check as regex is more expensive to run + if (std::regex_search(line, m_match, m_pa_change_pattern)) { + int extruder_id = std::stoi(m_match[1].str()); + mm3mm_value = std::stod(m_match[2].str()); + accel_value = std::stod(m_match[3].str()); + int isBridge = std::stoi(m_match[4].str()); + int roleChange = std::stoi(m_match[5].str()); + int isOverhang = std::stoi(m_match[6].str()); + + // Check if the extruder ID has changed + bool extruder_changed = (extruder_id != m_last_extruder_id); + m_last_extruder_id = extruder_id; + + // Save the PA_CHANGE line to output later after finding feedrate + pa_change_line = line; + + // Look ahead for feedrate before any line containing both G and E commands + std::streampos current_pos = stream.tellg(); + std::string next_line; + double temp_feed_rate = 0; + bool extrude_move_found = false; + int line_counter = 0; + + // Carry on searching on the layer gcode lines to find the print speed + // If a G1 Fxxxx pattern is found, the new speed is identified + // Carry on searching for feedrates to find the maximum print speed + // until a feature change pattern or a wipe command is detected + while (std::getline(stream, next_line)) { + line_counter++; + // Found an extrude move, set extrude move found flag and move to the next line + if ((!extrude_move_found) && next_line.find("G1 ") == 0 && + next_line.find('X') != std::string::npos && + next_line.find('Y') != std::string::npos && + next_line.find('E') != std::string::npos) { + // Pattern matched, break the loop + extrude_move_found = true; + continue; + } + + // Found a travel move after we've found at least one extrude move + // We now need to stop searching for speeds as we're done printing this island + if (next_line.find("G1 ") == 0 && + next_line.find('X') != std::string::npos && // X is present + next_line.find('Y') != std::string::npos && // Y is present + next_line.find('E') == std::string::npos && // no "E" present + extrude_move_found) { // An extrude move has happened already + // First travel move after extrude move found. Stop searching + break; + } + + // Found a WIPE command + // If we have a wipe command, usually the wipe speed is different (larger) than the max print speed + // for that feature. So stop searching if a wipe command is found because we do not want to overwrite the + // speed used for PA calculation by the Wipe speed. + if (next_line.find("WIPE") != std::string::npos) { + break; // Stop searching if wipe command is found + } + + // Found another PA_CHANGE pattern + // If RC = 1, it means we have a role change, so stop trying to find the max speed for the feature. + // This is possibly redundant as a new feature would always have a travel move preceding it + // but check anyway. However check last so to not invoke it without reason... + if (next_line.find("; PA_CHANGE") == 0) { // prune lines quickly before running pattern matching + std::size_t rc_pos = next_line.rfind("RC:"); + if (rc_pos != std::string::npos) { + int rc_value = std::stoi(next_line.substr(rc_pos + 3)); + if (rc_value == 1) { + break; // Role change found, stop searching + } + } + } + + // Found a Feedrate change command + // If the new feedrate is greater than any feedrate encountered so far after the PA change command, use that to calculate the PA value + // Also if this is the first feedrate we encounter, store it as the next feedrate. + if (next_line.find("G1 F") == 0) { // prune lines quickly before running pattern matching + std::size_t pos = next_line.find('F'); + if (pos != std::string::npos) { + double feedrate = std::stod(next_line.substr(pos + 1)) / 60.0; // Convert from mm/min to mm/s + if(line_counter==1){ // this is the first command after the PA change pattern, and hence before any extrusion has happened. Reset + // the current speed to this one + m_current_feedrate = feedrate; + } + if (temp_feed_rate < feedrate) { + temp_feed_rate = feedrate; + } + if(m_next_feedrate < EPSILON){ // This the first feedrate found after the PA Change command + m_next_feedrate = feedrate; + } + } + continue; + } + } + + // If we found a new maximum feedrate after the PA change command, use it + if (temp_feed_rate > 0) { + m_max_next_feedrate = temp_feed_rate; + } else // If we didnt find a new feedrate at all after the PA change command, use the current feedrate. + m_max_next_feedrate = m_current_feedrate; + + // Restore stream position + stream.clear(); + stream.seekg(current_pos); + + // Calculate the predicted PA using the upcomming feature maximum feedrate + // Get the interpolator for the active tool + AdaptivePAInterpolator* interpolator = getInterpolator(m_last_extruder_id); + + double predicted_pa = 0; + double adaptive_PA_speed = 0; + + if(!interpolator){ // Tool not found in the interpolator map + // Tool not found in the PA interpolator to tool map + predicted_pa = m_config.enable_pressure_advance.get_at(m_last_extruder_id) ? m_config.pressure_advance.get_at(m_last_extruder_id) : 0; + if(m_config.gcode_comments) output << "; APA: Tool doesnt have APA enabled\n"; + } else if (!interpolator->isInitialised() || (!m_config.adaptive_pressure_advance.get_at(m_last_extruder_id)) ) + // Check if the model is not initialised by the constructor for the active extruder + // Also check that adaptive PA is enabled for that extruder. This should not be needed + // as the PA change flag should not be set upstream (in the GCode.cpp file) if adaptive PA is disabled + // however check for robustness sake. + { + // Model failed or adaptive pressure advance not enabled - use default value from m_config + predicted_pa = m_config.enable_pressure_advance.get_at(m_last_extruder_id) ? m_config.pressure_advance.get_at(m_last_extruder_id) : 0; + if(m_config.gcode_comments) output << "; APA: Interpolator setup failed, using default pressure advance\n"; + } else { // Model setup succeeded + // Proceed to identify the print speed to use to calculate the adaptive PA value + if(isOverhang > 0){ // If we are in an overhang area, use the minimum between current print speed + // and any speed immediately after + // In most cases the current speed is the minimum one; + // however if slowdown for layer cooling is enabled, the overhang + // may be slowed down more than the current speed. + adaptive_PA_speed = (m_current_feedrate == 0 || m_next_feedrate == 0) ? + std::max(m_current_feedrate, m_next_feedrate) : + std::min(m_current_feedrate, m_next_feedrate); + }else{ // If this is not an overhang area, use the maximum speed from the current and + // upcomming speeds for the island. + adaptive_PA_speed = std::max(m_max_next_feedrate,m_current_feedrate); + } + + // Calculate the adaptive PA value + predicted_pa = (*interpolator)(mm3mm_value * adaptive_PA_speed, accel_value); + + // This is a bridge, use the dedicated PA setting. + if(isBridge && m_config.adaptive_pressure_advance_bridges.get_at(m_last_extruder_id) > EPSILON) + predicted_pa = m_config.adaptive_pressure_advance_bridges.get_at(m_last_extruder_id); + + if (predicted_pa < 0) { // If extrapolation fails, fall back to the default PA for the extruder. + predicted_pa = m_config.enable_pressure_advance.get_at(m_last_extruder_id) ? m_config.pressure_advance.get_at(m_last_extruder_id) : 0; + if(m_config.gcode_comments) output << "; APA: Interpolation failed, using fallback pressure advance value\n"; + } + } + if(m_config.gcode_comments) { + // Output debug GCode comments + output << pa_change_line << '\n'; // Output PA change command tag + if(isBridge && m_config.adaptive_pressure_advance_bridges.get_at(m_last_extruder_id) > EPSILON) + output << "; APA Model Override (bridge)\n"; + output << "; APA Current Speed: " << std::to_string(m_current_feedrate) << "\n"; + output << "; APA Next Speed: " << std::to_string(m_next_feedrate) << "\n"; + output << "; APA Max Next Speed: " << std::to_string(m_max_next_feedrate) << "\n"; + output << "; APA Speed Used: " << std::to_string(adaptive_PA_speed) << "\n"; + output << "; APA Flow rate: " << std::to_string(mm3mm_value * m_max_next_feedrate) << "\n"; + output << "; APA Prev PA: " << std::to_string(m_last_predicted_pa) << " New PA: " << std::to_string(predicted_pa) << "\n"; + } + if (extruder_changed || std::fabs(predicted_pa - m_last_predicted_pa) > EPSILON) { + output << m_gcodegen.writer().set_pressure_advance(predicted_pa); // Use m_writer to set pressure advance + m_last_predicted_pa = predicted_pa; // Update the last predicted PA value + } + } + }else { + // Output the current line as this isn't a PA change tag + output << line << '\n'; + } + } + + return output.str(); +} + +} // namespace Slic3r diff --git a/src/libslic3r/GCode/AdaptivePAProcessor.hpp b/src/libslic3r/GCode/AdaptivePAProcessor.hpp new file mode 100644 index 0000000000..b9d2ef15fb --- /dev/null +++ b/src/libslic3r/GCode/AdaptivePAProcessor.hpp @@ -0,0 +1,85 @@ +// AdaptivePAProcessor.hpp +// OrcaSlicer +// +// Header file for the AdaptivePAProcessor class, responsible for processing G-code layers for the purposes of applying adaptive pressure advance. + +#ifndef ADAPTIVEPAPROCESSOR_H +#define ADAPTIVEPAPROCESSOR_H + +#include +#include +#include +#include +#include +#include +#include "AdaptivePAInterpolator.hpp" + +namespace Slic3r { + +// Forward declaration of GCode class +class GCode; + +/** + * @brief Class for processing G-code layers with adaptive pressure advance. + */ +class AdaptivePAProcessor { +public: + /** + * @brief Constructor for AdaptivePAProcessor. + * + * This constructor initializes the AdaptivePAProcessor with a reference to a GCode object. + * It also initializes the configuration reference, pressure advance interpolation object, + * and regular expression patterns used for processing the G-code. + * + * @param gcodegen A reference to the GCode object that generates the G-code. + */ + AdaptivePAProcessor(GCode &gcodegen, const std::vector &tools_used); + + /** + * @brief Processes a layer of G-code and applies adaptive pressure advance. + * + * This method processes the G-code for a single layer, identifying the appropriate + * pressure advance settings and applying them based on the current state and configurations. + * + * @param gcode A string containing the G-code for the layer. + * @return A string containing the processed G-code with adaptive pressure advance applied. + */ + std::string process_layer(std::string &&gcode); + + /** + * @brief Manually sets adaptive PA internal value. + * + * This method manually sets the adaptive PA internally held value. + * Call this when changing tools or in any other case where the internally assumed last PA value may be incorrect + */ + void resetPreviousPA(double PA){ m_last_predicted_pa = PA; }; + +private: + GCode &m_gcodegen; ///< Reference to the GCode object. + std::unordered_map> m_AdaptivePAInterpolators; ///< Map between Interpolator objects and tool ID's + const PrintConfig &m_config; ///< Reference to the print configuration. + double m_last_predicted_pa; ///< Last predicted pressure advance value. + double m_max_next_feedrate; ///< Maximum feed rate (speed) for the upcomming island. If no speed is found, the previous island speed is used. + double m_next_feedrate; ///< First feed rate (speed) for the upcomming island. + double m_current_feedrate; ///< Current, latest feedrate. + int m_last_extruder_id; ///< Last used extruder ID. + + std::regex m_pa_change_pattern; ///< Regular expression to detect PA_CHANGE pattern. + std::regex m_g1_f_pattern; ///< Regular expression to detect G1 F pattern. + std::smatch m_match; ///< Match results for regular expressions. + + /** + * @brief Get the PA interpolator attached to the specified tool ID. + * + * This method manually sets the adaptive PA internally held value. + * Call this when changing tools or in any other case where the internally assumed last PA value may be incorrect + * + * @param An integer with the tool ID for which the PA interpolation model is to be returned. + * @return The Adaptive PA Interpolator object corresponding to that tool. + */ + AdaptivePAInterpolator* getInterpolator(unsigned int tool_id); +}; + +} // namespace Slic3r + +#endif // ADAPTIVEPAPROCESSOR_H diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 648b570d82..69dbddfaa4 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -68,7 +68,8 @@ const std::vector GCodeProcessor::Reserved_Tags = { " MANUAL_TOOL_CHANGE ", "_DURING_PRINT_EXHAUST_FAN", " WIPE_TOWER_START", - " WIPE_TOWER_END" + " WIPE_TOWER_END", + " PA_CHANGE:" }; const std::vector GCodeProcessor::Reserved_Tags_compatible = { @@ -88,7 +89,8 @@ const std::vector GCodeProcessor::Reserved_Tags_compatible = { " MANUAL_TOOL_CHANGE ", "_DURING_PRINT_EXHAUST_FAN", " WIPE_TOWER_START", - " WIPE_TOWER_END" + " WIPE_TOWER_END", + " PA_CHANGE:" }; diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index a1fd5237e3..1a1970e924 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -291,6 +291,7 @@ namespace Slic3r { During_Print_Exhaust_Fan, Wipe_Tower_Start, Wipe_Tower_End, + PA_Change, }; static const std::string& reserved_tag(ETags tag) { return s_IsBBLPrinter ? Reserved_Tags[static_cast(tag)] : Reserved_Tags_compatible[static_cast(tag)]; } diff --git a/src/libslic3r/GCode/PchipInterpolatorHelper.cpp b/src/libslic3r/GCode/PchipInterpolatorHelper.cpp new file mode 100644 index 0000000000..44baa6cbf7 --- /dev/null +++ b/src/libslic3r/GCode/PchipInterpolatorHelper.cpp @@ -0,0 +1,100 @@ +// PchipInterpolatorHelper.cpp +// OrcaSlicer +// +// Implementation file for the PchipInterpolatorHelper class + +#include "PchipInterpolatorHelper.hpp" +#include +#include +#include + +/** + * @brief Constructs the PCHIP interpolator with given data points. + * @param x The x-coordinates of the data points. + * @param y The y-coordinates of the data points. + */ +PchipInterpolatorHelper::PchipInterpolatorHelper(const std::vector& x, const std::vector& y) { + setData(x, y); +} + +/** + * @brief Sets the data points for the interpolator. + * @param x The x-coordinates of the data points. + * @param y The y-coordinates of the data points. + * @throw std::invalid_argument if x and y have different sizes or if they contain fewer than two points. + */ +void PchipInterpolatorHelper::setData(const std::vector& x, const std::vector& y) { + if (x.size() != y.size() || x.size() < 2) { + throw std::invalid_argument("Input vectors must have the same size and contain at least two points."); + } + x_ = x; + y_ = y; + sortData(); + computePCHIP(); +} + +/** + * @brief Sorts the data points by x-coordinate. + */ +void PchipInterpolatorHelper::sortData() { + std::vector> data; + for (size_t i = 0; i < x_.size(); ++i) { + data.emplace_back(x_[i], y_[i]); + } + std::sort(data.begin(), data.end()); + + for (size_t i = 0; i < data.size(); ++i) { + x_[i] = data[i].first; + y_[i] = data[i].second; + } +} + +/** + * @brief Computes the PCHIP coefficients. + */ +void PchipInterpolatorHelper::computePCHIP() { + size_t n = x_.size() - 1; + h_.resize(n); + delta_.resize(n); + d_.resize(n+1); + + for (size_t i = 0; i < n; ++i) { + h_[i] = h(i); + delta_[i] = delta(i); + } + + d_[0] = delta_[0]; + d_[n] = delta_[n-1]; + for (size_t i = 1; i < n; ++i) { + if (delta_[i-1] * delta_[i] > 0) { + double w1 = 2 * h_[i] + h_[i-1]; + double w2 = h_[i] + 2 * h_[i-1]; + d_[i] = (w1 + w2) / (w1 / delta_[i-1] + w2 / delta_[i]); + } else { + d_[i] = 0; + } + } +} + +/** + * @brief Interpolates the value at a given point. + */ +double PchipInterpolatorHelper::interpolate(double xi) const { + if (xi <= x_.front()) return y_.front(); + if (xi >= x_.back()) return y_.back(); + + auto it = std::lower_bound(x_.begin(), x_.end(), xi); + size_t i = std::distance(x_.begin(), it) - 1; + + double h_i = h_[i]; + double t = (xi - x_[i]) / h_i; + double t2 = t * t; + double t3 = t2 * t; + + double h00 = 2 * t3 - 3 * t2 + 1; + double h10 = t3 - 2 * t2 + t; + double h01 = -2 * t3 + 3 * t2; + double h11 = t3 - t2; + + return h00 * y_[i] + h10 * h_i * d_[i] + h01 * y_[i+1] + h11 * h_i * d_[i+1]; +} diff --git a/src/libslic3r/GCode/PchipInterpolatorHelper.hpp b/src/libslic3r/GCode/PchipInterpolatorHelper.hpp new file mode 100644 index 0000000000..becfe28210 --- /dev/null +++ b/src/libslic3r/GCode/PchipInterpolatorHelper.hpp @@ -0,0 +1,76 @@ +// PchipInterpolatorHelper.hpp +// OrcaSlicer +// +// Header file for the PchipInterpolatorHelper class, responsible for performing Piecewise Cubic Hermite Interpolating Polynomial (PCHIP) interpolation on given data points. + +#ifndef PCHIPINTERPOLATORHELPER_HPP +#define PCHIPINTERPOLATORHELPER_HPP + +#include + +/** + * @class PchipInterpolatorHelper + * @brief A helper class to perform Piecewise Cubic Hermite Interpolating Polynomial (PCHIP) interpolation. + */ +class PchipInterpolatorHelper { +public: + /** + * @brief Default constructor. + */ + PchipInterpolatorHelper() = default; + + /** + * @brief Constructs the PCHIP interpolator with given data points. + * @param x The x-coordinates of the data points. + * @param y The y-coordinates of the data points. + */ + PchipInterpolatorHelper(const std::vector& x, const std::vector& y); + + /** + * @brief Sets the data points for the interpolator. + * @param x The x-coordinates of the data points. + * @param y The y-coordinates of the data points. + * @throw std::invalid_argument if x and y have different sizes or if they contain fewer than two points. + */ + void setData(const std::vector& x, const std::vector& y); + + /** + * @brief Interpolates the value at a given point. + * @param xi The x-coordinate at which to interpolate. + * @return The interpolated y-coordinate. + */ + double interpolate(double xi) const; + +private: + std::vector x_; ///< The x-coordinates of the data points. + std::vector y_; ///< The y-coordinates of the data points. + std::vector h_; ///< The differences between successive x-coordinates. + std::vector delta_; ///< The slopes of the segments between successive data points. + std::vector d_; ///< The derivatives at the data points. + + /** + * @brief Computes the PCHIP coefficients. + */ + void computePCHIP(); + + /** + * @brief Sorts the data points by x-coordinate. + */ + void sortData(); + + /** + * @brief Computes the difference between successive x-coordinates. + * @param i The index of the x-coordinate. + * @return The difference between x_[i+1] and x_[i]. + */ + double h(int i) const { return x_[i+1] - x_[i]; } + + /** + * @brief Computes the slope of the segment between successive data points. + * @param i The index of the segment. + * @return The slope of the segment between y_[i] and y_[i+1]. + */ + double delta(int i) const { return (y_[i+1] - y_[i]) / h(i); } +}; + +#endif // PCHIPINTERPOLATORHELPER_HPP diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 05c34446b6..59b0d1f9c1 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -840,7 +840,7 @@ static std::vector s_Preset_filament_options { "filament_wipe_distance", "additional_cooling_fan_speed", "nozzle_temperature_range_low", "nozzle_temperature_range_high", //SoftFever - "enable_pressure_advance", "pressure_advance","chamber_temperature", "filament_shrink", "support_material_interface_fan_speed", "filament_notes" /*,"filament_seam_gap"*/, + "enable_pressure_advance", "pressure_advance","adaptive_pressure_advance","adaptive_pressure_advance_model","adaptive_pressure_advance_overhangs", "adaptive_pressure_advance_bridges","chamber_temperature", "filament_shrink", "support_material_interface_fan_speed", "filament_notes" /*,"filament_seam_gap"*/, "filament_loading_speed", "filament_loading_speed_start", "filament_load_time", "filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ddcb4bcbf8..b43a91ae1f 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1681,6 +1681,60 @@ void PrintConfigDef::init_fff_params() def->max = 2; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 0.02 }); + + // Orca: Adaptive pressure advance option and calibration values + def = this->add("adaptive_pressure_advance", coBools); + def->label = L("Enable adaptive pressure advance (beta)"); + def->tooltip = L("With increasing print speeds (and hence increasing volumetric flow through the nozzle) and increasing accelerations, " + "it has been observed that the effective PA value typically decreases. " + "This means that a single PA value is not always 100% optimal for all features and a compromise value is usually used " + "that does not cause too much bulging on features with lower flow speed and accelerations while also not causing gaps on faster features.\n\n" + "This feature aims to address this limitation by modeling the response of your printer's extrusion system depending " + "on the volumetric flow speed and acceleration it is printing at. Internally, it generates a fitted model that can extrapolate the needed pressure " + "advance for any given volumetric flow speed and acceleration, which is then emmited to the printer depending on the current print conditions.\n\n" + "When enabled, the pressure advance value above is overriden. However, a reasonable default value above is " + "strongly recomended to act as a fallback and for when tool changing.\n\n"); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBools{ false }); + + // Orca: Adaptive pressure advance option and calibration values + def = this->add("adaptive_pressure_advance_model", coStrings); + def->label = L("Adaptive pressure advance measurements (beta)"); + def->tooltip = L("Add sets of pressure advance (PA) values, the volumetric flow speeds and accelerations they were measured at, separated by a comma. " + "One set of values per line. For example\n" + "0.04,3.96,3000\n0.033,3.96,10000\n0.029,7.91,3000\n0.026,7.91,10000\n\n" + "How to calibrate:\n" + "1. Run the pressure advance test for at least 3 speeds per acceleration value. It is recommended that the test is run " + "for at least the speed of the external perimeters, the speed of the internal perimeters and the fastest feature " + "print speed in your profile (usually its the sparse or solid infill). Then run them for the same speeds for the slowest and fastest print accelerations," + "and no faster than the recommended maximum acceleration as given by the klipper input shaper.\n" + "2. Take note of the optimal PA value for each volumetric flow speed and acceleration. You can find the flow number by selecting " + "flow from the color scheme drop down and move the horizontal slider over the PA pattern lines. The number should be visible " + "at the bottom of the page. The ideal PA value should be decreasing the higher the volumetric flow is. If it is not, confirm that your extruder is functioning correctly." + "The slower and with less acceleration you print, the larger the range of acceptable PA values. If no difference is visible, use the PA value from the faster test." + "3. Enter the triplets of PA values, Flow and Accelerations in the text box here and save your filament profile\n\n" + ""); + def->mode = comAdvanced; + //def->gui_flags = "serialized"; + def->multiline = true; + def->full_width = true; + def->height = 15; + def->set_default_value(new ConfigOptionStrings{"0,0,0\n0,0,0"}); + + def = this->add("adaptive_pressure_advance_overhangs", coBools); + def->label = L("Enable adaptive pressure advance for overhangs (beta)"); + def->tooltip = L("Enable adaptive PA for overhangs as well as when flow changes within the same feature. This is an experimental option, " + "as if the PA profile is not set accurately, it will cause uniformity issues on the external surfaces before and after overhangs.\n"); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBools{ false }); + + def = this->add("adaptive_pressure_advance_bridges", coFloats); + def->label = L("Pressure advance for bridges"); + def->tooltip = L("Pressure advance value for bridges. Set to 0 to disable. \n\n A lower PA value when printing bridges helps reduce the appearance of slight under extrusion " + "immediately after bridges. This is caused by the pressure drop in the nozzle when printing in the air and a lower PA helps counteract this."); + def->max = 2; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloats { 0.0 }); def = this->add("line_width", coFloatOrPercent); def->label = L("Default"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 67cdfef999..9e31eb5bfb 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1031,6 +1031,12 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloats, filament_flow_ratio)) ((ConfigOptionBools, enable_pressure_advance)) ((ConfigOptionFloats, pressure_advance)) + // Orca: adaptive pressure advance and calibration model + ((ConfigOptionBools, adaptive_pressure_advance)) + ((ConfigOptionBools, adaptive_pressure_advance_overhangs)) + ((ConfigOptionStrings, adaptive_pressure_advance_model)) + ((ConfigOptionFloats, adaptive_pressure_advance_bridges)) + // ((ConfigOptionFloat, fan_kickstart)) ((ConfigOptionBool, fan_speedup_overhangs)) ((ConfigOptionFloat, fan_speedup_time)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index b4f9959ebc..9fd2f823a0 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3223,11 +3223,6 @@ void TabFilament::build() optgroup->append_single_option_line("required_nozzle_HRC"); optgroup->append_single_option_line("default_filament_colour"); optgroup->append_single_option_line("filament_diameter"); - optgroup->append_single_option_line("pellet_flow_coefficient", "pellet-flow-coefficient"); - optgroup->append_single_option_line("filament_flow_ratio"); - - optgroup->append_single_option_line("enable_pressure_advance"); - optgroup->append_single_option_line("pressure_advance"); optgroup->append_single_option_line("filament_density"); optgroup->append_single_option_line("filament_shrink"); @@ -3249,6 +3244,25 @@ void TabFilament::build() on_value_change(opt_key, value); }; + // Orca: New section to focus on flow rate and PA to declutter general section + optgroup = page->new_optgroup(L("Flow ratio and Pressure Advance"), L"param_information"); + optgroup->append_single_option_line("pellet_flow_coefficient", "pellet-flow-coefficient"); + optgroup->append_single_option_line("filament_flow_ratio"); + + optgroup->append_single_option_line("enable_pressure_advance"); + optgroup->append_single_option_line("pressure_advance"); + + // Orca: adaptive pressure advance and calibration model + optgroup->append_single_option_line("adaptive_pressure_advance"); + optgroup->append_single_option_line("adaptive_pressure_advance_overhangs"); + optgroup->append_single_option_line("adaptive_pressure_advance_bridges"); + + option = optgroup->get_option("adaptive_pressure_advance_model"); + option.opt.full_width = true; + option.opt.is_code = true; + option.opt.height = 15; + optgroup->append_single_option_line(option); + // optgroup = page->new_optgroup(L("Print chamber temperature"), L"param_chamber_temp"); optgroup->append_single_option_line("chamber_temperature", "chamber-temperature"); @@ -3538,9 +3552,18 @@ void TabFilament::toggle_options() toggle_line("cool_plate_temp_initial_layer", support_multi_bed_types ); toggle_line("eng_plate_temp_initial_layer", support_multi_bed_types); toggle_line("textured_plate_temp_initial_layer", support_multi_bed_types); + + // Orca: adaptive pressure advance and calibration model + // If PA is not enabled, disable adaptive pressure advance and hide the model section + // If adaptive PA is not enabled, hide the adaptive PA model section + toggle_option("adaptive_pressure_advance", pa); + toggle_option("adaptive_pressure_advance_overhangs", pa); + bool has_adaptive_pa = m_config->opt_bool("adaptive_pressure_advance", 0); + toggle_line("adaptive_pressure_advance_overhangs", has_adaptive_pa && pa); + toggle_line("adaptive_pressure_advance_model", has_adaptive_pa && pa); + toggle_line("adaptive_pressure_advance_bridges", has_adaptive_pa && pa); bool is_pellet_printer = cfg.opt_bool("pellet_modded_printer"); - toggle_line("pellet_flow_coefficient", is_pellet_printer); toggle_line("filament_diameter", !is_pellet_printer); } From c1cdb57e9fc28d74635b0e5b0a36a9d2c6959112 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Sun, 28 Jul 2024 18:26:34 +0300 Subject: [PATCH 062/151] Reverse draft shield direction on even layers to reduce thermal stress. (#5789) * Reverse draft shield direction on even layers to reduce thermal stress and warping. * Use reverse() to make code clear. --- src/libslic3r/GCode.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 693fd36b25..4659552c63 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4574,6 +4574,8 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou // if spiral vase, we have to ensure that all contour are in the same orientation. loop.make_counter_clockwise(); } + if (loop.loop_role() == elrSkirt && (this->m_layer->id() % 2 == 1)) + loop.reverse(); // find the point of the loop that is closest to the current extruder position // or randomize if requested From b2b9c0c25a9d664aae0dc7fb56878eb1bccc44c6 Mon Sep 17 00:00:00 2001 From: Ocraftyone Date: Sun, 28 Jul 2024 12:15:16 -0400 Subject: [PATCH 063/151] Fix Preferences dialog sizing on multi monitor setups (#5820) --- src/slic3r/GUI/Preferences.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 0ba2af116c..06ff46b125 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -1004,7 +1004,7 @@ void PreferencesDialog::create() SetSizer(main_sizer); Layout(); Fit(); - int screen_height = wxGetDisplaySize().GetY(); + int screen_height = wxDisplay(m_parent).GetClientArea().GetHeight(); if (this->GetSize().GetY() > screen_height) this->SetSize(this->GetSize().GetX() + FromDIP(40), screen_height * 4 / 5); From 65195eb7657ebb1c030fa59ce2f51efdc96b9ccb Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Mon, 29 Jul 2024 14:13:50 +0300 Subject: [PATCH 064/151] Limit variable layer height displaying precision to 3 digits (#5795) * Limit variable layer height calculation and displaying precision to three digits. * Remove calculation rounding. --- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 511bbfa6fc..ca03a36393 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -383,7 +383,7 @@ std::string GLCanvas3D::LayersEditing::get_tooltip(const GLCanvas3D& canvas) con } } if (h > 0.0f) - ret = std::to_string(h); + ret = wxString::Format("%.3f",h).ToStdString(); } } return ret; From 0b73e870a815f014d91fe0a5c4fc6d064b9b2e80 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Mon, 29 Jul 2024 15:32:07 +0300 Subject: [PATCH 065/151] Suggest firmware retraction time (#5926) * Suggest firmware retraction time --- src/libslic3r/GCode/GCodeProcessor.cpp | 16 +++++++++++----- src/libslic3r/GCode/SpiralVase.cpp | 14 +++++++------- src/libslic3r/GCodeReader.cpp | 2 +- src/libslic3r/GCodeReader.hpp | 3 ++- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 69dbddfaa4..3f3a4ed4b8 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -695,7 +695,9 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st if (!disable_m73 && !processed &&!is_temporary_decoration(gcode_line) && (GCodeReader::GCodeLine::cmd_is(gcode_line, "G1") || GCodeReader::GCodeLine::cmd_is(gcode_line, "G2") || - GCodeReader::GCodeLine::cmd_is(gcode_line, "G3"))) { + GCodeReader::GCodeLine::cmd_is(gcode_line, "G3") || + GCodeReader::GCodeLine::cmd_is(gcode_line, "G10")|| + GCodeReader::GCodeLine::cmd_is(gcode_line, "G11"))) { // remove temporary lines, add lines M73 where needed unsigned int extra_lines_count = process_line_move(g1_lines_counter ++); if (extra_lines_count > 0) @@ -3813,14 +3815,18 @@ void GCodeProcessor::process_G29(const GCodeReader::GCodeLine& line) void GCodeProcessor::process_G10(const GCodeReader::GCodeLine& line) { - // stores retract move - store_move_vertex(EMoveType::Retract); + GCodeReader::GCodeLine g10; + g10.set(Axis::E, -this->m_parser.config().retraction_length.get_at(m_extruder_id)); + g10.set(Axis::F, this->m_parser.config().retraction_speed.get_at(m_extruder_id) * 60); + process_G1(g10); } void GCodeProcessor::process_G11(const GCodeReader::GCodeLine& line) { - // stores unretract move - store_move_vertex(EMoveType::Unretract); + GCodeReader::GCodeLine g11; + g11.set(Axis::E, this->m_parser.config().retraction_length.get_at(m_extruder_id) + this->m_parser.config().retract_restart_extra.get_at(m_extruder_id)); + g11.set(Axis::F, this->m_parser.config().deretraction_speed.get_at(m_extruder_id) * 60); + process_G1(g11); } void GCodeProcessor::process_G20(const GCodeReader::GCodeLine& line) diff --git a/src/libslic3r/GCode/SpiralVase.cpp b/src/libslic3r/GCode/SpiralVase.cpp index 8462e73111..8ffe7ef95b 100644 --- a/src/libslic3r/GCode/SpiralVase.cpp +++ b/src/libslic3r/GCode/SpiralVase.cpp @@ -131,7 +131,7 @@ std::string SpiralVase::process_layer(const std::string &gcode, bool last_layer) if (line.has_z() && !line.retracting(reader)) { // If this is the initial Z move of the layer, replace it with a // (redundant) move to the last Z of previous layer. - line.set(reader, Z, z); + line.set(Z, z); new_gcode += line.raw() + '\n'; return; } else { @@ -142,17 +142,17 @@ std::string SpiralVase::process_layer(const std::string &gcode, bool last_layer) float factor = len / total_layer_length; if (transition_in) // Transition layer, interpolate the amount of extrusion from zero to the final value. - line.set(reader, E, line.e() * factor, 5 /*decimal_digits*/); + line.set(E, line.e() * factor, 5 /*decimal_digits*/); else if (transition_out) { // We want the last layer to ramp down extrusion, but without changing z height! // So clone the line before we mess with its Z and duplicate it into a new layer that ramps down E // We add this new layer at the very end GCodeReader::GCodeLine transitionLine(line); - transitionLine.set(reader, E, line.e() * (1 - factor), 5 /*decimal_digits*/); + transitionLine.set(E, line.e() * (1 - factor), 5 /*decimal_digits*/); transition_gcode += transitionLine.raw() + '\n'; } // This line is the core of Spiral Vase mode, ramp up the Z smoothly - line.set(reader, Z, z + factor * layer_height); + line.set(Z, z + factor * layer_height); if (smooth_spiral) { // Now we also need to try to interpolate X and Y SpiralVase::SpiralPoint p(line.x(), line.y()); // Get current x/y coordinates @@ -171,10 +171,10 @@ std::string SpiralVase::process_layer(const std::string &gcode, bool last_layer) if (modified_dist_XY < 0.001) line.clear(); else { - line.set(reader, X, target.x); - line.set(reader, Y, target.y); + line.set(X, target.x); + line.set(Y, target.y); // Scale the extrusion amount according to change in length - line.set(reader, E, line.e() * modified_dist_XY / dist_XY, 5 /*decimal_digits*/); + line.set(E, line.e() * modified_dist_XY / dist_XY, 5 /*decimal_digits*/); last_point = target; } } else { diff --git a/src/libslic3r/GCodeReader.cpp b/src/libslic3r/GCodeReader.cpp index 1168378286..9889fe90cb 100644 --- a/src/libslic3r/GCodeReader.cpp +++ b/src/libslic3r/GCodeReader.cpp @@ -275,7 +275,7 @@ bool GCodeReader::GCodeLine::has_value(char axis, float &value) const return false; } -void GCodeReader::GCodeLine::set(const GCodeReader &reader, const Axis axis, const float new_value, const int decimal_digits) +void GCodeReader::GCodeLine::set(const Axis axis, const float new_value, const int decimal_digits) { std::ostringstream ss; ss << std::fixed << std::setprecision(decimal_digits) << new_value; diff --git a/src/libslic3r/GCodeReader.hpp b/src/libslic3r/GCodeReader.hpp index 52a37dde55..c0b868c6f7 100644 --- a/src/libslic3r/GCodeReader.hpp +++ b/src/libslic3r/GCodeReader.hpp @@ -50,7 +50,7 @@ public: bool extruding(const GCodeReader &reader) const { return (this->cmd_is("G1") || this->cmd_is("G2") || this->cmd_is("G3")) && this->dist_E(reader) > 0; } bool retracting(const GCodeReader &reader) const { return (this->cmd_is("G1") || this->cmd_is("G2") || this->cmd_is("G3")) && this->dist_E(reader) < 0; } bool travel() const { return (this->cmd_is("G1") || this->cmd_is("G2") || this->cmd_is("G3")) && ! this->has(E); } - void set(const GCodeReader &reader, const Axis axis, const float new_value, const int decimal_digits = 3); + void set(const Axis axis, const float new_value, const int decimal_digits = 3); bool has_x() const { return this->has(X); } bool has_y() const { return this->has(Y); } @@ -93,6 +93,7 @@ public: void reset() { memset(m_position, 0, sizeof(m_position)); } void apply_config(const GCodeConfig &config); void apply_config(const DynamicPrintConfig &config); + const GCodeConfig& config() { return m_config; }; template void parse_buffer(const std::string &buffer, Callback callback) From 4f5e3fe2e381b63a87171e1461b733e41d202032 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:34:00 +0000 Subject: [PATCH 066/151] Fix crossing max x axis & rise max print height of Ender-3 V3 KE (#5958) * Fix crossing max x axis & rise max print height of Ender-3 V3 KE * Merge branch 'main' into ender-3-V3-KE-4 * Merge branch 'main' into ender-3-V3-KE-4 --- .../machine/Creality Ender-3 V3 KE 0.4 nozzle.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json index d2253ed382..56a7c4bdaf 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json @@ -11,9 +11,9 @@ "printer_structure": "i3", "default_print_profile": "0.20mm Standard @Creality Ender3V3KE", "extruder_clearance_height_to_rod": "47", - "extruder_clearance_max_radius": "90", - "extruder_clearance_radius": "90", - "machine_load_filament_time": "11", + "extruder_clearance_max_radius": "90", + "extruder_clearance_radius": "90", + "machine_load_filament_time": "11", "nozzle_diameter": [ "0.4" ], @@ -23,7 +23,7 @@ "220x220", "0x220" ], - "printable_height": "240", + "printable_height": "245", "nozzle_type": "brass", "auxiliary_fan": "0", "machine_max_acceleration_extruding": [ @@ -120,7 +120,7 @@ "Creality Generic PLA @Ender-3V3-all" ], "machine_start_gcode": "SET_GCODE_VARIABLE MACRO=PRINTER_PARAM VARIABLE=fan0_min VALUE=30 ;compensate for fan speed\nSET_VELOCITY_LIMIT ACCEL_TO_DECEL=2500 ;revert accel_to_decel back to 2500\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nM140 S[bed_temperature_initial_layer_single] ;Set bed temp\nG28 X Y ;Home XY axes\nM190 S[bed_temperature_initial_layer_single] ;Wait for bed temp to stabilize\nG28 Z ;Home Z axis & load bed mesh\nBED_MESH_CALIBRATE PROBE_COUNT=6,6 ;Auto bed level\n\nM104 S[nozzle_temperature_initial_layer] ;Set nozzle temp\nG92 E0 ;Reset Extruder\nG1 X-2.0 Y20 Z0.3 F5000.0 ;Move to start position\nM109 S[nozzle_temperature_initial_layer] ;Wait for nozzle temp to stabilize\nG1 Z0.2 ;Lower nozzle to printing height\nG1 Y145.0 F1500.0 E15 ;Draw the first line\nG1 X-1.7 F5000.0 ;Move to side a little\nG1 Y30 F1500.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder", - "machine_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 Z{if max_layer_z < 50}25{else}5{endif} ;Raise Z more\nG90 ;Absolute positionning\nG1 X2 Y218 F3000 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM84 X Y E ;Disable all steppers but Z", + "machine_end_gcode": "G92 E0 ;Reset Extruder\nG1 E-1.2 Z{max_layer_z + 0.5} F1800 ;Retract and raise Z\n{if max_layer_z < 50}\nG1 Z{max_layer_z + 25} F900 ;Raise Z more\n{endif}\n\nG1 X2 Y218 F3000 ;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", "scan_first_layer": "0", "thumbnails": [ "96x96", From 4bb567433cb01d26a805c587ba42b439fbc4c056 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Mon, 29 Jul 2024 21:38:10 +0900 Subject: [PATCH 067/151] CI: Create Automated Workflow for Translation Catalog Updates (#5959) * CI: Automate translation catalog update Signed-off-by: GitHub * Update triggers for localization workflow Signed-off-by: GitHub * Rewrite HintsToPot with Python * Disable scheduled workflow runs * Apply formatting to HintsToPot.py * Add missing exit() call --- .github/workflows/update-translation.yml | 38 ++++++++++++++++++++++++ run_gettext.bat | 2 +- run_gettext.sh | 2 +- scripts/HintsToPot.py | 37 +++++++++++++++++++++++ 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/update-translation.yml create mode 100644 scripts/HintsToPot.py diff --git a/.github/workflows/update-translation.yml b/.github/workflows/update-translation.yml new file mode 100644 index 0000000000..af97e606e6 --- /dev/null +++ b/.github/workflows/update-translation.yml @@ -0,0 +1,38 @@ +name: Update Translation Catalog +on: + # schedule: + # - cron: 0 0 * * 1 + workflow_dispatch: + +jobs: + update_translation: + name: Update translation + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install gettext + run: | + sudo apt-get update + sudo apt-get install -y gettext + + - name: Update translation catalog + run: | + ./run_gettext.sh --full + git add localization/i18n/* + + - name: Commit translation catalog updates + uses: qoomon/actions--create-commit@v1 + id: commit + with: + message: Update translation catalog + skip-empty: true + + - name: Push changes + run: git push diff --git a/run_gettext.bat b/run_gettext.bat index 9a0425df1b..c095a3db0a 100644 --- a/run_gettext.bat +++ b/run_gettext.bat @@ -10,7 +10,7 @@ for %%a in (%*) do ( if %FULL_MODE%==1 ( .\tools\xgettext.exe --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost -f ./localization/i18n/list.txt -o ./localization/i18n/OrcaSlicer.pot - build\\src\\hints\\Release\\hintsToPot ./resources ./localization/i18n + python3 scripts/HintsToPot.py ./resources ./localization/i18n ) REM Print the current directory echo %cd% diff --git a/run_gettext.sh b/run_gettext.sh index f64f50f054..561d6da5ed 100755 --- a/run_gettext.sh +++ b/run_gettext.sh @@ -15,7 +15,7 @@ done if $FULL_MODE; then xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost -f ./localization/i18n/list.txt -o ./localization/i18n/OrcaSlicer.pot - ./build_arm64/src/hints/Release/hintsToPot.app/Contents/MacOS/hintsToPot ./resources ./localization/i18n + python3 scripts/HintsToPot.py ./resources ./localization/i18n fi diff --git a/scripts/HintsToPot.py b/scripts/HintsToPot.py new file mode 100644 index 0000000000..9fef62ee8c --- /dev/null +++ b/scripts/HintsToPot.py @@ -0,0 +1,37 @@ +# Helps converting hints.ini into POT + +import sys + +from configparser import ConfigParser +from pathlib import Path + + +def write_to_pot(path: Path, data: dict[str, str]): + with open(path, "a+t") as pot_file: + for key in data.keys(): + print( + f"\n#: resources/data/hints.ini: [{ key }]\nmsgid \"{ data[key]['text'] }\"\nmsgstr \"\"", + file=pot_file, + ) + + +def main(): + if len(sys.argv) != 3: + print("HINTS_TO_POT FAILED: WRONG NUM OF ARGS") + exit(-1) + path_to_ini = Path(sys.argv[1]).parent / "resources" / "data" / "hints.ini" + path_to_pot = Path(sys.argv[2]).parent / "i18n" / "OrcaSlicer.pot" + if not path_to_ini.exists(): + print("HINTS_TO_POT FAILED: PATH TO INI DOES NOT EXISTS") + print(str(path_to_ini)) + exit(-1) + config = ConfigParser() + with open(path_to_ini) as hints_file: + config.read_file(hints_file) + write_to_pot(path_to_pot, config._sections) + print("HINTS_TO_POT SUCCESS") + exit(0) + + +if __name__ == "__main__": + main() From dab6fa4db2ec6aedcb22f39e3a3de677a5b99d65 Mon Sep 17 00:00:00 2001 From: Ocraftyone Date: Mon, 29 Jul 2024 09:00:26 -0400 Subject: [PATCH 068/151] Fix Compile Warnings (#5963) * Fix calls to depreciated wxPen constructor * Fix use of wxTimerEvent * Fix unrecognized character escape sequence * Fix signed/unsigned mismatch At least as much as possible without significantly altering parts of the application * Clean unreferenced variables * fix mistyped namespace selector * Update deprecated calls * Fix preprocessor statement * Remove empty switch statements * Change int vector used as bool to bool vector * Remove empty control statements and related unused code * Change multi character constant to string constant * Fix discarded return value json::parse was being called on the object, rather than statically like it should be. Also, the value was not being captured. * Rename ICON_SIZE def used by MultiMachine By having the definition in the header, it causes issues when other files define ICON_SIZE. By renaming it to MM_ICON_SIZE, this lessens the issue. It would probably be ideal to have the definitions in the respective .cpp that use them, but it would make it less convenient to update the values if needed in the future. * Remove unused includes * Fix linux/macOS compilation * Hide unused-function errors on non-Windows systems * Disable signed/unsigned comparison mismatch error * Remove/Disable more unused variables Still TODO: check double for loop in Print.cpp * Remove unused variable that was missed * Remove unused variables in libraries in the src folder * Apply temporary fix for subobject linkage error * Remove/Disable last set of unused variables reported by GCC * remove redundant for loop * fix misspelled ifdef check * Update message on dialog * Fix hard-coded platform specific modifier keys * Remove duplicate for loop * Disable -Wmisleading-indentation warning * disable -Wswitch warning * Remove unused local typedefs * Fix -Wunused-value * Fix pragma error on Windows from subobject linkage fix * Fix -Waddress * Fix null conversions (-Wconversion-null) --------- Co-authored-by: SoftFever --- CMakeLists.txt | 17 ++++ src/BaseException.cpp | 2 +- src/OrcaSlicer.cpp | 29 +++---- src/admesh/connect.cpp | 2 +- src/admesh/normals.cpp | 2 +- src/imgui/imgui_widgets.cpp | 10 +-- src/imguizmo/ImGuizmo.cpp | 2 - .../include/libnest2d/geometry_traits_nfp.hpp | 1 - .../include/libnest2d/placers/nfpplacer.hpp | 1 - src/libslic3r/AppConfig.cpp | 2 - .../BeadingStrategy/BeadingStrategy.cpp | 1 - .../BeadingStrategyFactory.cpp | 1 - .../RedistributeBeadingStrategy.cpp | 1 - .../Arachne/SkeletalTrapezoidation.cpp | 3 +- .../Arachne/SkeletalTrapezoidationGraph.cpp | 3 - src/libslic3r/Arachne/utils/ExtrusionLine.cpp | 1 - src/libslic3r/Arachne/utils/SquareGrid.cpp | 1 - src/libslic3r/Arrange.cpp | 12 +-- src/libslic3r/BlacklistedLibraryCheck.cpp | 1 - src/libslic3r/Brim.cpp | 6 +- src/libslic3r/CSGMesh/ModelToCSGMesh.hpp | 2 +- src/libslic3r/Config.cpp | 3 +- src/libslic3r/ExtrusionEntityCollection.cpp | 1 - src/libslic3r/Fill/FillConcentricInternal.cpp | 3 - src/libslic3r/Fill/FillCrossHatch.cpp | 4 - src/libslic3r/Fill/Lightning/Generator.cpp | 3 +- src/libslic3r/FlushVolCalc.cpp | 1 - src/libslic3r/Format/3mf.cpp | 1 - src/libslic3r/Format/OBJ.cpp | 1 - src/libslic3r/Format/bbs_3mf.cpp | 18 ++-- src/libslic3r/Format/svg.cpp | 6 -- src/libslic3r/GCode.cpp | 27 +++--- src/libslic3r/GCode/ConflictChecker.cpp | 1 - src/libslic3r/GCode/GCodeProcessor.cpp | 1 - .../GCode/RetractWhenCrossingPerimeters.cpp | 2 - .../GCode/SmallAreaInfillFlowCompensator.hpp | 12 +++ src/libslic3r/GCode/ToolOrdering.cpp | 4 - src/libslic3r/GCode/WipeTower.cpp | 5 -- src/libslic3r/Geometry.cpp | 7 -- src/libslic3r/Geometry/Circle.cpp | 2 - src/libslic3r/Geometry/Voronoi.cpp | 1 - src/libslic3r/Geometry/VoronoiUtilsCgal.cpp | 1 - src/libslic3r/JumpPointSearch.cpp | 8 -- src/libslic3r/Line.cpp | 2 - src/libslic3r/MeshBoolean.cpp | 4 +- src/libslic3r/Model.cpp | 8 +- src/libslic3r/ModelArrange.cpp | 1 - src/libslic3r/MultiMaterialSegmentation.cpp | 2 - src/libslic3r/Orient.cpp | 15 ++-- src/libslic3r/PerimeterGenerator.cpp | 6 -- src/libslic3r/Polygon.cpp | 2 - src/libslic3r/Polyline.cpp | 2 - src/libslic3r/Preset.cpp | 1 - src/libslic3r/PresetBundle.cpp | 9 +- src/libslic3r/Print.cpp | 56 ++++++------ src/libslic3r/PrintObject.cpp | 14 ++- src/libslic3r/PrintObjectSlice.cpp | 9 +- src/libslic3r/Shape/TextShape.cpp | 2 - src/libslic3r/ShortEdgeCollapse.cpp | 1 - src/libslic3r/SlicesToTriangleMesh.cpp | 3 - src/libslic3r/Support/OrganicSupport.cpp | 6 -- src/libslic3r/Support/SupportParameters.cpp | 2 - src/libslic3r/SupportMaterial.cpp | 24 ++--- src/libslic3r/TreeSupport.cpp | 25 +----- src/libslic3r/TriangleMeshSlicer.cpp | 4 +- src/libslic3r/TriangleSetSampling.cpp | 1 - src/libslic3r/TriangulateWall.cpp | 4 +- src/libslic3r/Triangulation.cpp | 4 + src/libslic3r/calib.cpp | 5 +- src/libslic3r/utils.cpp | 12 +-- src/slic3r/GUI/3DScene.cpp | 4 +- src/slic3r/GUI/AMSMaterialsSetting.cpp | 3 +- src/slic3r/GUI/AmsMappingPopup.cpp | 5 -- src/slic3r/GUI/Auxiliary.cpp | 2 +- src/slic3r/GUI/AuxiliaryDataViewModel.cpp | 2 +- src/slic3r/GUI/BBLStatusBar.cpp | 2 - src/slic3r/GUI/BBLTopbar.cpp | 14 ++- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 9 -- src/slic3r/GUI/BindDialog.cpp | 1 - src/slic3r/GUI/CalibrationPanel.cpp | 17 ++-- src/slic3r/GUI/CalibrationPanel.hpp | 4 +- src/slic3r/GUI/CalibrationWizard.cpp | 3 - .../GUI/CalibrationWizardPresetPage.cpp | 1 - src/slic3r/GUI/ConfigManipulation.cpp | 4 - src/slic3r/GUI/ConfigWizard.cpp | 7 +- src/slic3r/GUI/CreatePresetsDialog.cpp | 9 +- src/slic3r/GUI/DailyTips.cpp | 6 -- src/slic3r/GUI/DeviceManager.cpp | 13 +-- src/slic3r/GUI/DownloadProgressDialog.cpp | 1 - src/slic3r/GUI/ExtrusionCalibration.cpp | 1 - src/slic3r/GUI/FileArchiveDialog.cpp | 1 - src/slic3r/GUI/GCodeViewer.cpp | 62 ++++--------- src/slic3r/GUI/GLCanvas3D.cpp | 40 ++++----- src/slic3r/GUI/GLTexture.cpp | 1 - src/slic3r/GUI/GLToolbar.cpp | 1 - src/slic3r/GUI/GUI_App.cpp | 36 ++++---- src/slic3r/GUI/GUI_AuxiliaryList.cpp | 2 - src/slic3r/GUI/GUI_Factories.cpp | 44 ++++------ src/slic3r/GUI/GUI_ObjectList.cpp | 55 +++++------- src/slic3r/GUI/GUI_ObjectSettings.cpp | 8 +- src/slic3r/GUI/GUI_ObjectTable.cpp | 31 ++----- src/slic3r/GUI/GUI_ObjectTableSettings.cpp | 2 - src/slic3r/GUI/GUI_Preview.cpp | 10 --- src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp | 3 +- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 10 --- src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp | 6 -- .../GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 2 - src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp | 14 +-- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 6 +- .../GUI/Gizmos/GizmoObjectManipulation.cpp | 13 --- src/slic3r/GUI/HintNotification.cpp | 3 +- src/slic3r/GUI/IMSlider.cpp | 8 +- src/slic3r/GUI/ImGuiWrapper.cpp | 8 +- src/slic3r/GUI/Jobs/ArrangeJob.cpp | 4 - src/slic3r/GUI/Jobs/FillBedJob.cpp | 8 +- src/slic3r/GUI/Jobs/OrientJob.cpp | 1 - src/slic3r/GUI/Jobs/PrintJob.cpp | 11 +-- src/slic3r/GUI/Jobs/RotoptimizeJob.cpp | 3 +- src/slic3r/GUI/Jobs/SendJob.cpp | 5 -- src/slic3r/GUI/KBShortcutsDialog.cpp | 37 ++------ src/slic3r/GUI/MainFrame.cpp | 23 ++--- src/slic3r/GUI/MediaFilePanel.cpp | 3 +- src/slic3r/GUI/MediaPlayCtrl.cpp | 6 +- src/slic3r/GUI/ModelMall.cpp | 2 +- src/slic3r/GUI/Monitor.cpp | 13 +-- src/slic3r/GUI/Monitor.hpp | 2 +- src/slic3r/GUI/MonitorBasePanel.cpp | 5 +- src/slic3r/GUI/MultiMachine.hpp | 8 +- src/slic3r/GUI/MultiMachineManagerPage.cpp | 14 +-- src/slic3r/GUI/MultiMachineManagerPage.hpp | 2 +- src/slic3r/GUI/MultiMachinePage.cpp | 6 +- src/slic3r/GUI/MultiMachinePage.hpp | 2 +- src/slic3r/GUI/MultiTaskManagerPage.cpp | 31 ++++--- src/slic3r/GUI/MultiTaskManagerPage.hpp | 2 +- src/slic3r/GUI/Notebook.hpp | 2 - src/slic3r/GUI/NotificationManager.cpp | 2 +- src/slic3r/GUI/OG_CustomCtrl.cpp | 1 - src/slic3r/GUI/ObjColorDialog.cpp | 5 -- src/slic3r/GUI/OptionsGroup.cpp | 4 - src/slic3r/GUI/PartPlate.cpp | 52 ++++------- src/slic3r/GUI/Plater.cpp | 76 ++++++---------- src/slic3r/GUI/Preferences.cpp | 4 +- src/slic3r/GUI/PresetComboBoxes.cpp | 9 +- src/slic3r/GUI/Printer/PrinterFileSystem.cpp | 1 - src/slic3r/GUI/PrinterWebView.cpp | 2 - src/slic3r/GUI/Project.cpp | 2 +- src/slic3r/GUI/RecenterDialog.cpp | 2 - src/slic3r/GUI/ReleaseNote.cpp | 1 - src/slic3r/GUI/RemovableDriveManager.cpp | 4 - src/slic3r/GUI/Search.cpp | 8 +- src/slic3r/GUI/SelectMachine.cpp | 32 ++----- src/slic3r/GUI/SelectMachine.hpp | 2 +- src/slic3r/GUI/Selection.cpp | 11 ++- src/slic3r/GUI/SendMultiMachinePage.cpp | 36 +++----- src/slic3r/GUI/SendMultiMachinePage.hpp | 2 +- src/slic3r/GUI/SendSystemInfoDialog.cpp | 2 +- src/slic3r/GUI/SendToPrinter.cpp | 6 -- .../GUI/SlicingProgressNotification.cpp | 4 +- src/slic3r/GUI/StatusPanel.cpp | 8 +- src/slic3r/GUI/Tab.cpp | 26 +----- src/slic3r/GUI/Tabbook.hpp | 2 - src/slic3r/GUI/UnsavedChangesDialog.cpp | 2 +- src/slic3r/GUI/UpdateDialogs.cpp | 11 ++- src/slic3r/GUI/UpgradePanel.cpp | 2 - src/slic3r/GUI/UserManager.cpp | 3 +- src/slic3r/GUI/WebDownPluginDlg.cpp | 12 +-- src/slic3r/GUI/WebGuideDialog.cpp | 14 ++- src/slic3r/GUI/WebUserLoginDialog.cpp | 3 - src/slic3r/GUI/WebViewDialog.cpp | 1 - src/slic3r/GUI/Widgets/AMSControl.cpp | 87 +++++++++---------- src/slic3r/GUI/Widgets/AMSControl.hpp | 2 +- src/slic3r/GUI/Widgets/ComboBox.cpp | 2 +- src/slic3r/GUI/Widgets/FanControl.cpp | 2 +- src/slic3r/GUI/Widgets/ImageSwitchButton.cpp | 2 - src/slic3r/GUI/Widgets/RoundedRectangle.cpp | 1 - src/slic3r/GUI/Widgets/SpinInput.cpp | 2 - src/slic3r/GUI/Widgets/StepCtrl.cpp | 1 - src/slic3r/GUI/Widgets/TempInput.cpp | 1 - src/slic3r/GUI/Widgets/WebView.cpp | 2 +- src/slic3r/GUI/WipeTowerDialog.cpp | 4 - src/slic3r/GUI/wxExtensions.cpp | 1 - src/slic3r/Utils/ASCIIFolding.cpp | 5 +- src/slic3r/Utils/CalibUtils.cpp | 11 ++- src/slic3r/Utils/ESP3D.cpp | 9 -- src/slic3r/Utils/Obico.cpp | 4 - src/slic3r/Utils/PresetUpdater.cpp | 1 - src/slic3r/Utils/UndoRedo.cpp | 6 +- 187 files changed, 494 insertions(+), 1101 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8854ab903d..ac25b14a1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,6 +121,9 @@ if (MSVC) # C4244: 'conversion' conversion from 'type1' to 'type2', possible loss of data. An integer type is converted to a smaller integer type. # C4267: The compiler detected a conversion from size_t to a smaller type. add_compile_options(/wd4244 /wd4267) + # Disable warnings on comparison of unsigned and signed + # C4018: signed/unsigned mismatch + add_compile_options(/wd4018) endif () if (${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15) @@ -249,6 +252,20 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP # On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error. add_compile_options(-Werror=return-type) + # Ignore unused functions warnings + add_compile_options(-Wno-unused-function) + + # Ignore signed/unsigned comparison warnings + add_compile_options(-Wno-sign-compare) + + # The mismatch of tabs and spaces throughout the project can sometimes + # cause this warning to appear even though the indentation is fine. + # Some includes also cause the warning + add_compile_options(-Wno-misleading-indentation) + + # Disable warning if enum value does not have a corresponding case in switch statement + add_compile_options(-Wno-switch) + # removes LOTS of extraneous Eigen warnings (GCC only supports it since 6.1) # https://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221 if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0) diff --git a/src/BaseException.cpp b/src/BaseException.cpp index 2443ebe4bb..705ac8f8c1 100644 --- a/src/BaseException.cpp +++ b/src/BaseException.cpp @@ -358,7 +358,7 @@ void CBaseException::ShowExceptionInformation() OutputString(_T("Exception Flag :0x%x "), m_pEp->ExceptionRecord->ExceptionFlags); OutputString(_T("NumberParameters :%ld \n"), m_pEp->ExceptionRecord->NumberParameters); - for (int i = 0; i < m_pEp->ExceptionRecord->NumberParameters; i++) + for (unsigned int i = 0; i < m_pEp->ExceptionRecord->NumberParameters; i++) { OutputString(_T("Param %d :0x%x \n"), i, m_pEp->ExceptionRecord->ExceptionInformation[i]); } diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index bb52a0aea1..71c39d874c 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -1190,9 +1190,8 @@ int CLI::run(int argc, char **argv) //BBS: add plate data related logic PlateDataPtrs plate_data_src; std::vector plate_obj_size_infos; - int arrange_option; int plate_to_slice = 0, filament_count = 0, duplicate_count = 0, real_duplicate_count = 0; - bool first_file = true, is_bbl_3mf = false, need_arrange = true, has_thumbnails = false, up_config_to_date = false, normative_check = true, duplicate_single_object = false, use_first_fila_as_default = false, minimum_save = false, enable_timelapse = false; + bool first_file = true, is_bbl_3mf = false, need_arrange = true, up_config_to_date = false, normative_check = true, duplicate_single_object = false, use_first_fila_as_default = false, minimum_save = false, enable_timelapse = false; bool allow_rotations = true, skip_modified_gcodes = false, avoid_extrusion_cali_region = false, skip_useless_pick = false, allow_newer_file = false; Semver file_version; std::map orients_requirement; @@ -1546,7 +1545,7 @@ int CLI::run(int argc, char **argv) { ModelObject* object = model.objects[obj_index]; - for (unsigned int clone_index = 1; clone_index < clone_count; clone_index++) + for (int clone_index = 1; clone_index < clone_count; clone_index++) { ModelObject* newObj = model.add_object(*object); newObj->name = object->name +"_"+ std::to_string(clone_index+1); @@ -1619,7 +1618,7 @@ int CLI::run(int argc, char **argv) } } catch (std::exception& e) { - boost::nowide::cerr << construct_assemble_list << ": " << e.what() << std::endl; + boost::nowide::cerr << "construct_assemble_list: " << e.what() << std::endl; record_exit_reson(outfile_dir, CLI_DATA_FILE_ERROR, 0, cli_errors[CLI_DATA_FILE_ERROR], sliced_info); flush_and_exit(CLI_DATA_FILE_ERROR); } @@ -2103,7 +2102,7 @@ int CLI::run(int argc, char **argv) record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); flush_and_exit(CLI_INVALID_PARAMS); } - for (unsigned int index = 0; index < filament_count; index ++) + for (int index = 0; index < filament_count; index ++) { std::string file = uptodate_filaments[index]; DynamicPrintConfig config; @@ -2220,7 +2219,7 @@ int CLI::run(int argc, char **argv) } //upwards check - bool process_compatible = false, machine_upwards = false, machine_switch = false; + bool process_compatible = false, /* machine_upwards = false, */ machine_switch = false; BOOST_LOG_TRIVIAL(info) << boost::format("current printer %1%, new printer %2%, current process %3%, new process %4%")%current_printer_name %new_printer_name %current_process_name %new_process_name; BOOST_LOG_TRIVIAL(info) << boost::format("current printer inherits %1%, new printer inherits %2%, current process inherits %3%, new process inherits %4%") %current_printer_system_name %new_printer_system_name %current_process_system_name %new_process_system_name; @@ -2290,7 +2289,7 @@ int CLI::run(int argc, char **argv) for (int index = 0; index < upward_compatible_printers.size(); index++) { if (upward_compatible_printers[index] == new_printer_system_name) { process_compatible = true; - machine_upwards = true; + // machine_upwards = true; BOOST_LOG_TRIVIAL(info) << boost::format("new printer is upward_compatible"); break; } @@ -2900,7 +2899,8 @@ int CLI::run(int argc, char **argv) for (auto& model : m_models) for (ModelObject* o : model.objects) { - ModelObject* new_object = m.add_object(*o); + /* ModelObject* new_object = */ + m.add_object(*o); //BOOST_LOG_TRIVIAL(info) << "object "<name <<", id :" << o->id().id << "\n"; //orients_requirement.emplace(new_object->id().id, orients_requirement[o->id().id]); //orients_requirement.erase(o->id().id); @@ -3343,7 +3343,6 @@ int CLI::run(int argc, char **argv) BOOST_LOG_TRIVIAL(info) << boost::format("downward_check: all failed, size %1%")%downward_check_size; break; } - Slic3r::GUI::PartPlate* cur_plate = (Slic3r::GUI::PartPlate *)partplate_list.get_plate(index); Vec3d size = plate_obj_size_infos[index].obj_bbox.size(); for (int index2 = 0; index2 < downward_check_size; index2 ++) @@ -3393,7 +3392,6 @@ int CLI::run(int argc, char **argv) } // Loop through transform options. - bool user_center_specified = false; Points beds = get_bed_shape(m_print_config); ArrangeParams arrange_cfg; @@ -3417,7 +3415,6 @@ int CLI::run(int argc, char **argv) ModelObject* new_object = m.add_object(); new_object->name = _u8L("Assembly"); new_object->add_instance(); - int idx = 0; for (auto& model : m_models) for (ModelObject* o : model.objects) { for (auto volume : o->volumes) { @@ -3519,7 +3516,6 @@ int CLI::run(int argc, char **argv) } } } else if (opt_key == "center") { - user_center_specified = true; for (auto &model : m_models) { model.add_default_instances(); // this affects instances: @@ -3819,7 +3815,6 @@ int CLI::run(int argc, char **argv) { //do arrange for plate ArrangePolygons selected, unselected; - Model& model = m_models[0]; arrange_cfg = ArrangeParams(); // reset all params get_print_sequence(cur_plate, m_print_config, arrange_cfg.is_seq_print); @@ -3845,7 +3840,6 @@ int CLI::run(int argc, char **argv) if (!arrange_cfg.is_seq_print && assemble_plate.filaments_count > 1) { //prepare the wipe tower - int plate_count = partplate_list.get_plate_count(); auto printer_structure_opt = m_print_config.option>("printer_structure"); const float tower_brim_width = m_print_config.option("prime_tower_width", true)->value; @@ -4231,7 +4225,6 @@ int CLI::run(int argc, char **argv) //float depth = v * (filaments_cnt - 1) / (layer_height * w); Vec3d wipe_tower_size = cur_plate->estimate_wipe_tower_size(m_print_config, w, v, filaments_cnt); - Vec3d plate_origin = cur_plate->get_origin(); int plate_width, plate_depth, plate_height; partplate_list.get_plate_size(plate_width, plate_depth, plate_height); float depth = wipe_tower_size(1); @@ -4610,7 +4603,7 @@ int CLI::run(int argc, char **argv) } // loop through action options - bool export_to_3mf = false, load_slicedata = false, export_slicedata = false, export_slicedata_error = false; + bool export_to_3mf = false, load_slicedata = false, export_slicedata = false; bool no_check = false; std::string export_3mf_file, load_slice_data_dir, export_slice_data_dir, export_stls_dir; std::vector calibration_thumbnails; @@ -5099,7 +5092,6 @@ int CLI::run(int argc, char **argv) int ret = print->export_cached_data(plate_dir, with_space); if (ret) { BOOST_LOG_TRIVIAL(error) << "plate "<< index+1<< ": export Slicing data error, ret=" << ret; - export_slicedata_error = true; if (fs::exists(plate_dir)) fs::remove_all(plate_dir); record_exit_reson(outfile_dir, ret, index+1, cli_errors[ret], sliced_info); @@ -5226,8 +5218,7 @@ int CLI::run(int argc, char **argv) bool need_regenerate_top_thumbnail = oriented_or_arranged || regenerate_thumbnails; bool need_create_thumbnail_group = false, need_create_no_light_group = false, need_create_top_group = false; - // get type and color for platedata - auto* filament_types = dynamic_cast(m_print_config.option("filament_type")); + // get color for platedata const ConfigOptionStrings* filament_color = dynamic_cast(m_print_config.option("filament_colour")); auto* filament_id = dynamic_cast(m_print_config.option("filament_ids")); const ConfigOptionFloats* nozzle_diameter_option = dynamic_cast(m_print_config.option("nozzle_diameter")); diff --git a/src/admesh/connect.cpp b/src/admesh/connect.cpp index 30a199120d..4cf78f076a 100644 --- a/src/admesh/connect.cpp +++ b/src/admesh/connect.cpp @@ -216,7 +216,7 @@ private: // This is a match. Record result in neighbors list. match_neighbors(edge, *link->next); // Delete the matched edge from the list. - HashEdge *temp = link->next; + // HashEdge *temp = link->next; link->next = link->next->next; // pool.destroy(temp); #ifndef NDEBUG diff --git a/src/admesh/normals.cpp b/src/admesh/normals.cpp index f74ba01b6d..02fb16bb80 100644 --- a/src/admesh/normals.cpp +++ b/src/admesh/normals.cpp @@ -193,7 +193,7 @@ void stl_fix_normal_directions(stl_file *stl) norm_sw[facet_num] = 1; // Record this one as being fixed. ++ checked; } - stl_normal *temp = head->next; // Delete this facet from the list. + // stl_normal *temp = head->next; // Delete this facet from the list. head->next = head->next->next; // pool.destroy(temp); } else { // If we ran out of facets to fix: All of the facets in this part have been fixed. diff --git a/src/imgui/imgui_widgets.cpp b/src/imgui/imgui_widgets.cpp index ded72f4178..054312cfc0 100644 --- a/src/imgui/imgui_widgets.cpp +++ b/src/imgui/imgui_widgets.cpp @@ -768,11 +768,9 @@ bool ImGui::BBLButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFl bool hovered, held; bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags); - bool b_hover = false; if (hovered) { PushStyleColor(ImGuiCol_Text,GetColorU32(ImGuiCol_CheckMark)); - b_hover = true; } // Render @@ -4167,8 +4165,6 @@ bool ImGui::BBLInputScalar(const char *label, ImGuiDataType data_type, void *p_d const ImRect frame_bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2.0f)); // Tabbing or CTRL-clicking on Drag turns it into an InputText const bool hovered = ItemHoverable(frame_bb, id); - // We are only allowed to access the state if we are already the active widget. - ImGuiInputTextState *state = GetInputTextState(id); bool push_color_count = 0; if (hovered || g.ActiveId == id) { @@ -6298,9 +6294,9 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl RenderFrameBorder(bb.Min, bb.Max, rounding); else #ifdef __APPLE__ - window->DrawList->AddRect(bb.Min - ImVec2(3, 3), bb.Max + ImVec2(3, 3), GetColorU32(ImGuiCol_FrameBg), rounding * 2,NULL,4.0f);; // Color button are often in need of some sort of border + window->DrawList->AddRect(bb.Min - ImVec2(3, 3), bb.Max + ImVec2(3, 3), GetColorU32(ImGuiCol_FrameBg), rounding * 2,0,4.0f);; // Color button are often in need of some sort of border #else - window->DrawList->AddRect(bb.Min - ImVec2(2, 2), bb.Max + ImVec2(2, 2), GetColorU32(ImGuiCol_FrameBg), rounding * 2,NULL,3.0f); // Color button are often in need of some sort of border + window->DrawList->AddRect(bb.Min - ImVec2(2, 2), bb.Max + ImVec2(2, 2), GetColorU32(ImGuiCol_FrameBg), rounding * 2,0,3.0f); // Color button are often in need of some sort of border #endif } @@ -7097,7 +7093,6 @@ bool ImGui::BBLImageSelectable(ImTextureID user_texture_id, const ImVec2& size_a // Text stays at the submission position, but bounding box may be extended on both sides const float arrow_size = (flags & ImGuiComboFlags_NoArrowButton) ? 0.0f : GetFrameHeight(); - const ImVec2 text_min = ImVec2(pos.x + arrow_size, pos.y); const ImVec2 text_max(min_x + size.x, pos.y + size.y); // Selectables are meant to be tightly packed together with no click-gap, so we extend their box to cover spacing between selectable. @@ -7209,7 +7204,6 @@ bool ImGui::BBLImageSelectable(ImTextureID user_texture_id, const ImVec2& size_a if (flags & ImGuiSelectableFlags_Disabled) PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); // Render - const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button); ImVec2 p_min = bb.Min + ImVec2(style.ItemInnerSpacing.x, (bb.Max.y - bb.Min.y - font_size.y) / 2); ImVec2 p_max = p_min + font_size; window->DrawList->AddImage(user_texture_id, p_min, p_max, uv0, uv1, selected || (held && hovered) ? GetColorU32(ImVec4(1.f, 1.f, 1.f, 1.f)) : GetColorU32(tint_col)); diff --git a/src/imguizmo/ImGuizmo.cpp b/src/imguizmo/ImGuizmo.cpp index 1acf8b63e4..0f717395f9 100644 --- a/src/imguizmo/ImGuizmo.cpp +++ b/src/imguizmo/ImGuizmo.cpp @@ -2807,7 +2807,6 @@ namespace IMGUIZMO_NAMESPACE { static bool isDraging = false; static bool isClicking = false; - static bool isInside = false; static vec_t interpolationUp; static vec_t interpolationDir; static int interpolationFrames = 0; @@ -3055,7 +3054,6 @@ namespace IMGUIZMO_NAMESPACE LookAt(&newEye.x, &camTarget.x, &newUp.x, view); viewUpdated = true; } - isInside = gContext.mbMouseOver && ImRect(position, position + size).Contains(io.MousePos); if (io.MouseDown[0] && (fabsf(io.MouseDelta[0]) || fabsf(io.MouseDelta[1])) && isClicking) { diff --git a/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp b/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp index ab5f7678fd..4f8cf964b9 100644 --- a/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp +++ b/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp @@ -182,7 +182,6 @@ inline TPoint referenceVertex(const RawShape& sh) template inline NfpResult nfpInnerRectBed(const RawBox &bed, const RawShape &other) { using Vertex = TPoint; - using Edge = _Segment; namespace sl = shapelike; auto sbox = sl::boundingBox(other); diff --git a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp index 65a3344b04..ebe3da6c5d 100644 --- a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp @@ -1119,7 +1119,6 @@ private: for (const Item& item : items_) { if (!item.is_virt_object) { extruders.insert(item.extrude_ids.begin(), item.extrude_ids.end()); } } - bool need_wipe_tower = extruders.size() > 1; std::vector objs,excludes; for (const Item &item : items_) { diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 50f89935f0..7ab0ad2329 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -18,9 +18,7 @@ #include #include #include -#include #include -#include #include #include #include diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp index b57c84d639..6e344daf58 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp @@ -1,7 +1,6 @@ //Copyright (c) 2022 Ultimaker B.V. //CuraEngine is released under the terms of the AGPLv3 or higher. -#include #include "BeadingStrategy.hpp" #include "Point.hpp" diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp index 97acd271ac..c42ef3d2f3 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp @@ -9,7 +9,6 @@ #include "RedistributeBeadingStrategy.hpp" #include "OuterWallInsetBeadingStrategy.hpp" -#include #include namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp index 2b4dda0272..93ffdfb750 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp @@ -3,7 +3,6 @@ #include "RedistributeBeadingStrategy.hpp" -#include #include namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index 19d49c3e12..9278fb49b7 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -1595,7 +1595,6 @@ SkeletalTrapezoidation::edge_t* SkeletalTrapezoidation::getQuadMaxRedgeTo(edge_t void SkeletalTrapezoidation::propagateBeadingsUpward(std::vector& upward_quad_mids, ptr_vector_t& node_beadings) { - const auto _central_filter_dist = central_filter_dist(); for (auto upward_quad_mids_it = upward_quad_mids.rbegin(); upward_quad_mids_it != upward_quad_mids.rend(); ++upward_quad_mids_it) { edge_t* upward_edge = *upward_quad_mids_it; @@ -1612,7 +1611,7 @@ void SkeletalTrapezoidation::propagateBeadingsUpward(std::vector& upwar { // Only propagate to places where there is place continue; } - assert((upward_edge->from->data.distance_to_boundary != upward_edge->to->data.distance_to_boundary || shorter_then(upward_edge->to->p - upward_edge->from->p, _central_filter_dist)) && "zero difference R edges should always be central"); + assert((upward_edge->from->data.distance_to_boundary != upward_edge->to->data.distance_to_boundary || shorter_then(upward_edge->to->p - upward_edge->from->p, central_filter_dist())) && "zero difference R edges should always be central"); coord_t length = (upward_edge->to->p - upward_edge->from->p).cast().norm(); BeadingPropagation upper_beading = lower_beading; upper_beading.dist_to_bottom_source += length; diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp index e87bc4db7c..3909868bee 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp @@ -7,9 +7,6 @@ #include -#include "utils/linearAlg2D.hpp" -#include "../Line.hpp" - namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp index ac7b88af83..b671b80735 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp +++ b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp @@ -4,7 +4,6 @@ #include #include "ExtrusionLine.hpp" -#include "linearAlg2D.hpp" #include "../../VariableWidth.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/utils/SquareGrid.cpp b/src/libslic3r/Arachne/utils/SquareGrid.cpp index ae89965795..856eb5968b 100644 --- a/src/libslic3r/Arachne/utils/SquareGrid.cpp +++ b/src/libslic3r/Arachne/utils/SquareGrid.cpp @@ -2,7 +2,6 @@ //CuraEngine is released under the terms of the AGPLv3 or higher. #include "SquareGrid.hpp" -#include "../../Point.hpp" using namespace Slic3r::Arachne; diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index d82997aaa9..f9559ede24 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -199,23 +199,19 @@ void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPr } if (std::abs(a00) > EPSILON) { - double db1_2, db1_6, db1_12, db1_24, db1_20, db1_60; - double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; + double db1_2, db1_6, db1_12, db1_24; + double m00, m10, m01, m20, m11, m02; if (a00 > 0) { db1_2 = 0.5; db1_6 = 0.16666666666666666666666666666667; db1_12 = 0.083333333333333333333333333333333; db1_24 = 0.041666666666666666666666666666667; - db1_20 = 0.05; - db1_60 = 0.016666666666666666666666666666667; } else { db1_2 = -0.5; db1_6 = -0.16666666666666666666666666666667; db1_12 = -0.083333333333333333333333333333333; db1_24 = -0.041666666666666666666666666666667; - db1_20 = -0.05; - db1_60 = -0.016666666666666666666666666666667; } m00 = a00 * db1_2; m10 = a10 * db1_6; @@ -223,10 +219,6 @@ void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPr m20 = a20 * db1_12; m11 = a11 * db1_24; m02 = a02 * db1_12; - m30 = a30 * db1_20; - m21 = a21 * db1_60; - m12 = a12 * db1_60; - m03 = a03 * db1_20; double cx = m10 / m00; double cy = m01 / m00; diff --git a/src/libslic3r/BlacklistedLibraryCheck.cpp b/src/libslic3r/BlacklistedLibraryCheck.cpp index 938f542497..2c9bf9b8e9 100644 --- a/src/libslic3r/BlacklistedLibraryCheck.cpp +++ b/src/libslic3r/BlacklistedLibraryCheck.cpp @@ -1,6 +1,5 @@ #include "BlacklistedLibraryCheck.hpp" -#include #include #ifdef WIN32 diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index f59600971f..6bfa2c37e7 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -576,7 +576,6 @@ double getadhesionCoeff(const PrintObject* printObject) auto& insts = printObject->instances(); auto objectVolumes = insts[0].model_instance->get_object()->volumes; - auto print = printObject->print(); std::vector extrudersFirstLayer; auto firstLayerRegions = printObject->layers().front()->regions(); if (!firstLayerRegions.empty()) { @@ -901,8 +900,7 @@ static ExPolygons outer_inner_brim_area(const Print& print, Polygons holes_object; Polygons holes_support; if (objectWithExtruder.second == extruderNo && brimToWrite.at(object->id()).obj) { - double deltaT = getTemperatureFromExtruder(object); - double adhesion = getadhesionCoeff(object); + double adhension = getadhesionCoeff(object); double maxSpeed = Model::findMaxSpeed(object->model_object()); // BBS: brims are generated by volume groups for (const auto& volumeGroup : object->firstLayerObjGroups()) { @@ -1585,7 +1583,6 @@ static void make_inner_brim(const Print& print, const ConstPrintObjectPtrs& top_ //BBS: generate out brim by offseting ExPolygons 'islands_area_ex' Polygons tryExPolygonOffset(const ExPolygons islandAreaEx, const Print& print) { - const auto scaled_resolution = scaled(print.config().resolution.value); Polygons loops; ExPolygons islands_ex; Flow flow = print.brim_flow(); @@ -1660,7 +1657,6 @@ void make_brim(const Print& print, PrintTryCancel try_cancel, Polygons& islands_ std::map brimAreaMap; std::map supportBrimAreaMap; Flow flow = print.brim_flow(); - const auto scaled_resolution = scaled(print.config().resolution.value); ExPolygons islands_area_ex = outer_inner_brim_area(print, float(flow.scaled_spacing()), brimAreaMap, supportBrimAreaMap, objPrintVec, printExtruders); diff --git a/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp b/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp index 5963b29109..e5038df54b 100644 --- a/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp +++ b/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp @@ -28,7 +28,7 @@ bool model_to_csgmesh(const ModelObject &mo, { bool do_positives = parts_to_include & mpartsPositive; bool do_negatives = parts_to_include & mpartsNegative; - bool do_drillholes = parts_to_include & mpartsDrillHoles; + // bool do_drillholes = parts_to_include & mpartsDrillHoles; bool do_splits = parts_to_include & mpartsDoSplits; bool has_splitable_volume = false; diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index e826bb4c5b..d74e5ef3bd 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -775,10 +775,9 @@ ConfigSubstitutions ConfigBase::load(const std::string &file, ForwardCompatibili //BBS: add json support ConfigSubstitutions ConfigBase::load_from_json(const std::string &file, ForwardCompatibilitySubstitutionRule compatibility_rule, std::map& key_values, std::string& reason) { - int ret = 0; ConfigSubstitutionContext substitutions_ctxt(compatibility_rule); - ret = load_from_json(file, substitutions_ctxt, true, key_values, reason); + load_from_json(file, substitutions_ctxt, true, key_values, reason); return std::move(substitutions_ctxt.substitutions); } diff --git a/src/libslic3r/ExtrusionEntityCollection.cpp b/src/libslic3r/ExtrusionEntityCollection.cpp index 9a37ff3ac1..3383d0de34 100644 --- a/src/libslic3r/ExtrusionEntityCollection.cpp +++ b/src/libslic3r/ExtrusionEntityCollection.cpp @@ -2,7 +2,6 @@ #include "ShortestPath.hpp" #include #include -#include namespace Slic3r { diff --git a/src/libslic3r/Fill/FillConcentricInternal.cpp b/src/libslic3r/Fill/FillConcentricInternal.cpp index d565992ea1..1deb99183a 100644 --- a/src/libslic3r/Fill/FillConcentricInternal.cpp +++ b/src/libslic3r/Fill/FillConcentricInternal.cpp @@ -1,6 +1,3 @@ -#include "../ClipperUtils.hpp" -#include "../ExPolygon.hpp" -#include "../Surface.hpp" #include "../VariableWidth.hpp" #include "Arachne/WallToolPaths.hpp" diff --git a/src/libslic3r/Fill/FillCrossHatch.cpp b/src/libslic3r/Fill/FillCrossHatch.cpp index 10f421bef3..a6f05b65d5 100644 --- a/src/libslic3r/Fill/FillCrossHatch.cpp +++ b/src/libslic3r/Fill/FillCrossHatch.cpp @@ -1,6 +1,4 @@ -#include "../ClipperUtils.hpp" #include "../ShortestPath.hpp" -#include "../Surface.hpp" #include #include "FillCrossHatch.hpp" @@ -65,7 +63,6 @@ static Polylines generate_transform_pattern(double inprogress, int direction, co odd_poly.points.reserve(num_of_cycle * one_cycle.size()); // replicate to odd line - Point translate = Point(0, 0); for (size_t i = 0; i < num_of_cycle; i++) { Polyline odd_points; odd_points = Polyline(one_cycle); @@ -152,7 +149,6 @@ static Polylines generate_infill_layers(coordf_t z_height, double repeat_ratio, coordf_t period = trans_layer_size + repeat_layer_size; coordf_t remains = z_height - std::floor(z_height / period) * period; coordf_t trans_z = remains - repeat_layer_size; // put repeat layer first. - coordf_t repeat_z = remains; int phase = fmod(z_height, period * 2) - (period - 1); // add epsilon int direction = phase <= 0 ? -1 : 1; diff --git a/src/libslic3r/Fill/Lightning/Generator.cpp b/src/libslic3r/Fill/Lightning/Generator.cpp index bf1142ee45..a0cbe2b21e 100644 --- a/src/libslic3r/Fill/Lightning/Generator.cpp +++ b/src/libslic3r/Fill/Lightning/Generator.cpp @@ -4,7 +4,6 @@ #include "Generator.hpp" #include "TreeNode.hpp" -#include "../../ClipperUtils.hpp" #include "../../Layer.hpp" #include "../../Print.hpp" @@ -35,7 +34,7 @@ static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag rand_init = true; } - int rand_num = rand() % 1000000; + // int rand_num = rand() % 1000000; //makedir("./SVG"); std::string prefix = "./SVG/"; std::string suffix = ".svg"; diff --git a/src/libslic3r/FlushVolCalc.cpp b/src/libslic3r/FlushVolCalc.cpp index 29cbcbe401..c135b93948 100644 --- a/src/libslic3r/FlushVolCalc.cpp +++ b/src/libslic3r/FlushVolCalc.cpp @@ -1,5 +1,4 @@ #include -#include #include "slic3r/Utils/ColorSpaceConvert.hpp" #include "FlushVolCalc.hpp" diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 894de0549b..20007ee579 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -298,7 +298,6 @@ bool PrusaFileParser::check_3mf_from_prusa(const std::string filename) const std::string model_file = "3D/3dmodel.model"; int model_file_index = mz_zip_reader_locate_file(&archive, model_file.c_str(), nullptr, 0); if (model_file_index != -1) { - int depth = 0; m_parser = XML_ParserCreate(nullptr); XML_SetUserData(m_parser, (void *) this); XML_SetElementHandler(m_parser, start_element_handler, nullptr); diff --git a/src/libslic3r/Format/OBJ.cpp b/src/libslic3r/Format/OBJ.cpp index abaae3692b..f9a19d7a1b 100644 --- a/src/libslic3r/Format/OBJ.cpp +++ b/src/libslic3r/Format/OBJ.cpp @@ -100,7 +100,6 @@ bool load_obj(const char *path, TriangleMesh *meshptr, ObjInfo& obj_info, std::s obj_info.is_single_mtl = data.usemtls.size() == 1 && mtl_data.new_mtl_unmap.size() == 1; obj_info.face_colors.reserve(num_faces + num_quads); } - bool has_color = data.has_vertex_color; for (size_t i = 0; i < num_vertices; ++ i) { size_t j = i * OBJ_VERTEX_LENGTH; its.vertices.emplace_back(data.coordinates[j], data.coordinates[j + 1], data.coordinates[j + 2]); diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 7df4fbca49..191246af74 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -878,7 +878,6 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool extract_object_model() { mz_zip_archive archive; - mz_zip_archive_file_stat stat; mz_zip_zero_struct(&archive); if (!open_zip_reader(&archive, zip_path)) { @@ -1617,9 +1616,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } else { _extract_xml_from_archive(archive, sub_rels, _handle_start_relationships_element, _handle_end_relationships_element); - int index = 0; #if 0 + int index = 0; for (auto path : m_sub_model_paths) { if (proFn) { proFn(IMPORT_STAGE_READ_FILES, ++index, 3 + m_sub_model_paths.size(), cb_cancel); @@ -2219,7 +2218,6 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _BBS_3MF_Importer::_extract_from_archive(mz_zip_archive& archive, std::string const & path, std::function extract, bool restore) { - mz_uint num_entries = mz_zip_reader_get_num_files(&archive); mz_zip_archive_file_stat stat; std::string path2 = path; if (path2.front() == '/') path2 = path2.substr(1); @@ -3319,9 +3317,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Adjust backup object/volume id std::istringstream iss(m_curr_object->uuid); int backup_id; - bool need_replace = false; + // bool need_replace = false; if (iss >> std::hex >> backup_id) { - need_replace = (m_curr_object->id != backup_id); + // need_replace = (m_curr_object->id != backup_id); m_curr_object->id = backup_id; } if (!m_curr_object->components.empty()) @@ -4994,9 +4992,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (is_bbl_3mf && boost::ends_with(current_object->uuid, OBJECT_UUID_SUFFIX) && top_importer->m_load_restore) { std::istringstream iss(current_object->uuid); int backup_id; - bool need_replace = false; + // bool need_replace = false; if (iss >> std::hex >> backup_id) { - need_replace = (current_object->id != backup_id); + // need_replace = (current_object->id != backup_id); current_object->id = backup_id; } //if (need_replace) @@ -5991,8 +5989,6 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) auto src_gcode_file = plate_data->gcode_file; boost::filesystem::ifstream ifs(src_gcode_file, std::ios::binary); std::string buf(64 * 1024, 0); - const std::size_t & size = boost::filesystem::file_size(src_gcode_file); - std::size_t left_size = size; while (ifs) { ifs.read(buf.data(), buf.size()); int read_bytes = ifs.gcount(); @@ -6230,7 +6226,6 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _BBS_3MF_Exporter::_add_bbox_file_to_archive(mz_zip_archive& archive, const PlateBBoxData& id_bboxes, int index) { - bool res = false; nlohmann::json j; id_bboxes.to_json(j); std::string out = j.dump(); @@ -6620,7 +6615,6 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) auto iter = objects_data.find(objects[i]); ObjectToObjectDataMap objects_data2; objects_data2.insert(*iter); - auto & object = *iter->second.object; mz_zip_archive archive; mz_zip_zero_struct(&archive); mz_zip_writer_init_heap(&archive, 0, 1024 * 1024); @@ -7537,7 +7531,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (!m_skip_model && instance_size > 0) { - for (unsigned int j = 0; j < instance_size; ++j) + for (int j = 0; j < instance_size; ++j) { stream << " <" << INSTANCE_TAG << ">\n"; int obj_id = plate_data->objects_and_instances[j].first; diff --git a/src/libslic3r/Format/svg.cpp b/src/libslic3r/Format/svg.cpp index 4a96274b99..ed170cf570 100644 --- a/src/libslic3r/Format/svg.cpp +++ b/src/libslic3r/Format/svg.cpp @@ -113,9 +113,6 @@ double get_profile_area(std::vector> profile_line_poin double area = 0; for (auto line_points : profile_line_points) { - bool flag = true; - if (line_points.second.Y() < line_points.first.Y()) flag = false; - area += (line_points.second.X() + line_points.first.X() - 2 * min_x) * (line_points.second.Y() - line_points.first.Y()) / 2; } @@ -137,8 +134,6 @@ bool get_svg_profile(const char *path, std::vector &element_infos, int name_index = 1; for (NSVGshape *shape = svg_data->shapes; shape; shape = shape->next) { - char * id = shape->id; - int interpolation_precision = 10; // Number of interpolation points float step = 1.0f / float(interpolation_precision - 1); @@ -384,7 +379,6 @@ bool load_svg(const char *path, Model *model, std::string &message) ModelObject *new_object = model->add_object(); // new_object->name ? new_object->input_file = path; - auto stage_unit3 = stl.size() / LOAD_STEP_STAGE_UNIT_NUM + 1; for (size_t i = 0; i < stl.size(); i++) { // BBS: maybe mesh is empty from step file. Don't add if (stl[i].stats.number_of_facets > 0) { diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 4659552c63..ee49764808 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -116,7 +116,6 @@ static std::vector get_path_of_change_filament(const Print& print) if (excluse_area.size() != 4) return out_points; - double cutter_area_x = excluse_area[2].x() + 2; double cutter_area_y = excluse_area[2].y() + 2; double start_x_position = start_point.x(); @@ -2587,7 +2586,6 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato m_avoid_crossing_perimeters.use_external_mp_once(); // BBS. change tool before moving to origin point. if (m_writer.need_toolchange(initial_extruder_id)) { - const PrintObjectConfig& object_config = object.config(); coordf_t initial_layer_print_height = print.config().initial_layer_print_height.value; file.write(this->set_extruder(initial_extruder_id, initial_layer_print_height, true)); prime_extruder = true; @@ -3370,14 +3368,17 @@ namespace ProcessLayer const PrintConfig &config) { std::string gcode; - // BBS - bool single_filament_print = config.filament_diameter.size() == 1; if (custom_gcode != nullptr) { // Extruder switches are processed by LayerTools, they should be filtered out. assert(custom_gcode->type != CustomGCode::ToolChange); CustomGCode::Type gcode_type = custom_gcode->type; + + //BBS: inserting color gcode is removed +#if 0 + // BBS + bool single_filament_print = config.filament_diameter.size() == 1; bool color_change = gcode_type == CustomGCode::ColorChange; bool tool_change = gcode_type == CustomGCode::ToolChange; // Tool Change is applied as Color Change for a single extruder printer only. @@ -3389,8 +3390,7 @@ namespace ProcessLayer m600_extruder_before_layer = custom_gcode->extruder - 1; else if (gcode_type == CustomGCode::PausePrint) pause_print_msg = custom_gcode->extra; - //BBS: inserting color gcode is removed -#if 0 + // we should add or not colorprint_change in respect to nozzle_diameter count instead of really used extruders count if (color_change || tool_change) { @@ -3453,8 +3453,8 @@ namespace Skirt { { // Prime all extruders printing over the 1st layer over the skirt lines. size_t n_loops = print.skirt().entities.size(); - size_t n_tools = layer_tools.extruders.size(); - size_t lines_per_extruder = (n_loops + n_tools - 1) / n_tools; + // size_t n_tools = layer_tools.extruders.size(); + // size_t lines_per_extruder = (n_loops + n_tools - 1) / n_tools; // BBS. Extrude skirt with first extruder if min_skirt_length is zero //ORCA: Always extrude skirt with first extruder, independantly of if the minimum skirt length is zero or not. The code below @@ -3809,7 +3809,8 @@ LayerResult GCode::process_layer( Skirt::make_skirt_loops_per_extruder_other_layers(print, layer_tools, m_skirt_done); // BBS: get next extruder according to flush and soluble - auto get_next_extruder = [&](int current_extruder,const std::vector&extruders) { + // Orca: Left unused due to removed code below +/* auto get_next_extruder = [&](int current_extruder,const std::vector&extruders) { std::vector flush_matrix(cast(m_config.flush_volumes_matrix.values)); const unsigned int number_of_extruders = (unsigned int)(sqrt(flush_matrix.size()) + EPSILON); // Extract purging volumes for each extruder pair: @@ -3827,7 +3828,7 @@ LayerResult GCode::process_layer( } } return next_extruder; - }; + }; */ if (m_config.enable_overhang_speed && !m_config.overhang_speed_classic) { for (const auto &layer_to_print : layers) { @@ -4960,8 +4961,8 @@ std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fill std::string gcode; if (! support_fills.entities.empty()) { - const double support_speed = m_config.support_speed.value; - const double support_interface_speed = m_config.get_abs_value("support_interface_speed"); + // const double support_speed = m_config.support_speed.value; + // const double support_interface_speed = m_config.get_abs_value("support_interface_speed"); for (const ExtrusionEntity *ee : support_fills.entities) { ExtrusionRole role = ee->role(); assert(role == erSupportMaterial || role == erSupportMaterialInterface || role == erSupportTransition); @@ -6127,7 +6128,6 @@ bool GCode::needs_retraction(const Polyline &travel, ExtrusionRole role, LiftTyp for (int i = 0; i < m_config.z_hop.size(); i++) max_z_hop = std::max(max_z_hop, (float)m_config.z_hop.get_at(i)); float travel_len_thresh = scale_(max_z_hop / tan(this->writer().extruder()->travel_slope())); - float accum_len = 0.f; Polyline clipped_travel; clipped_travel.append(Polyline(travel.points[0], travel.points[1])); @@ -6229,7 +6229,6 @@ std::string GCode::retract(bool toolchange, bool is_last_retraction, LiftType li } if (needs_lift && can_lift) { - size_t extruder_id = m_writer.extruder()->id(); gcode += m_writer.lift(!m_spiral_vase ? lift_type : LiftType::NormalLift); } diff --git a/src/libslic3r/GCode/ConflictChecker.cpp b/src/libslic3r/GCode/ConflictChecker.cpp index fb69372a9a..8b8e43aea2 100644 --- a/src/libslic3r/GCode/ConflictChecker.cpp +++ b/src/libslic3r/GCode/ConflictChecker.cpp @@ -28,7 +28,6 @@ inline Grids line_rasterization(const Line &line, int64_t xdist = scale_(1), int Point rayStart = line.a; Point rayEnd = line.b; IndexPair currentVoxel = point_map_grid_index(rayStart, xdist, ydist); - IndexPair firstVoxel = currentVoxel; IndexPair lastVoxel = point_map_grid_index(rayEnd, xdist, ydist); Point ray = rayEnd - rayStart; diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 3f3a4ed4b8..a70dbcbda0 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -3454,7 +3454,6 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line) arc_length = ((int)line.p()) * 2 * PI * (start_point - m_arc_center).norm(); //BBS: Attention! arc_onterpolation does not support P mode while P is not 1. arc_interpolation(start_point, end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); - float radian = ArcSegment::calc_arc_radian(start_point, end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); Vec3f start_dir = Circle::calc_tangential_vector(start_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); Vec3f end_dir = Circle::calc_tangential_vector(end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); diff --git a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp index 776091adfb..ebeca40cf3 100644 --- a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp @@ -1,6 +1,4 @@ -#include "../ClipperUtils.hpp" #include "../Layer.hpp" -#include "../Polyline.hpp" #include "RetractWhenCrossingPerimeters.hpp" diff --git a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp index 34c14864d1..e25c88522e 100644 --- a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp +++ b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp @@ -9,6 +9,14 @@ namespace Slic3r { +#ifndef _WIN32 +// Currently on Linux/macOS, this class spits out large amounts of subobject linkage +// warnings because of the flowModel field. tk::spline is in an anonymous namespace which +// causes this issue. Until the issue can be solved, this is a temporary solution. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsubobject-linkage" +#endif + class SmallAreaInfillFlowCompensator { public: @@ -31,6 +39,10 @@ private: double max_modified_length() { return eLengths.back(); } }; +#ifndef _WIN32 +#pragma GCC diagnostic pop +#endif + } // namespace Slic3r #endif /* slic3r_GCode_SmallAreaInfillFlowCompensator_hpp_ */ diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index e5c3260084..84f1521733 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -307,7 +307,6 @@ ToolOrdering::ToolOrdering(const Print &print, unsigned int first_extruder, bool std::vector ToolOrdering::generate_first_layer_tool_order(const Print& print) { std::vector tool_order; - int initial_extruder_id = -1; std::map min_areas_per_extruder; for (auto object : print.objects()) { @@ -336,7 +335,6 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr } } - double max_minimal_area = 0.; for (auto ape : min_areas_per_extruder) { auto iter = tool_order.begin(); for (; iter != tool_order.end(); iter++) { @@ -369,7 +367,6 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr std::vector ToolOrdering::generate_first_layer_tool_order(const PrintObject& object) { std::vector tool_order; - int initial_extruder_id = -1; std::map min_areas_per_extruder; auto first_layer = object.get_layer(0); for (auto layerm : first_layer->regions()) { @@ -394,7 +391,6 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr } } - double max_minimal_area = 0.; for (auto ape : min_areas_per_extruder) { auto iter = tool_order.begin(); for (; iter != tool_order.end(); iter++) { diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 39c603a470..f18afb5d30 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1072,8 +1072,6 @@ void WipeTower::toolchange_Wipe( const float target_speed = is_first_layer() ? std::min(m_first_layer_speed * 60.f, 4800.f) : 4800.f; float wipe_speed = 0.33f * target_speed; - float start_y = writer.y(); - #if 0 // if there is less than 2.5*m_perimeter_width to the edge, advance straightaway (there is likely a blob anyway) if ((m_left_to_right ? xr-writer.x() : writer.x()-xl) < 2.5f*m_perimeter_width) { @@ -1132,8 +1130,6 @@ void WipeTower::toolchange_Wipe( m_left_to_right = !m_left_to_right; } - float end_y = writer.y(); - // We may be going back to the model - wipe the nozzle. If this is followed // by finish_layer, this wipe path will be overwritten. //writer.add_wipe_point(writer.x(), writer.y()) @@ -1422,7 +1418,6 @@ void WipeTower::plan_tower() // If wipe tower height is between the current and next member, set the min_depth as linear interpolation between them auto next_height_to_depth = *iter; if (next_height_to_depth.first > m_wipe_tower_height) { - float height_base = curr_height_to_depth.first; float height_diff = next_height_to_depth.first - curr_height_to_depth.first; float min_depth_base = curr_height_to_depth.second; float depth_diff = next_height_to_depth.second - curr_height_to_depth.second; diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 54dcb14cca..62385a5018 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -4,21 +4,14 @@ #include "ClipperUtils.hpp" #include "ExPolygon.hpp" #include "Line.hpp" -#include "clipper.hpp" -#include #include #include -#include -#include -#include -#include #include #include #include #include #include -#include #if defined(_MSC_VER) && defined(__clang__) #define BOOST_NO_CXX17_HDR_STRING_VIEW diff --git a/src/libslic3r/Geometry/Circle.cpp b/src/libslic3r/Geometry/Circle.cpp index 6796671954..d7279c3b1b 100644 --- a/src/libslic3r/Geometry/Circle.cpp +++ b/src/libslic3r/Geometry/Circle.cpp @@ -1,7 +1,5 @@ #include "Circle.hpp" -#include "../Polygon.hpp" - #include #include #include diff --git a/src/libslic3r/Geometry/Voronoi.cpp b/src/libslic3r/Geometry/Voronoi.cpp index 0842ddc37b..fc7ead40d0 100644 --- a/src/libslic3r/Geometry/Voronoi.cpp +++ b/src/libslic3r/Geometry/Voronoi.cpp @@ -2,7 +2,6 @@ #include "libslic3r/Arachne/utils/PolygonsSegmentIndex.hpp" #include "libslic3r/Geometry/VoronoiUtils.hpp" -#include "libslic3r/Geometry/VoronoiUtilsCgal.hpp" #include "libslic3r/MultiMaterialSegmentation.hpp" #include diff --git a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp index a0e2191af5..60f66edbf6 100644 --- a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp +++ b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp @@ -1,4 +1,3 @@ -#include #include #include #include diff --git a/src/libslic3r/JumpPointSearch.cpp b/src/libslic3r/JumpPointSearch.cpp index f8ef2ff100..a3b078127b 100644 --- a/src/libslic3r/JumpPointSearch.cpp +++ b/src/libslic3r/JumpPointSearch.cpp @@ -1,26 +1,18 @@ #include "JumpPointSearch.hpp" #include "BoundingBox.hpp" -#include "ExPolygon.hpp" #include "Point.hpp" #include "libslic3r/AStar.hpp" #include "libslic3r/KDTreeIndirect.hpp" -#include "libslic3r/Polygon.hpp" #include "libslic3r/Polyline.hpp" #include "libslic3r/libslic3r.h" -#include -#include -#include #include #include #include #include #include -#include #include #include -#include - //#define DEBUG_FILES #ifdef DEBUG_FILES #include "libslic3r/SVG.hpp" diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index 7e75d56322..51c84a16f7 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -1,9 +1,7 @@ #include "Geometry.hpp" #include "Line.hpp" -#include "Polyline.hpp" #include #include -#include namespace Slic3r { diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index c412553a22..3cd0771962 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -330,7 +330,7 @@ void segment(CGALMesh& src, std::vector& dst, double smoothing_alpha = // fill holes typedef boost::graph_traits<_EpicMesh>::halfedge_descriptor halfedge_descriptor; - typedef boost::graph_traits<_EpicMesh>::vertex_descriptor vertex_descriptor; +// typedef boost::graph_traits<_EpicMesh>::vertex_descriptor vertex_descriptor; std::vector border_cycles; CGAL::Polygon_mesh_processing::extract_boundary_cycles(out, std::back_inserter(border_cycles)); for (halfedge_descriptor h : border_cycles) @@ -693,7 +693,7 @@ bool do_boolean_single(McutMesh &srcMesh, const McutMesh &cutMesh, const std::st McutMesh outMesh; int N_vertices = 0; // traversal of all connected components - for (int n = 0; n < numConnComps; ++n) { + for (unsigned int n = 0; n < numConnComps; ++n) { // query the data of each connected component from MCUT McConnectedComponent connComp = connectedComponents[n]; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index bb7c33e26b..96136db395 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -442,7 +442,7 @@ ModelObject* Model::add_object(const ModelObject &other) this->objects.push_back(new_object); // BBS: backup if (need_backup) { - if (auto model = other.get_model()) { + if (other.get_model()) { auto iter = object_backup_id_map.find(other.id().id); if (iter != object_backup_id_map.end()) { object_backup_id_map.emplace(new_object->id().id, iter->second); @@ -2615,7 +2615,7 @@ size_t ModelVolume::split(unsigned int max_extruders) size_t ivolume = std::find(this->object->volumes.begin(), this->object->volumes.end(), this) - this->object->volumes.begin(); const std::string name = this->name; - unsigned int extruder_counter = 0; + // unsigned int extruder_counter = 0; const Vec3d offset = this->get_offset(); for (TriangleMesh &mesh : meshes) { @@ -2930,9 +2930,6 @@ bool Model::obj_import_vertex_color_deal(const std::vector &verte std::cout << "error"; } }; - auto calc_tri_area = [](const Vec3f &v0, const Vec3f &v1, const Vec3f &v2) { - return std::abs((v0 - v1).cross(v0 - v2).norm()) / 2; - }; auto volume = obj->volumes[0]; volume->config.set("extruder", first_extruder_id); auto face_count = volume->mesh().its.indices.size(); @@ -3032,7 +3029,6 @@ bool Model::obj_import_face_color_deal(const std::vector &face_fi volume->mmu_segmentation_facets.reserve(face_count); if (volume->mesh().its.indices.size() != face_filament_ids.size()) { return false; } for (size_t i = 0; i < volume->mesh().its.indices.size(); i++) { - auto face = volume->mesh().its.indices[i]; auto filament_id = face_filament_ids[i]; if (filament_id <= 1) { continue; } std::string result; diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index 477509e69e..f1f926fe6d 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -167,7 +167,6 @@ ArrangePolygon get_instance_arrange_poly(ModelInstance* instance, const Slic3r:: auto support_type_ptr = obj->get_config_value>(config, "support_type"); auto support_type = support_type_ptr->value; auto enable_support = supp_type_ptr->getBool(); - int support_int = support_type_ptr->getInt(); if (enable_support && (support_type == stNormalAuto || support_type == stNormal)) ap.brim_width = 6.0; diff --git a/src/libslic3r/MultiMaterialSegmentation.cpp b/src/libslic3r/MultiMaterialSegmentation.cpp index 4fe0d6b4b1..c0476de6d9 100644 --- a/src/libslic3r/MultiMaterialSegmentation.cpp +++ b/src/libslic3r/MultiMaterialSegmentation.cpp @@ -338,7 +338,6 @@ static std::vector> get_all_next_arcs( if (arc.type == MMU_Graph::ARC_TYPE::BORDER && arc.color != color) continue; - Vec2d arc_line = graph.nodes[arc.to_idx].point - graph.nodes[arc.from_idx].point; next_continue_arc.emplace_back(&arc); all_next_arcs.emplace_back(next_continue_arc); } @@ -1286,7 +1285,6 @@ static void cut_segmented_layers(const std::vector &input_exp const std::function &throw_on_cancel_callback) { BOOST_LOG_TRIVIAL(debug) << "MM segmentation - cutting segmented layers in parallel - begin"; - const float interlocking_cut_width = interlocking_depth > 0.f ? std::max(cut_width - interlocking_depth, 0.f) : 0.f; tbb::parallel_for(tbb::blocked_range(0, segmented_regions.size()), [&segmented_regions, &input_expolygons, &cut_width, &interlocking_depth, &throw_on_cancel_callback](const tbb::blocked_range &range) { for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index ce448fc7e6..2fcbb6389a 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -138,8 +138,6 @@ public: auto cost_items = get_features(orientation, params.min_volume); - float unprintability = target_function(cost_items, params.min_volume); - results[orientation] = cost_items; BOOST_LOG_TRIVIAL(info) << std::fixed << std::setprecision(4) << "orientation:" << orientation.transpose() << ", cost:" << std::fixed << std::setprecision(4) << cost_items.field_values(); @@ -230,10 +228,10 @@ public: { std::unordered_map alignments; // init to 0 - for (size_t i = 0; i < areas_.size(); i++) + for (Eigen::Index i = 0; i < areas_.size(); i++) alignments.insert(std::pair(normals_.row(i), 0)); // cumulate areas - for (size_t i = 0; i < areas_.size(); i++) + for (Eigen::Index i = 0; i < areas_.size(); i++) { alignments[normals_.row(i)] += areas_(i); } @@ -257,11 +255,11 @@ public: Vec3f n1 = { 0, 0, 0 }; std::vector current_areas = {0, 0}; // init to 0 - for (size_t i = 0; i < areas_.size(); i++) { + for (Eigen::Index i = 0; i < areas_.size(); i++) { alignments_.insert(std::pair(quantize_normals_.row(i), std::pair(current_areas, n1))); } // cumulate areas - for (size_t i = 0; i < areas_.size(); i++) + for (Eigen::Index i = 0; i < areas_.size(); i++) { alignments_[quantize_normals_.row(i)].first[1] += areas_(i); if (areas_(i) > alignments_[quantize_normals_.row(i)].first[0]){ @@ -339,7 +337,7 @@ public: z_max_hull.resize(mesh_convex_hull.facets_count(), 1); its = mesh_convex_hull.its; - for (size_t i = 0; i < z_max_hull.rows(); i++) + for (Eigen::Index i = 0; i < z_max_hull.rows(); i++) { float z0 = its.get_vertex(i,0).dot(orientation); float z1 = its.get_vertex(i,1).dot(orientation); @@ -393,7 +391,7 @@ public: // filter overhang Eigen::VectorXf normal_projection(normals.rows(), 1);// = this->normals.dot(orientation); - for (size_t i = 0; i < normals.rows(); i++) + for (Eigen::Index i = 0; i < normals.rows(); i++) { normal_projection(i) = normals.row(i).dot(orientation); } @@ -459,7 +457,6 @@ public: cost = params.TAR_A * (overhang + params.TAR_B) + params.RELATIVE_F * (/*costs.volume/100*/overhang*params.TAR_C + params.TAR_D + params.TAR_LAF * costs.area_laf * params.use_low_angle_face) / (params.TAR_D + params.CONTOUR_F * costs.contour + params.BOTTOM_F * bottom + params.BOTTOM_HULL_F * bottom_hull + params.TAR_E * overhang + params.TAR_PROJ_AREA * costs.area_projected); } else { - float overhang = costs.overhang; cost = params.RELATIVE_F * (costs.overhang * params.TAR_C + params.TAR_D + params.TAR_LAF * costs.area_laf * params.use_low_angle_face) / (params.TAR_D + params.CONTOUR_F * costs.contour + params.BOTTOM_F * bottom + params.BOTTOM_HULL_F * bottom_hull + params.TAR_PROJ_AREA * costs.area_projected); } cost += (costs.bottom < params.BOTTOM_MIN) * 100;// +(costs.height_to_bottom_hull_ratio > params.height_to_bottom_hull_ratio_MIN) * 110; diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 439ef57874..941cdf8f42 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -242,12 +242,10 @@ static std::deque split_polyline_by_degree(const Polyline &p Polyline right; Polyline temp_copy = polyline_with_insert_points; - size_t poly_size = polyline_with_insert_points.size(); // BBS: merge degree in limited range //find first degee base double degree_base = int(points_overhang[points_overhang.size() - 1] / min_degree_gap) * min_degree_gap + min_degree_gap; degree_base = degree_base > max_overhang_degree ? max_overhang_degree : degree_base; - double short_poly_len = 0; for (int point_idx = points_overhang.size() - 2; point_idx > 0; --point_idx) { double degree = points_overhang[point_idx]; @@ -940,7 +938,6 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator& p if (perimeter_generator.config->overhang_speed_classic && perimeter_generator.config->enable_overhang_speed && perimeter_generator.config->fuzzy_skin == FuzzySkinType::None) { - Flow flow = is_external ? perimeter_generator.ext_perimeter_flow : perimeter_generator.perimeter_flow; std::map> clipper_serise; std::map recognization_paths; @@ -2253,7 +2250,6 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim if (!unsupported.empty()) { //only consider the part that can be bridged (really, by the bridge algorithm) //first, separate into islands (ie, each ExPlolygon) - int numploy = 0; //only consider the bottom layer that intersect unsupported, to be sure it's only on our island. ExPolygonCollection lower_island(support); //a detector per island @@ -2371,7 +2367,6 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim //ExPolygons no_bridge = diff_ex(offset_ex(unbridgeable, ext_perimeter_width * 3 / 2), last); //bridges_temp = diff_ex(bridges_temp, no_bridge); coordf_t offset_to_do = bridged_infill_margin; - bool first = true; unbridgeable = diff_ex(unbridgeable, offset_ex(bridges_temp, ext_perimeter_width)); while (offset_to_do > ext_perimeter_width * 1.5) { unbridgeable = offset2_ex(unbridgeable, -ext_perimeter_width / 4, ext_perimeter_width * 2.25, ClipperLib::jtSquare); @@ -2379,7 +2374,6 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim bridges_temp = offset_ex(bridges_temp, ext_perimeter_width, ClipperLib::jtMiter, 6.); unbridgeable = diff_ex(unbridgeable, offset_ex(bridges_temp, ext_perimeter_width)); offset_to_do -= ext_perimeter_width; - first = false; } unbridgeable = offset_ex(unbridgeable, ext_perimeter_width + offset_to_do, ClipperLib::jtSquare); bridges_temp = diff_ex(bridges_temp, unbridgeable); diff --git a/src/libslic3r/Polygon.cpp b/src/libslic3r/Polygon.cpp index 5d3d643349..1d93458166 100644 --- a/src/libslic3r/Polygon.cpp +++ b/src/libslic3r/Polygon.cpp @@ -355,8 +355,6 @@ Polygon Polygon::transform(const Transform3d& trafo) const if (vertices_count == 0) return dstpoly; - unsigned int data_size = 3 * vertices_count * sizeof(float); - Eigen::MatrixXd src(3, vertices_count); for (size_t i = 0; i < vertices_count; i++) { diff --git a/src/libslic3r/Polyline.cpp b/src/libslic3r/Polyline.cpp index b30564f3c1..8a650c926b 100644 --- a/src/libslic3r/Polyline.cpp +++ b/src/libslic3r/Polyline.cpp @@ -51,7 +51,6 @@ void Polyline::reverse() // removes the given distance from the end of the polyline void Polyline::clip_end(double distance) { - bool last_point_inserted = false; size_t remove_after_index = MultiPoint::size(); while (distance > 0) { Vec2d last_point = this->last_point().cast(); @@ -65,7 +64,6 @@ void Polyline::clip_end(double distance) double lsqr = v.squaredNorm(); if (lsqr > distance * distance) { this->points.emplace_back((last_point + v * (distance / sqrt(lsqr))).cast()); - last_point_inserted = true; break; } distance -= sqrt(lsqr); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 59b0d1f9c1..d05ea00813 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1572,7 +1572,6 @@ bool PresetCollection::load_user_preset(std::string name, std::map presets_loaded; - int count = 0; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, name %1% , total value counts %2%")%name %preset_values.size(); diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index b53ec6e354..b45edc8a85 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1853,7 +1853,7 @@ void PresetBundle::export_selections(AppConfig &config) // BBS void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) { - int old_filament_count = this->filament_presets.size(); + size_t old_filament_count = this->filament_presets.size(); if (n > old_filament_count && old_filament_count != 0) filament_presets.resize(n, filament_presets.back()); else { @@ -1867,7 +1867,7 @@ void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) //BBS set new filament color to new_color if (old_filament_count < n) { if (!new_color.empty()) { - for (int i = old_filament_count; i < n; i++) { + for (size_t i = old_filament_count; i < n; i++) { filament_color->values[i] = new_color; } } @@ -2054,7 +2054,7 @@ bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_m //BBS: check whether this is the only edited filament bool PresetBundle::is_the_only_edited_filament(unsigned int filament_index) { - int n = this->filament_presets.size(); + size_t n = this->filament_presets.size(); if (filament_index >= n) return false; @@ -2117,7 +2117,6 @@ DynamicPrintConfig PresetBundle::full_fff_config() const // BBS size_t num_filaments = this->filament_presets.size(); - auto* extruder_diameter = dynamic_cast(out.option("nozzle_diameter")); // Collect the "compatible_printers_condition" and "inherits" values over all presets (print, filaments, printers) into a single vector. std::vector compatible_printers_condition; std::vector compatible_prints_condition; @@ -2472,7 +2471,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool std::vector filament_ids = std::move(config.option("filament_ids", true)->values); std::vector print_compatible_printers = std::move(config.option("print_compatible_printers", true)->values); //BBS: add different settings check logic - bool has_different_settings_to_system = config.option("different_settings_to_system")?true:false; + // bool has_different_settings_to_system = config.option("different_settings_to_system")?true:false; std::vector different_values = std::move(config.option("different_settings_to_system", true)->values); std::string &compatible_printers_condition = Preset::compatible_printers_condition(config); std::string &compatible_prints_condition = Preset::compatible_prints_condition(config); diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 43755c8ade..89ce1cbe1c 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -823,7 +823,6 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print for (int i = k+1; i < print_instance_count; i++) { - auto& p = print_instance_with_bounding_box[i].print_instance; auto bbox2 = print_instance_with_bounding_box[i].bounding_box; auto py1 = bbox2.min.y(); auto py2 = bbox2.max.y(); @@ -1391,32 +1390,30 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* const ConfigOptionDef* bed_type_def = print_config_def.get("curr_bed_type"); assert(bed_type_def != nullptr); - if (is_BBL_printer()) { + if (is_BBL_printer()) { const t_config_enum_values* bed_type_keys_map = bed_type_def->enum_keys_map; + const ConfigOptionInts* bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); for (unsigned int extruder_id : extruders) { - const ConfigOptionInts* bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); - for (unsigned int extruder_id : extruders) { - int curr_bed_temp = bed_temp_opt->get_at(extruder_id); - if (curr_bed_temp == 0 && bed_type_keys_map != nullptr) { - std::string bed_type_name; - for (auto item : *bed_type_keys_map) { - if (item.second == m_config.curr_bed_type) { - bed_type_name = item.first; - break; - } + int curr_bed_temp = bed_temp_opt->get_at(extruder_id); + if (curr_bed_temp == 0 && bed_type_keys_map != nullptr) { + std::string bed_type_name; + for (auto item : *bed_type_keys_map) { + if (item.second == m_config.curr_bed_type) { + bed_type_name = item.first; + break; } + } - StringObjectException except; - except.string = Slic3r::format(L("Plate %d: %s does not support filament %s"), this->get_plate_index() + 1, L(bed_type_name), extruder_id + 1); - except.string += "\n"; - except.type = STRING_EXCEPT_FILAMENT_NOT_MATCH_BED_TYPE; - except.params.push_back(std::to_string(this->get_plate_index() + 1)); - except.params.push_back(L(bed_type_name)); - except.params.push_back(std::to_string(extruder_id+1)); - except.object = nullptr; - return except; - } - } + StringObjectException except; + except.string = Slic3r::format(L("Plate %d: %s does not support filament %s"), this->get_plate_index() + 1, L(bed_type_name), extruder_id + 1); + except.string += "\n"; + except.type = STRING_EXCEPT_FILAMENT_NOT_MATCH_BED_TYPE; + except.params.push_back(std::to_string(this->get_plate_index() + 1)); + except.params.push_back(L(bed_type_name)); + except.params.push_back(std::to_string(extruder_id+1)); + except.object = nullptr; + return except; + } } } @@ -1433,7 +1430,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* } return warning_key; }; - auto check_motion_ability_region_setting = [&](const std::vector& keys_to_check, double limit) -> std::string { + /* auto check_motion_ability_region_setting = [&](const std::vector& keys_to_check, double limit) -> std::string { std::string warning_key; for (const auto& key : keys_to_check) { if (m_default_region_config.get_abs_value(key) > limit) { @@ -1442,7 +1439,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* } } return warning_key; - }; + }; */ std::string warning_key; // check jerk @@ -2035,8 +2032,7 @@ void Print::process(long long *time_cost_with_cache, bool use_cache) //BBS: get the objects' indices when GCodes are generated ToolOrdering tool_ordering; unsigned int initial_extruder_id = (unsigned int)-1; - unsigned int final_extruder_id = (unsigned int)-1; - bool has_wipe_tower = false; + // bool has_wipe_tower = false; std::vector print_object_instances_ordering; std::vector::const_iterator print_object_instance_sequential_active; std::vector>> layers_to_print = GCode::collect_layers_to_print(*this); @@ -2056,9 +2052,9 @@ void Print::process(long long *time_cost_with_cache, bool use_cache) else { tool_ordering = this->tool_ordering(); tool_ordering.assign_custom_gcodes(*this); - has_wipe_tower = this->has_wipe_tower() && tool_ordering.has_wipe_tower(); //BBS: have no single_extruder_multi_material_priming #if 0 + has_wipe_tower = this->has_wipe_tower() && tool_ordering.has_wipe_tower(); initial_extruder_id = (has_wipe_tower && !this->config().single_extruder_multi_material_priming) ? // The priming towers will be skipped. tool_ordering.all_extruders().back() : @@ -2646,7 +2642,7 @@ void Print::_make_wipe_tower() for (auto &layer_tools : m_wipe_tower_data.tool_ordering.layer_tools()) { // for all layers if (!layer_tools.has_wipe_tower) continue; - bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); + // bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); wipe_tower.plan_toolchange((float) layer_tools.print_z, (float) layer_tools.wipe_tower_layer_height, current_extruder_id, current_extruder_id); @@ -2740,7 +2736,7 @@ void Print::_make_wipe_tower() for (auto &layer_tools : m_wipe_tower_data.tool_ordering.layer_tools()) { // for all layers if (!layer_tools.has_wipe_tower) continue; - bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); + // bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); wipe_tower.plan_toolchange((float) layer_tools.print_z, (float) layer_tools.wipe_tower_layer_height, current_extruder_id, current_extruder_id, false); for (const auto extruder_id : layer_tools.extruders) { diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 907cc9c248..1487016734 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -677,7 +677,6 @@ void PrintObject::estimate_curled_extrusions() [](const PrintRegion *region) { return region->config().enable_overhang_speed.getBool(); })) { // Estimate curling of support material and add it to the malformaition lines of each layer - float support_flow_width = support_material_flow(this, this->config().layer_height).width(); SupportSpotsGenerator::Params params{this->print()->m_config.filament_type.values, float(this->print()->default_object_config().inner_wall_acceleration.getFloat()), this->config().raft_layers.getInt(), this->config().brim_type.value, @@ -2949,16 +2948,16 @@ struct POProfiler void PrintObject::generate_support_preview() { - POProfiler profiler; + // POProfiler profiler; - boost::posix_time::ptime ts1 = boost::posix_time::microsec_clock::local_time(); + // boost::posix_time::ptime ts1 = boost::posix_time::microsec_clock::local_time(); this->slice(); - boost::posix_time::ptime ts2 = boost::posix_time::microsec_clock::local_time(); - profiler.duration1 = (ts2 - ts1).total_milliseconds(); + // boost::posix_time::ptime ts2 = boost::posix_time::microsec_clock::local_time(); + // profiler.duration1 = (ts2 - ts1).total_milliseconds(); this->generate_support_material(); - boost::posix_time::ptime ts3 = boost::posix_time::microsec_clock::local_time(); - profiler.duration2 = (ts3 - ts2).total_milliseconds(); + // boost::posix_time::ptime ts3 = boost::posix_time::microsec_clock::local_time(); + // profiler.duration2 = (ts3 - ts2).total_milliseconds(); } void PrintObject::update_slicing_parameters() @@ -3668,7 +3667,6 @@ template void PrintObject::remove_bridges_from_contacts( SupportNecessaryType PrintObject::is_support_necessary() { - static const double super_overhang_area_threshold = SQ(scale_(5.0)); const double cantilevel_dist_thresh = scale_(6); #if 0 double threshold_rad = (m_config.support_threshold_angle.value < EPSILON ? 30 : m_config.support_threshold_angle.value + 1) * M_PI / 180.; diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 98f7d8b20e..fd467e076f 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -151,8 +151,8 @@ static std::vector slice_volumes_inner( params_base.mode_below = params_base.mode; // BBS - const size_t num_extruders = print_config.filament_diameter.size(); - const bool is_mm_painted = num_extruders > 1 && std::any_of(model_volumes.cbegin(), model_volumes.cend(), [](const ModelVolume *mv) { return mv->is_mm_painted(); }); + // const size_t num_extruders = print_config.filament_diameter.size(); + // const bool is_mm_painted = num_extruders > 1 && std::any_of(model_volumes.cbegin(), model_volumes.cend(), [](const ModelVolume *mv) { return mv->is_mm_painted(); }); // BBS: don't do size compensation when slice volume. // Will handle contour and hole size compensation seperately later. //const auto extra_offset = is_mm_painted ? 0.f : std::max(0.f, float(print_object_config.xy_contour_compensation.value)); @@ -336,7 +336,8 @@ static std::vector> slices_to_regions( }; // BBS - auto trim_overlap = [](ExPolygons& expolys_a, ExPolygons& expolys_b) { + // Orca: unused +/* auto trim_overlap = [](ExPolygons& expolys_a, ExPolygons& expolys_b) { ExPolygons trimming_a; ExPolygons trimming_b; @@ -361,7 +362,7 @@ static std::vector> slices_to_regions( expolys_a = diff_ex(expolys_a, trimming_a); expolys_b = diff_ex(expolys_b, trimming_b); - }; + }; */ std::vector temp_slices; for (size_t zs_complex_idx = range.begin(); zs_complex_idx < range.end(); ++ zs_complex_idx) { diff --git a/src/libslic3r/Shape/TextShape.cpp b/src/libslic3r/Shape/TextShape.cpp index dce731af19..58df800a51 100644 --- a/src/libslic3r/Shape/TextShape.cpp +++ b/src/libslic3r/Shape/TextShape.cpp @@ -99,8 +99,6 @@ std::vector init_occt_fonts() static bool TextToBRep(const char* text, const char* font, const float theTextHeight, Font_FontAspect& theFontAspect, TopoDS_Shape& theShape, double& text_width) { - Standard_Integer anArgIt = 1; - Standard_CString aName = "text_shape"; Standard_CString aText = text; Font_BRepFont aFont; diff --git a/src/libslic3r/ShortEdgeCollapse.cpp b/src/libslic3r/ShortEdgeCollapse.cpp index 3397daf55c..f19ff9f22e 100644 --- a/src/libslic3r/ShortEdgeCollapse.cpp +++ b/src/libslic3r/ShortEdgeCollapse.cpp @@ -2,7 +2,6 @@ #include "libslic3r/NormalUtils.hpp" #include -#include #include #include diff --git a/src/libslic3r/SlicesToTriangleMesh.cpp b/src/libslic3r/SlicesToTriangleMesh.cpp index 3b55cf066b..5740665ae2 100644 --- a/src/libslic3r/SlicesToTriangleMesh.cpp +++ b/src/libslic3r/SlicesToTriangleMesh.cpp @@ -1,8 +1,5 @@ -#include - #include "SlicesToTriangleMesh.hpp" -//#include "libslic3r/MTUtils.hpp" #include "libslic3r/Execution/ExecutionTBB.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/Tesselate.hpp" diff --git a/src/libslic3r/Support/OrganicSupport.cpp b/src/libslic3r/Support/OrganicSupport.cpp index 05e515d94e..5543f76fd5 100644 --- a/src/libslic3r/Support/OrganicSupport.cpp +++ b/src/libslic3r/Support/OrganicSupport.cpp @@ -1,12 +1,6 @@ #include "OrganicSupport.hpp" #include "SupportCommon.hpp" - -#include "../AABBTreeLines.hpp" -#include "../ClipperUtils.hpp" -#include "../Polygon.hpp" -#include "../Polyline.hpp" #include "../MutablePolygon.hpp" -#include "../TriangleMeshSlicer.hpp" #include diff --git a/src/libslic3r/Support/SupportParameters.cpp b/src/libslic3r/Support/SupportParameters.cpp index 8508206cb9..4af36e05ae 100644 --- a/src/libslic3r/Support/SupportParameters.cpp +++ b/src/libslic3r/Support/SupportParameters.cpp @@ -1,6 +1,4 @@ #include "../Print.hpp" -#include "../PrintConfig.hpp" -#include "../Slicing.hpp" #include "SupportParameters.hpp" namespace Slic3r::FFFSupport { diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index b022607bf7..e1c6c97cc1 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -338,7 +338,7 @@ static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag rand_init = true; } - int rand_num = rand() % 1000000; + // int rand_num = rand() % 1000000; //makedir("./SVG"); std::string prefix = "./SVG/"; std::string suffix = ".svg"; @@ -1554,7 +1554,6 @@ static inline ExPolygons detect_overhangs( double thresh_angle = object_config.support_threshold_angle.value > 0 ? object_config.support_threshold_angle.value + 1 : 0; thresh_angle = std::min(thresh_angle, 89.); // BBS should be smaller than 90 const double threshold_rad = Geometry::deg2rad(thresh_angle); - const coordf_t max_bridge_length = scale_(object_config.max_bridge_length.value); const bool bridge_no_support = object_config.bridge_no_support.value; const coordf_t xy_expansion = scale_(object_config.support_expansion.value); @@ -1577,7 +1576,6 @@ static inline ExPolygons detect_overhangs( { // Generate overhang / contact_polygons for non-raft layers. const Layer &lower_layer = *layer.lower_layer; - const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); // Can't directly use lower_layer.lslices, or we'll miss some very sharp tails. // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! // FIXME if there are multiple regions with different extrusion width, the following code may not be right. @@ -1689,7 +1687,6 @@ static inline ExPolygons detect_overhangs( // check cantilever if (layer.lower_layer) { for (ExPolygon& poly : overhang_areas) { - float fw = float(layer.regions().front()->flow(frExternalPerimeter).scaled_width()); auto cluster_boundary_ex = intersection_ex(poly, offset_ex(layer.lower_layer->lslices, scale_(0.5))); Polygons cluster_boundary = to_polygons(cluster_boundary_ex); if (cluster_boundary.empty()) continue; @@ -1734,7 +1731,6 @@ static inline std::tuple detect_contacts( Polygons enforcer_polygons; // BBS. - const bool auto_normal_support = object_config.support_type.value == stNormalAuto; const bool buildplate_only = !annotations.buildplate_covered.empty(); float no_interface_offset = 0.f; @@ -1748,8 +1744,6 @@ static inline std::tuple detect_contacts( // Generate overhang / contact_polygons for non-raft layers. const Layer& lower_layer = *layer.lower_layer; const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); - const ExPolygons& lower_layer_expolys = lower_layer.lslices; - const ExPolygons& lower_layer_sharptails = lower_layer.sharp_tails; // Cache support trimming polygons derived from lower layer polygons, possible merged with "on build plate only" trimming polygons. auto slices_margin_update = @@ -2187,7 +2181,6 @@ struct OverhangCluster { static OverhangCluster* add_overhang(std::vector& clusters, ExPolygon* overhang, int layer_nr, coordf_t offset_scaled) { OverhangCluster* cluster = nullptr; - bool found = false; for (int i = 0; i < clusters.size(); i++) { auto cluster_i = &clusters[i]; if (cluster_i->intersects(*overhang, layer_nr)) { @@ -3546,13 +3539,13 @@ std::pair 1. // Contact layer needs a base_interface layer, therefore run the following block if support_interface_top_layers > 0, has soluble support and extruders are different. - bool soluble_interface_non_soluble_base = - // Zero z-gap between the overhangs and the support interface. - m_slicing_params.soluble_interface && - // Interface extruder soluble. - m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && - // Base extruder: Either "print with active extruder" not soluble. - (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); +// bool soluble_interface_non_soluble_base = +// // Zero z-gap between the overhangs and the support interface. +// m_slicing_params.soluble_interface && +// // Interface extruder soluble. +// m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && +// // Base extruder: Either "print with active extruder" not soluble. +// (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); bool snug_supports = m_object_config->support_style.value == smsSnug; // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion bool differnt_support_interface_filament = m_object_config->support_interface_filament.value != m_object_config->support_filament.value; @@ -4628,7 +4621,6 @@ void PrintObjectSupportMaterial::generate_toolpaths( if (object_layer != nullptr) { float biggest_bridge_area = 0.f; - const Polygons& top_contact_polys = top_contact_layer.polygons_to_extrude(); for (auto layerm : object_layer->regions()) { for (auto bridge_surface : layerm->fill_surfaces.filter_by_type(stBottomBridge)) { float bs_area = bridge_surface->area(); diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index 71080cf20e..96b7c0cbef 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -5,7 +5,6 @@ #include "Print.hpp" #include "Layer.hpp" #include "Fill/FillBase.hpp" -#include "Fill/FillConcentric.hpp" #include "CurveAnalyzer.hpp" #include "SVG.hpp" #include "ShortestPath.hpp" @@ -13,7 +12,6 @@ #include #include -#include #include #define _L(s) Slic3r::I18N::translate(s) @@ -469,7 +467,6 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double Point ret = from; std::vector valid_pts; double bestDist2 = std::numeric_limits::max(); - unsigned int bestPoly = NO_INDEX; bool is_already_on_correct_side_of_boundary = false; // whether [from] is already on the right side of the boundary Point inward_dir; for (unsigned int poly_idx = 0; poly_idx < polygons.size(); poly_idx++) @@ -510,7 +507,6 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double if (dist2 < bestDist2) { bestDist2 = dist2; - bestPoly = poly_idx; if (distance == 0) { ret = x; } else { @@ -547,7 +543,6 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double if (dist2 < bestDist2) { bestDist2 = dist2; - bestPoly = poly_idx; if (distance == 0) { ret = x; } else { @@ -632,7 +627,6 @@ static bool is_inside_ex(const ExPolygons &polygons, const Point &pt) static bool move_out_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) { - Point from0 = from; ExPolygons polys_dilated = union_ex(offset_ex(polygons, scale_(distance))); Point pt = projection_onto(polys_dilated, from);// find_closest_ex(from, polys_dilated); Point outward_dir = pt - from; @@ -734,16 +728,12 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) const coordf_t extrusion_width = config.get_abs_value("line_width", nozzle_diameter); const coordf_t extrusion_width_scaled = scale_(extrusion_width); const coordf_t max_bridge_length = scale_(config.max_bridge_length.value); - const bool bridge_no_support = max_bridge_length > 0; const bool support_critical_regions_only = config.support_critical_regions_only.value; const bool config_remove_small_overhangs = config.support_remove_small_overhang.value; const int enforce_support_layers = config.enforce_support_layers.value; const double area_thresh_well_supported = SQ(scale_(6)); const double length_thresh_well_supported = scale_(6); static const double sharp_tail_max_support_height = 16.f; - // a region is considered well supported if the number of layers below it exceeds this threshold - const int thresh_layers_below = 10 / config.layer_height; - double obj_height = m_object->size().z(); // +1 makes the threshold inclusive double thresh_angle = config.support_threshold_angle.value > EPSILON ? config.support_threshold_angle.value + 1 : 30; thresh_angle = std::min(thresh_angle, 89.); // should be smaller than 90 @@ -1406,7 +1396,6 @@ void TreeSupport::generate_toolpaths() const PrintObjectConfig &object_config = m_object->config(); coordf_t support_extrusion_width = m_support_params.support_extrusion_width; coordf_t nozzle_diameter = print_config.nozzle_diameter.get_at(object_config.support_filament - 1); - coordf_t layer_height = object_config.layer_height.value; const size_t wall_count = object_config.tree_support_wall_count.value; // Check if set to zero, use default if so. @@ -1420,8 +1409,6 @@ void TreeSupport::generate_toolpaths() coordf_t interface_density = std::min(1., m_support_material_interface_flow.spacing() / interface_spacing); coordf_t bottom_interface_density = std::min(1., m_support_material_interface_flow.spacing() / bottom_interface_spacing); - const coordf_t branch_radius = object_config.tree_support_branch_diameter.value / 2; - const coordf_t branch_radius_scaled = scale_(branch_radius); if (m_object->support_layers().empty()) return; @@ -2126,7 +2113,6 @@ void TreeSupport::draw_circles(const std::vector>& contact_no const bool with_lightning_infill = m_support_params.base_fill_pattern == ipLightning; coordf_t support_extrusion_width = m_support_params.support_extrusion_width; - const size_t wall_count = config.tree_support_wall_count.value; const PrintObjectConfig& object_config = m_object->config(); BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; @@ -2377,7 +2363,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no ExPolygons& base_areas = ts_layer->base_areas; int layer_nr_lower = layer_nr - 1; - for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { + for (;layer_nr_lower >= 0; layer_nr_lower--) { if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; } if (layer_nr_lower <= 0) continue; @@ -2467,7 +2453,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no if (ts_layer->area_groups.empty()) continue; int layer_nr_lower = layer_nr - 1; - for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { + for (;layer_nr_lower >= 0; layer_nr_lower--) { if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; } if (layer_nr_lower < 0) continue; @@ -2582,15 +2568,10 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) const coordf_t radius_sample_resolution = m_ts_data->m_radius_sample_resolution; const bool support_on_buildplate_only = config.support_on_build_plate_only.value; const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; - const size_t top_interface_layers = config.support_interface_top_layers.value; float DO_NOT_MOVER_UNDER_MM = is_slim ? 0 : 5; // do not move contact points under 5mm const auto nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(m_object->config().support_interface_filament-1); const auto support_line_width = config.support_line_width.get_abs_value(nozzle_diameter); - auto get_branch_angle = [this,&config](coordf_t radius) { - if (config.tree_support_branch_angle.value < 30.0) return config.tree_support_branch_angle.value; - return (radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; - }; auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const Node *node, int power = 1) { double move_dist = node->max_move_dist; if (node->max_move_dist == 0) { @@ -3202,7 +3183,6 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ const coordf_t layer_height = config.layer_height.value; const coordf_t max_layer_height = m_slicing_params.max_layer_height; const size_t bot_intf_layers = config.support_interface_bottom_layers.value; - const size_t top_intf_layers = config.support_interface_top_layers.value; // if already using max layer height, no need to adjust if (layer_height == max_layer_height) return; @@ -3324,7 +3304,6 @@ std::vector TreeSupport::plan_layer_heights(std::vector #include #include -#include namespace Slic3r { diff --git a/src/libslic3r/TriangulateWall.cpp b/src/libslic3r/TriangulateWall.cpp index b8746ef0d2..133ca8236c 100644 --- a/src/libslic3r/TriangulateWall.cpp +++ b/src/libslic3r/TriangulateWall.cpp @@ -1,5 +1,5 @@ -#include "TriangulateWall.hpp" -#include "MTUtils.hpp" +//#include "TriangulateWall.hpp" +//#include "MTUtils.hpp" namespace Slic3r { diff --git a/src/libslic3r/Triangulation.cpp b/src/libslic3r/Triangulation.cpp index f290442bf1..782553e2a7 100644 --- a/src/libslic3r/Triangulation.cpp +++ b/src/libslic3r/Triangulation.cpp @@ -1,6 +1,10 @@ #include "Triangulation.hpp" #include "IntersectionPoints.hpp" + +#ifndef _WIN32 +// On linux and macOS, this include is required #include +#endif // _WIN32 #include #include #include diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index f3890dd6dc..141a2203cc 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -465,8 +465,9 @@ std::string CalibPressureAdvanceLine::print_pa_lines(double start_x, double star const double e_per_mm = CalibPressureAdvance::e_per_mm(m_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, print_flow_ratio); - const double thin_e_per_mm = CalibPressureAdvance::e_per_mm(m_thin_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, - print_flow_ratio); + // Orca: Unused due to skip drawing indicator lines + // const double thin_e_per_mm = CalibPressureAdvance::e_per_mm(m_thin_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, + // print_flow_ratio); const double number_e_per_mm = CalibPressureAdvance::e_per_mm(m_number_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, print_flow_ratio); diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 733ac626f4..362cc521b6 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -3,19 +3,12 @@ #include #include -#include #include #include #include "format.hpp" -#include "Platform.hpp" -#include "Time.hpp" #include "libslic3r.h" -#ifdef __APPLE__ -#include "MacUtils.hpp" -#endif - #ifdef WIN32 #include #include @@ -32,6 +25,7 @@ #ifdef __APPLE__ #include #include + #include "MacUtils.hpp" #endif #ifdef __linux__ #include @@ -39,6 +33,7 @@ #include #include #include + #include "Platform.hpp" #endif #endif @@ -59,7 +54,6 @@ #include #include #include -#include // We are using quite an old TBB 2017 U7, which does not support global control API officially. // Before we update our build servers, let's use the old API, which is deprecated in up to date TBB. @@ -1489,8 +1483,6 @@ bool bbl_calc_md5(std::string &filename, std::string &md5_out) MD5_Init(&ctx); boost::nowide::ifstream ifs(filename, std::ios::binary); std::string buf(64 * 1024, 0); - const std::size_t & size = boost::filesystem::file_size(filename); - std::size_t left_size = size; while (ifs) { ifs.read(buf.data(), buf.size()); int read_bytes = ifs.gcount(); diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 86ab5d2239..e58b5c7eff 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -241,7 +241,7 @@ float GLVolume::last_explosion_ratio = 1.0; void GLVolume::set_render_color() { - bool outside = is_outside || is_below_printbed(); + // bool outside = is_outside || is_below_printbed(); if (force_native_color || force_neutral_color) { #ifdef ENABBLE_OUTSIDE_COLOR @@ -859,7 +859,6 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab return; GLShaderProgram* sink_shader = GUI::wxGetApp().get_shader("flat"); - GLShaderProgram* edges_shader = GUI::wxGetApp().get_shader("flat"); if (type == ERenderType::Transparent) { glsafe(::glEnable(GL_BLEND)); @@ -1023,7 +1022,6 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo GUI::PartPlate* curr_plate = GUI::wxGetApp().plater()->get_partplate_list().get_selected_plate(); const Pointfs& pp_bed_shape = curr_plate->get_shape(); BuildVolume plate_build_volume(pp_bed_shape, build_volume.printable_height()); - const std::vector& exclude_areas = curr_plate->get_exclude_areas(); for (GLVolume* volume : this->volumes) { diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index f44dc19917..b4c5e95646 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -331,7 +331,6 @@ void AMSMaterialsSetting::create_panel_kn(wxWindow* parent) kn_val_sizer->Add(m_input_k_val, 0, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(0)); // n params input - wxBoxSizer* n_sizer = new wxBoxSizer(wxHORIZONTAL); m_n_param = new wxStaticText(parent, wxID_ANY, _L("Factor N"), wxDefaultPosition, wxDefaultSize, 0); m_n_param->SetFont(::Label::Body_13); m_n_param->SetForegroundColour(wxColour(50, 58, 61)); @@ -357,7 +356,7 @@ void AMSMaterialsSetting::paintEvent(wxPaintEvent &evt) { auto size = GetSize(); wxPaintDC dc(this); - dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#000000")), 1, wxSOLID)); + dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#000000")), 1, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawRectangle(0, 0, size.x, size.y); } diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 492926b952..41abe5a471 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -366,7 +366,6 @@ void MaterialItem::doRender(wxDC &dc) wxString out_txt = m_msg; wxString count_txt = ""; - int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_warning_text->GetTextExtent(count_txt); @@ -402,7 +401,6 @@ void AmsMapingPopup::on_left_down(wxMouseEvent &evt) auto pos = ClientToScreen(evt.GetPosition()); for (MappingItem *item : m_mapping_item_list) { auto p_rect = item->ClientToScreen(wxPoint(0, 0)); - auto left = item->GetSize(); if (pos.x > p_rect.x && pos.y > p_rect.y && pos.x < (p_rect.x + item->GetSize().x) && pos.y < (p_rect.y + item->GetSize().y)) { if (item->m_tray_data.type == TrayType::NORMAL && !is_match_material(item->m_tray_data.filament_type)) return; @@ -1524,9 +1522,6 @@ void AmsRMGroup::on_mouse_move(wxMouseEvent& evt) std::string tray_name = iter->first; wxColour tray_color = iter->second; - int x = size.x / 2; - int y = size.y / 2; - int radius = size.x / 2; endAngle += ev_angle; if (click_angle >= startAngle && click_angle < endAngle) { diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index 8d338edc21..5bc3280e75 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -989,7 +989,7 @@ void AuxiliaryPanel::create_folder(wxString name) fs::path bfs_path((m_root_dir + "/" + folder_name).ToStdWstring()); if (fs::exists(bfs_path)) { try { - bool is_done = fs::remove_all(bfs_path); + fs::remove_all(bfs_path); } catch (...) { BOOST_LOG_TRIVIAL(error) << "Failed removing the auxiliary directory " << m_root_dir.c_str(); } diff --git a/src/slic3r/GUI/AuxiliaryDataViewModel.cpp b/src/slic3r/GUI/AuxiliaryDataViewModel.cpp index 50368b8544..cad5cf5455 100644 --- a/src/slic3r/GUI/AuxiliaryDataViewModel.cpp +++ b/src/slic3r/GUI/AuxiliaryDataViewModel.cpp @@ -337,7 +337,7 @@ wxDataViewItemArray AuxiliaryModel::ImportFile(AuxiliaryModelNode* sel, wxArrayS dir_path += "\\" + src_bfs_path.filename().generic_wstring(); boost::system::error_code ec; - if (!fs::copy_file(src_bfs_path, fs::path(dir_path.ToStdWstring()), fs::copy_option::overwrite_if_exists, ec)) + if (!fs::copy_file(src_bfs_path, fs::path(dir_path.ToStdWstring()), fs::copy_options::overwrite_existing, ec)) continue; // Update model data diff --git a/src/slic3r/GUI/BBLStatusBar.cpp b/src/slic3r/GUI/BBLStatusBar.cpp index 7c3d640d6e..b0d3513f59 100644 --- a/src/slic3r/GUI/BBLStatusBar.cpp +++ b/src/slic3r/GUI/BBLStatusBar.cpp @@ -3,8 +3,6 @@ #include #include #include -#include -#include #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 0bf251d729..30d4878ddf 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -230,7 +230,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(10)); wxBitmap save_bitmap = create_scaled_bitmap("topbar_save", nullptr, TOPBAR_ICON_SIZE); - wxAuiToolBarItem* save_btn = this->AddTool(wxID_SAVE, "", save_bitmap); + this->AddTool(wxID_SAVE, "", save_bitmap); this->AddSpacer(FromDIP(10)); @@ -278,7 +278,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(4)); wxBitmap iconize_bitmap = create_scaled_bitmap("topbar_min", nullptr, TOPBAR_ICON_SIZE); - wxAuiToolBarItem* iconize_btn = this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap); + this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap); this->AddSpacer(FromDIP(4)); @@ -294,7 +294,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(4)); wxBitmap close_bitmap = create_scaled_bitmap("topbar_close", nullptr, TOPBAR_ICON_SIZE); - wxAuiToolBarItem* close_btn = this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap); + this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap); Realize(); // m_toolbar_h = this->GetSize().GetHeight(); @@ -466,7 +466,6 @@ void BBLTopbar::UpdateToolbarWidth(int width) } void BBLTopbar::Rescale() { - int em = em_unit(this); wxAuiToolBarItem* item; /*item = this->FindTool(ID_LOGO); @@ -496,7 +495,7 @@ void BBLTopbar::Rescale() { item->SetBitmap(create_scaled_bitmap("calib_sf", nullptr, TOPBAR_ICON_SIZE)); item->SetDisabledBitmap(create_scaled_bitmap("calib_sf_inactive", nullptr, TOPBAR_ICON_SIZE)); - item = this->FindTool(ID_TITLE); + // item = this->FindTool(ID_TITLE); /*item = this->FindTool(ID_PUBLISH); item->SetBitmap(create_scaled_bitmap("topbar_publish", this, TOPBAR_ICON_SIZE)); @@ -548,14 +547,14 @@ void BBLTopbar::OnCloseFrame(wxAuiToolBarEvent& event) void BBLTopbar::OnMouseLeftDClock(wxMouseEvent& mouse) { - wxPoint mouse_pos = ::wxGetMousePosition(); // check whether mouse is not on any tool item if (this->FindToolByCurrentPosition() != NULL && this->FindToolByCurrentPosition() != m_title_item) { mouse.Skip(); return; } -#ifdef __W1XMSW__ +#ifdef __WXMSW__ + wxPoint mouse_pos = ::wxGetMousePosition(); ::PostMessage((HWND) m_frame->GetHandle(), WM_NCLBUTTONDBLCLK, HTCAPTION, MAKELPARAM(mouse_pos.x, mouse_pos.y)); return; #endif // __WXMSW__ @@ -637,7 +636,6 @@ void BBLTopbar::OnMouseLeftDown(wxMouseEvent& event) void BBLTopbar::OnMouseLeftUp(wxMouseEvent& event) { - wxPoint mouse_pos = ::wxGetMousePosition(); if (HasCapture()) { ReleaseMouse(); diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index ca8c7a1663..1f6c9e4b94 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -5,13 +5,9 @@ #include "format.hpp" #include -#include -#include // For zipped archive creation -#include #include -#include #include @@ -20,23 +16,18 @@ #include "libslic3r/SLAPrint.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/GCode/PostProcessor.hpp" -#include "libslic3r/Format/SL1.hpp" #include "libslic3r/Thread.hpp" #include "libslic3r/libslic3r.h" #include #include -#include #include #include #include -#include #include "I18N.hpp" //#include "RemovableDriveManager.hpp" -#include "slic3r/GUI/Plater.hpp" - namespace Slic3r { bool SlicingProcessCompletedEvent::critical_error() const diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index 134d91e7c5..28360f0d7a 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -67,7 +67,6 @@ PingCodeBindDialog::PingCodeBindDialog(Plater* plater /*= nullptr*/) SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); SetBackgroundColour(*wxWHITE); - wxBoxSizer* m_sizer_main = new wxBoxSizer(wxVERTICAL); auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); diff --git a/src/slic3r/GUI/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp index 9a16c13322..94a3186721 100644 --- a/src/slic3r/GUI/CalibrationPanel.cpp +++ b/src/slic3r/GUI/CalibrationPanel.cpp @@ -226,7 +226,7 @@ SelectMObjectPopup::SelectMObjectPopup(wxWindow* parent) m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); Bind(EVT_UPDATE_USER_MLIST, &SelectMObjectPopup::update_machine_list, this); - Bind(wxEVT_TIMER, &SelectMObjectPopup::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); Bind(EVT_DISSMISS_MACHINE_LIST, &SelectMObjectPopup::on_dissmiss_win, this); } @@ -265,7 +265,7 @@ void SelectMObjectPopup::Popup(wxWindow* WXUNUSED(focus)) } } - wxPostEvent(this, wxTimerEvent()); + on_timer(); PopupWindow::Popup(); } @@ -304,7 +304,7 @@ bool SelectMObjectPopup::Show(bool show) { return PopupWindow::Show(show); } -void SelectMObjectPopup::on_timer(wxTimerEvent& event) +void SelectMObjectPopup::on_timer() { BOOST_LOG_TRIVIAL(trace) << "SelectMObjectPopup on_timer"; wxGetApp().reset_to_active(); @@ -459,7 +459,7 @@ CalibrationPanel::CalibrationPanel(wxWindow* parent, wxWindowID id, const wxPoin Layout(); init_timer(); - Bind(wxEVT_TIMER, &CalibrationPanel::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); } void CalibrationPanel::init_tabpanel() { @@ -502,10 +502,10 @@ void CalibrationPanel::init_timer() m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - wxPostEvent(this, wxTimerEvent()); + on_timer(); } -void CalibrationPanel::on_timer(wxTimerEvent& event) { +void CalibrationPanel::on_timer() { update_all(); } @@ -644,7 +644,7 @@ bool CalibrationPanel::Show(bool show) { m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - wxPostEvent(this, wxTimerEvent()); + on_timer(); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (dev) { @@ -670,9 +670,6 @@ bool CalibrationPanel::Show(bool show) { void CalibrationPanel::on_printer_clicked(wxMouseEvent& event) { - auto mouse_pos = ClientToScreen(event.GetPosition()); - wxPoint rect = m_side_tools->ClientToScreen(wxPoint(0, 0)); - if (!m_side_tools->is_in_interval()) { wxPoint pos = m_side_tools->ClientToScreen(wxPoint(0, 0)); pos.y += m_side_tools->GetRect().height; diff --git a/src/slic3r/GUI/CalibrationPanel.hpp b/src/slic3r/GUI/CalibrationPanel.hpp index a993ff2886..7b56abd8e7 100644 --- a/src/slic3r/GUI/CalibrationPanel.hpp +++ b/src/slic3r/GUI/CalibrationPanel.hpp @@ -94,7 +94,7 @@ private: private: void OnLeftUp(wxMouseEvent& event); - void on_timer(wxTimerEvent& event); + void on_timer(); void update_user_devices(); void on_dissmiss_win(wxCommandEvent& event); }; @@ -117,7 +117,7 @@ public: protected: void init_tabpanel(); void init_timer(); - void on_timer(wxTimerEvent& event); + void on_timer(); int last_status; diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index f6cbbc3065..6280c96402 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -1126,7 +1126,6 @@ void FlowRateWizard::on_cali_save() } std::string old_preset_name; - CalibrationPresetPage* preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; @@ -1173,7 +1172,6 @@ void FlowRateWizard::on_cali_save() return; std::string old_preset_name; - CalibrationPresetPage* preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; @@ -1443,7 +1441,6 @@ void MaxVolumetricSpeedWizard::on_cali_save() std::string old_preset_name; std::string new_preset_name; - CalibrationPresetPage *preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 482ce61a12..f972d22988 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -790,7 +790,6 @@ wxString CalibrationPresetPage::format_text(wxString& m_msg) wxString out_txt = m_msg; wxString count_txt = ""; - int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_printer_msg->GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index baa53d4564..cd729cae45 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -282,7 +282,6 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con } double sparse_infill_density = config->option("sparse_infill_density")->value; - auto timelapse_type = config->opt_enum("timelapse_type"); if (!is_plate_config && config->opt_bool("spiral_mode") && @@ -298,7 +297,6 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con { DynamicPrintConfig new_conf = *config; auto answer = show_spiral_mode_settings_dialog(is_object_config); - bool support = true; if (answer == wxID_YES) { new_conf.set_key_value("wall_loops", new ConfigOptionInt(1)); new_conf.set_key_value("top_shell_layers", new ConfigOptionInt(0)); @@ -310,8 +308,6 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con new_conf.set_key_value("wall_direction", new ConfigOptionEnum(WallDirection::Auto)); new_conf.set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); sparse_infill_density = 0; - timelapse_type = TimelapseType::tlTraditional; - support = false; } else { new_conf.set_key_value("spiral_mode", new ConfigOptionBool(false)); diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 1768d8cd47..fd00db7f78 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -2438,7 +2438,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese header = _L_PLURAL("A new vendor was installed and one of its printers will be activated", "New vendors were installed and one of theirs printers will be activated", install_bundles.size()); // Decide whether to create snapshot based on run_reason and the reset profile checkbox - bool snapshot = true; + /*bool snapshot = true; Snapshot::Reason snapshot_reason = Snapshot::SNAPSHOT_UPGRADE; switch (run_reason) { case ConfigWizard::RR_DATA_EMPTY: @@ -2456,7 +2456,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese snapshot = false; snapshot_reason = Snapshot::SNAPSHOT_USER; break; - } + }*/ //BBS: remove snapshot logic /*if (snapshot && ! take_config_snapshot_cancel_on_error(*app_config, snapshot_reason, "", _u8L("Do you want to continue changing the configuration?"))) @@ -2701,8 +2701,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent) //BBS: add BBL as default const auto bbl_it = p->bundles.find("BBL"); wxCHECK_RET(bbl_it != p->bundles.cend(), "Vendor BambooLab not found"); - const VendorProfile * vendor_bbl = bbl_it->second.vendor_profile; - + p->only_sla_mode = false; p->any_sla_selected = p->check_sla_selected(); if (p->only_sla_mode) diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index e02509c2a7..cebe58fc0e 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -315,7 +315,7 @@ static wxBoxSizer *create_preset_tree(wxWindow *parent, std::pair preset : printer_and_preset.second) { wxString preset_name = wxString::FromUTF8(preset->name); - wxTreeItemId childId1 = treeCtrl->AppendItem(rootId, preset_name); + treeCtrl->AppendItem(rootId, preset_name); row++; } @@ -671,8 +671,6 @@ bool CreateFilamentPresetDialog::is_check_box_selected() wxBoxSizer *CreateFilamentPresetDialog::create_item(FilamentOptionType option_type) { - - wxSizer *item = nullptr; switch (option_type) { case VENDOR: return create_vendor_item(); case TYPE: return create_type_item(); @@ -3092,10 +3090,6 @@ bool CreatePrinterPresetDialog::check_printable_area() { if (x == 0 || y == 0) { return false; } - double x0 = 0.0; - double y0 = 0.0; - double x1 = x; - double y1 = y; if (dx >= x || dy >= y) { return false; } @@ -4633,7 +4627,6 @@ wxBoxSizer *EditFilamentPresetDialog::create_button_sizer() WarningDialog dlg(this, _L("All the filament presets belong to this filament would be deleted. \nIf you are using this filament on your printer, please reset the filament information for that slot."), _L("Delete filament"), wxYES | wxCANCEL | wxCANCEL_DEFAULT | wxCENTRE); int res = dlg.ShowModal(); if (wxID_YES == res) { - PresetBundle *preset_bundle = wxGetApp().preset_bundle; std::set> inherit_preset_names; std::set> root_preset_names; for (std::pair>> printer_and_preset : m_printer_compatible_presets) { diff --git a/src/slic3r/GUI/DailyTips.cpp b/src/slic3r/GUI/DailyTips.cpp index 2e5b99e8b2..ba4427964e 100644 --- a/src/slic3r/GUI/DailyTips.cpp +++ b/src/slic3r/GUI/DailyTips.cpp @@ -89,7 +89,6 @@ void DailyTipsDataRenderer::open_wiki() const void DailyTipsDataRenderer::render(const ImVec2& pos, const ImVec2& size) const { - ImGuiWrapper& imgui = *wxGetApp().imgui(); ImGuiWindow* parent_window = ImGui::GetCurrentWindow(); int window_flags = parent_window->Flags; window_flags &= ~ImGuiWindowFlags_NoScrollbar; @@ -190,7 +189,6 @@ void DailyTipsDataRenderer::render_text(const ImVec2& start_pos, const ImVec2& s std::string tips_line = _u8L("For more information, please check out Wiki"); std::string wiki_part_text = _u8L("Wiki"); std::string first_part_text = tips_line.substr(0, tips_line.find(wiki_part_text)); - ImVec2 wiki_part_size = ImGui::CalcTextSize(wiki_part_text.c_str()); ImVec2 first_part_size = ImGui::CalcTextSize(first_part_text.c_str()); //text @@ -200,7 +198,6 @@ void DailyTipsDataRenderer::render_text(const ImVec2& start_pos, const ImVec2& s ImColor HyperColor = ImColor(31, 142, 234, (int)(255 * m_fade_opacity)).Value; ImVec2 wiki_part_rect_min = ImVec2(link_start_pos.x + first_part_size.x, link_start_pos.y); - ImVec2 wiki_part_rect_max = wiki_part_rect_min + wiki_part_size; ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value); ImGui::SetCursorScreenPos(wiki_part_rect_min); imgui.text(wiki_part_text.c_str()); @@ -264,9 +261,6 @@ ImVec2 DailyTipsPanel::get_size() void DailyTipsPanel::render() { - ImGuiWrapper& imgui = *wxGetApp().imgui(); - float scale = imgui.get_font_size() / 15.0f; - if (!m_first_enter) { retrieve_data_from_hint_database(HintDataNavigation::Curr); m_first_enter = true; diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index a79dd0a027..28a5523b22 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1007,17 +1007,17 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std reset_mapping_result(result); try { // try to use ordering ams mapping - bool order_mapping_result = true; + // bool order_mapping_result = true; for (int i = 0; i < filaments.size(); i++) { if (i >= tray_info_list.size()) { - order_mapping_result = false; + // order_mapping_result = false; break; } if (tray_info_list[i].tray_id == -1) { result[i].tray_id = tray_info_list[i].tray_id; } else { if (!tray_info_list[i].type.empty() && tray_info_list[i].type != filaments[i].type) { - order_mapping_result = false; + // order_mapping_result = false; break; } else { result[i].tray_id = tray_info_list[i].tray_id; @@ -1319,7 +1319,6 @@ wxString MachineObject::get_curr_stage() int MachineObject::get_curr_stage_idx() { - int result = -1; for (int i = 0; i < stage_list_info.size(); i++) { if (stage_list_info[i] == stage_curr) { return i; @@ -2349,8 +2348,6 @@ int MachineObject::command_xcam_control(std::string module_name, bool on_off, st int MachineObject::command_xcam_control_ai_monitoring(bool on_off, std::string lvl) { - bool print_halt = (lvl == "never_halt") ? false:true; - xcam_ai_monitoring = on_off; xcam_ai_monitoring_hold_count = HOLD_COUNT_MAX; xcam_ai_monitoring_sensitivity = lvl; @@ -5662,9 +5659,7 @@ void DeviceManager::parse_user_print_info(std::string body) } } } - catch (std::exception& e) { - ; - } + catch (std::exception&) {} } void DeviceManager::update_user_machine_list_info() diff --git a/src/slic3r/GUI/DownloadProgressDialog.cpp b/src/slic3r/GUI/DownloadProgressDialog.cpp index 542db08561..425c2deb3b 100644 --- a/src/slic3r/GUI/DownloadProgressDialog.cpp +++ b/src/slic3r/GUI/DownloadProgressDialog.cpp @@ -128,7 +128,6 @@ wxString DownloadProgressDialog::format_text(wxStaticText* st, wxString str, int wxString out_txt = str; wxString count_txt = ""; - int new_line_pos = 0; for (int i = 0; i < str.length(); i++) { auto text_size = st->GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/ExtrusionCalibration.cpp b/src/slic3r/GUI/ExtrusionCalibration.cpp index 26216edc93..eda9da5857 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.cpp +++ b/src/slic3r/GUI/ExtrusionCalibration.cpp @@ -626,7 +626,6 @@ void ExtrusionCalibration::update_combobox_filaments() { m_comboBox_filament->SetValue(wxEmptyString); user_filaments.clear(); - int selection_idx = -1; int filament_index = -1; int curr_selection = -1; wxArrayString filament_items; diff --git a/src/slic3r/GUI/FileArchiveDialog.cpp b/src/slic3r/GUI/FileArchiveDialog.cpp index 2cd84b6acd..689b31598d 100644 --- a/src/slic3r/GUI/FileArchiveDialog.cpp +++ b/src/slic3r/GUI/FileArchiveDialog.cpp @@ -2,7 +2,6 @@ #include "I18N.hpp" #include "GUI_App.hpp" -#include "GUI.hpp" #include "MainFrame.hpp" #include "ExtraRenderers.hpp" #include "format.hpp" diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 0d649b9a6a..b35ade0be4 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -1447,9 +1447,6 @@ void GCodeViewer::_render_calibration_thumbnail_internal(ThumbnailData& thumbnai //shader->set_uniform("emission_factor", 0.0f); } else { - switch (buffer.render_primitive_type) { - default: break; - } int uniform_color = shader->get_uniform_location("uniform_color"); auto it_path = buffer.render_paths.begin(); for (unsigned int ibuffer_id = 0; ibuffer_id < static_cast(buffer.indices.size()); ++ibuffer_id) { @@ -1747,10 +1744,10 @@ void GCodeViewer::update_layers_slider_mode() // true -> single-extruder printer profile OR // multi-extruder printer profile , but whole model is printed by only one extruder // false -> multi-extruder printer profile , and model is printed by several extruders - bool one_extruder_printed_model = true; + // bool one_extruder_printed_model = true; // extruder used for whole model for multi-extruder printer profile - int only_extruder = -1; + // int only_extruder = -1; // BBS if (wxGetApp().filaments_cnt() > 1) { @@ -1773,10 +1770,10 @@ void GCodeViewer::update_layers_slider_mode() return true; }; - if (is_one_extruder_printed_model()) - only_extruder = extruder; - else - one_extruder_printed_model = false; + // if (is_one_extruder_printed_model()) + // only_extruder = extruder; + // else + // one_extruder_printed_model = false; } } @@ -3247,12 +3244,6 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool return in_layers_range(path.sub_paths.front().first.s_id) && in_layers_range(path.sub_paths.back().last.s_id); }; - //BBS - auto is_extruder_in_layer_range = [this](const Path& path, size_t extruder_id) { - return path.extruder_id == extruder_id; - }; - - auto is_travel_in_layers_range = [this](size_t path_id, size_t min_id, size_t max_id) { const TBuffer& buffer = m_buffers[buffer_id(EMoveType::Travel)]; if (path_id >= buffer.paths.size()) @@ -4097,7 +4088,6 @@ void GCodeViewer::render_all_plates_stats(const std::vector support_used_filaments_g_all_plates; float total_time_all_plates = 0.0f; float total_cost_all_plates = 0.0f; - bool show_detailed_statistics_page = false; struct ColumnData { enum { Model = 1, @@ -4399,7 +4389,6 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv const float icon_size = ImGui::GetTextLineHeight() * 0.7; //BBS GUI refactor //const float percent_bar_size = 2.0f * ImGui::GetTextLineHeight(); - const float percent_bar_size = 0; bool imperial_units = wxGetApp().app_config->get("use_inches") == "1"; ImDrawList* draw_list = ImGui::GetWindowDrawList(); @@ -4511,7 +4500,6 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv append_range_item(0, range.min, decimals); } else { - const float step_size = range.step_size(); for (int i = static_cast(Range_Colors.size()) - 1; i >= 0; --i) { append_range_item(i, range.get_value_at_step(i), decimals); } @@ -4560,7 +4548,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return ret; }; - auto color_print_ranges = [this](unsigned char extruder_id, const std::vector& custom_gcode_per_print_z) { + /*auto color_print_ranges = [this](unsigned char extruder_id, const std::vector& custom_gcode_per_print_z) { std::vector>> ret; ret.reserve(custom_gcode_per_print_z.size()); @@ -4589,27 +4577,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv } return ret; - }; - - auto upto_label = [](double z) { - char buf[64]; - ::sprintf(buf, "%.2f", z); - return _u8L("up to") + " " + std::string(buf) + " " + _u8L("mm"); - }; - - auto above_label = [](double z) { - char buf[64]; - ::sprintf(buf, "%.2f", z); - return _u8L("above") + " " + std::string(buf) + " " + _u8L("mm"); - }; - - auto fromto_label = [](double z1, double z2) { - char buf1[64]; - ::sprintf(buf1, "%.2f", z1); - char buf2[64]; - ::sprintf(buf2, "%.2f", z2); - return _u8L("from") + " " + std::string(buf1) + " " + _u8L("to") + " " + std::string(buf2) + " " + _u8L("mm"); - }; + };*/ auto role_time_and_percent = [time_mode](ExtrusionRole role) { auto it = std::find_if(time_mode.roles_times.begin(), time_mode.roles_times.end(), [role](const std::pair& item) { return role == item.first; }); @@ -5106,7 +5074,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGuiWindow* window = ImGui::GetCurrentWindow(); const ImRect separator(ImVec2(window->Pos.x + window_padding * 3, window->DC.CursorPos.y), ImVec2(window->Pos.x + window->Size.x - window_padding * 3, window->DC.CursorPos.y + 1.0f)); ImGui::ItemSize(ImVec2(0.0f, 0.0f)); - const bool item_visible = ImGui::ItemAdd(separator, 0); + ImGui::ItemAdd(separator, 0); window->DrawList->AddLine(separator.Min, ImVec2(separator.Max.x, separator.Min.y), ImGui::GetColorU32(ImGuiCol_Separator)); std::vector> columns_offsets; @@ -5228,7 +5196,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return items; }; - auto append_color_change = [&imgui](const ColorRGBA& color1, const ColorRGBA& color2, const std::array& offsets, const Times& times) { + /*auto append_color_change = [&imgui](const ColorRGBA& color1, const ColorRGBA& color2, const std::array& offsets, const Times& times) { imgui.text(_u8L("Color change")); ImGui::SameLine(); @@ -5245,9 +5213,9 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGui::SameLine(offsets[0]); imgui.text(short_time(get_time_dhms(times.second - times.first))); - }; + };*/ - auto append_print = [&imgui, imperial_units](const ColorRGBA& color, const std::array& offsets, const Times& times, std::pair used_filament) { + /*auto append_print = [&imgui, imperial_units](const ColorRGBA& color, const std::array& offsets, const Times& times, std::pair used_filament) { imgui.text(_u8L("Print")); ImGui::SameLine(); @@ -5273,7 +5241,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ::sprintf(buffer, "%.2f g", used_filament.second); imgui.text(buffer); } - }; + };*/ PartialTimes partial_times = generate_partial_times(time_mode.custom_gcode_times, m_print_statistics.volumes_per_color_change); if (!partial_times.empty()) { @@ -5380,7 +5348,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv // } //} - auto any_option_available = [this]() { +/* auto any_option_available = [this]() { auto available = [this](EMoveType type) { const TBuffer& buffer = m_buffers[buffer_id(type)]; return buffer.visible && buffer.has_data(); @@ -5393,7 +5361,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv available(EMoveType::Tool_change) || available(EMoveType::Unretract) || available(EMoveType::Seam); - }; + };*/ //auto add_option = [this, append_item](EMoveType move_type, EOptionsColors color, const std::string& text) { // const TBuffer& buffer = m_buffers[buffer_id(move_type)]; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index ca03a36393..2af35b86a1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2773,7 +2773,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re ModelInstanceEPrintVolumeState state; const bool contained_min_one = m_volumes.check_outside_state(m_bed.build_volume(), &state); const bool partlyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Partly_Outside); - const bool fullyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Fully_Outside); + // const bool fullyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Fully_Outside); _set_warning_notification(EWarning::ObjectClashed, partlyOut); //BBS: turn off the warning when fully outside @@ -4080,12 +4080,12 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // Set focus in order to remove it from sidebar fields if (m_canvas != nullptr) { // Only set focus, if the top level window of this canvas is active. - auto p = dynamic_cast(evt.GetEventObject()); - while (p->GetParent()) - p = p->GetParent(); - auto *top_level_wnd = dynamic_cast(p); - if (top_level_wnd && top_level_wnd->IsActive() && !wxGetApp().get_side_menu_popup_status()) - ;// m_canvas->SetFocus(); +// auto p = dynamic_cast(evt.GetEventObject()); +// while (p->GetParent()) +// p = p->GetParent(); +// auto *top_level_wnd = dynamic_cast(p); +// if (top_level_wnd && top_level_wnd->IsActive() && !wxGetApp().get_side_menu_popup_status()) + // m_canvas->SetFocus(); m_mouse.position = pos.cast(); m_tooltip_enabled = false; // 1) forces a frame render to ensure that m_hover_volume_idxs is updated even when the user right clicks while @@ -5085,7 +5085,6 @@ std::vector GLCanvas3D::get_empty_cells(const Vec2f start_point, const Ve } for (size_t i = 0; i < m_model->objects.size(); ++i) { ModelObject* model_object = m_model->objects[i]; - auto id = model_object->id().id; ModelInstance* model_instance0 = model_object->instances.front(); Polygon hull_2d = model_object->convex_hull_2d(Geometry::assemble_transform({ 0.0, 0.0, model_instance0->get_offset().z() }, model_instance0->get_rotation(), model_instance0->get_scaling_factor(), model_instance0->get_mirror())); @@ -5356,7 +5355,6 @@ void GLCanvas3D::update_sequential_clearance() for (int i = k+1; i < bounding_box_count; i++) { - Polygon& next_convex = convex_and_bounding_boxes[i].hull_polygon; BoundingBox& next_bbox = convex_and_bounding_boxes[i].bounding_box; auto py1 = next_bbox.min.y(); auto py2 = next_bbox.max.y(); @@ -5417,7 +5415,6 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa ImGuiWrapper* imgui = wxGetApp().imgui(); auto canvas_w = float(get_canvas_size().get_width()); - auto canvas_h = float(get_canvas_size().get_height()); //BBS: GUI refactor: move main toolbar to the right //original use center as {0.0}, and top is (canvas_h/2), bottom is (-canvas_h/2), also plus inv_camera //now change to left_up as {0,0}, and top is 0, bottom is canvas_h @@ -5426,6 +5423,7 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa ImGuiWrapper::push_toolbar_style(get_scale()); imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f); #else + auto canvas_h = float(get_canvas_size().get_height()); const float x = canvas_w - m_main_toolbar.get_width(); const float y = 0.5f * canvas_h - top * float(wxGetApp().plater()->get_camera().get_zoom()); imgui->set_next_window_pos(x, y, ImGuiCond_Always, 1.0f, 0.0f); @@ -5440,13 +5438,13 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa PrinterTechnology ptech = current_printer_technology(); bool settings_changed = false; - float angle_min = 45.f; + // float angle_min = 45.f; std::string angle_key = "overhang_angle", rot_key = "enable_rotation"; std::string key_min_area = "min_area"; std::string postfix = "_fff"; if (ptech == ptSLA) { - angle_min = 45.f; + // angle_min = 45.f; postfix = "_sla"; } @@ -5502,7 +5500,6 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo ImGuiWrapper *imgui = wxGetApp().imgui(); auto canvas_w = float(get_canvas_size().get_width()); - auto canvas_h = float(get_canvas_size().get_height()); //BBS: GUI refactor: move main toolbar to the right //original use center as {0.0}, and top is (canvas_h/2), bottom is (-canvas_h/2), also plus inv_camera //now change to left_up as {0,0}, and top is 0, bottom is canvas_h @@ -5510,8 +5507,8 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo float left_pos = m_main_toolbar.get_item("arrange")->render_left_pos; const float x = (1 + left_pos) * canvas_w / 2; imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.0f, 0.0f); - #else + auto canvas_h = float(get_canvas_size().get_height()); const float x = canvas_w - m_main_toolbar.get_width(); const float y = 0.5f * canvas_h - top * float(wxGetApp().plater()->get_camera().get_zoom()); imgui->set_next_window_pos(x, y, ImGuiCond_Always, 1.0f, 0.0f); @@ -8091,16 +8088,13 @@ void GLCanvas3D::_render_return_toolbar() const ImVec2 button_icon_size = ImVec2(font_size * 1.3, font_size * 1.3); ImGuiWrapper& imgui = *wxGetApp().imgui(); - Size cnv_size = get_canvas_size(); - auto canvas_w = float(cnv_size.get_width()); - auto canvas_h = float(cnv_size.get_height()); - float window_width = real_size.x + button_icon_size.x + imgui.scaled(2.0f); - float window_height = button_icon_size.y + imgui.scaled(2.0f); float window_pos_x = 30.0f + (is_collapse_toolbar_on_left() ? (get_collapse_toolbar_width() + 5.f) : 0); float window_pos_y = 14.0f; imgui.set_next_window_pos(window_pos_x, window_pos_y, ImGuiCond_Always, 0, 0); #ifdef __WINDOWS__ + float window_width = real_size.x + button_icon_size.x + imgui.scaled(2.0f); + float window_height = button_icon_size.y + imgui.scaled(2.0f); imgui.set_next_window_size(window_width, window_height, ImGuiCond_Always); #endif @@ -8114,9 +8108,6 @@ void GLCanvas3D::_render_return_toolbar() const imgui.begin(_L("Assembly Return"), ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse); - float button_width = 20; - float button_height = 20; - ImVec2 size = ImVec2(button_width, button_height); // Size of the image we want to make visible ImVec2 uv0 = ImVec2(0.0f, 0.0f); ImVec2 uv1 = ImVec2(1.0f, 1.0f); @@ -8392,11 +8383,11 @@ void GLCanvas3D::_render_assemble_control() const ImGui::SameLine(window_padding.x + 2 * text_size_x + slider_width + item_spacing * 7 + value_size); ImGui::PushItemWidth(slider_width); - bool explosion_slider_changed = imgui->bbl_slider_float_style("##ratio_slider", &m_explosion_ratio, 1.0f, 3.0f, "%1.2f"); + imgui->bbl_slider_float_style("##ratio_slider", &m_explosion_ratio, 1.0f, 3.0f, "%1.2f"); ImGui::SameLine(window_padding.x + 2 * text_size_x + 2 * slider_width + item_spacing * 8 + value_size); ImGui::PushItemWidth(value_size); - bool explosion_input_changed = ImGui::BBLDragFloat("##ratio_input", &m_explosion_ratio, 0.1f, 1.0f, 3.0f, "%1.2f"); + ImGui::BBLDragFloat("##ratio_input", &m_explosion_ratio, 0.1f, 1.0f, 3.0f, "%1.2f"); } imgui->end(); @@ -8426,7 +8417,6 @@ void GLCanvas3D::_render_assemble_info() const auto canvas_h = float(get_canvas_size().get_height()); float space_size = imgui->get_style_scaling() * 8.0f; float caption_max = imgui->calc_text_size(_L("Total Volume:")).x + 3 * space_size; - char buf[3][64]; ImGuiIO& io = ImGui::GetIO(); ImFont* font = io.Fonts->Fonts[0]; diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index 79cbb77370..be0b402653 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -470,7 +470,6 @@ void GLTexture::reset() bool GLTexture::generate_from_text_string(const std::string& text_str, wxFont &font, wxColor background, wxColor foreground) { - int w,h,hl; return generate_from_text(text_str, font, background, foreground); } diff --git a/src/slic3r/GUI/GLToolbar.cpp b/src/slic3r/GUI/GLToolbar.cpp index be97e52e84..6b14f3cf2f 100644 --- a/src/slic3r/GUI/GLToolbar.cpp +++ b/src/slic3r/GUI/GLToolbar.cpp @@ -1466,7 +1466,6 @@ void GLToolbar::render_vertical(const GLCanvas3D& parent) int tex_width, tex_height; if (item->is_action_with_text_image()) { float scaled_text_size = m_layout.text_size * m_layout.scale * inv_cnv_w; - float scaled_text_width = item->get_extra_size_ratio() * icons_size_x; float scaled_text_border = 2.5 * m_layout.scale * inv_cnv_h; float scaled_text_height = icons_size_y / 2.0f; item->render_text(left, left + scaled_text_size, top - scaled_text_border - scaled_text_height, top - scaled_text_border); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index eedf223ae9..afecaa2658 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -301,7 +301,6 @@ public: memDC.SetTextForeground(StateColor::darkModeColorFor(wxColour(144, 144, 144))); int width = bitmap.GetWidth(); int text_height = memDC.GetTextExtent(text).GetHeight(); - int text_width = memDC.GetTextExtent(text).GetWidth(); wxRect text_rect(wxPoint(0, m_action_line_y_position), wxPoint(width, m_action_line_y_position + text_height)); memDC.DrawLabel(text, text_rect, wxALIGN_CENTER); @@ -963,7 +962,7 @@ void GUI_App::post_init() // Neither wxShowEvent nor wxWindowCreateEvent work reliably. if (this->preset_updater) { // G-Code Viewer does not initialize preset_updater. CallAfter([this] { - bool cw_showed = this->config_wizard_startup(); + this->config_wizard_startup(); std::string http_url = get_http_url(app_config->get_country_code()); std::string language = GUI::into_u8(current_language_code()); @@ -1026,8 +1025,7 @@ void GUI_App::post_init() try { std::time_t lw_t = boost::filesystem::last_write_time(temp_path) ; files_vec.push_back({ lw_t, temp_path.filename().string() }); - } catch (const std::exception &ex) { - } + } catch (std::exception&) {} } std::sort(files_vec.begin(), files_vec.end(), []( std::pair &a, std::pair &b) { @@ -1317,7 +1315,6 @@ int GUI_App::download_plugin(std::string name, std::string package_name, Install .on_complete([&pro_fn, tmp_path, target_file_path](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(info) << "[download_plugin 2] completed"; bool cancel = false; - int percent = 0; fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc); file.write(body.c_str(), body.size()); file.close(); @@ -1927,8 +1924,13 @@ void GUI_App::init_app_config() boost::filesystem::create_directory(data_dir_path); } - // Change current dirtory of application - chdir(encode_path((Slic3r::data_dir() + "/log").c_str()).c_str()); + // Change current directory of application + auto path = encode_path((Slic3r::data_dir() + "/log").c_str()); +#ifdef _WIN32 + _chdir(path.c_str()); +#else + chdir(path.c_str()); +#endif } else { m_datadir_redefined = true; } @@ -3365,7 +3367,7 @@ if (res) { mainframe->refresh_plugin_tips(); // BBS: remove SLA related message } - } catch (std::exception &e) { + } catch (std::exception&) { // wxMessageBox(e.what(), "", MB_OK); } } @@ -3379,9 +3381,7 @@ void GUI_App::ShowDownNetPluginDlg() { return; DownloadProgressDialog dlg(_L("Downloading Bambu Network Plug-in")); dlg.ShowModal(); - } catch (std::exception &e) { - ; - } + } catch (std::exception&) {} } void GUI_App::ShowUserLogin(bool show) @@ -3396,9 +3396,7 @@ void GUI_App::ShowUserLogin(bool show) login_dlg = new ZUserLogin(); } login_dlg->ShowModal(); - } catch (std::exception &e) { - ; - } + } catch (std::exception&) {} } else { if (login_dlg) login_dlg->EndModal(wxID_OK); @@ -3418,7 +3416,7 @@ void GUI_App::ShowOnlyFilament() { // BBS: remove SLA related message } - } catch (std::exception &e) { + } catch (std::exception&) { // wxMessageBox(e.what(), "", MB_OK); } } @@ -3830,10 +3828,10 @@ std::string GUI_App::handle_web_request(std::string cmd) auto keyCode = key_event_node.get("key"); auto ctrlKey = key_event_node.get("ctrl"); auto shiftKey = key_event_node.get("shift"); - auto cmdKey = key_event_node.get("cmd"); wxKeyEvent e(wxEVT_CHAR_HOOK); #ifdef __APPLE__ + auto cmdKey = key_event_node.get("cmd"); e.SetControlDown(cmdKey); e.SetRawControlDown(ctrlKey); #else @@ -4786,8 +4784,6 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) }); } - unsigned int http_code = 200; - /* get list witch need to be deleted*/ std::vector delete_cache_presets = get_delete_cache_presets_lock(); for (auto it = delete_cache_presets.begin(); it != delete_cache_presets.end();) { @@ -5467,7 +5463,7 @@ void GUI_App::show_ip_address_enter_dialog_handler(wxCommandEvent& evt) void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_option) { - bool app_layout_changed = false; + // bool app_layout_changed = false; { // the dialog needs to be destroyed before the call to recreate_GUI() // or sometimes the application crashes into wxDialogBase() destructor @@ -6500,8 +6496,6 @@ static bool del_win_registry(HKEY hkeyHive, const wchar_t *pszVar, const wchar_t return false; if (!bDidntExist) { - DWORD dwDisposition; - HKEY hkey; iRC = ::RegDeleteKeyExW(hkeyHive, pszVar, KEY_ALL_ACCESS, 0); if (iRC == ERROR_SUCCESS) { return true; diff --git a/src/slic3r/GUI/GUI_AuxiliaryList.cpp b/src/slic3r/GUI/GUI_AuxiliaryList.cpp index 1fa5b194ec..5e0d0dcd21 100644 --- a/src/slic3r/GUI/GUI_AuxiliaryList.cpp +++ b/src/slic3r/GUI/GUI_AuxiliaryList.cpp @@ -3,8 +3,6 @@ #include "I18N.hpp" #include "wxExtensions.hpp" -#include - #include "GUI_App.hpp" #include "Plater.hpp" #include "libslic3r/Model.hpp" diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 067fd45e35..334705618e 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -711,9 +711,9 @@ wxMenuItem* MenuFactory::append_menu_item_settings(wxMenu* menu_) // Create new items for settings popupmenu - if (printer_technology() == ptFFF || - (menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator())) - ;// menu->SetFirstSeparator(); +// if (printer_technology() == ptFFF || +// (menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator())) + // menu->SetFirstSeparator(); // detect itemm for adding of the setting ObjectList* object_list = obj_list(); @@ -1339,7 +1339,7 @@ void MenuFactory::create_extra_object_menu() m_object_menu.AppendSeparator(); // Set filament insert menu item here // Set Printable - wxMenuItem* menu_item_printable = append_menu_item_printable(&m_object_menu); + append_menu_item_printable(&m_object_menu); append_menu_item_per_object_process(&m_object_menu); // Enter per object parameters append_menu_item_per_object_settings(&m_object_menu); @@ -1493,8 +1493,6 @@ void MenuFactory::create_plate_menu() // arrange objects on current plate append_menu_item(menu, wxID_ANY, _L("Arrange"), _L("arrange current plate"), [](wxCommandEvent&) { - PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); - assert(plate); plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->arrange(); }, "", nullptr, @@ -1507,8 +1505,6 @@ void MenuFactory::create_plate_menu() append_menu_item( menu, wxID_ANY, _L("Reload All"), _L("reload all from disk"), [](wxCommandEvent&) { - PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); - assert(plate); plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->reload_all_from_disk(); }, @@ -1517,8 +1513,6 @@ void MenuFactory::create_plate_menu() // orient objects on current plate append_menu_item(menu, wxID_ANY, _L("Auto Rotate"), _L("auto rotate current plate"), [](wxCommandEvent&) { - PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); - assert(plate); //BBS TODO call auto rotate for current plate plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->orient(); @@ -1801,7 +1795,7 @@ void MenuFactory::append_menu_item_clone(wxMenu* menu) void MenuFactory::append_menu_item_simplify(wxMenu* menu) { - wxMenuItem* menu_item = append_menu_item(menu, wxID_ANY, _L("Simplify Model"), "", + append_menu_item(menu, wxID_ANY, _L("Simplify Model"), "", [](wxCommandEvent&) { obj_list()->simplify(); }, "", menu, []() {return plater()->can_simplify(); }, m_parent); } @@ -1899,16 +1893,16 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) wxMenu* extruder_selection_menu = new wxMenu(); const wxString& name = sels.Count() == 1 ? names[0] : names[1]; - int initial_extruder = -1; // negative value for multiple object/part selection - if (sels.Count() == 1) { - const ModelConfig& config = obj_list()->get_item_config(sels[0]); - // BBS - const auto sel_vol = obj_list()->get_selected_model_volume(); - if (sel_vol && sel_vol->type() == ModelVolumeType::PARAMETER_MODIFIER) - initial_extruder = config.has("extruder") ? config.extruder() : 0; - else - initial_extruder = config.has("extruder") ? config.extruder() : 1; - } + // int initial_extruder = -1; // negative value for multiple object/part selection + // if (sels.Count() == 1) { + // const ModelConfig& config = obj_list()->get_item_config(sels[0]); + // // BBS + // const auto sel_vol = obj_list()->get_selected_model_volume(); + // if (sel_vol && sel_vol->type() == ModelVolumeType::PARAMETER_MODIFIER) + // initial_extruder = config.has("extruder") ? config.extruder() : 0; + // else + // initial_extruder = config.has("extruder") ? config.extruder() : 1; + // } // BBS bool has_modifier = false; @@ -1949,7 +1943,6 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) void MenuFactory::append_menu_item_set_printable(wxMenu* menu) { - const Selection& selection = plater()->canvas3D()->get_selection(); bool all_printable = true; ObjectList* list = obj_list(); wxDataViewItemArray sels; @@ -1957,7 +1950,6 @@ void MenuFactory::append_menu_item_set_printable(wxMenu* menu) for (wxDataViewItem item : sels) { ItemType type = list->GetModel()->GetItemType(item); - bool check; if (type != itInstance && type != itObject) continue; else { @@ -2000,8 +1992,8 @@ void MenuFactory::append_menu_item_locked(wxMenu* menu) }, "", nullptr, []() { return true; }, m_parent); m_parent->Bind(wxEVT_UPDATE_UI, [](wxUpdateUIEvent& evt) { - PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); - assert(plate); + // PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + // assert(plate); //bool check = plate->is_locked(); //evt.Check(check); plater()->set_current_canvas_as_dirty(); @@ -2037,8 +2029,6 @@ void MenuFactory::append_menu_item_plate_name(wxMenu *menu) m_parent->Bind( wxEVT_UPDATE_UI, [](wxUpdateUIEvent &evt) { - PartPlate *plate = plater()->get_partplate_list().get_selected_plate(); - assert(plate); plater()->set_current_canvas_as_dirty(); }, item->GetId()); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 30846abf51..d7d083f35f 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -713,7 +713,6 @@ void ObjectList::update_plate_values_for_items() Unselect(item); bool is_old_parent_expanded = IsExpanded(old_parent); - bool is_expanded = IsExpanded(item); m_objects_model->OnPlateChange(plate_idx, item); if (is_old_parent_expanded) Expand(old_parent); @@ -739,7 +738,6 @@ void ObjectList::object_config_options_changed(const ObjectVolumeID& ov_id) if (ov_id.object == nullptr) return; - ModelObjectPtrs& objects = wxGetApp().model().objects; ModelObject* mo = ov_id.object; ModelVolume* mv = ov_id.volume; @@ -846,8 +844,6 @@ void ObjectList::update_filament_colors() void ObjectList::update_name_column_width() const { wxSize client_size = this->GetClientSize(); - bool p_vbar = this->GetParent()->HasScrollbar(wxVERTICAL); - bool p_hbar = this->GetParent()->HasScrollbar(wxHORIZONTAL); auto em = em_unit(const_cast(this)); // BBS: walkaround for wxDataViewCtrl::HasScrollbar() does not return correct status @@ -936,7 +932,6 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const if (m_objects_model->GetItemType(item) & itPlate) { std::string name = m_objects_model->GetName(item).ToUTF8().data(); int plate_idx = -1; - const ItemType type0 = m_objects_model->GetItemType(item, plate_idx); if (plate_idx >= 0) { auto plate = wxGetApp().plater()->get_partplate_list().get_plate(plate_idx); if (plate->get_plate_name() != name) { @@ -1351,8 +1346,7 @@ void ObjectList::show_context_menu(const bool evt_context_menu) plater->SetPlateIndexByRightMenuInLeftUI(-1); if (type & itPlate) { int plate_idx = -1; - const ItemType type0 = m_objects_model->GetItemType(item, plate_idx); - if (plate_idx >= 0) { + if (plate_idx >= 0) { plater->SetPlateIndexByRightMenuInLeftUI(plate_idx); } } @@ -2006,7 +2000,7 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo try { model = Model::read_from_file(input_file, nullptr, nullptr, LoadStrategy::LoadModel); } - catch (std::exception& e) { + catch (std::exception&) { // auto msg = _L("Error!") + " " + input_file + " : " + e.what() + "."; auto msg = _L("Error!") + " " + _L("Failed to get the model data in the current file."); show_error(parent, msg); @@ -2905,7 +2899,7 @@ void ObjectList::boolean() new_object->config.assign_config(object->config); if (new_object->instances.empty()) new_object->add_instance(); - ModelVolume* new_volume = new_object->add_volume(mesh); + new_object->add_volume(mesh); // BBS: ensure on bed but no need to ensure locate in the center around origin new_object->ensure_on_bed(); @@ -2952,9 +2946,9 @@ DynamicPrintConfig ObjectList::get_default_layer_config(const int obj_idx) wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("layer_height"); config.set_key_value("layer_height",new ConfigOptionFloat(layer_height)); // BBS - int extruder = object(obj_idx)->config.has("extruder") ? - object(obj_idx)->config.opt_int("extruder") : - wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("extruder"); + // int extruder = object(obj_idx)->config.has("extruder") ? + // object(obj_idx)->config.opt_int("extruder") : + // wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("extruder"); config.set_key_value("extruder", new ConfigOptionInt(0)); return config; @@ -3176,8 +3170,8 @@ void ObjectList::part_selection_changed() bool update_and_show_settings = false; bool update_and_show_layers = false; - bool enable_manipulation{true}; - bool disable_ss_manipulation{false}; + // bool enable_manipulation{true}; Orca: Removed because not used + // bool disable_ss_manipulation{false}; Orca: Removed because not used bool disable_ununiform_scale{false}; const auto item = GetSelection(); @@ -3185,7 +3179,7 @@ void ObjectList::part_selection_changed() og_name = _L("Cut Connectors information"); update_and_show_manipulations = true; - enable_manipulation = false; + // enable_manipulation = false; disable_ununiform_scale = true; } else if (item && (m_objects_model->GetItemType(item) & itPlate)) { @@ -3202,7 +3196,7 @@ void ObjectList::part_selection_changed() obj_idx = selection.get_object_idx(); ModelObject *object = (*m_objects)[obj_idx]; m_config = &object->config; - disable_ss_manipulation = object->is_cut(); + // disable_ss_manipulation = object->is_cut(); } else { og_name = _L("Group manipulation"); @@ -3211,17 +3205,17 @@ void ObjectList::part_selection_changed() update_and_show_manipulations = !selection.is_single_full_instance(); if (int obj_idx = selection.get_object_idx(); obj_idx >= 0) { - if (selection.is_any_volume() || selection.is_any_modifier()) - enable_manipulation = !(*m_objects)[obj_idx]->is_cut(); - else // if (item && m_objects_model->GetItemType(item) == itInstanceRoot) - disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + // if (selection.is_any_volume() || selection.is_any_modifier()) + // enable_manipulation = !(*m_objects)[obj_idx]->is_cut(); + // else // if (item && m_objects_model->GetItemType(item) == itInstanceRoot) + // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else { wxDataViewItemArray sels; GetSelections(sels); if (selection.is_single_full_object() || selection.is_multiple_full_instance()) { - int obj_idx = m_objects_model->GetObjectIdByItem(sels.front()); - disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + // int obj_idx = m_objects_model->GetObjectIdByItem(sels.front()); + // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else if (selection.is_mixed() || selection.is_multiple_full_object()) { std::map> cut_objects; @@ -3240,7 +3234,7 @@ void ObjectList::part_selection_changed() // check if selected cut objects are "full selected" for (auto cut_object : cut_objects) if (cut_object.first.check_sum() != cut_object.second.size()) { - disable_ss_manipulation = true; + // disable_ss_manipulation = true; break; } disable_ununiform_scale = !cut_objects.empty(); @@ -3288,7 +3282,7 @@ void ObjectList::part_selection_changed() // BBS: select object to edit config m_config = &(*m_objects)[obj_idx]->config; update_and_show_settings = true; - disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } } else { @@ -3316,8 +3310,8 @@ void ObjectList::part_selection_changed() m_config = &(*m_objects)[obj_idx]->volumes[volume_id]->config; update_and_show_settings = true; - const ModelVolume *volume = (*m_objects)[obj_idx]->volumes[volume_id]; - enable_manipulation = !((*m_objects)[obj_idx]->is_cut() && (volume->is_cut_connector() || volume->is_model_part())); + // const ModelVolume *volume = (*m_objects)[obj_idx]->volumes[volume_id]; + // enable_manipulation = !((*m_objects)[obj_idx]->is_cut() && (volume->is_cut_connector() || volume->is_model_part())); } else if (type & itInstance) { og_name = _L("Instance manipulation"); @@ -3325,7 +3319,7 @@ void ObjectList::part_selection_changed() // fill m_config by object's values m_config = &(*m_objects)[obj_idx]->config; - disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else if (type & (itLayerRoot | itLayer)) { og_name = type & itLayerRoot ? _L("Height ranges") : _L("Settings for height range"); @@ -3368,7 +3362,7 @@ void ObjectList::part_selection_changed() if (printer_technology() == ptSLA) update_and_show_layers = false; else if (update_and_show_layers) { - ;//wxGetApp().obj_layers()->get_og()->set_name(" " + og_name + " "); + //wxGetApp().obj_layers()->get_og()->set_name(" " + og_name + " "); } update_min_height(); @@ -3400,7 +3394,6 @@ wxDataViewItem ObjectList::add_settings_item(wxDataViewItem parent_item, const D return ret; const bool is_object_settings = m_objects_model->GetItemType(parent_item) == itObject; - const bool is_volume_settings = m_objects_model->GetItemType(parent_item) == itVolume; const bool is_layer_settings = m_objects_model->GetItemType(parent_item) == itLayer; if (!is_object_settings) { ModelVolumeType volume_type = m_objects_model->GetVolumeType(parent_item); @@ -4689,8 +4682,6 @@ void ObjectList::select_item(const ObjectVolumeID& ov_id) void ObjectList::select_items(const std::vector& ov_ids) { - ModelObjectPtrs& objects = wxGetApp().model().objects; - wxDataViewItemArray sel_items; for (auto ov_id : ov_ids) { if (ov_id.object == nullptr) @@ -5695,7 +5686,7 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) void ObjectList::on_plate_added(PartPlate* part_plate) { - wxDataViewItem plate_item = m_objects_model->AddPlate(part_plate); + m_objects_model->AddPlate(part_plate); } void ObjectList::on_plate_deleted(int plate_idx) diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp index 09ca8c64a8..a0e0da3ea5 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp @@ -205,7 +205,7 @@ bool ObjectSettings::update_settings_list() bool is_object_settings = false; bool is_volume_settings = false; bool is_layer_range_settings = false; - bool is_layer_root = false; + // bool is_layer_root = false; ModelObject * parent_object = nullptr; for (auto item : items) { auto type = objects_model->GetItemType(item); @@ -255,9 +255,9 @@ bool ObjectSettings::update_settings_list() t_layer_height_range height_range = objects_model->GetLayerRangeByItem(item); object_configs.emplace( (ObjectBase*)(&object->layer_config_ranges.at(height_range)), &object->layer_config_ranges.at(height_range) ); } - else if (type == itLayerRoot) { - is_layer_root = true; - } + // else if (type == itLayerRoot) { + // is_layer_root = true; + // } } auto tab_plate = dynamic_cast(wxGetApp().get_plate_tab()); diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 56c1550c46..7bc925e284 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -280,7 +280,6 @@ wxGridActivationResult GridCellFilamentsEditor::TryActivate(int row, int col, wx { ObjectGridTable *table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol* grid_col = table->get_grid_col(col); - ObjectGridTable::ObjectGridRow* grid_row = table->get_grid_row(row - 1); if ( actSource.GetOrigin() == wxGridActivationSource::Key ) { const wxKeyEvent& key_event = actSource.GetKeyEvent(); @@ -316,7 +315,6 @@ void GridCellFilamentsEditor::DoActivate(int row, int col, wxGrid* grid) if (m_cached_value != -1) { ObjectGridTable *table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol* grid_col = table->get_grid_col(col); - ObjectGridTable::ObjectGridRow* grid_row = table->get_grid_row(row - 1); if (m_cached_value <= grid_col->choice_count) { wxString choice = grid_col->choices[m_cached_value-1]; table->SetValue(row, col, choice); @@ -332,7 +330,6 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d wxRect text_rect = rect; if (table) { - ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -472,7 +469,6 @@ wxGridActivationResult GridCellChoiceEditor::TryActivate(int row, int col, wxGri { ObjectGridTable * table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); - ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); if (actSource.GetOrigin() == wxGridActivationSource::Key) { const wxKeyEvent &key_event = actSource.GetKeyEvent(); @@ -505,7 +501,6 @@ void GridCellChoiceEditor::DoActivate(int row, int col, wxGrid *grid) if (m_cached_value != -1) { ObjectGridTable * table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); - ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); if (m_cached_value <= grid_col->choice_count) { wxString choice = grid_col->choices[m_cached_value - 1]; table->SetValue(row, col, choice); @@ -521,7 +516,6 @@ void GridCellComboBoxRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc wxRect text_rect = rect; if (table) { - ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -561,7 +555,6 @@ wxString GridCellSupportEditor::ms_stringValues[2] = { wxT(""), wxT("") }; void GridCellSupportEditor::DoActivate(int row, int col, wxGrid* grid) { - ObjectGrid* local_table = dynamic_cast(grid); wxGridBlocks cell_array = grid->GetSelectedBlocks(); auto left_col = cell_array.begin()->GetLeftCol(); @@ -691,7 +684,6 @@ void GridCellSupportRenderer::Draw(wxGrid& grid, //wxGridCellBoolRenderer::Draw(grid, attr, dc, rect, row, col, isSelected); ObjectGridTable * table = dynamic_cast(grid.GetTable()); - ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionBool & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -891,7 +883,6 @@ void ObjectGrid::OnKeyDown( wxKeyEvent& event ) // see include/wx/defs.h enum wxKeyCode int keyCode = event.GetKeyCode(); int ctrlMask = wxMOD_CONTROL; - int shiftMask = wxMOD_SHIFT; // Coordinates of the selected block to copy to clipboard. wxGridBlockCoords selection; wxTextDataObject text_data; @@ -1544,7 +1535,6 @@ void ObjectGridTable::SetValue( int row, int col, const wxString& value ) return; ObjectGridRow* grid_row = m_grid_data[row - 1]; ObjectGridCol* grid_col = m_col_data[col]; - ObjectList* obj_list = wxGetApp().obj_list(); if (grid_col->type == coEnum) { int enum_value = 0; for (int i = 0; i < grid_col->choice_count; i++) @@ -1812,9 +1802,6 @@ wxString ObjectGridTable::convert_filament_string(int index, wxString& filament_ void ObjectGridTable::init_cols(ObjectGrid *object_grid) { - const float font_size = 1.5f * wxGetApp().em_unit(); - - // printable for object ObjectGridCol *col = new ObjectGridCol(coBool, "printable", ObjectGridTable::category_all, true, false, true, false, wxALIGN_CENTRE); col->size = object_grid->GetTextExtent(L("Printable")).x; @@ -1910,7 +1897,6 @@ void ObjectGridTable::init_cols(ObjectGrid *object_grid) col = new ObjectGridCol(coFloat, "inner_wall_speed_reset", L("Speed"), false, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); - return; } void ObjectGridTable::construct_object_configs(ObjectGrid *object_grid) @@ -1929,8 +1915,8 @@ void ObjectGridTable::construct_object_configs(ObjectGrid *object_grid) int object_count = m_panel->m_model->objects.size(); PartPlateList& partplate_list = m_panel->m_plater->get_partplate_list(); DynamicPrintConfig& global_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - const DynamicPrintConfig* plater_config = m_panel->m_plater->config(); - const DynamicPrintConfig& filament_config = *plater_config; + // const DynamicPrintConfig* plater_config = m_panel->m_plater->config(); + // const DynamicPrintConfig& filament_config = *plater_config; for (int i = 0; i < object_count; i++) { @@ -2826,7 +2812,7 @@ int ObjectTablePanel::init_filaments_and_colors() BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", invalid color count:%1%, extruder count: %2%") %color_count %m_filaments_count; } - unsigned int i = 0; + int i = 0; ColorRGB rgb; while (i < m_filaments_count) { const std::string& txt_color = global_config->opt_string("filament_colour", i); @@ -3032,7 +3018,6 @@ void ObjectTablePanel::load_data() { ObjectGridTable::ObjectGridCol *grid_col = m_object_grid_table->get_grid_col(i); if (grid_col->size > 0) { - int fit_size1 = m_object_grid->GetColSize(i); m_object_grid->SetColSize(i, grid_col->size); } } @@ -3173,7 +3158,7 @@ void ObjectTablePanel::OnRowSize( wxGridSizeEvent& ev) g_dialog_max_height =(panel_size.GetHeight() > g_max_size_from_parent.GetHeight())?g_max_size_from_parent.GetHeight():panel_size.GetHeight(); this->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); - wxSize current_size = GetParent()->GetSize(); + // wxSize current_size = GetParent()->GetSize(); //if (current_size.GetHeight() < g_dialog_max_height) GetParent()->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); GetParent()->SetSize(wxSize(g_dialog_max_width, g_dialog_max_height)); @@ -3187,7 +3172,7 @@ void ObjectTablePanel::OnColSize( wxGridSizeEvent& ev) g_dialog_max_height =(panel_size.GetHeight() > g_max_size_from_parent.GetHeight())?g_max_size_from_parent.GetHeight():panel_size.GetHeight(); this->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); - wxSize current_size = GetParent()->GetSize(); + // wxSize current_size = GetParent()->GetSize(); //if (current_size.GetWidth() < g_dialog_max_width) GetParent()->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); GetParent()->SetSize(wxSize(g_dialog_max_width, g_dialog_max_height)); @@ -3471,8 +3456,6 @@ void GridCellTextEditor::SetSize(const wxRect &rect) { wxGridCellTextEditor::Set void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) { ObjectGridTable * table = dynamic_cast(grid->GetTable()); - ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); - ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); auto val = table->GetValue(row, col); @@ -3506,10 +3489,6 @@ void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) bool GridCellTextEditor::EndEdit(int row, int col, const wxGrid *grid, const wxString &WXUNUSED(oldval), wxString *newval) { - ObjectGridTable * table = dynamic_cast(grid->GetTable()); - ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); - ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); - wxCHECK_MSG(m_control, false, "wxGridCellTextEditor must be created first!"); const wxString value = Text()->GetTextCtrl()->GetValue(); diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index 10578be691..5e9dfd0f64 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -108,7 +108,6 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ //SettingsFactory::Bundle cat_options = SettingsFactory::get_bundle(&config->get(), is_object); std::map> cat_options; std::vector category_settings = SettingsFactory::get_visible_options(category, !is_object); - bool display_multiple = false; auto is_option_modified = [this](std::string key) { ConfigOption* config_option1 = m_origin_config.option(key); ConfigOption* config_option2 = m_current_config.option(key); @@ -147,7 +146,6 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ else it1 = cat_options.erase(it1); } - display_multiple = true; } else { cat_options.emplace(category, category_settings); diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 91254111cf..13e67556e6 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -6,7 +6,6 @@ #include "GUI_App.hpp" #include "GUI.hpp" #include "I18N.hpp" -#include "3DScene.hpp" #include "BackgroundSlicingProcess.hpp" #include "OpenGLManager.hpp" #include "GLCanvas3D.hpp" @@ -15,19 +14,11 @@ #include "MainFrame.hpp" #include "format.hpp" -#include -#include #include #include -#include -#include -#include -#include -#include // this include must follow the wxWidgets ones or it won't compile on Windows -> see http://trac.wxwidgets.org/ticket/2421 #include "libslic3r/Print.hpp" -#include "libslic3r/SLAPrint.hpp" #include "NotificationManager.hpp" #ifdef _WIN32 @@ -536,7 +527,6 @@ void Preview::update_layers_slider_from_canvas(wxKeyEvent &event) const auto key = event.GetKeyCode(); IMSlider *m_layers_slider = m_canvas->get_gcode_viewer().get_layers_slider(); - IMSlider *m_moves_slider = m_canvas->get_gcode_viewer().get_moves_slider(); if (key == 'L') { if(!m_layers_slider->switch_one_layer_mode()) event.Skip(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index bee454af28..c9c324222d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -3057,7 +3057,7 @@ bool GLGizmoEmboss::choose_font_by_wxdialog() } #endif // ALLOW_ADD_FONT_BY_OS_SELECTOR -#if defined ALLOW_ADD_FONT_BY_FILE or defined ALLOW_DEBUG_MODE +#if defined(ALLOW_ADD_FONT_BY_FILE) || defined(ALLOW_DEBUG_MODE) namespace priv { static std::string get_file_name(const std::string &file_path) { @@ -3693,7 +3693,6 @@ GuiCfg create_gui_configuration() cfg.height_of_volume_type_selector = separator_height + line_height_with_spacing + input_height; int max_style_image_width = static_cast(std::round(cfg.max_style_name_width/2 - 2 * style.FramePadding.x)); - int max_style_image_height = static_cast(std::round(input_height)); cfg.max_style_image_size = Vec2i32(max_style_image_width, line_height); cfg.face_name_size = Vec2i32(cfg.input_width, line_height_with_spacing); cfg.face_name_texture_offset_x = cfg.face_name_size.x() + space; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 6ad62f1a8e..1cd3aee1e6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -245,17 +245,10 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float gap_fill_slider_left = m_imgui->calc_text_size(m_desc.at("gap_fill")).x + m_imgui->scaled(1.5f); const float highlight_slider_left = m_imgui->calc_text_size(m_desc.at("highlight_by_angle")).x + m_imgui->scaled(1.5f); const float reset_button_slider_left = m_imgui->calc_text_size(m_desc.at("reset_direction")).x + m_imgui->scaled(1.5f) + ImGui::GetStyle().FramePadding.x * 2; - const float on_overhangs_only_width = m_imgui->calc_text_size(m_desc["on_overhangs_only"]).x + m_imgui->scaled(1.5f); - const float remove_btn_width = m_imgui->calc_text_size(m_desc.at("remove_all")).x + m_imgui->scaled(1.5f); - const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.5f); const float gap_area_txt_width = m_imgui->calc_text_size(m_desc.at("gap_area")).x + m_imgui->scaled(1.5f); const float smart_fill_angle_txt_width = m_imgui->calc_text_size(m_desc.at("smart_fill_angle")).x + m_imgui->scaled(1.5f); - const float buttons_width = remove_btn_width + filter_btn_width + m_imgui->scaled(1.5f); const float empty_button_width = m_imgui->calc_button_size("").x; - const float tips_width = m_imgui->calc_text_size(_L("Auto support threshold angle: ") + " 90 ").x + m_imgui->scaled(1.5f); - const float minimal_slider_width = m_imgui->scaled(4.f); - float caption_max = 0.f; float total_text_max = 0.f; for (const auto &t : std::array{"enforce", "block", "remove", "cursor_size", "clipping_of_view"}) { @@ -272,8 +265,6 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float sliders_width = m_imgui->scaled(7.0f); const float drag_left_width = ImGui::GetStyle().WindowPadding.x + sliders_left_width + sliders_width - space_size; - float drag_pos_times = 0.7; - ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc.at("tool_type")); std::array tool_ids = { ImGui::CircleButtonIcon, ImGui::SphereButtonIcon, ImGui::FillButtonIcon, ImGui::GapFillIcon }; @@ -697,7 +688,6 @@ wxString GLGizmoFdmSupports::handle_snapshot_action_name(bool shift_down, GLGizm void GLGizmoFdmSupports::init_print_instance() { const PrintObject* print_object = NULL; - PrintInstance print_instance = { 0 }; const Print *print = m_parent.fff_print(); if (!m_c->selection_info() || (m_print_instance.print_object)) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp index ee9c779464..cb791597e6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp @@ -138,8 +138,6 @@ void GLGizmoMeshBoolean::on_render() BoundingBoxf3 src_bb; BoundingBoxf3 tool_bb; - const ModelObject* mo = m_c->selection_info()->model_object(); - const ModelInstance* mi = mo->instances[m_parent.get_selection().get_instance_idx()]; const Selection& selection = m_parent.get_selection(); const Selection::IndicesList& idxs = selection.get_volume_idxs(); for (unsigned int i : idxs) { @@ -163,16 +161,12 @@ void GLGizmoMeshBoolean::on_set_state() if (m_state == EState::On) { m_src.reset(); m_tool.reset(); - bool m_diff_delete_input = false; - bool m_inter_delete_input = false; m_operation_mode = MeshBooleanOperation::Union; m_selecting_state = MeshBooleanSelectingState::SelectSource; } else if (m_state == EState::Off) { m_src.reset(); m_tool.reset(); - bool m_diff_delete_input = false; - bool m_inter_delete_input = false; m_operation_mode = MeshBooleanOperation::Undef; m_selecting_state = MeshBooleanSelectingState::Undef; wxGetApp().notification_manager()->close_plater_warning_notification(warning_text); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 3167266a5e..4193ba885f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -403,7 +403,6 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.f); const float buttons_width = remove_btn_width + filter_btn_width + m_imgui->scaled(1.f); const float minimal_slider_width = m_imgui->scaled(4.f); - const float color_button_width = m_imgui->calc_text_size(std::string_view{""}).x + m_imgui->scaled(1.75f); float caption_max = 0.f; float total_text_max = 0.f; @@ -444,7 +443,6 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott float start_pos_x = ImGui::GetCursorPos().x; const ImVec2 max_label_size = ImGui::CalcTextSize("99", NULL, true); - const float item_spacing = m_imgui->scaled(0.8f); size_t n_extruder_colors = std::min((size_t)EnforcerBlockerType::ExtruderMax, m_extruders_colors.size()); for (int extruder_idx = 0; extruder_idx < n_extruder_colors; extruder_idx++) { const ColorRGBA &extruder_color = m_extruders_colors[extruder_idx]; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp index 2dbf7778e0..cf512cd88e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp @@ -527,21 +527,10 @@ std::vector GLGizmoPainterBase::get_pr if (m_rr.mesh_id == -1) return hit_triangles_by_mesh; - ProjectedMousePosition mesh_hit_point = { m_rr.hit, m_rr.mesh_id, m_rr.facet }; float z_bot_world= (trafo_matrices[m_rr.mesh_id] * Vec3d(m_rr.hit(0), m_rr.hit(1), m_rr.hit(2))).z(); float z_top_world = z_bot_world+ m_cursor_height; hit_triangles_by_mesh.push_back({ z_bot_world, m_rr.mesh_id, size_t(m_rr.facet) }); - const Selection& selection = m_parent.get_selection(); - const ModelObject* mo = m_c->selection_info()->model_object(); - const ModelInstance* mi = mo->instances[selection.get_instance_idx()]; - const Transform3d instance_trafo = m_parent.get_canvas_type() == GLCanvas3D::CanvasAssembleView ? - mi->get_assemble_transformation().get_matrix() : - mi->get_transformation().get_matrix(); - const Transform3d instance_trafo_not_translate = m_parent.get_canvas_type() == GLCanvas3D::CanvasAssembleView ? - mi->get_assemble_transformation().get_matrix_no_offset() : - mi->get_transformation().get_matrix_no_offset(); - for (int mesh_idx = 0; mesh_idx < part_volumes.size(); mesh_idx++) { if (mesh_idx == m_rr.mesh_id) continue; @@ -712,7 +701,6 @@ bool GLGizmoPainterBase::gizmo_event(SLAGizmoEventType action, const Vec2d& mous // The mouse button click detection is enabled when there is a valid hit. // Missing the object entirely // shall not capture the mouse. - const bool dragging_while_painting = (action == SLAGizmoEventType::Dragging && m_button_down != Button::None); if (mesh_idx != -1 && m_button_down == Button::None) m_button_down = ((action == SLAGizmoEventType::LeftDown) ? Button::Left : Button::Right); @@ -1063,7 +1051,7 @@ void GLGizmoPainterBase::on_set_state() if (m_state == On && m_old_state != On) { // the gizmo was just turned on on_opening(); - const Selection& selection = m_parent.get_selection(); + // const Selection& selection = m_parent.get_selection(); //Camera& camera = wxGetApp().plater()->get_camera(); //Vec3d rotate_target = selection.get_bounding_box().center(); //rotate_target(2) = 0.f; diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 319c5c75f2..cf8b560198 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -186,7 +186,7 @@ bool GLGizmosManager::init() // Order of gizmos in the vector must match order in EType! //BBS: GUI refactor: add obj manipulation m_gizmos.clear(); - unsigned int sprite_id = 0; + // unsigned int sprite_id = 0; m_gizmos.emplace_back(new GLGizmoMove3D(m_parent, m_is_dark ? "toolbar_move_dark.svg" : "toolbar_move.svg", EType::Move, &m_object_manipulation)); m_gizmos.emplace_back(new GLGizmoRotate3D(m_parent, m_is_dark ? "toolbar_rotate_dark.svg" : "toolbar_rotate.svg", EType::Rotate, &m_object_manipulation)); m_gizmos.emplace_back(new GLGizmoScale3D(m_parent, m_is_dark ? "toolbar_scale_dark.svg" : "toolbar_scale.svg", EType::Scale, &m_object_manipulation)); @@ -1042,11 +1042,7 @@ void GLGizmosManager::render_arrow(const GLCanvas3D& parent, EType highlighted_t for (size_t idx : selectable_idxs) { if (idx == highlighted_type) { - int tex_width = m_icons_texture.get_width(); - int tex_height = m_icons_texture.get_height(); unsigned int tex_id = m_arrow_texture.get_id(); - float inv_tex_width = (tex_width != 0.0f) ? 1.0f / tex_width : 0.0f; - float inv_tex_height = (tex_height != 0.0f) ? 1.0f / tex_height : 0.0f; const float left_uv = 0.0f; const float right_uv = 1.0f; diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index a1490ebc70..57934b149d 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -591,7 +591,6 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, float World_size = imgui_wrapper->calc_text_size(position_title).x + space_size; float caption_max = std::max(position_size, World_size) + 2 * space_size; - float end_text_size = imgui_wrapper->calc_text_size(this->m_new_unit_string).x; // position Vec3d original_position; @@ -601,8 +600,6 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, original_position = this->m_new_position; Vec3d display_position = m_buffered_position; - // Rotation - Vec3d rotation = this->m_buffered_rotation; float unit_size = imgui_wrapper->calc_text_size(MAX_SIZE).x + space_size; int index = 1; int index_unit = 1; @@ -708,13 +705,6 @@ void GizmoObjectManipulation::do_render_rotate_window(ImGuiWrapper *imgui_wrappe float caption_max = std::max(position_size, World_size) + 2 * space_size; float end_text_size = imgui_wrapper->calc_text_size(this->m_new_unit_string).x; - // position - Vec3d original_position; - if (this->m_imperial_units) - original_position = this->m_new_position * this->mm_to_in; - else - original_position = this->m_new_position; - Vec3d display_position = m_buffered_position; // Rotation Vec3d rotation = this->m_buffered_rotation; @@ -835,10 +825,7 @@ void GizmoObjectManipulation::do_render_scale_input_window(ImGuiWrapper* imgui_w Vec3d scale = m_buffered_scale; Vec3d display_size = m_buffered_size; - Vec3d display_position = m_buffered_position; - float unit_size = imgui_wrapper->calc_text_size(MAX_SIZE).x + space_size; - bool imperial_units = this->m_imperial_units; int index = 2; int index_unit = 1; diff --git a/src/slic3r/GUI/HintNotification.cpp b/src/slic3r/GUI/HintNotification.cpp index c431e0fafb..a102f400e2 100644 --- a/src/slic3r/GUI/HintNotification.cpp +++ b/src/slic3r/GUI/HintNotification.cpp @@ -499,8 +499,7 @@ HintData* HintDatabase::get_hint(HintDataNavigation nav) m_hint_id = get_next_hint_id(); if(nav == HintDataNavigation::Prev) m_hint_id = get_prev_hint_id(); - if (nav == HintDataNavigation::Curr) - ; +// if (nav == HintDataNavigation::Curr) if (nav == HintDataNavigation::Random) init_random_hint_id(); } diff --git a/src/slic3r/GUI/IMSlider.cpp b/src/slic3r/GUI/IMSlider.cpp index a0f15066b1..538166f1d8 100644 --- a/src/slic3r/GUI/IMSlider.cpp +++ b/src/slic3r/GUI/IMSlider.cpp @@ -231,7 +231,7 @@ void IMSlider::SetTicksValues(const Info &custom_gcode_per_print_z) static bool last_spiral_vase_status = false; - const bool was_empty = m_ticks.empty(); + // const bool was_empty = m_ticks.empty(); m_ticks.ticks.clear(); const std::vector &heights = custom_gcode_per_print_z.gcodes; @@ -240,9 +240,9 @@ void IMSlider::SetTicksValues(const Info &custom_gcode_per_print_z) if (tick >= 0) m_ticks.ticks.emplace(TickCode{tick, h.type, h.extruder, h.color, h.extra}); } - if (!was_empty && m_ticks.empty()) +// if (!was_empty && m_ticks.empty()) // Switch to the "Feature type"/"Tool" from the very beginning of a new object slicing after deleting of the old one - ;// post_ticks_changed_event(); + // post_ticks_changed_event(); if (m_ticks.has_tick_with_code(ToolChange) && !m_can_change_color) { if (!wxGetApp().plater()->only_gcode_mode() && !wxGetApp().plater()->using_exported_file()) @@ -1034,8 +1034,6 @@ bool IMSlider::vertical_slider(const char* str_id, int* higher_value, int* lower context.IO.MouseClicked[0]) m_show_menu = false; - ImVec2 bar_center = higher_handle.GetCenter(); - // draw ticks draw_ticks(one_slideable_region); // draw colored band diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 2595d3804d..f6ba5270b6 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -182,8 +182,6 @@ int ImGuiWrapper::TOOLBAR_WINDOW_FLAGS = ImGuiWindowFlags_AlwaysAutoResize bool get_data_from_svg(const std::string &filename, unsigned int max_size_px, ThumbnailData &thumbnail_data) { - bool compression_enabled = false; - NSVGimage *image = nsvgParseFromFile(filename.c_str(), "px", 96.0f); if (image == nullptr) { return false; } @@ -236,7 +234,6 @@ bool get_data_from_svg(const std::string &filename, unsigned int max_size_px, Th bool slider_behavior(ImGuiID id, const ImRect& region, const ImS32 v_min, const ImS32 v_max, ImS32* out_value, ImRect* out_handle, ImGuiSliderFlags flags/* = 0*/, const int fixed_value/* = -1*/, const ImVec4& fixed_rect/* = ImRect()*/) { ImGuiContext& context = *GImGui; - ImGuiIO& io = ImGui::GetIO(); const ImGuiAxis axis = (flags & ImGuiSliderFlags_Vertical) ? ImGuiAxis_Y : ImGuiAxis_X; @@ -1793,7 +1790,7 @@ void ImGuiWrapper::search_list(const ImVec2& size_, bool (*items_getter)(int, co ImGui::ListBoxFooter(); - auto check_box = [&edited, this](const wxString& label, bool& check) { + /*auto check_box = [&edited, this](const wxString& label, bool& check) { ImGui::SameLine(); bool ch = check; checkbox(label, ch); @@ -1801,7 +1798,7 @@ void ImGuiWrapper::search_list(const ImVec2& size_, bool (*items_getter)(int, co check = !check; edited = true; } - }; + };*/ ImGui::AlignTextToFramePadding(); @@ -3149,7 +3146,6 @@ bool IMTexture::load_from_svg_file(const std::string& filename, unsigned width, std::vector data(n_pixels * 4, 0); nsvgRasterize(rast, image, 0, 0, scale, data.data(), width, height, width * 4); - bool compress = false; GLint last_texture; unsigned m_image_texture{ 0 }; unsigned char* pixels = (unsigned char*)(&data[0]); diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 6648b0e632..f0d82e3d30 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -136,7 +136,6 @@ void ArrangeJob::prepare_selected() { inst_sel[size_t(inst_id)] = true; for (size_t i = 0; i < inst_sel.size(); ++i) { - ModelInstance* mi = mo->instances[i]; ArrangePolygon&& ap = prepare_arrange_polygon(mo->instances[i]); //BBS: partplate_list preprocess //remove the locked plate's instances, neither in selected, nor in un-selected @@ -208,7 +207,6 @@ void ArrangeJob::prepare_all() { ModelObject *mo = model.objects[oidx]; for (size_t i = 0; i < mo->instances.size(); ++i) { - ModelInstance * mi = mo->instances[i]; ArrangePolygon&& ap = prepare_arrange_polygon(mo->instances[i]); //BBS: partplate_list preprocess //remove the locked plate's instances, neither in selected, nor in un-selected @@ -324,7 +322,6 @@ void ArrangeJob::prepare_wipe_tower() wipe_tower_ap.name = "WipeTower"; wipe_tower_ap.is_virt_object = true; wipe_tower_ap.is_wipe_tower = true; - const GLCanvas3D* canvas3D = static_cast(m_plater->canvas3D()); std::set extruder_ids; PartPlateList& ppl = wxGetApp().plater()->get_partplate_list(); @@ -530,7 +527,6 @@ void ArrangeJob::process(Ctl &ctl) auto & partplate_list = m_plater->get_partplate_list(); const Slic3r::DynamicPrintConfig& global_config = wxGetApp().preset_bundle->full_config(); - PresetBundle* preset_bundle = wxGetApp().preset_bundle; const bool is_bbl = wxGetApp().preset_bundle->is_bbl_vendor(); if (is_bbl && params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer")) partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index e594f98ae1..d9af3631c7 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -127,8 +127,8 @@ void FillBedJob::prepare() m_bedpts = get_bed_shape(*m_plater->config()); - auto &objects = m_plater->model().objects; - /*BoundingBox bedbb = get_extents(m_bedpts); + /*auto &objects = m_plater->model().objects; + BoundingBox bedbb = get_extents(m_bedpts); for (size_t idx = 0; idx < objects.size(); ++idx) if (int(idx) != m_object_idx) @@ -209,9 +209,7 @@ void FillBedJob::process(Ctl &ctl) m_bedpts = get_shrink_bedpts(m_plater->config(), params); auto &partplate_list = m_plater->get_partplate_list(); - auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); const Slic3r::DynamicPrintConfig& global_config = wxGetApp().preset_bundle->full_config(); - PresetBundle* preset_bundle = wxGetApp().preset_bundle; const bool is_bbl = wxGetApp().preset_bundle->is_bbl_vendor(); if (is_bbl && params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer")) partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); @@ -275,8 +273,6 @@ void FillBedJob::finalize(bool canceled, std::exception_ptr &eptr) int plate_cols = plate_list.get_plate_cols(); int cur_plate = plate_list.get_curr_plate_index(); - size_t inst_cnt = model_object->instances.size(); - int added_cnt = std::accumulate(m_selected.begin(), m_selected.end(), 0, [](int s, auto &ap) { return s + int(ap.priority == 0 && ap.bed_idx == 0); }); diff --git a/src/slic3r/GUI/Jobs/OrientJob.cpp b/src/slic3r/GUI/Jobs/OrientJob.cpp index be59225d8d..27dac69b56 100644 --- a/src/slic3r/GUI/Jobs/OrientJob.cpp +++ b/src/slic3r/GUI/Jobs/OrientJob.cpp @@ -46,7 +46,6 @@ void OrientJob::prepare_selection(std::vector obj_sel, bool only_one_plate ModelInstance* mi = mo->instances[inst_idx]; OrientMesh&& om = get_orient_mesh(mi); - bool locked = false; if (!only_one_plate) { int plate_index = plate_list.find_instance(oidx, inst_idx); if ((plate_index >= 0)&&(plate_index < plate_list.get_plate_count())) { diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index a54310c234..53fad3dbdd 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -103,9 +103,6 @@ wxString PrintJob::get_http_error_msg(unsigned int status, std::string body) if (!j["message"].is_null()) message = j["message"].get(); } - switch (status) { - ; - } } catch (...) { ; @@ -137,7 +134,6 @@ void PrintJob::process(Ctl &ctl) wxString error_str; int curr_percent = 10; NetworkAgent* m_agent = wxGetApp().getAgent(); - AppConfig* config = wxGetApp().app_config; if (this->connection_type == "lan") { msg = _u8L("Sending print job over LAN"); @@ -150,12 +146,9 @@ void PrintJob::process(Ctl &ctl) ctl.call_on_main_thread([this] { prepare(); }).wait(); int result = -1; - unsigned int http_code; std::string http_body; - int total_plate_num = plate_data.plate_count; if (!plate_data.is_valid) { - total_plate_num = m_plater->get_partplate_list().get_plate_count(); PartPlate *plate = m_plater->get_partplate_list().get_plate(job_data.plate_idx); if (plate == nullptr) { plate = m_plater->get_partplate_list().get_curr_plate(); @@ -312,7 +305,7 @@ void PrintJob::process(Ctl &ctl) try { stl_design_id = std::stoi(wxGetApp().model().stl_design_id); } - catch (const std::exception& e) { + catch (std::exception&) { stl_design_id = 0; } params.stl_design_id = stl_design_id; @@ -447,7 +440,7 @@ void PrintJob::process(Ctl &ctl) std::string curr_job_id; json job_info_j; try { - job_info_j.parse(job_info); + job_info_j = json::parse(job_info); if (job_info_j.contains("job_id")) { curr_job_id = job_info_j["job_id"].get(); } diff --git a/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp b/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp index 263273984b..3fd2b375bf 100644 --- a/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp +++ b/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp @@ -57,8 +57,7 @@ void RotoptimizeJob::process(Ctl &ctl) .print_config(&m_default_print_cfg) .statucb([this, &prev_status, &ctl/*, &statustxt*/](int s) { - if (s > 0 && s < 100) - ; +// if (s > 0 && s < 100) // ctl.update_status(prev_status + s / m_selected_object_ids.size(), // statustxt); diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index 6566060546..cb9f87e95a 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -67,9 +67,6 @@ wxString SendJob::get_http_error_msg(unsigned int status, std::string body) if (!j["message"].is_null()) message = j["message"].get(); } - switch (status) { - ; - } } catch (...) { ; @@ -109,9 +106,7 @@ void SendJob::process(Ctl &ctl) std::string msg; int curr_percent = 10; NetworkAgent* m_agent = wxGetApp().getAgent(); - AppConfig* config = wxGetApp().app_config; int result = -1; - unsigned int http_code; std::string http_body; if (this->connection_type == "lan") { diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 9d368f9e86..56a575a350 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -183,11 +183,7 @@ void KBShortcutsDialog::fill_shortcuts() // Slice plate { ctrl + "R", L("Slice plate")}, // Send to Print -#ifdef __APPLE__ - { L("⌘+Shift+G"), L("Print plate")}, -#else - { L("Ctrl+Shift+G"), L("Print plate")}, -#endif // __APPLE + { ctrl + L("Shift+G"), L("Print plate")}, // Edit { ctrl + "X", L("Cut") }, @@ -226,16 +222,9 @@ void KBShortcutsDialog::fill_shortcuts() {L("Shift+R"), L("Auto orientates selected objects or all objects.If there are selected objects, it just orientates the selected ones.Otherwise, it will orientates all objects in the current disk.")}, {L("Shift+Tab"), L("Collapse/Expand the sidebar")}, - #ifdef __APPLE__ - {L("⌘+Any arrow"), L("Movement in camera space")}, - {L("⌥+Left mouse button"), L("Select a part")}, - {L("⌘+Left mouse button"), L("Select multiple objects")}, - #else - {L("Ctrl+Any arrow"), L("Movement in camera space")}, - {L("Alt+Left mouse button"), L("Select a part")}, - {L("Ctrl+Left mouse button"), L("Select multiple objects")}, - - #endif + { ctrl + L("Any arrow"), L("Movement in camera space")}, + { alt + L("Left mouse button"), L("Select a part")}, + { ctrl + L("Left mouse button"), L("Select multiple objects")}, {L("Shift+Left mouse button"), L("Select objects by rectangle")}, {L("Arrow Up"), L("Move selection 10 mm in positive Y direction")}, {L("Arrow Down"), L("Move selection 10 mm in negative Y direction")}, @@ -274,13 +263,8 @@ void KBShortcutsDialog::fill_shortcuts() Shortcuts gizmos_shortcuts = { {L("Esc"), L("Deselect all")}, {L("Shift+"), L("Move: press to snap by 1mm")}, - #ifdef __APPLE__ - {L("⌘+Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, - {L("⌥+Mouse wheel"), L("Support/Color Painting: adjust section position")}, - #else - {L("Ctrl+Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, - {L("Alt+Mouse wheel"), L("Support/Color Painting: adjust section position")}, - #endif + { ctrl + L("Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, + { alt + L("Mouse wheel"), L("Support/Color Painting: adjust section position")}, }; m_full_shortcuts.push_back({{_L("Gizmo"), ""}, gizmos_shortcuts}); @@ -311,13 +295,8 @@ void KBShortcutsDialog::fill_shortcuts() { "Tab", L("Switch between Prepare/Preview") }, {L("Shift+Any arrow"), L("Move slider 5x faster")}, {L("Shift+Mouse wheel"), L("Move slider 5x faster")}, - #ifdef __APPLE__ - {L("⌘+Any arrow"), L("Move slider 5x faster")}, - {L("⌘+Mouse wheel"), L("Move slider 5x faster")}, - #else - {L("Ctrl+Any arrow"), L("Move slider 5x faster")}, - {L("Ctrl+Mouse wheel"), L("Move slider 5x faster")}, - #endif + { ctrl + L("Any arrow"), L("Move slider 5x faster")}, + { ctrl + L("Mouse wheel"), L("Move slider 5x faster")}, { L("Home"), L("Horizontal slider - Move to start position")}, { L("End"), L("Horizontal slider - Move to last position")}, }; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 2f59daffbb..9a48e320d1 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -743,7 +743,6 @@ void MainFrame::update_layout() if (m_layout != ESettingsLayout::Unknown) restore_to_creation(); - ESettingsLayout old_layout = m_layout; m_layout = layout; // From the very beginning the Print settings should be selected @@ -1488,7 +1487,6 @@ bool MainFrame::can_reslice() const wxBoxSizer* MainFrame::create_side_tools() { enable_multi_machine = wxGetApp().is_enable_multi_machine(); - int em = em_unit(); wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); m_slice_select = eSlicePlate; @@ -1779,7 +1777,7 @@ wxBoxSizer* MainFrame::create_side_tools() aux_btn->Bind(wxEVT_BUTTON, [](auto e) { wxGetApp().sidebar().show_auxiliary_dialog(); }); - sizer->Add(aux_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 1 * em / 10); + sizer->Add(aux_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 1 * em_unit() / 10); */ sizer->Add(FromDIP(19), 0, 0, 0, 0); @@ -1924,9 +1922,6 @@ bool MainFrame::get_enable_print_status() void MainFrame::update_side_button_style() { - // BBS - int em = em_unit(); - /*m_slice_btn->SetLayoutStyle(1); m_slice_btn->SetTextLayout(SideButton::EHorizontalOrientation::HO_Center, FromDIP(15)); m_slice_btn->SetMinSize(wxSize(-1, FromDIP(24))); @@ -2188,9 +2183,6 @@ static void add_common_publish_menu_items(wxMenu* publish_menu, MainFrame* mainF return; } - json j; - NetworkAgent* agent = GUI::wxGetApp().getAgent(); - //if (GUI::wxGetApp().plater()->model().objects.empty()) return; wxGetApp().open_publish_page_dialog(); }); @@ -2588,13 +2580,13 @@ void MainFrame::init_menubar_as_editor() //BBS perspective view wxWindowID camera_id_base = wxWindow::NewControlId(int(wxID_CAMERA_COUNT)); - auto perspective_item = append_menu_radio_item(viewMenu, wxID_CAMERA_PERSPECTIVE + camera_id_base, _L("Use Perspective View"), _L("Use Perspective View"), + append_menu_radio_item(viewMenu, wxID_CAMERA_PERSPECTIVE + camera_id_base, _L("Use Perspective View"), _L("Use Perspective View"), [this](wxCommandEvent&) { wxGetApp().app_config->set_bool("use_perspective_camera", true); wxGetApp().update_ui_from_settings(); }, nullptr); //BBS orthogonal view - auto orthogonal_item = append_menu_radio_item(viewMenu, wxID_CAMERA_ORTHOGONAL + camera_id_base, _L("Use Orthogonal View"), _L("Use Orthogonal View"), + append_menu_radio_item(viewMenu, wxID_CAMERA_ORTHOGONAL + camera_id_base, _L("Use Orthogonal View"), _L("Use Orthogonal View"), [this](wxCommandEvent&) { wxGetApp().app_config->set_bool("use_perspective_camera", false); wxGetApp().update_ui_from_settings(); @@ -2669,7 +2661,8 @@ void MainFrame::init_menubar_as_editor() //auto preference_item = new wxMenuItem(parent_menu, OrcaSlicerMenuPreferences + bambu_studio_id_base, _L("Preferences") + "\tCtrl+,", ""); #else wxMenu* parent_menu = m_topbar->GetTopMenu(); - auto preference_item = new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\t" + ctrl + "P", ""); + // auto preference_item = + new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\t" + ctrl + "P", ""); #endif //auto printer_item = new wxMenuItem(parent_menu, ConfigMenuPrinter + config_id_base, _L("Printer"), ""); @@ -3100,10 +3093,6 @@ void MainFrame::init_menubar_as_gcodeviewer() void MainFrame::update_menubar() { - if (wxGetApp().is_gcode_viewer()) - return; - - const bool is_fff = plater()->printer_technology() == ptFFF; } void MainFrame::reslice_now() @@ -3179,7 +3168,6 @@ void MainFrame::load_config_file() cfiles.push_back(into_u8(file)); m_last_config = file; } - bool update = false; wxGetApp().preset_bundle->import_presets(cfiles, [this](std::string const & name) { ConfigsOverwriteConfirmDialog dlg(this, from_u8(name), false); int res = dlg.ShowModal(); @@ -3749,7 +3737,6 @@ void MainFrame::on_select_default_preset(SimpleEvent& evt) wxICON_INFORMATION); /* get setting list */ - NetworkAgent* agent = wxGetApp().getAgent(); switch ( dialog.ShowModal() ) { case wxID_YES: { diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index b2032b09ad..faa694090b 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -328,7 +328,6 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj) MessageDialog(this, m, _L("Download failed"), wxOK | wxICON_ERROR).ShowModal(); }); - NetworkAgent* agent = wxGetApp().getAgent(); if (result > 1 || result == 0) { json j; j["code"] = result; @@ -576,7 +575,7 @@ void MediaFilePanel::doAction(size_t index, int action) } else { MessageDialog dlg(this, _L("The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and export a new .gcode.3mf file."), wxEmptyString, wxICON_WARNING | wxOK); - auto res = dlg.ShowModal(); + dlg.ShowModal(); } }); diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 36500f69fa..da70eeff65 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -67,7 +67,7 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w auto ip = str.find(' ', ik); if (ip == wxString::npos) ip = str.Length(); auto v = str.Mid(ik, ip - ik); - if (k == "T:" && v.Length() == 8) { + if (strcmp(k, "T:") == 0 && v.Length() == 8) { long h = 0,m = 0,s = 0; v.Left(2).ToLong(&h); v.Mid(3, 2).ToLong(&m); @@ -389,7 +389,7 @@ void MediaPlayCtrl::Stop(wxString const &msg) } auto tunnel = m_url.empty() ? "" : into_u8(wxURI(m_url).GetPath()).substr(1); - if (auto n = tunnel.find_first_of('/_'); n != std::string::npos) + if (auto n = tunnel.find_first_of("/_"); n != std::string::npos) tunnel = tunnel.substr(0, n); if (last_state != wxMEDIASTATE_PLAYING && m_failed_code != 0 && m_last_failed_codes.find(m_failed_code) == m_last_failed_codes.end() @@ -734,7 +734,7 @@ bool MediaPlayCtrl::start_stream_service(bool *need_install) auto file_dll = tools_dir + dll; auto file_dll2 = plugins_dir + dll; if (!boost::filesystem::exists(file_dll) || boost::filesystem::last_write_time(file_dll) != boost::filesystem::last_write_time(file_dll2)) - boost::filesystem::copy_file(file_dll2, file_dll, boost::filesystem::copy_option::overwrite_if_exists); + boost::filesystem::copy_file(file_dll2, file_dll, boost::filesystem::copy_options::overwrite_existing); } boost::process::child process_source(file_source, file_url2.ToStdWstring(), boost::process::start_dir(tools_dir), boost::process::windows::create_no_window, diff --git a/src/slic3r/GUI/ModelMall.cpp b/src/slic3r/GUI/ModelMall.cpp index f14de1ebf0..45833ba80c 100644 --- a/src/slic3r/GUI/ModelMall.cpp +++ b/src/slic3r/GUI/ModelMall.cpp @@ -133,7 +133,7 @@ namespace GUI { } } - catch (std::exception& e) { + catch (std::exception&) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 333f4d3de0..3bcc0ce224 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -114,7 +114,7 @@ AddMachinePanel::~AddMachinePanel() { m_side_tools->get_panel()->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(MonitorPanel::on_printer_clicked), NULL, this); - Bind(wxEVT_TIMER, &MonitorPanel::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); Bind(wxEVT_SIZE, &MonitorPanel::on_size, this); Bind(wxEVT_COMMAND_CHOICE_SELECTED, &MonitorPanel::on_select_printer, this); @@ -160,7 +160,7 @@ MonitorPanel::~MonitorPanel() m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - wxPostEvent(this, wxTimerEvent()); + on_timer(); Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return; @@ -272,7 +272,7 @@ void MonitorPanel::on_update_all(wxMouseEvent &event) } } - void MonitorPanel::on_timer(wxTimerEvent& event) +void MonitorPanel::on_timer() { if (update_flag) { update_all(); @@ -306,9 +306,6 @@ void MonitorPanel::on_update_all(wxMouseEvent &event) void MonitorPanel::on_printer_clicked(wxMouseEvent &event) { - auto mouse_pos = ClientToScreen(event.GetPosition()); - wxPoint rect = m_side_tools->ClientToScreen(wxPoint(0, 0)); - if (!m_side_tools->is_in_interval()) { wxPoint pos = m_side_tools->ClientToScreen(wxPoint(0, 0)); pos.y += m_side_tools->GetRect().height; @@ -434,7 +431,6 @@ bool MonitorPanel::Show(bool show) wxGetApp().mainframe->SetMinSize(wxGetApp().plater()->GetMinSize()); #endif - NetworkAgent* m_agent = wxGetApp().getAgent(); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (show) { start_update(); @@ -442,7 +438,7 @@ bool MonitorPanel::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - wxPostEvent(this, wxTimerEvent()); + on_timer(); if (dev) { //set a default machine when obj is null @@ -485,7 +481,6 @@ void MonitorPanel::show_status(int status) if (!m_initialized) return; if (last_status == status)return; if ((last_status & (int)MonitorStatus::MONITOR_CONNECTING) != 0) { - NetworkAgent* agent = wxGetApp().getAgent(); json j; j["dev_id"] = obj ? obj->dev_id : "obj_nullptr"; if ((status & (int)MonitorStatus::MONITOR_DISCONNECTED) != 0) { diff --git a/src/slic3r/GUI/Monitor.hpp b/src/slic3r/GUI/Monitor.hpp index 8da56ddc3b..761b059a0a 100644 --- a/src/slic3r/GUI/Monitor.hpp +++ b/src/slic3r/GUI/Monitor.hpp @@ -133,7 +133,7 @@ public: StatusPanel* get_status_panel() {return m_status_info_panel;}; void select_machine(std::string machine_sn); void on_update_all(wxMouseEvent &event); - void on_timer(wxTimerEvent& event); + void on_timer(); void on_select_printer(wxCommandEvent& event); void on_printer_clicked(wxMouseEvent &event); void on_size(wxSizeEvent &event); diff --git a/src/slic3r/GUI/MonitorBasePanel.cpp b/src/slic3r/GUI/MonitorBasePanel.cpp index 553b8f0993..24760577a6 100644 --- a/src/slic3r/GUI/MonitorBasePanel.cpp +++ b/src/slic3r/GUI/MonitorBasePanel.cpp @@ -6,7 +6,6 @@ /////////////////////////////////////////////////////////////////////////// #include "MonitorBasePanel.h" -#include "Printer/PrinterFileSystem.h" #include "Widgets/Label.hpp" /////////////////////////////////////////////////////////////////////////// @@ -21,7 +20,7 @@ MonitorBasePanel::MonitorBasePanel(wxWindow* parent, wxWindowID id, const wxPoin m_splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D | wxSP_BORDER); m_splitter->SetSashGravity(0); - m_splitter->SetSashSize(0); + m_splitter->SetSashInvisible(); m_splitter->Connect(wxEVT_IDLE, wxIdleEventHandler(MonitorBasePanel::m_splitterOnIdle), NULL, this); m_splitter->SetMinimumPaneSize(182); @@ -281,7 +280,7 @@ VideoMonitoringBasePanel::~VideoMonitoringBasePanel() // PLEASE DO *NOT* EDIT THIS FILE! /////////////////////////////////////////////////////////////////////////// -#include "MonitorBasePanel.h" +//#include "MonitorBasePanel.h" /////////////////////////////////////////////////////////////////////////// using namespace Slic3r::GUI; diff --git a/src/slic3r/GUI/MultiMachine.hpp b/src/slic3r/GUI/MultiMachine.hpp index 48a6ed4180..04ff304bca 100644 --- a/src/slic3r/GUI/MultiMachine.hpp +++ b/src/slic3r/GUI/MultiMachine.hpp @@ -9,16 +9,16 @@ namespace Slic3r { namespace GUI { -#define DEVICE_ITEM_MAX_WIDTH 900 -#define SEND_ITEM_MAX_HEIGHT 30 -#define DEVICE_ITEM_MAX_HEIGHT 50 +#define DEVICE_ITEM_MAX_WIDTH 900 +#define SEND_ITEM_MAX_HEIGHT 30 +#define DEVICE_ITEM_MAX_HEIGHT 50 #define TABLE_HEAR_NORMAL_COLOUR wxColour(238, 238, 238) #define TABLE_HEAD_PRESSED_COLOUR wxColour(150, 150, 150) #define CTRL_BUTTON_NORMAL_COLOUR wxColour(255, 255, 255) #define CTRL_BUTTON_PRESSEN_COLOUR wxColour(150, 150, 150) #define TABLE_HEAD_FONT Label::Body_13 -#define ICON_SIZE FromDIP(16) +#define MM_ICON_SIZE FromDIP(16) class DeviceItem : public wxWindow { diff --git a/src/slic3r/GUI/MultiMachineManagerPage.cpp b/src/slic3r/GUI/MultiMachineManagerPage.cpp index b37810f07f..9a112d32c3 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.cpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.cpp @@ -320,7 +320,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) m_table_head_panel->SetBackgroundColour(TABLE_HEAR_NORMAL_COLOUR); m_table_head_sizer = new wxBoxSizer(wxHORIZONTAL); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -343,7 +343,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) }); - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -353,7 +353,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) - m_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -376,7 +376,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) }); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -523,7 +523,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) Layout(); Fit(); - Bind(wxEVT_TIMER, &MultiMachineManagerPage::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); } void MultiMachineManagerPage::update_page() @@ -676,7 +676,7 @@ void MultiMachineManagerPage::start_timer() m_flipping_timer->SetOwner(this); m_flipping_timer->Start(1000); - wxPostEvent(this, wxTimerEvent()); + on_timer(); } void MultiMachineManagerPage::update_page_number() @@ -688,7 +688,7 @@ void MultiMachineManagerPage::update_page_number() st_page_number->SetLabel(number); } -void MultiMachineManagerPage::on_timer(wxTimerEvent& event) +void MultiMachineManagerPage::on_timer() { m_flipping_timer->Stop(); if (btn_last_page) diff --git a/src/slic3r/GUI/MultiMachineManagerPage.hpp b/src/slic3r/GUI/MultiMachineManagerPage.hpp index c1086b4721..55eb500540 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.hpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.hpp @@ -55,7 +55,7 @@ public: void start_timer(); void update_page_number(); - void on_timer(wxTimerEvent& event); + void on_timer(); void clear_page(); void page_num_enter_evt(); diff --git a/src/slic3r/GUI/MultiMachinePage.cpp b/src/slic3r/GUI/MultiMachinePage.cpp index 9aed022ba3..cb1fea926d 100644 --- a/src/slic3r/GUI/MultiMachinePage.cpp +++ b/src/slic3r/GUI/MultiMachinePage.cpp @@ -19,7 +19,7 @@ MultiMachinePage::MultiMachinePage(wxWindow* parent, wxWindowID id, const wxPoin wxGetApp().UpdateDarkUIWin(this); init_timer(); - Bind(wxEVT_TIMER, &MultiMachinePage::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); } MultiMachinePage::~MultiMachinePage() @@ -59,7 +59,7 @@ bool MultiMachinePage::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(2000); - wxPostEvent(this, wxTimerEvent()); + on_timer(); } else { m_refresh_timer->Stop(); @@ -97,7 +97,7 @@ void MultiMachinePage::init_timer() //wxPostEvent(this, wxTimerEvent()); } -void MultiMachinePage::on_timer(wxTimerEvent& event) +void MultiMachinePage::on_timer() { m_local_task_manager->update_page(); m_cloud_task_manager->update_page(); diff --git a/src/slic3r/GUI/MultiMachinePage.hpp b/src/slic3r/GUI/MultiMachinePage.hpp index 0572c30d1b..7e948fa479 100644 --- a/src/slic3r/GUI/MultiMachinePage.hpp +++ b/src/slic3r/GUI/MultiMachinePage.hpp @@ -41,7 +41,7 @@ public: void init_tabpanel(); void init_timer(); - void on_timer(wxTimerEvent& event); + void on_timer(); void clear_page(); }; diff --git a/src/slic3r/GUI/MultiTaskManagerPage.cpp b/src/slic3r/GUI/MultiTaskManagerPage.cpp index f2d159a7de..3d295eb97c 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.cpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.cpp @@ -4,7 +4,6 @@ #include "GUI_App.hpp" #include "MainFrame.hpp" #include "Widgets/RadioBox.hpp" -#include #include namespace Slic3r { @@ -574,7 +573,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -583,7 +582,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) m_task_name->SetCenter(false); m_table_head_sizer->Add(m_task_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -603,7 +602,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -623,7 +622,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, ICON_SIZE); + m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, MM_ICON_SIZE); m_info->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_info->SetFont(TABLE_HEAD_FONT); m_info->SetCornerRadius(0); @@ -632,7 +631,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) m_info->SetCenter(false); m_table_head_sizer->Add(m_info, 0, wxALIGN_CENTER_VERTICAL, 0); - m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); + m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); m_send_time->SetBackgroundColor(head_bg); m_send_time->SetFont(TABLE_HEAD_FONT); m_send_time->SetCornerRadius(0); @@ -652,7 +651,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_send_time, 0, wxALIGN_CENTER_VERTICAL, 0); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -946,7 +945,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -955,7 +954,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) m_task_name->SetCenter(false); m_table_head_sizer->Add(m_task_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -975,7 +974,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -995,7 +994,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, ICON_SIZE); + m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, MM_ICON_SIZE); m_info->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_info->SetFont(TABLE_HEAD_FONT); m_info->SetCornerRadius(0); @@ -1004,7 +1003,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) m_info->SetCenter(false); m_table_head_sizer->Add(m_info, 0, wxALIGN_CENTER_VERTICAL, 0); - m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); + m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); m_send_time->SetBackgroundColor(head_bg); m_send_time->SetFont(TABLE_HEAD_FONT); m_send_time->SetCornerRadius(0); @@ -1024,7 +1023,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_send_time, 0, wxALIGN_CENTER_VERTICAL, 0); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -1183,7 +1182,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) page_sizer = new wxBoxSizer(wxVERTICAL); page_sizer->Add(m_main_panel, 1, wxALL | wxEXPAND, FromDIP(25)); - Bind(wxEVT_TIMER, &CloudTaskManagerPage::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); wxGetApp().UpdateDarkUIWin(this); @@ -1400,10 +1399,10 @@ void CloudTaskManagerPage::start_timer() m_flipping_timer->SetOwner(this); m_flipping_timer->Start(1000); - wxPostEvent(this, wxTimerEvent()); + on_timer(); } -void CloudTaskManagerPage::on_timer(wxTimerEvent& event) +void CloudTaskManagerPage::on_timer() { m_flipping_timer->Stop(); enable_buttons(true); diff --git a/src/slic3r/GUI/MultiTaskManagerPage.hpp b/src/slic3r/GUI/MultiTaskManagerPage.hpp index 0f676d06b3..b32c670d5e 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.hpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.hpp @@ -135,7 +135,7 @@ public: bool Show(bool show); void update_page_number(); void start_timer(); - void on_timer(wxTimerEvent& event); + void on_timer(); void pause_all(wxCommandEvent& evt); void resume_all(wxCommandEvent& evt); diff --git a/src/slic3r/GUI/Notebook.hpp b/src/slic3r/GUI/Notebook.hpp index 7e6e94da3a..5ef90a9702 100644 --- a/src/slic3r/GUI/Notebook.hpp +++ b/src/slic3r/GUI/Notebook.hpp @@ -194,8 +194,6 @@ public: // check that only the selected page is visible and others are hidden: for (size_t page = 0; page < m_pages.size(); page++) { - wxWindow* win_a = GetPage(page); - wxWindow* win_b = GetPage(n); if (page != n && GetPage(page) != GetPage(n)) { m_pages[page]->Hide(); } diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 08ef8c7493..685058bbb3 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -857,7 +857,7 @@ void NotificationManager::PopNotification::bbl_render_block_notif_buttons(ImGuiW void NotificationManager::PopNotification::bbl_render_block_notif_left_sign(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) { - auto window = ImGui::GetCurrentWindow(); + // auto window = ImGui::GetCurrentWindow(); //window->DrawList->AddImage(user_texture_id, bb.Min + padding + margin, bb.Max - padding - margin, uv0, uv1, ImGui::GetColorU32(tint_col)); std::wstring text; diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index dadde84ebc..6fa75d7895 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -405,7 +405,6 @@ void OG_CustomCtrl::OnMotion(wxMouseEvent& event) // Set tooltips with information for each icon // BBS: markdown tip if (!markdowntip.empty()) { - wxWindow* window = GetGrandParent(); assert(focusedLine); wxPoint pos2 = { 250, focusedLine->rect_label.y }; pos2 = ClientToScreen(pos2); diff --git a/src/slic3r/GUI/ObjColorDialog.cpp b/src/slic3r/GUI/ObjColorDialog.cpp index 648faffbf9..7ac8d20bd3 100644 --- a/src/slic3r/GUI/ObjColorDialog.cpp +++ b/src/slic3r/GUI/ObjColorDialog.cpp @@ -1,9 +1,6 @@ #include -#include -//#include "libslic3r/FlushVolCalc.hpp" #include "ObjColorDialog.hpp" #include "BitmapCache.hpp" -#include "GUI.hpp" #include "I18N.hpp" #include "GUI_App.hpp" #include "MsgDialog.hpp" @@ -244,7 +241,6 @@ ObjColorPanel::ObjColorPanel(wxWindow * parent, } //end first cluster //draw ui - auto sizer_width = FromDIP(300); // Create two switched panels with their own sizers m_sizer_simple = new wxBoxSizer(wxVERTICAL); m_page_simple = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); @@ -674,7 +670,6 @@ void ObjColorPanel::draw_table() m_scrolledWindow->SetSizer(m_gridsizer); int totalHeight = row_height *(row+1) * 2; m_scrolledWindow->SetVirtualSize(MIN_OBJCOLOR_DIALOG_WIDTH, totalHeight); - auto look = FIX_SCROLL_HEIGTH; if (totalHeight > FIX_SCROLL_HEIGTH) { m_scrolledWindow->SetMinSize(wxSize(MIN_OBJCOLOR_DIALOG_WIDTH, FIX_SCROLL_HEIGTH)); m_scrolledWindow->SetMaxSize(wxSize(MIN_OBJCOLOR_DIALOG_WIDTH, FIX_SCROLL_HEIGTH)); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 936afcacb9..febc326dff 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -9,12 +9,8 @@ #include "Widgets/StaticLine.hpp" #include -#include #include -#include -#include #include "libslic3r/Exception.hpp" -#include "libslic3r/Utils.hpp" #include "libslic3r/AppConfig.hpp" #include "I18N.hpp" #include diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index c4dfc651b9..99ec73a42a 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1536,9 +1536,6 @@ std::vector PartPlate::get_extruders_without_support(bool conside_custom_gc return plate_extruders; } - // if 3mf file - const DynamicPrintConfig& glb_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { if (!contain_instance_totally(obj_idx, 0)) continue; @@ -1597,14 +1594,14 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con { Vec3d wipe_tower_size; - double layer_height = 0.08f; // hard code layer height + // double layer_height = 0.08f; // hard code layer height double max_height = 0.f; wipe_tower_size.setZero(); wipe_tower_size(0) = w; - const ConfigOption* layer_height_opt = config.option("layer_height"); - if (layer_height_opt) - layer_height = layer_height_opt->getFloat(); + // const ConfigOption* layer_height_opt = config.option("layer_height"); + // if (layer_height_opt) + // layer_height = layer_height_opt->getFloat(); // empty plate if (plate_extruder_size == 0) @@ -1652,7 +1649,6 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con // If wipe tower height is between the current and next member, set the min_depth as linear interpolation between them auto next_height_to_depth = *iter; if (next_height_to_depth.first > max_height) { - float height_base = curr_height_to_depth.first; float height_diff = next_height_to_depth.first - curr_height_to_depth.first; float min_depth_base = curr_height_to_depth.second; float depth_diff = next_height_to_depth.second - curr_height_to_depth.second; @@ -2041,7 +2037,6 @@ bool PartPlate::intersect_instance(int obj_id, int instance_id, BoundingBoxf3* b if (m_printable) { ModelObject* object = m_model->objects[obj_id]; - ModelInstance* instance = object->instances[instance_id]; BoundingBoxf3 instance_box = bounding_box? *bounding_box: object->instance_convex_hull_bounding_box(instance_id); result = get_plate_box().intersects(instance_box); } @@ -2065,7 +2060,6 @@ bool PartPlate::is_left_top_of(int obj_id, int instance_id) } ModelObject* object = m_model->objects[obj_id]; - ModelInstance* instance = object->instances[instance_id]; std::pair pair(obj_id, instance_id); BoundingBoxf3 instance_box = object->instance_convex_hull_bounding_box(instance_id); @@ -2461,7 +2455,7 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) { auto compute_points = [&print_polygon](Vec2d& center, double radius, double start_angle, double stop_angle, int count) { - double angle, angle_steps; + double angle_steps; angle_steps = (stop_angle - start_angle) / (count - 1); for(int j = 0; j < count; j++ ) { @@ -2480,7 +2474,7 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) { const Vec2d& p = m_shape[i]; Vec2d center; - double start_angle, stop_angle, angle_steps, radius_x, radius_y, radius; + double start_angle, stop_angle, radius_x, radius_y, radius; switch (i) { case 0: radius = 5.f; @@ -2531,7 +2525,7 @@ void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) { auto compute_exclude_points = [&exclude_polygon](Vec2d& center, double radius, double start_angle, double stop_angle, int count) { - double angle, angle_steps; + double angle_steps; angle_steps = (stop_angle - start_angle) / (count - 1); for(int j = 0; j < count; j++ ) { @@ -2550,7 +2544,7 @@ void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) { const Vec2d& p = m_exclude_area[i]; Vec2d center; - double start_angle, stop_angle, angle_steps, radius_x, radius_y, radius; + double start_angle, stop_angle, radius; switch (i) { case 0: radius = 5.f; @@ -3065,7 +3059,7 @@ void PartPlate::update_first_layer_print_sequence(size_t filament_nums) void PartPlate::print() const { - unsigned int count=0; + // unsigned int count=0; BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << boost::format(": plate index %1%, pointer %2%, print_index %3% print pointer %4%") % m_plate_index % this % m_print_index % m_print; BOOST_LOG_TRIVIAL(trace) << boost::format("\t origin {%1%,%2%,%3%}, width %4%, depth %5%, height %6%") % m_origin.x() % m_origin.y() % m_origin.z() % m_width % m_depth % m_height; @@ -4092,8 +4086,7 @@ int PartPlateList::find_instance_belongs(int obj_id, int instance_id) //newly added or modified int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_new) { - int ret = 0, index; - PartPlate* plate = NULL; + int index; ModelObject* object = NULL; if ((obj_id >= 0) && (obj_id < m_model->objects.size())) @@ -4122,7 +4115,7 @@ int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_n { //found it added before BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": found it in previous plate %1%") % index; - plate = m_plate_list[index]; + PartPlate* plate = m_plate_list[index]; if (!plate->intersect_instance(obj_id, instance_id, &boundingbox)) { //not include anymore, remove it from original plate @@ -4227,7 +4220,7 @@ int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_n //notify instance is removed int PartPlateList::notify_instance_removed(int obj_id, int instance_id) { - int ret = 0, index, instance_to_delete = instance_id; + int index, instance_to_delete = instance_id; PartPlate* plate = NULL; BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": obj_id %1%, instance_id %2%") % obj_id % instance_id; @@ -4325,7 +4318,6 @@ int PartPlateList::reload_all_objects(bool except_locked, int plate_index) ModelObject* object = m_model->objects[i]; for (j = 0; j < (unsigned int)object->instances.size(); ++j) { - ModelInstance* instance = object->instances[j]; BoundingBoxf3 boundingbox = object->instance_convex_hull_bounding_box(j); for (k = 0; k < (unsigned int)m_plate_list.size(); ++k) { @@ -4376,9 +4368,7 @@ int PartPlateList::construct_objects_list_for_new_plate(int plate_index) ModelObject* object = m_model->objects[i]; for (j = 0; j < (unsigned int)object->instances.size(); ++j) { - ModelInstance* instance = object->instances[j]; already_included = false; - for (k = 0; k < (unsigned int)plate_index; ++k) { PartPlate* plate = m_plate_list[k]; @@ -4552,7 +4542,6 @@ bool PartPlateList::preprocess_nonprefered_areas(arrangement::ArrangePolygons& r nonprefered_regions.emplace_back(Vec2d{ 18,0 }, Vec2d{ 240,15 }); // new extrusion & hand-eye calibration region //has exclude areas - PartPlate* plate = m_plate_list[0]; for (int index = 0; index < nonprefered_regions.size(); index++) { Polygon ap = scaled(nonprefered_regions[index]).polygon(); @@ -4779,11 +4768,8 @@ void PartPlateList::set_render_option(bool bedtype_texture, bool plate_settings) int PartPlateList::select_plate_by_obj(int obj_index, int instance_index) { - int ret = 0, index; - PartPlate* plate = NULL; - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": obj_id %1%, instance_id %2%") % obj_index % instance_index; - index = find_instance(obj_index, instance_index); + int index = find_instance(obj_index, instance_index); if (index != -1) { //found it in plate @@ -4821,8 +4807,6 @@ bool PartPlateList::set_shapes(const Pointfs& shape, const Pointfs& exclude_area m_height_to_lid = height_to_lid; m_height_to_rod = height_to_rod; - double stride_x = plate_stride_x(); - double stride_y = plate_stride_y(); for (unsigned int i = 0; i < (unsigned int)m_plate_list.size(); ++i) { PartPlate* plate = m_plate_list[i]; @@ -5384,14 +5368,12 @@ void PartPlateList::BedTextureInfo::TexturePart::update_buffer() rectangle.push_back(Vec2d(x, y+h)); ExPolygon poly; - for (int i = 0; i < 4; i++) { - const Vec2d & p = rectangle[i]; - for (auto& p : rectangle) { - Vec2d pp = Vec2d(p.x() + offset.x(), p.y() + offset.y()); - poly.contour.append({ scale_(pp(0)), scale_(pp(1)) }); - } + for (const auto& p : rectangle) { + Vec2d pp = Vec2d(p.x() + offset.x(), p.y() + offset.y()); + poly.contour.append({ scale_(pp(0)), scale_(pp(1)) }); } + if (!buffer) buffer = new GLModel(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 3dd1bb7075..9267fe9974 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -396,10 +396,9 @@ Sidebar::priv::~priv() void Sidebar::priv::show_preset_comboboxes() { - const bool showSLA = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; - //BBS #if 0 + const bool showSLA = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; for (size_t i = 0; i < 4; ++i) sizer_presets->Show(i, !showSLA); @@ -1102,7 +1101,7 @@ void Sidebar::init_filament_combo(PlaterPresetComboBox **combo, const int filame auto combo_and_btn_sizer = new wxBoxSizer(wxHORIZONTAL); // BBS: filament double columns - int em = wxGetApp().em_unit(); + // int em = wxGetApp().em_unit(); combo_and_btn_sizer->Add(FromDIP(8), 0, 0, 0, 0 ); (*combo)->clr_picker->SetLabel(wxString::Format("%d", filament_idx + 1)); combo_and_btn_sizer->Add((*combo)->clr_picker, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(3)); @@ -1268,7 +1267,6 @@ void Sidebar::update_all_preset_comboboxes() void Sidebar::update_presets(Preset::Type preset_type) { PresetBundle &preset_bundle = *wxGetApp().preset_bundle; - const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, preset_type %1%")%preset_type; switch (preset_type) { @@ -1276,6 +1274,7 @@ void Sidebar::update_presets(Preset::Type preset_type) { // BBS #if 0 + const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); const size_t extruder_cnt = print_tech != ptFFF ? 1 : dynamic_cast(preset_bundle.printers.get_edited_preset().config.option("nozzle_diameter"))->values.size(); const size_t filament_cnt = p->combos_filament.size() > extruder_cnt ? extruder_cnt : p->combos_filament.size(); @@ -1731,7 +1730,7 @@ void Sidebar::sync_ams_list() // BBS:Record consumables information before synchronization std::vector color_before_sync; - std::vector is_support_before; + std::vector is_support_before; DynamicPrintConfig& project_config = wxGetApp().preset_bundle->project_config; ConfigOptionStrings* color_opt = project_config.option("filament_colour"); for (int i = 0; i < p->combos_filament.size(); ++i) { @@ -1953,18 +1952,13 @@ void Sidebar::auto_calc_flushing_volumes(const int modify_id) { auto& preset_bundle = wxGetApp().preset_bundle; auto& project_config = preset_bundle->project_config; - auto& printer_config = preset_bundle->printers.get_edited_preset().config; const auto& full_config = wxGetApp().preset_bundle->full_config(); auto& ams_multi_color_filament = preset_bundle->ams_multi_color_filment; - auto& ams_filament_list = preset_bundle->filament_ams_list; const std::vector& init_matrix = (project_config.option("flush_volumes_matrix"))->values; - const std::vector& init_extruders = (project_config.option("flush_volumes_vector"))->values; const std::vector& min_flush_volumes= get_min_flush_volumes(full_config); - ConfigOptionFloat* flush_multi_opt = project_config.option("flush_multiplier"); - float flush_multiplier = flush_multi_opt ? flush_multi_opt->getFloat() : 1.f; std::vector matrix = init_matrix; int m_max_flush_volume = Slic3r::g_max_flush_volume; unsigned int m_number_of_extruders = (int)(sqrt(init_matrix.size()) + 0.001); @@ -2861,7 +2855,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) wxGLCanvas* view3D_canvas = view3D->get_wxglcanvas(); //BBS: GUI refactor - wxGLCanvas* preview_canvas = preview->get_wxglcanvas(); + // wxGLCanvas* preview_canvas = preview->get_wxglcanvas(); if (wxGetApp().is_editor()) { // 3DScene events: @@ -3579,11 +3573,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ std::string designer_model_id; std::string designer_country_code; - int answer_convert_from_meters = wxOK_DEFAULT; - int answer_convert_from_imperial_units = wxOK_DEFAULT; int tolal_model_count = 0; - int progress_percent = 0; int total_files = input_files.size(); const int stage_percent[IMPORT_STAGE_MAX+1] = { 5, // IMPORT_STAGE_RESTORE @@ -3750,7 +3741,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:"), file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string()); text += "\n"; - bool first = true; + // bool first = true; // std::string context = into_u8(text); wxString context = text; // if (wxGetApp().app_config->get("user_mode") == "develop") { @@ -3856,7 +3847,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ } // Based on the printer technology field found in the loaded config, select the base for the config, - PrinterTechnology printer_technology = Preset::printer_technology(config_loaded); + // PrinterTechnology printer_technology = Preset::printer_technology(config_loaded); config.apply(static_cast(FullPrintConfig::defaults())); // and place the loaded config over the base. @@ -3911,7 +3902,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ MessageDialog dlg(q, _L("The 3mf has following modified G-codes in filament or printer presets:") + warning_message+ _L("Please confirm that these modified G-codes are safe to prevent any damage to the machine!"), _L("Modified G-codes")); dlg.show_dsa_button(); - auto res = dlg.ShowModal(); + dlg.ShowModal(); if (dlg.get_checkbox_state()) wxGetApp().app_config->set("no_warn_when_modified_gcodes", "true"); } @@ -3924,7 +3915,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ //show_info(q, _L("The 3mf has following customized filament or printer presets:") + warning_message + _L("Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!"), _L("Customized Preset")); MessageDialog dlg(q, _L("The 3mf has following customized filament or printer presets:") + from_u8(warning_message)+ _L("Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!"), _L("Customized Preset")); dlg.show_dsa_button(); - auto res = dlg.ShowModal(); + dlg.ShowModal(); if (dlg.get_checkbox_state()) wxGetApp().app_config->set("no_warn_when_modified_gcodes", "true"); } @@ -4427,7 +4418,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode #ifndef AUTOPLACEMENT_ON_LOAD // bool need_arrange = false; #endif /* AUTOPLACEMENT_ON_LOAD */ - bool scaled_down = false; + // bool scaled_down = false; std::vector obj_idxs; unsigned int obj_count = model.objects.size(); @@ -4464,15 +4455,15 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode const Vec3d ratio = size.cwiseQuotient(bed_size); const double max_ratio = std::max(ratio(0), ratio(1)); if (max_ratio > 10000) { - MessageDialog dlg(q, _L("Your object appears to be too large, Do you want to scale it down to fit the heat bed automatically?"), _L("Object too large"), - wxICON_QUESTION | wxYES); - int answer = dlg.ShowModal(); + MessageDialog dlg(q, _L("Your object appears to be too large. It will be scaled down to fit the heat bed automatically."), _L("Object too large"), + wxICON_QUESTION | wxOK); + dlg.ShowModal(); // the size of the object is too big -> this could lead to overflow when moving to clipper coordinates, // so scale down the mesh object->scale_mesh_after_creation(1. / max_ratio); object->origin_translation = Vec3d::Zero(); object->center_around_origin(); - scaled_down = true; + // scaled_down = true; break; } else if (max_ratio > 10) { @@ -4481,7 +4472,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode int answer = dlg.ShowModal(); if (answer == wxID_YES) { instance->set_scaling_factor(instance->get_scaling_factor() / max_ratio); - scaled_down = true; + // scaled_down = true; } } } @@ -5230,7 +5221,7 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool process_validation_warning(warning); return_state |= UPDATE_BACKGROUND_PROCESS_INVALID; if (printer_technology == ptFFF) { - const Print* print = background_process.fff_print(); + // const Print* print = background_process.fff_print(); //Polygons polygons; //if (print->config().print_sequence == PrintSequence::ByObject) // Print::sequential_print_clearance_valid(*print, &polygons); @@ -6374,7 +6365,6 @@ void Plater::priv::on_select_bed_type(wxCommandEvent &evt) int selection = combo->GetSelection(); std::string bed_type_name = print_config_def.get("curr_bed_type")->enum_values[selection]; - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; DynamicPrintConfig& proj_config = wxGetApp().preset_bundle->project_config; const t_config_enum_values* keys_map = print_config_def.get("curr_bed_type")->enum_keys_map; @@ -8213,7 +8203,7 @@ void Plater::priv::on_create_filament(SimpleEvent &) update_ui_from_settings(); sidebar->update_all_preset_comboboxes(); CreatePresetSuccessfulDialog success_dlg(wxGetApp().mainframe, SuccessType::FILAMENT); - int res = success_dlg.ShowModal(); + success_dlg.ShowModal(); } } @@ -8325,7 +8315,7 @@ void Plater::priv::take_snapshot(const std::string& snapshot_name, const UndoRed // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; const ConfigOptionFloats* tower_x_opt = proj_cfg.option("wipe_tower_x"); const ConfigOptionFloats* tower_y_opt = proj_cfg.option("wipe_tower_y"); @@ -8435,7 +8425,7 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; const ConfigOptionFloats* tower_x_opt = proj_cfg.option("wipe_tower_x"); const ConfigOptionFloats* tower_y_opt = proj_cfg.option("wipe_tower_y"); @@ -8502,7 +8492,7 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; ConfigOptionFloats* tower_x_opt = const_cast(proj_cfg.option("wipe_tower_x")); ConfigOptionFloats* tower_y_opt = const_cast(proj_cfg.option("wipe_tower_y")); @@ -8683,7 +8673,6 @@ void Plater::priv::record_start_print_preset(std::string action) { } j["record_event"] = action; - NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) { return; @@ -8886,7 +8875,7 @@ void Plater::load_project(wxString const& filename2, // if res is empty no data has been loaded if (!res.empty() && (load_restore || !(strategy & LoadStrategy::Silence))) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << load_restore ? originfile : filename; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << (load_restore ? originfile : filename); p->set_project_filename(load_restore ? originfile : filename); if (load_restore && originfile.IsEmpty()) { p->set_project_name(_L("Untitled")); @@ -8968,8 +8957,6 @@ int Plater::save_project(bool saveAs) boost::uintmax_t size = boost::filesystem::file_size(into_path(filename)); j["file_size"] = size; j["file_name"] = std::string(filename.mb_str()); - - NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) {} @@ -9002,7 +8989,7 @@ void Plater::import_model_id(wxString download_info) } } - catch (const std::exception& error) + catch (std::exception&) { //wxString sError = error.what(); } @@ -9043,8 +9030,6 @@ void Plater::import_model_id(wxString download_info) // NetworkAgent* m_agent = Slic3r::GUI::wxGetApp().getAgent(); // if (!m_agent) return; - int res = 0; - unsigned int http_code; std::string http_body; msg = _L("prepare 3mf file..."); @@ -9083,7 +9068,7 @@ void Plater::import_model_id(wxString download_info) if (sFile == filename) is_already_exist = true; } } - catch (const std::exception& error) + catch (std::exception&) { //wxString sError = error.what(); } @@ -9796,7 +9781,6 @@ void Plater::calib_retraction(const Calib_Params& params) add_model(false, Slic3r::resources_dir() + "/calib/retraction/retraction_tower.stl"); auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; - auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; auto obj = model().objects[0]; @@ -10127,7 +10111,7 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) std::replace(name.begin(), name.end(), '\\', '/'); // rename if file exists std::string filename = path.filename().string(); - std::string extension = boost::filesystem::extension(path); + std::string extension = path.extension().string(); std::string just_filename = filename.substr(0, filename.size() - extension.size()); std::string final_filename = just_filename; @@ -10433,7 +10417,6 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) auto limit_width = m_fname_f->GetSize().GetWidth() - 2; auto current_width = 0; - auto cut_index = 0; auto fstring = wxString(""); auto bstring = wxString(""); @@ -10441,7 +10424,6 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) auto file_name = wxString(filename); for (int x = 0; x < file_name.length(); x++) { current_width += m_fname_s->GetTextExtent(file_name[x]).GetWidth(); - cut_index = x; if (current_width > limit_width) { bstring += file_name[x]; @@ -11344,7 +11326,6 @@ void Plater::export_gcode(bool prefer_removable) if (preset_bundle) { j["gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); } - NetworkAgent *agent = wxGetApp().getAgent(); } catch (...) {} } @@ -11454,7 +11435,7 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st std::vector csgmesh; csgmesh.reserve(2 * mo.volumes.size()); - bool has_splitable_volume = csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), + csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), csg::mpartsPositive | csg::mpartsNegative); std::string fail_msg = _u8L("Unable to perform boolean operation on model meshes. " @@ -11534,9 +11515,9 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls) wxBusyCursor wait; const auto& selection = p->get_selection(); - const auto obj_idx = selection.get_object_idx(); #if EXPORT_WITH_BOOLEAN + const auto obj_idx = selection.get_object_idx(); if (selection_only && (obj_idx == -1 || selection.is_wipe_tower())) return; #else @@ -12299,7 +12280,6 @@ void Plater::record_slice_preset(std::string action) } j["record_event"] = action; - NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) { @@ -12482,7 +12462,7 @@ int Plater::send_gcode(int plate_idx, Export3mfProgressFn proFn) p->m_print_job_data._3mf_path = fs::path(plate->get_tmp_gcode_path()); p->m_print_job_data._3mf_path.replace_extension("3mf"); } - catch (std::exception& e) { + catch (std::exception&) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } @@ -12515,7 +12495,7 @@ int Plater::export_config_3mf(int plate_idx, Export3mfProgressFn proFn) try { p->m_print_job_data._3mf_config_path = fs::path(plate->get_temp_config_3mf_path()); } - catch (std::exception& e) { + catch (std::exception&) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 06ff46b125..2dad186e46 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -228,13 +228,13 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox( } } - auto check = [this](bool yes_or_no) { + /*auto check = [this](bool yes_or_no) { // if (yes_or_no) // return true; int act_btns = ActionButtons::SAVE; return wxGetApp().check_and_keep_current_preset_changes(_L("Switching application language"), _L("Switching application language while some presets are modified."), act_btns); - }; + };*/ m_current_language_selected = combobox->GetSelection(); if (m_current_language_selected >= 0 && m_current_language_selected < vlist.size()) { diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index e634c4fe1a..a710668d71 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -401,7 +401,7 @@ void PresetComboBox::add_ams_filaments(std::string selected, bool alias_name) auto color = tray.opt_string("filament_colour", 0u); auto name = tray.opt_string("tray_name", 0u); wxBitmap bmp(*get_extruder_color_icon(color, name, 24, 16)); - int item_id = Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first); + Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first); //validate_selection(id->value == selected); // can not select } m_last_ams_filament = GetCount(); @@ -668,7 +668,6 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset // BBS if (m_type == Preset::TYPE_FILAMENT) { - int em = wxGetApp().em_unit(); clr_picker = new wxBitmapButton(parent, wxID_ANY, {}, wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), wxBU_EXACTFIT | wxBU_AUTODRAW | wxBORDER_NONE); clr_picker->SetToolTip(_L("Click to pick filament color")); clr_picker->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { @@ -803,7 +802,6 @@ bool PlaterPresetComboBox::switch_to_tab() wxGetApp().params_dialog()->Popup(); tab->restore_last_select_item(); - const Preset* selected_filament_preset = nullptr; if (m_type == Preset::TYPE_FILAMENT) { const std::string& selected_preset = GetString(GetSelection()).ToUTF8().data(); @@ -983,7 +981,6 @@ void PlaterPresetComboBox::update() if (!preset.is_visible || (!preset.is_compatible && !is_selected)) continue; - bool single_bar = false; if (m_type == Preset::TYPE_FILAMENT) { #if 0 @@ -991,7 +988,7 @@ void PlaterPresetComboBox::update() filament_rgb = is_selected ? selected_filament_preset->config.opt_string("filament_colour", 0) : preset.config.opt_string("filament_colour", 0); extruder_rgb = (is_selected && !filament_color.empty()) ? filament_color : filament_rgb; - single_bar = filament_rgb == extruder_rgb; + bool single_bar = filament_rgb == extruder_rgb; bitmap_key += single_bar ? filament_rgb : filament_rgb + extruder_rgb; #endif @@ -1479,8 +1476,6 @@ void GUI::CalibrateFilamentComboBox::update() this->Clear(); invalidate_selection(); - const Preset* selected_filament_preset = nullptr; - m_nonsys_presets.clear(); m_system_presets.clear(); diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index 8d272057f8..f406553b0c 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -548,7 +548,6 @@ void PrinterFileSystem::BuildGroups() void PrinterFileSystem::UpdateGroupSelect() { m_group_flags.clear(); - int beg = 0; if (m_group_mode != G_NONE) { auto group = m_group_mode == G_YEAR ? m_group_year : m_group_month; if (m_group_mode == G_YEAR) diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index b67a8dc34a..a629790e78 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -1,11 +1,9 @@ #include "PrinterWebView.hpp" #include "I18N.hpp" -#include "slic3r/GUI/PrinterWebView.hpp" #include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/MainFrame.hpp" -#include "libslic3r_version.h" #include #include diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index 003d0e4cdd..e69ba143db 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -266,7 +266,7 @@ void ProjectPanel::OnScriptMessage(wxWebViewEvent& evt) } } - catch (std::exception& e) { + catch (std::exception&) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/RecenterDialog.cpp b/src/slic3r/GUI/RecenterDialog.cpp index 6947763890..2a923fb181 100644 --- a/src/slic3r/GUI/RecenterDialog.cpp +++ b/src/slic3r/GUI/RecenterDialog.cpp @@ -86,8 +86,6 @@ void RecenterDialog::OnPaint(wxPaintEvent& event){ } void RecenterDialog::render(wxDC& dc) { - wxSize size = GetSize(); - dc.SetFont(Label::Body_14); dc.SetTextForeground(text_color); wxPoint pos_start = wxPoint(BORDER, BORDER); diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 617397f32f..5937ff9d37 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -1375,7 +1375,6 @@ wxString ConfirmBeforeSendDialog::format_text(wxString str, int warp) Label st (this, str); wxString out_txt = str; wxString count_txt = ""; - int new_line_pos = 0; for (int i = 0; i < str.length(); i++) { auto text_size = st.GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp b/src/slic3r/GUI/RemovableDriveManager.cpp index a26e13448d..a0a68eb05b 100644 --- a/src/slic3r/GUI/RemovableDriveManager.cpp +++ b/src/slic3r/GUI/RemovableDriveManager.cpp @@ -6,13 +6,9 @@ #include #if _WIN32 -#include #include #include #include - -#include - #else // unix, linux & OSX includes #include diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index 186124a2c1..05958f7ac8 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -435,8 +435,6 @@ void SearchItem::OnPaint(wxPaintEvent &event) auto bold_pair = std::vector>(); - auto index = 0; - auto b_first_list = std::vector(); auto b_second_list = std::vector(); @@ -815,9 +813,9 @@ void SearchDialog::OnCheck(wxCommandEvent &event) void SearchDialog::OnMotion(wxMouseEvent &event) { - wxDataViewItem item; - wxDataViewColumn *col; - wxWindow * win = this; + // wxDataViewItem item; + // wxDataViewColumn *col; + // wxWindow * win = this; // search_list->HitTest(wxGetMousePosition() - win->GetScreenPosition(), item, col); // search_list->Select(item); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index e6b2ac81c5..f641769b45 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -421,7 +421,7 @@ SelectMachinePopup::SelectMachinePopup(wxWindow *parent) m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); Bind(EVT_UPDATE_USER_MACHINE_LIST, &SelectMachinePopup::update_machine_list, this); - Bind(wxEVT_TIMER, &SelectMachinePopup::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); Bind(EVT_DISSMISS_MACHINE_LIST, &SelectMachinePopup::on_dissmiss_win, this); } @@ -459,7 +459,7 @@ void SelectMachinePopup::Popup(wxWindow *WXUNUSED(focus)) } } - wxPostEvent(this, wxTimerEvent()); + on_timer(); PopupWindow::Popup(); } @@ -529,7 +529,7 @@ wxWindow *SelectMachinePopup::create_title_panel(wxString text) return m_panel_title_own; } -void SelectMachinePopup::on_timer(wxTimerEvent &event) +void SelectMachinePopup::on_timer() { BOOST_LOG_TRIVIAL(trace) << "SelectMachinePopup on_timer"; wxGetApp().reset_to_active(); @@ -933,7 +933,6 @@ wxString SelectMachineDialog::format_text(wxString &m_msg) wxString out_txt = m_msg; wxString count_txt = ""; - int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_ams_msg->GetTextExtent(count_txt); @@ -2461,9 +2460,6 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event) //check blacklist for (auto i = 0; i < m_ams_mapping_result.size(); i++) { - - auto tid = m_ams_mapping_result[i].tray_id; - std::string filament_type = boost::to_upper_copy(m_ams_mapping_result[i].type); std::string filament_brand; @@ -3319,7 +3315,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) if (m_list[i]->is_lan_mode_printer() && !m_list[i]->has_access_right()) { ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); dlg.set_machine_object(m_list[i]); - auto res = dlg.ShowModal(); + dlg.ShowModal(); m_printer_last_select = ""; m_comboBox_printer->SetSelection(-1); m_comboBox_printer->Refresh(); @@ -3369,7 +3365,6 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) void SelectMachineDialog::update_flow_cali_check(MachineObject* obj) { - auto bed_type = m_plater->get_partplate_list().get_curr_plate()->get_bed_type(true); auto show_cali_tips = true; if (obj && obj->get_printer_arch() == PrinterArch::ARCH_I3) { show_cali_tips = false; } @@ -3706,7 +3701,6 @@ void SelectMachineDialog::reset_ams_material() { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { - int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; wxString ams_id = "-"; @@ -3988,7 +3982,6 @@ void SelectMachineDialog::reset_and_sync_ams_list() BitmapCache bmcache; MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { - int id = iter->first; Material *item = iter->second; item->item->Destroy(); delete item; @@ -4015,7 +4008,6 @@ void SelectMachineDialog::reset_and_sync_ams_list() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent &e) { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { - int id = iter->first; Material * item = iter->second; MaterialItem *m = item->item; m->on_normal(); @@ -4025,9 +4017,6 @@ void SelectMachineDialog::reset_and_sync_ams_list() m_current_filament_id = extruder; item->on_selected(); - auto mouse_pos = ClientToScreen(e.GetPosition()); - wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); - // update ams data DeviceManager *dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev_manager) return; @@ -4247,7 +4236,6 @@ void SelectMachineDialog::unify_deal_thumbnail_data(ThumbnailData &input_data, T MaterialHash::iterator iter = m_materialList.begin(); bool is_connect_printer = true; while (iter != m_materialList.end()) { - int id = iter->first; Material * item = iter->second; MaterialItem *m = item->item; if (m->m_ams_name == "-") { @@ -4359,10 +4347,10 @@ void SelectMachineDialog::set_default_normal(const ThumbnailData &data) MachineObject* obj_ = dev_manager->get_selected_machine(); update_flow_cali_check(obj_); +#ifdef __WINDOWS__ wxSize screenSize = wxGetDisplaySize(); auto dialogSize = this->GetSize(); -#ifdef __WINDOWS__ if (screenSize.GetHeight() < dialogSize.GetHeight()) { m_need_adaptation_screen = true; m_scrollable_view->SetScrollRate(0, 5); @@ -4423,7 +4411,6 @@ void SelectMachineDialog::set_default_from_sdcard() //init MaterialItem MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { - int id = iter->first; Material* item = iter->second; item->item->Destroy(); delete item; @@ -4446,7 +4433,6 @@ void SelectMachineDialog::set_default_from_sdcard() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, fo](wxMouseEvent& e) { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { - int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; m->on_normal(); @@ -4459,9 +4445,6 @@ void SelectMachineDialog::set_default_from_sdcard() catch (...) {} item->on_selected(); - - auto mouse_pos = ClientToScreen(e.GetPosition()); - wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); // update ams data DeviceManager* dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev_manager) return; @@ -4485,7 +4468,7 @@ void SelectMachineDialog::set_default_from_sdcard() m_mapping_popup.Popup(); } } - }); + }); Material* material_item = new Material(); material_item->id = fo.id; @@ -4512,10 +4495,9 @@ void SelectMachineDialog::set_default_from_sdcard() set_flow_calibration_state(true); +#ifdef __WINDOWS__ wxSize screenSize = wxGetDisplaySize(); auto dialogSize = this->GetSize(); - -#ifdef __WINDOWS__ if (screenSize.GetHeight() < dialogSize.GetHeight()) { m_need_adaptation_screen = true; m_scrollable_view->SetScrollRate(0, 5); diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 16da5e05d5..dadc3be613 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -278,7 +278,7 @@ private: private: void OnLeftUp(wxMouseEvent &event); - void on_timer(wxTimerEvent &event); + void on_timer(); void update_other_devices(); void update_user_devices(); diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index b952420b0d..baf0773ce7 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -1104,7 +1104,6 @@ void Selection::move_to_center(const Vec3d& displacement, bool local) if (!m_valid) return; - EMode translation_type = m_mode; //BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": %1%, displacement {%2%, %3%, %4%}") % __LINE__ % displacement(X) % displacement(Y) % displacement(Z); set_caches(); @@ -1125,7 +1124,6 @@ void Selection::move_to_center(const Vec3d& displacement, bool local) else { const Vec3d local_displacement = (m_cache.volumes_data[i].get_instance_rotation_matrix() * m_cache.volumes_data[i].get_instance_scale_matrix() * m_cache.volumes_data[i].get_instance_mirror_matrix()).inverse() * displacement; v.set_volume_offset(m_cache.volumes_data[i].get_volume_position() + local_displacement); - translation_type = Volume; } } } @@ -2179,7 +2177,8 @@ void Selection::update_type() obj_it->second.insert(inst_idx); } - bool requires_disable = false; + // BBL removed functionality below + // bool requires_disable = false; if (!m_valid) m_type = Invalid; @@ -2195,7 +2194,7 @@ void Selection::update_type() else if (first->is_modifier) { m_type = SingleModifier; - requires_disable = true; + // requires_disable = true; } else { @@ -2217,7 +2216,7 @@ void Selection::update_type() else { m_type = SingleVolume; - requires_disable = true; + // requires_disable = true; } } } @@ -2265,7 +2264,7 @@ void Selection::update_type() else if (modifiers_count == (unsigned int)m_list.size()) m_type = MultipleModifier; - requires_disable = true; + // requires_disable = true; } } else if ((selected_instances_count > 1) && (selected_instances_count * model_volumes_count + sla_volumes_count == (unsigned int)m_list.size())) diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index bf766d78d0..036409f4d9 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -300,7 +300,7 @@ SendMultiMachinePage::SendMultiMachinePage(Plater* plater) m_main_scroll->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this); e.Skip(); }); init_timer(); - Bind(wxEVT_TIMER, &SendMultiMachinePage::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); wxGetApp().UpdateDlgDarkUI(this); } @@ -451,8 +451,6 @@ BBL::PrintParams SendMultiMachinePage::request_params(MachineObject* obj) auto use_ams = false; AmsRadioSelectorList::Node* node = m_radio_group.GetFirst(); - auto groupid = 0; - while (node) { AmsRadioSelector* rs = node->GetData(); @@ -472,13 +470,11 @@ BBL::PrintParams SendMultiMachinePage::request_params(MachineObject* obj) PrintPrepareData job_data; m_plater->get_print_job_data(&job_data); - - if (&job_data) { - std::string temp_file = Slic3r::resources_dir() + "/check_access_code.txt"; - auto check_access_code_path = temp_file.c_str(); - BOOST_LOG_TRIVIAL(trace) << "sned_job: check_access_code_path = " << check_access_code_path; - job_data._temp_path = fs::path(check_access_code_path); - } + + std::string temp_file = Slic3r::resources_dir() + "/check_access_code.txt"; + auto check_access_code_path = temp_file.c_str(); + BOOST_LOG_TRIVIAL(trace) << "sned_job: check_access_code_path = " << check_access_code_path; + job_data._temp_path = fs::path(check_access_code_path); int curr_plate_idx; if (job_data.plate_idx >= 0) @@ -639,7 +635,7 @@ void SendMultiMachinePage::on_send(wxCommandEvent& event) int result = m_plater->send_gcode(m_print_plate_idx, [this](int export_stage, int current, int total, bool& cancel) { if (m_is_canceled) return; - bool cancelled = false; + // bool cancelled = false; wxString msg = _L("Preparing print job"); //m_status_bar->update_status(msg, cancelled, 10, true); //m_export_3mf_cancel = cancel = cancelled; @@ -738,7 +734,7 @@ bool SendMultiMachinePage::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(4000); - wxPostEvent(this, wxTimerEvent()); + on_timer(); } else { m_refresh_timer->Stop(); @@ -935,7 +931,6 @@ void SendMultiMachinePage::on_set_finish_mapping(wxCommandEvent& evt) if (selection_data_arr.size() == 6) { auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]), wxAtoi(selection_data_arr[3])); - int old_filament_id = (int)wxAtoi(selection_data_arr[5]); int ctype = 0; std::vector material_cols; @@ -1147,7 +1142,7 @@ wxPanel* SendMultiMachinePage::create_page() e.Skip(); }); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetCornerRadius(0); m_printer_name->SetFont(TABLE_HEAD_FONT); @@ -1169,7 +1164,7 @@ wxPanel* SendMultiMachinePage::create_page() m_table_head_sizer->Add( 0, 0, 0, wxLEFT, FromDIP(10) ); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_device_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); + m_device_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); m_device_status->SetBackgroundColor(head_bg); m_device_status->SetFont(TABLE_HEAD_FONT); m_device_status->SetCornerRadius(0); @@ -1212,7 +1207,7 @@ wxPanel* SendMultiMachinePage::create_page() //m_table_head_sizer->Add(m_task_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_ams = new Button(m_table_head_panel, _L("Ams Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); + m_ams = new Button(m_table_head_panel, _L("Ams Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); m_ams->SetBackgroundColor(head_bg); m_ams->SetCornerRadius(0); m_ams->SetFont(TABLE_HEAD_FONT); @@ -1233,7 +1228,7 @@ wxPanel* SendMultiMachinePage::create_page() }); m_table_head_sizer->Add(m_ams, 0, wxALIGN_CENTER_VERTICAL, 0); - m_refresh_button = new Button(m_table_head_panel, "", "mall_control_refresh", wxNO_BORDER, ICON_SIZE, false); + m_refresh_button = new Button(m_table_head_panel, "", "mall_control_refresh", wxNO_BORDER, MM_ICON_SIZE, false); m_refresh_button->SetBackgroundColor(head_bg); m_refresh_button->SetCornerRadius(0); m_refresh_button->SetFont(TABLE_HEAD_FONT); @@ -1385,7 +1380,6 @@ void SendMultiMachinePage::sync_ams_list() BitmapCache bmcache; MaterialHash::iterator iter = m_material_list.begin(); while (iter != m_material_list.end()) { - int id = iter->first; Material* item = iter->second; item->item->Destroy(); delete item; @@ -1414,7 +1408,6 @@ void SendMultiMachinePage::sync_ams_list() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent& e) { MaterialHash::iterator iter = m_material_list.begin(); while (iter != m_material_list.end()) { - int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; m->on_normal(); @@ -1424,9 +1417,6 @@ void SendMultiMachinePage::sync_ams_list() m_current_filament_id = extruder; item->on_selected(); - auto mouse_pos = ClientToScreen(e.GetPosition()); - wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); - // update ams data if (get_value_radio("use_ams")) { if (m_mapping_popup->IsShown()) return; @@ -1656,7 +1646,7 @@ void SendMultiMachinePage::init_timer() m_refresh_timer = new wxTimer(); } -void SendMultiMachinePage::on_timer(wxTimerEvent& event) +void SendMultiMachinePage::on_timer() { for (auto it = m_device_items.begin(); it != m_device_items.end(); it++) { it->second->sync_state(); diff --git a/src/slic3r/GUI/SendMultiMachinePage.hpp b/src/slic3r/GUI/SendMultiMachinePage.hpp index 58014f065c..c6935f2d64 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.hpp +++ b/src/slic3r/GUI/SendMultiMachinePage.hpp @@ -194,7 +194,7 @@ protected: void on_set_finish_mapping(wxCommandEvent& evt); void on_rename_click(wxCommandEvent& event); - void on_timer(wxTimerEvent& event); + void on_timer(); void init_timer(); private: diff --git a/src/slic3r/GUI/SendSystemInfoDialog.cpp b/src/slic3r/GUI/SendSystemInfoDialog.cpp index 73de9101c4..3740cbb690 100644 --- a/src/slic3r/GUI/SendSystemInfoDialog.cpp +++ b/src/slic3r/GUI/SendSystemInfoDialog.cpp @@ -443,7 +443,7 @@ static std::string generate_system_info_json() pt::ptree hw_node; { - hw_node.put("ArchName", wxPlatformInfo::Get().GetArchName()); + hw_node.put("ArchName", wxPlatformInfo::Get().GetBitnessName()); size_t num = std::round(Slic3r::total_physical_memory()/107374100.); hw_node.put("RAM_GiB", std::to_string(num / 10) + "." + std::to_string(num % 10)); } diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 7d0fb5663c..51b6797a5f 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -59,7 +59,6 @@ wxString SendToPrinterDialog::format_text(wxString &m_msg) wxString out_txt = m_msg; wxString count_txt = ""; - int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_printer_msg->GetTextExtent(count_txt); @@ -1338,11 +1337,6 @@ void SendToPrinterDialog::set_default() Layout(); Fit(); - - wxSize screenSize = wxGetDisplaySize(); - auto dialogSize = this->GetSize(); - - // basic info auto aprint_stats = m_plater->get_partplate_list().get_current_fff_print().print_statistics(); wxString time; diff --git a/src/slic3r/GUI/SlicingProgressNotification.cpp b/src/slic3r/GUI/SlicingProgressNotification.cpp index bedcbc2eb7..219950ceff 100644 --- a/src/slic3r/GUI/SlicingProgressNotification.cpp +++ b/src/slic3r/GUI/SlicingProgressNotification.cpp @@ -224,8 +224,8 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas const float progress_panel_width = (m_window_width - 2 * progress_child_window_padding.x); const float progress_panel_height = (58.0f * scale); const float dailytips_panel_width = (m_window_width - 2 * dailytips_child_window_padding.x); - const float gcodeviewer_height = wxGetApp().plater()->get_preview_canvas3D()->get_gcode_viewer().get_legend_height(); - //const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); + // const float gcodeviewer_height = wxGetApp().plater()->get_preview_canvas3D()->get_gcode_viewer().get_legend_height(); + // const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); const float dailytips_panel_height = 125.0f * scale; float right_gap = right_margin + (move_from_overlay ? overlay_width + m_line_height * 5 : 0); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 2a7ff21b76..d4b1148df3 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -291,7 +291,6 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) }); m_button_pause_resume->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { - auto buf = m_button_pause_resume->GetClientData(); if (m_button_pause_resume->GetToolTipText() == _L("Pause")) { m_button_pause_resume->SetBitmap_("print_control_pause"); } @@ -2528,7 +2527,7 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) } bool light_on = obj->chamber_light != MachineObject::LIGHT_EFFECT::LIGHT_EFFECT_OFF; - BOOST_LOG_TRIVIAL(trace) << "light: " << light_on ? "on" : "off"; + BOOST_LOG_TRIVIAL(trace) << "light: " << (light_on ? "on" : "off"); if (m_switch_lamp_timeout > 0) m_switch_lamp_timeout--; else { @@ -2592,7 +2591,6 @@ void StatusPanel::update_ams(MachineObject *obj) } bool is_support_virtual_tray = obj->ams_support_virtual_tray; - bool is_support_filament_backup = obj->is_support_filament_backup; AMSModel ams_mode = AMSModel::GENERIC_AMS; if (obj) { @@ -2663,9 +2661,6 @@ void StatusPanel::update_ams(MachineObject *obj) std::string curr_ams_id = m_ams_control->GetCurentAms(); std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id); - bool is_vt_tray = false; - if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_ID)) - is_vt_tray = true; // set segment 1, 2 if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID) ) { @@ -4907,7 +4902,6 @@ wxBoxSizer *ScoreDialog::get_button_sizer() if (m_upload_status_code == StatusCode::UPLOAD_PROGRESS) { int need_upload_nums = need_upload_images.size(); int upload_nums = 0; - int upload_failed_nums = 0; ProgressDialog *progress_dialog = new ProgressDialog(_L("Upload Pictrues"), _L("Number of images successfully uploaded") + ": " + std::to_string(upload_nums) + "/" + std::to_string(need_upload_nums), need_upload_nums, this); for (std::set>::iterator it = need_upload_images.begin(); it != need_upload_images.end();) { std::pair need_upload = *it; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 9fd2f823a0..806cbad985 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1221,7 +1221,7 @@ void Tab::msw_rescale() // recreate and set new ImageList for tree_ctrl m_icons->RemoveAll(); m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight(), false); - for (ScalableBitmap& bmp : m_scaled_icons_list) + // for (ScalableBitmap& bmp : m_scaled_icons_list) //m_icons->Add(bmp.bmp()); m_tabctrl->AssignImageList(m_icons); @@ -1255,7 +1255,7 @@ void Tab::sys_color_changed() // recreate and set new ImageList for tree_ctrl m_icons->RemoveAll(); m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight(), false); - for (ScalableBitmap& bmp : m_scaled_icons_list) + // for (ScalableBitmap& bmp : m_scaled_icons_list) //m_icons->Add(bmp.bmp()); m_tabctrl->AssignImageList(m_icons); @@ -1609,19 +1609,6 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } } - - // -1 means caculate all - auto update_flush_volume = [](int idx = -1) { - if (idx < 0) { - size_t filament_size = wxGetApp().plater()->get_extruder_colors_from_plater_config().size(); - for (size_t i = 0; i < filament_size; ++i) - wxGetApp().plater()->sidebar().auto_calc_flushing_volumes(i); - } - else - wxGetApp().plater()->sidebar().auto_calc_flushing_volumes(idx); - }; - - string opt_key_without_idx = opt_key.substr(0, opt_key.find('#')); if (opt_key_without_idx == "long_retractions_when_cut") { @@ -2588,8 +2575,6 @@ void TabPrintModel::update_model_config() // Reset m_config manually because there's no corresponding config in m_parent_tab->m_config for (auto plate_item : m_object_configs) { const DynamicPrintConfig& plate_config = plate_item.second->get(); - BedType plate_bed_type = (BedType)0; - PrintSequence plate_print_seq = (PrintSequence)0; if (!plate_config.has("curr_bed_type")) { // same as global DynamicConfig& global_cfg = wxGetApp().preset_bundle->project_config; @@ -2900,7 +2885,6 @@ void TabPrintPlate::on_value_change(const std::string& opt_key, const boost::any void TabPrintPlate::notify_changed(ObjectBase* object) { - auto plate = dynamic_cast(object); auto objects_list = wxGetApp().obj_list(); wxDataViewItemArray items; objects_list->GetSelections(items); @@ -4680,14 +4664,14 @@ void Tab::rebuild_page_tree() if (sel_item == m_last_select_item) m_last_select_item = item; else - m_last_select_item = NULL; + m_last_select_item = 0; // allow activate page before selection of a page_tree item m_disable_tree_sel_changed_event = false; //BBS: GUI refactor if (item >= 0) { - bool ret = update_current_page_in_background(item); + update_current_page_in_background(item); //if m_active_page is changed in update_current_page_in_background //will just update the selected item of the treectrl if (m_parent->is_active_and_shown_tab(this)) // FIX: modify state not update @@ -5507,7 +5491,6 @@ void Tab::delete_preset() if (m_presets->get_preset_base(current_preset) == ¤t_preset) { //root preset is_base_preset = true; if (current_preset.type == Preset::Type::TYPE_PRINTER && !current_preset.is_system) { //Customize third-party printers - Preset ¤t_preset = m_presets->get_selected_preset(); int filament_preset_num = 0; int process_preset_num = 0; for (const Preset &preset : m_preset_bundle->filaments.get_presets()) { @@ -5771,7 +5754,6 @@ wxSizer* TabPrinter::create_bed_shape_widget(wxWindow* parent) sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL); btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { - bool is_configed_by_BBL = PresetUtils::system_printer_bed_model(m_preset_bundle->printers.get_edited_preset()).size() > 0; BedShapeDialog dlg(this); dlg.build_dialog(*m_config->option("printable_area"), *m_config->option("bed_custom_texture"), diff --git a/src/slic3r/GUI/Tabbook.hpp b/src/slic3r/GUI/Tabbook.hpp index 7dd19389de..61eee685b8 100644 --- a/src/slic3r/GUI/Tabbook.hpp +++ b/src/slic3r/GUI/Tabbook.hpp @@ -198,8 +198,6 @@ public: // check that only the selected page is visible and others are hidden: for (size_t page = 0; page < m_pages.size(); page++) { - wxWindow* win_a = GetPage(page); - wxWindow* win_b = GetPage(n); if (page != n && GetPage(page) != GetPage(n)) { m_pages[page]->Hide(); } diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index b47f3c0389..1b46e2b7dd 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1654,7 +1654,7 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres const DynamicPrintConfig& new_config = presets->get_edited_preset().config; type = presets->type(); - const std::map& category_icon_map = wxGetApp().get_tab(type)->get_category_icon_map(); + // const std::map& category_icon_map = wxGetApp().get_tab(type)->get_category_icon_map(); //m_tree->model->AddPreset(type, from_u8(presets->get_edited_preset().name), old_pt); diff --git a/src/slic3r/GUI/UpdateDialogs.cpp b/src/slic3r/GUI/UpdateDialogs.cpp index d78136a094..deba5a7a97 100644 --- a/src/slic3r/GUI/UpdateDialogs.cpp +++ b/src/slic3r/GUI/UpdateDialogs.cpp @@ -24,12 +24,11 @@ namespace Slic3r { namespace GUI { - -static const char* URL_CHANGELOG = "%1%"; -static const char* URL_DOWNLOAD = "%1%"; -static const char* URL_DEV = "%1%"; - -static const std::string CONFIG_UPDATE_WIKI_URL(""); +// Orca: Replace static char* with macro defs +// currently disabled until needed +// #define URL_CHANGELOG "%1%" +// #define URL_DOWNLOAD "%1%" +// #define URL_DEV "%1%" // MsgUpdateSlic3r diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index e9384c385b..e2376326e4 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -670,8 +670,6 @@ void MachineInfoPanel::update_ams_ext(MachineObject *obj) show_ams(true); std::map ver_list = obj->get_ams_version(); - AmsPanelHash::iterator iter = m_amspanel_list.begin(); - for (auto i = 0; i < m_amspanel_list.GetCount(); i++) { AmsPanel* amspanel = m_amspanel_list[i]; amspanel->Hide(); diff --git a/src/slic3r/GUI/UserManager.cpp b/src/slic3r/GUI/UserManager.cpp index 29f5f2d137..0fd8dfce25 100644 --- a/src/slic3r/GUI/UserManager.cpp +++ b/src/slic3r/GUI/UserManager.cpp @@ -25,7 +25,6 @@ void UserManager::set_agent(NetworkAgent* agent) int UserManager::parse_json(std::string payload) { - bool restored_json = false; json j; json j_pre = json::parse(payload); if (j_pre.empty()) { @@ -41,7 +40,7 @@ int UserManager::parse_json(std::string payload) //bind if (j_pre["bind"]["command"].get() == "bind") { std::string dev_id; - std:; string result; + std::string result; if (j_pre["bind"].contains("dev_id")) { dev_id = j_pre["bind"]["dev_id"].get(); diff --git a/src/slic3r/GUI/WebDownPluginDlg.cpp b/src/slic3r/GUI/WebDownPluginDlg.cpp index 82d2816f2e..49fc439887 100644 --- a/src/slic3r/GUI/WebDownPluginDlg.cpp +++ b/src/slic3r/GUI/WebDownPluginDlg.cpp @@ -1,27 +1,17 @@ #include "WebDownPluginDlg.hpp" -#include "ConfigWizard.hpp" - -#include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" -#include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" -#include "libslic3r_version.h" #include -#include #include - #include #include -#include #include #include -#include #include "MainFrame.hpp" -#include #include #include #include @@ -227,7 +217,7 @@ void DownPluginFrame::OnScriptMessage(wxWebViewEvent &evt) auto plugin_folder = (boost::filesystem::path(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data()) / "plugins").make_preferred().string(); desktop_open_any_folder(plugin_folder); } - } catch (std::exception &e) { + } catch (std::exception&) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 63255d73c6..ecc3d533c5 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -882,13 +882,13 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle } std::string first_added_filament; - auto get_first_added_material_preset = [this, app_config](const std::string& section_name, std::string& first_added_preset) { + /*auto get_first_added_material_preset = [this, app_config](const std::string& section_name, std::string& first_added_preset) { if (m_appconfig_new.has_section(section_name)) { // get first of new added preset names const std::map& old_presets = app_config->has_section(section_name) ? app_config->get_section(section_name) : std::map(); first_added_preset = get_first_added_preset(old_presets, m_appconfig_new.get_section(section_name)); } - }; + };*/ // Not switch filament //get_first_added_material_preset(AppConfig::SECTION_FILAMENTS, first_added_filament); @@ -949,7 +949,6 @@ bool GuideFrame::run() BOOST_LOG_TRIVIAL(info) << "GuideFrame cancelled"; if (app.preset_bundle->printers.only_default_printers()) { //we install the default here - bool apply_keeped_changes = false; //clear filament section and use default materials app.app_config->set_variant(PresetBundle::BBL_BUNDLE, PresetBundle::BBL_DEFAULT_PRINTER_MODEL, PresetBundle::BBL_DEFAULT_PRINTER_VARIANT, "true"); @@ -1129,7 +1128,7 @@ int GuideFrame::LoadProfile() wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); - strVendor = strVendor.AfterLast('\/'); + strVendor = strVendor.AfterLast('/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); if (w2s(strVendor) == PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json") == 0) @@ -1148,7 +1147,7 @@ int GuideFrame::LoadProfile() //cout << iter->path().string() << endl; wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); - strVendor = strVendor.AfterLast('\/'); + strVendor = strVendor.AfterLast('/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); if (w2s(strVendor) != PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json")==0) @@ -1530,9 +1529,6 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "Vendor: " << strVendor <<", tFilaList Add: " << s1; } - int nFalse = 0; - int nModel = 0; - int nFinish = 0; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% filaments") % nsize; for (int n = 0; n < nsize; n++) { json OneFF = pFilament.at(n); @@ -1642,7 +1638,7 @@ std::string GuideFrame::w2s(wxString sSrc) void GuideFrame::GetStardardFilePath(std::string &FilePath) { StrReplace(FilePath, "\\", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); - StrReplace(FilePath, "\/", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); + StrReplace(FilePath, "/", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); } bool GuideFrame::LoadFile(std::string jPath, std::string &sContent) diff --git a/src/slic3r/GUI/WebUserLoginDialog.cpp b/src/slic3r/GUI/WebUserLoginDialog.cpp index b95aa50b5f..4385f43dae 100644 --- a/src/slic3r/GUI/WebUserLoginDialog.cpp +++ b/src/slic3r/GUI/WebUserLoginDialog.cpp @@ -3,7 +3,6 @@ #include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" -#include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "libslic3r_version.h" @@ -13,11 +12,9 @@ #include #include -#include #include #include -#include #include #include "MainFrame.hpp" diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index fab48fa679..a5e17afab4 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -5,7 +5,6 @@ #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/MainFrame.hpp" #include "libslic3r_version.h" -#include "../Utils/Http.hpp" #include #include diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index ea2fea852c..c9a7e5c6e1 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -137,7 +137,7 @@ void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con wxWindow::Create(parent, id, pos, size, wxBORDER_NONE); SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); - Bind(wxEVT_TIMER, &AMSrefresh::on_timer, this); + Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); Bind(wxEVT_PAINT, &AMSrefresh::paintEvent, this); Bind(wxEVT_ENTER_WINDOW, &AMSrefresh::OnEnterWindow, this); Bind(wxEVT_LEAVE_WINDOW, &AMSrefresh::OnLeaveWindow, this); @@ -166,14 +166,14 @@ void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con m_playing_timer = new wxTimer(); m_playing_timer->SetOwner(this); - wxPostEvent(this, wxTimerEvent()); + on_timer(); SetSize(AMS_REFRESH_SIZE); SetMinSize(AMS_REFRESH_SIZE); SetMaxSize(AMS_REFRESH_SIZE); } -void AMSrefresh::on_timer(wxTimerEvent &event) +void AMSrefresh::on_timer() { //if (m_rotation_angle >= m_rfid_bitmap_list.size()) { // m_rotation_angle = 0; @@ -472,7 +472,7 @@ void AMSextruder::doRender(wxDC& dc) { //m_current_colur = wxSize size = GetSize(); - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (!m_none_ams_mode) { @@ -484,24 +484,24 @@ void AMSextruder::doRender(wxDC& dc) if (m_vams_loading) { - if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } - else { dc.SetPen(wxPen(m_current_colur, 6, wxSOLID)); } + if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } + else { dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID)); } dc.DrawRoundedRectangle(-size.x / 2, size.y * 0.1, size.x, size.y, 4); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); dc.DrawRoundedRectangle(-size.x / 2 - FromDIP(3), size.y * 0.1 + FromDIP(3), size.x, size.y, 3); dc.DrawRoundedRectangle(-size.x / 2 + FromDIP(3), size.y * 0.1 - FromDIP(3), size.x, size.y, 5); } } if (m_ams_loading && !m_none_ams_mode) { - if (m_current_colur.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID));} - else {dc.SetPen(wxPen(m_current_colur, 6, wxSOLID));} + if (m_current_colur.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID));} + else {dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID));} dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); dc.DrawLine(size.x / 2 - FromDIP(4), -1, size.x / 2 - FromDIP(3), size.y * 0.6 - 1); dc.DrawLine(size.x / 2 + FromDIP(3), -1, size.x / 2 + FromDIP(3), size.y * 0.6 - 1); } @@ -509,12 +509,12 @@ void AMSextruder::doRender(wxDC& dc) } else { if (m_ams_loading) { - if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } - else { dc.SetPen(wxPen(m_current_colur, 6, wxSOLID)); } + if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } + else { dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID)); } dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); dc.DrawLine(size.x / 2 - FromDIP(4), -1, size.x / 2 - FromDIP(3), size.y * 0.6 - 1); dc.DrawLine(size.x / 2 + FromDIP(3), -1, size.x / 2 + FromDIP(3), size.y * 0.6 - 1); } @@ -587,18 +587,18 @@ void AMSVirtualRoad::doRender(wxDC& dc) wxSize size = GetSize(); if (m_vams_loading) { - if (m_current_color.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } - else { dc.SetPen(wxPen(m_current_color, 6, wxSOLID)); } + if (m_current_color.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } + else { dc.SetPen(wxPen(m_current_color, 6, wxPENSTYLE_SOLID)); } } else { - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); } dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawRoundedRectangle(size.x / 2, -size.y / 1.1 + FromDIP(1), size.x, size.y, 4); if ((m_current_color == *wxWHITE || m_current_color.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); dc.DrawRoundedRectangle(size.x / 2 - FromDIP(3), -size.y / 1.1 + FromDIP(4), size.x, size.y, 5); dc.DrawRoundedRectangle(size.x / 2 + FromDIP(3), -size.y / 1.1 - FromDIP(2), size.x, size.y, 3); } @@ -988,11 +988,11 @@ void AMSLib::render_extra_lib(wxDC& dc) //draw road - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_pass_road) { - dc.SetPen(wxPen(m_info.material_colour, 6, wxSOLID)); + dc.SetPen(wxPen(m_info.material_colour, 6, wxPENSTYLE_SOLID)); } if (m_can_index == 0 || m_can_index == 3) { @@ -1114,9 +1114,9 @@ void AMSLib::render_generic_lib(wxDC &dc) // selected if (m_selected) { - dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 2, wxPENSTYLE_SOLID)); if (tmp_lib_colour.Alpha() == 0) { - dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(),tmp_lib_colour.Blue(),128), 2, wxSOLID)); + dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(),tmp_lib_colour.Blue(),128), 2, wxPENSTYLE_SOLID)); } dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_radius == 0) { @@ -1131,7 +1131,7 @@ void AMSLib::render_generic_lib(wxDC &dc) } if (!m_selected && m_hover) { - dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_radius == 0) { dc.DrawRectangle(0, 0, size.x, size.y); @@ -1144,7 +1144,7 @@ void AMSLib::render_generic_lib(wxDC &dc) dc.SetBrush(wxBrush(tmp_lib_colour)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 1, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(tmp_lib_colour)); } @@ -1230,7 +1230,7 @@ void AMSLib::render_generic_lib(wxDC &dc) dc.SetBrush(wxBrush(tmp_lib_colour)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 1, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(tmp_lib_colour)); } } @@ -1260,7 +1260,7 @@ void AMSLib::render_generic_lib(wxDC &dc) #endif } if (tmp_lib_colour.Red() > 238 && tmp_lib_colour.Green() > 238 && tmp_lib_colour.Blue() > 238) { - dc.SetPen(wxPen(wxColour(130, 129, 128), 1, wxSOLID)); + dc.SetPen(wxPen(wxColour(130, 129, 128), 1, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawLine(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(4), FromDIP(4) + top); } @@ -1268,10 +1268,10 @@ void AMSLib::render_generic_lib(wxDC &dc) else { dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (tmp_lib_colour.Red() > 238 && tmp_lib_colour.Green() > 238 && tmp_lib_colour.Blue() > 238) { - dc.SetPen(wxPen(wxColour(130, 129, 128), 2, wxSOLID)); + dc.SetPen(wxPen(wxColour(130, 129, 128), 2, wxPENSTYLE_SOLID)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 2, wxPENSTYLE_SOLID)); } #ifdef __APPLE__ @@ -1285,7 +1285,7 @@ void AMSLib::render_generic_lib(wxDC &dc) } //border - dc.SetPen(wxPen(wxColour(130, 130, 128), 1, wxSOLID)); + dc.SetPen(wxPen(wxColour(130, 130, 128), 1, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); #ifdef __APPLE__ dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4), size.x - FromDIP(7), size.y - FromDIP(7), m_radius); @@ -1371,7 +1371,6 @@ AMSRoad::AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, in m_info = info; m_canindex = canindex; // road type - auto mode = AMSRoadMode::AMS_ROAD_MODE_END; if (m_canindex == 0 && maxcan == 1) { m_rode_mode = AMSRoadMode::AMS_ROAD_MODE_NONE; } else if (m_canindex == 0 && maxcan > 1) { @@ -1492,7 +1491,7 @@ void AMSRoad::doRender(wxDC &dc) { wxSize size = GetSize(); - dc.SetPen(wxPen(m_road_def_color, 2, wxSOLID)); + dc.SetPen(wxPen(m_road_def_color, 2, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); // left mode if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_LEFT) { dc.DrawRoundedRectangle(-10, -10, size.x / 2 + 10, size.y * 0.6 + 10, 4); } @@ -1535,8 +1534,8 @@ void AMSRoad::doRender(wxDC &dc) // mode none // if (m_pass_rode_mode.size() == 1 && m_pass_rode_mode[0] == AMSPassRoadMode::AMS_ROAD_MODE_NONE) return; - if (m_road_color.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxSOLID));} - else {dc.SetPen(wxPen(m_road_color, m_passroad_width, wxSOLID));} + if (m_road_color.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxPENSTYLE_SOLID));} + else {dc.SetPen(wxPen(m_road_color, m_passroad_width, wxPENSTYLE_SOLID));} dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); @@ -1563,7 +1562,7 @@ void AMSRoad::doRender(wxDC &dc) // end mode if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END || m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END_ONLY) { - dc.SetPen(wxPen(m_road_def_color, 2, wxSOLID)); + dc.SetPen(wxPen(m_road_def_color, 2, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(m_road_def_color)); dc.DrawRoundedRectangle(size.x * 0.37 / 2, size.y * 0.6 - size.y / 6, size.x * 0.63, size.y / 3, m_radius); } @@ -2244,7 +2243,7 @@ void AmsCans::doRender(wxDC& dc) // A1 - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); try @@ -2285,32 +2284,32 @@ void AmsCans::doRender(wxDC& dc) if (!m_road_canid.empty()) { if (m_road_canid == "0") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top); dc.DrawLine(a1_left, a1_top, end_top, a1_top); } if (m_road_canid == "1") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); dc.DrawLine(a2_left, FromDIP(160), a2_left, a2_top); dc.DrawLine(a2_left, a2_top, end_top, a2_top); } if (m_road_canid == "2") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top); dc.DrawLine(a3_left, a3_top, end_top, a3_top); } if (m_road_canid == "3") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); dc.DrawLine(a4_left, FromDIP(30), a4_left, a4_top); dc.DrawLine(a4_left, a4_top, end_top, a4_top); } } //to Extruder - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawLine(end_top, a1_top, end_top, size.y); @@ -2318,19 +2317,19 @@ void AmsCans::doRender(wxDC& dc) if (!m_road_canid.empty()) { if (!m_road_canid.empty()) { if (m_road_canid == "0") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); dc.DrawLine(end_top, a1_top, end_top, size.y); } else if (m_road_canid == "1") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); dc.DrawLine(end_top, a2_top, end_top, size.y); } else if (m_road_canid == "2") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); dc.DrawLine(end_top, a3_top, end_top, size.y); } else if (m_road_canid == "3") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); dc.DrawLine(end_top, a4_top, end_top, size.y); } } @@ -3100,7 +3099,6 @@ void AMSControl::SetClibrationLink(wxString link) void AMSControl::PlayRridLoading(wxString amsid, wxString canid) { AmsCansHash::iterator iter = m_ams_cans_list.begin(); - auto count_item_index = 0; for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow *cans = m_ams_cans_list[i]; @@ -3112,7 +3110,6 @@ void AMSControl::PlayRridLoading(wxString amsid, wxString canid) void AMSControl::StopRridLoading(wxString amsid, wxString canid) { AmsCansHash::iterator iter = m_ams_cans_list.begin(); - auto count_item_index = 0; for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow *cans = m_ams_cans_list[i]; diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index afcee66365..701be1bf34 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -175,7 +175,7 @@ public: void PlayLoading(); void StopLoading(); void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size); - void on_timer(wxTimerEvent &event); + void on_timer(); void OnEnterWindow(wxMouseEvent &evt); void OnLeaveWindow(wxMouseEvent &evt); void OnClick(wxMouseEvent &evt); diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index 55b8e12bcb..fc66d524a5 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -24,7 +24,7 @@ static wxWindow *GetScrollParent(wxWindow *pWindow) wxWindow *pWin = pWindow; while (pWin->GetParent()) { auto pWin2 = pWin->GetParent(); - if (auto top = dynamic_cast(pWin2)) + if (dynamic_cast(pWin2)) return dynamic_cast(pWin); pWin = pWin2; } diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index 222362e917..e7430037d4 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -112,7 +112,7 @@ void Fan::render(wxDC& dc) void Fan::doRender(wxDC& dc) { - auto rpm = wxT("rpm"); + // auto rpm = wxT("rpm"); wxSize size = GetSize(); dc.DrawBitmap(m_bitmap_bk.bmp(), wxPoint(0,0)); diff --git a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp index af48b6d27a..d30f94976d 100644 --- a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp @@ -108,7 +108,6 @@ void ImageSwitchButton::render(wxDC& dc) wxSize size = GetSize(); wxSize szIcon; - wxSize szContent = textSize; ScalableBitmap &icon = GetValue() ? m_on : m_off; int content_height = icon.GetBmpHeight() + textSize.y + m_padding; @@ -268,7 +267,6 @@ void FanSwitchButton::render(wxDC& dc) wxSize size = GetSize(); wxSize szIcon; - wxSize szContent = textSize; ScalableBitmap& icon = GetValue() ? m_on : m_off; //int content_height = icon.GetBmpHeight() + textSize.y + m_padding; diff --git a/src/slic3r/GUI/Widgets/RoundedRectangle.cpp b/src/slic3r/GUI/Widgets/RoundedRectangle.cpp index 07f2aa0b30..f86f144ddc 100644 --- a/src/slic3r/GUI/Widgets/RoundedRectangle.cpp +++ b/src/slic3r/GUI/Widgets/RoundedRectangle.cpp @@ -1,5 +1,4 @@ #include "RoundedRectangle.hpp" -#include "../wxExtensions.hpp" #include #include diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp index 5c8b91a0c7..cee447769e 100644 --- a/src/slic3r/GUI/Widgets/SpinInput.cpp +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -205,8 +205,6 @@ void SpinInput::messureSize() if (size.y < h) { size.y = h; } - wxSize minSize = size; - minSize.x = GetMinWidth(); StaticBox::SetSize(size); SetMinSize(size); wxSize btnSize = {14, (size.y - 4) / 2}; diff --git a/src/slic3r/GUI/Widgets/StepCtrl.cpp b/src/slic3r/GUI/Widgets/StepCtrl.cpp index 73a3e80dd3..cdd25ea1f0 100644 --- a/src/slic3r/GUI/Widgets/StepCtrl.cpp +++ b/src/slic3r/GUI/Widgets/StepCtrl.cpp @@ -322,7 +322,6 @@ void StepIndicator::doRender(wxDC &dc) dc.DrawEllipse(circleX - radius, circleY - radius, radius * 2, radius * 2); // Draw content ( icon or text ) in circle if (disabled) { - wxSize sz = bmp_ok.GetBmpSize(); dc.DrawBitmap(bmp_ok.bmp(), circleX - radius, circleY - radius); } else { dc.SetFont(font_tip); diff --git a/src/slic3r/GUI/Widgets/TempInput.cpp b/src/slic3r/GUI/Widgets/TempInput.cpp index f581f73bf1..6ae82776de 100644 --- a/src/slic3r/GUI/Widgets/TempInput.cpp +++ b/src/slic3r/GUI/Widgets/TempInput.cpp @@ -412,7 +412,6 @@ void TempInput::render(wxDC &dc) /*if (!text.IsEmpty()) { }*/ - wxSize textSize = text_ctrl->GetSize(); if (align_right) { if (pt.x + labelSize.x > size.x) text = wxControl::Ellipsize(text, dc, wxELLIPSIZE_END, size.x - pt.x); pt.y = (size.y - labelSize.y) / 2; diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index 11f431c308..2bbe519c46 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -373,7 +373,7 @@ bool WebView::RunScript(wxWebView *webView, wxString const &javascript) }, NULL); return true; #endif - } catch (std::exception &e) { + } catch (std::exception&) { return false; } } diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 78662c1f3a..e965c803ff 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -3,7 +3,6 @@ #include "libslic3r/FlushVolCalc.hpp" #include "WipeTowerDialog.hpp" #include "BitmapCache.hpp" -#include "GUI.hpp" #include "I18N.hpp" #include "GUI_App.hpp" #include "MsgDialog.hpp" @@ -735,9 +734,6 @@ void WipingPanel::update_warning_texts() static const wxColour g_warning_color = *wxRED; static const wxColour g_normal_color = *wxBLACK; - wxString multi_str = m_flush_multiplier_ebox->GetValue(); - float multiplier = wxAtof(multi_str); - bool has_exception_flush = false; for (int i = 0; i < edit_boxes.size(); i++) { auto& box_vec = edit_boxes[i]; diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index b542723e15..65ed46ba42 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -491,7 +491,6 @@ wxBitmap* get_default_extruder_color_icon(bool thin_icon/* = false*/) const double em = Slic3r::GUI::wxGetApp().em_unit(); const int icon_width = lround((thin_icon ? 2 : 4.5) * em); const int icon_height = lround(2 * em); - bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); wxClientDC cdc((wxWindow*)Slic3r::GUI::wxGetApp().mainframe); wxMemoryDC dc(&cdc); diff --git a/src/slic3r/Utils/ASCIIFolding.cpp b/src/slic3r/Utils/ASCIIFolding.cpp index 0eb02a5f8c..7e47448067 100644 --- a/src/slic3r/Utils/ASCIIFolding.cpp +++ b/src/slic3r/Utils/ASCIIFolding.cpp @@ -1953,8 +1953,7 @@ std::string fold_utf8_to_ascii(const std::string &src, bool is_convert_for_filen for (wchar_t c : wstr) fold_to_ascii(c, out); if (is_convert_for_filename) { - std::wstring_convert> converter; - auto dstStr = converter.to_bytes(dst); + auto dstStr = boost::locale::conv::utf_to_utf(dst); std::size_t found = dstStr.find_last_of("/\\"); if (found != std::string::npos) { @@ -1964,7 +1963,7 @@ std::string fold_utf8_to_ascii(const std::string &src, bool is_convert_for_filen std::string newFileName = regex_replace(filename, reg, ""); dstStr = dir + "\\" + newFileName; } - dst = converter.from_bytes(dstStr); + return dstStr; } return boost::locale::conv::utf_to_utf(dst.c_str(), dst.c_str() + dst.size()); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index b5f9aaf0ed..88c59075ea 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -519,7 +519,7 @@ bool CalibUtils::calib_flowrate(int pass, const CalibInfo &calib_info, wxString const ConfigOptionFloats *nozzle_diameter_config = printer_config.option("nozzle_diameter"); assert(nozzle_diameter_config->values.size() > 0); float nozzle_diameter = nozzle_diameter_config->values[0]; - float xyScale = nozzle_diameter / 0.6; + // float xyScale = nozzle_diameter / 0.6; // scale z to have 7 layers double first_layer_height = print_config.option("initial_layer_print_height")->value; double layer_height = nozzle_diameter / 2.0; // prefer 0.2 layer height for 0.4 nozzle @@ -1067,7 +1067,6 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f { GLVolumeCollection glvolume_collection; std::vector colors_out(1); - unsigned char rgb_color[4] = {255, 255, 255, 255}; ColorRGBA new_color {1.0f, 1.0f, 1.0f, 1.0f}; colors_out.push_back(new_color); @@ -1080,9 +1079,9 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f const ModelObject &model_object = *model->objects[obj_idx]; for (int volume_idx = 0; volume_idx < (int)model_object.volumes.size(); ++ volume_idx) { - const ModelVolume &model_volume = *model_object.volumes[volume_idx]; + // const ModelVolume &model_volume = *model_object.volumes[volume_idx]; for (int instance_idx = 0; instance_idx < (int)model_object.instances.size(); ++ instance_idx) { - const ModelInstance &model_instance = *model_object.instances[instance_idx]; + // const ModelInstance &model_instance = *model_object.instances[instance_idx]; glvolume_collection.load_object_volume(&model_object, obj_idx, volume_idx, instance_idx, "volume", true, false, true); glvolume_collection.volumes.back()->set_render_color(new_color); glvolume_collection.volumes.back()->set_color(new_color); @@ -1128,11 +1127,11 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f store_params.strategy = SaveStrategy::Silence | SaveStrategy::WithGcode | SaveStrategy::SplitModel | SaveStrategy::SkipModel; - bool success = Slic3r::store_bbs_3mf(store_params); + Slic3r::store_bbs_3mf(store_params); store_params.strategy = SaveStrategy::Silence | SaveStrategy::SplitModel | SaveStrategy::WithSliceInfo | SaveStrategy::SkipAuxiliary; store_params.path = config_3mf_path.c_str(); - success = Slic3r::store_bbs_3mf(store_params); + Slic3r::store_bbs_3mf(store_params); release_PlateData_list(plate_data_list); return true; diff --git a/src/slic3r/Utils/ESP3D.cpp b/src/slic3r/Utils/ESP3D.cpp index 57b917e3a1..4c035bc1f9 100644 --- a/src/slic3r/Utils/ESP3D.cpp +++ b/src/slic3r/Utils/ESP3D.cpp @@ -1,8 +1,6 @@ #include "ESP3D.hpp" #include -#include -#include #include #include #include @@ -12,13 +10,7 @@ #include #include -#include #include -#include -#include -#include -#include -#include #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" @@ -26,7 +18,6 @@ #include "slic3r/GUI/MsgDialog.hpp" #include "Http.hpp" #include "SerialMessage.hpp" -#include "SerialMessageType.hpp" namespace fs = boost::filesystem; namespace pt = boost::property_tree; diff --git a/src/slic3r/Utils/Obico.cpp b/src/slic3r/Utils/Obico.cpp index 5541d1c683..6486e43114 100644 --- a/src/slic3r/Utils/Obico.cpp +++ b/src/slic3r/Utils/Obico.cpp @@ -10,10 +10,8 @@ #include #include #include -#include #include -#include #include #include "slic3r/GUI/GUI.hpp" @@ -22,8 +20,6 @@ #include "slic3r/GUI/format.hpp" #include "Http.hpp" #include "libslic3r/AppConfig.hpp" -#include "Bonjour.hpp" -#include "slic3r/GUI/BonjourDialog.hpp" namespace fs = boost::filesystem; namespace pt = boost::property_tree; diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index cdd91eb22e..55bb426463 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -52,7 +52,6 @@ using Slic3r::GUI::Config::SnapshotDB; namespace Slic3r { -static const char *INDEX_FILENAME = "index.idx"; static const char *TMP_EXTENSION = ".data"; diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp index eaf90c7349..8e7bd703c3 100644 --- a/src/slic3r/Utils/UndoRedo.cpp +++ b/src/slic3r/Utils/UndoRedo.cpp @@ -1071,7 +1071,7 @@ bool StackImpl::has_redo_snapshot() const // BBS: undo-redo until modify record auto it = std::lower_bound(m_snapshots.begin(), m_snapshots.end(), Snapshot(m_active_snapshot_time)); - for (it; it != m_snapshots.end(); ++it) { + for (; it != m_snapshots.end(); ++it) { if (snapshot_modifies_project(*it)) return true; } @@ -1340,12 +1340,12 @@ bool StackImpl::has_real_change_from(size_t time) const Snapshot(m_active_snapshot_time)); if (it_active == m_snapshots.end()) return true; if (it_active > it_time) { - for (it_time; it_time < it_active; ++it_time) { + for (; it_time < it_active; ++it_time) { if (snapshot_modifies_project(*it_time)) return true; } } else { - for (it_active; it_active < it_time; ++it_active) { + for (; it_active < it_time; ++it_active) { if (snapshot_modifies_project(*it_active)) return true; } From ef9bdb66d0a8b55374a217cda8773bf8d41fd63f Mon Sep 17 00:00:00 2001 From: Handle Date: Mon, 29 Jul 2024 21:05:46 +0800 Subject: [PATCH 069/151] Updated some zh_CN translate. (#6273) * Translated using Weblate (Chinese (Simplified)) Currently translated at 95.0% (3854 of 4054 strings) Translation: Orca Slicer/orcaslicer-main Translate-URL: https://weblate.bysb.net/projects/orca-slicer/orcaslicer-main/zh_Hans/ * Translate (Chinese (Simplified)) updated Currently translated at 95.7% (3882 of 4054 strings) Translation: Orca Slicer/orcaslicer-main Translate-URL: https://weblate.bysb.net/projects/orca-slicer/orcaslicer-main/zh_Hans/ * Update OrcaSlicer_zh_CN.po Removed sth shouldnt in the file --- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 271 ++++++++++++-------- 1 file changed, 167 insertions(+), 104 deletions(-) diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 6c6b4258a8..066f6c30d6 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-30 15:44+0200\n" -"PO-Revision-Date: 2023-04-01 13:21+0800\n" -"Last-Translator: SoftFever \n" +"PO-Revision-Date: 2024-07-28 07:12+0000\n" +"Last-Translator: Handle \n" "Language-Team: \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" @@ -355,6 +355,8 @@ msgid "" "Click to flip the cut plane\n" "Drag to move the cut plane" msgstr "" +"单击以翻转剖切面\n" +"拖动以移动剖切面" msgid "" "Click to flip the cut plane\n" @@ -372,7 +374,7 @@ msgid "Mode" msgstr "模式" msgid "Change cut mode" -msgstr "" +msgstr "更改切割模式" msgid "Tolerance" msgstr "容差" @@ -381,7 +383,7 @@ msgid "Drag" msgstr "拖拽" msgid "Draw cut line" -msgstr "" +msgstr "绘制切线" msgid "Left click" msgstr "左击" @@ -423,7 +425,7 @@ msgid "Bulge proportion related to radius" msgstr "" msgid "Space" -msgstr "空格键" +msgstr "间隔" msgid "Space proportion related to radius" msgstr "" @@ -441,14 +443,14 @@ msgid "Flip cut plane" msgstr "翻转剖切面" msgid "Groove change" -msgstr "" +msgstr "槽变化" msgid "Reset" msgstr "重置" #. TRN: This is an entry in the Undo/Redo stack. The whole line will be 'Edited: (name of whatever was edited)'. msgid "Edited" -msgstr "" +msgstr "已编辑" msgid "Cut position" msgstr "切割位置" @@ -498,12 +500,12 @@ msgstr "检测到无效连接件" #, c-format, boost-format msgid "%1$d connector is out of cut contour" msgid_plural "%1$d connectors are out of cut contour" -msgstr[0] "" +msgstr[0] "%1$d 个连接件超出了切割轮廓" #, c-format, boost-format msgid "%1$d connector is out of object" msgid_plural "%1$d connectors are out of object" -msgstr[0] "" +msgstr[0] "%1$d 个连接件超出了对象" msgid "Some connectors are overlapped" msgstr "存在连接件相互重叠" @@ -515,7 +517,7 @@ msgid "Cut plane is placed out of object" msgstr "剖切面放置在对象之外" msgid "Cut plane with groove is invalid" -msgstr "" +msgstr "槽所在的切割平面无效" msgid "Connector" msgstr "连接件" @@ -666,11 +668,11 @@ msgstr "文本形状" #. TRN - Title in Undo/Redo stack after rotate with text around emboss axe msgid "Text rotate" -msgstr "" +msgstr "旋转文字" #. TRN - Title in Undo/Redo stack after move with text along emboss axe - From surface msgid "Text move" -msgstr "" +msgstr "移动文字" msgid "Set Mirror" msgstr "设置镜像" @@ -900,44 +902,44 @@ msgid "Revert using of model surface." msgstr "恢复使用模型曲面。" msgid "Revert Transformation per glyph." -msgstr "" +msgstr "恢复按字符变形选项。" msgid "Set global orientation for whole text." -msgstr "" +msgstr "为整段文本使用同一基准。" msgid "Set position and orientation per glyph." -msgstr "" +msgstr "为每个字符独立计算位置和方向。" msgctxt "Alignment" msgid "Left" -msgstr "左面" +msgstr "左对齐" msgctxt "Alignment" msgid "Center" -msgstr "居中" +msgstr "水平居中" msgctxt "Alignment" msgid "Right" -msgstr "右面" +msgstr "右对齐" msgctxt "Alignment" msgid "Top" -msgstr "顶部" +msgstr "顶对齐" msgctxt "Alignment" msgid "Middle" -msgstr "" +msgstr "垂直居中" msgctxt "Alignment" msgid "Bottom" -msgstr "底部" +msgstr "底对齐" msgid "Revert alignment." -msgstr "" +msgstr "还原对齐。" #. TRN EmbossGizmo: font units msgid "points" -msgstr "" +msgstr "点" msgid "Revert gap between characters" msgstr "恢复字间距" @@ -952,13 +954,13 @@ msgid "Distance between lines" msgstr "行间距" msgid "Undo boldness" -msgstr "" +msgstr "撤销粗细调整" msgid "Tiny / Wide glyphs" -msgstr "细小/宽大的字形" +msgstr "细小/粗大的字形" msgid "Undo letter's skew" -msgstr "撤消字母的歪斜" +msgstr "撤消字母的斜体效果" msgid "Italic strength ratio" msgstr "倾斜强度比" @@ -1039,12 +1041,12 @@ msgstr "行间距" #. TRN - Input label. Be short as possible msgid "Boldness" -msgstr "粗细" +msgstr "仿字重" #. TRN - Input label. Be short as possible #. Like Font italic msgid "Skew ratio" -msgstr "斜率" +msgstr "仿斜体" #. TRN - Input label. Be short as possible #. Distance from model surface to be able @@ -1067,11 +1069,11 @@ msgstr "收集" #. TRN - Title in Undo/Redo stack after rotate with SVG around emboss axe msgid "SVG rotate" -msgstr "" +msgstr "旋转SVG图形" #. TRN - Title in Undo/Redo stack after move with SVG along emboss axe - From surface msgid "SVG move" -msgstr "" +msgstr "移动SVG图形" msgid "Enter SVG gizmo" msgstr "" @@ -1087,26 +1089,26 @@ msgstr "SVG矢量图" #, boost-format msgid "Opacity (%1%)" -msgstr "" +msgstr "不透明度 (%1%)" #, boost-format msgid "Color gradient (%1%)" -msgstr "" +msgstr "渐变 (%1%)" msgid "Undefined fill type" -msgstr "" +msgstr "未定义的填充类型" msgid "Linear gradient" -msgstr "" +msgstr "线性渐变" msgid "Radial gradient" -msgstr "" +msgstr "径向渐变" msgid "Open filled path" msgstr "" msgid "Undefined stroke type" -msgstr "" +msgstr "未定义的描边类型" msgid "Path can't be healed from selfintersection and multiple points." msgstr "" @@ -1118,7 +1120,7 @@ msgstr "" #, boost-format msgid "Shape is marked as invisible (%1%)." -msgstr "" +msgstr "形状已被标记为不可见 (%1%)." #. TRN: The first placeholder is shape identifier, the second one is text describing the problem. #, boost-format @@ -1127,25 +1129,25 @@ msgstr "" #, boost-format msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." -msgstr "" +msgstr "形状 (%1%) 的描边太细了(不小于 %2% mm)。" #, boost-format msgid "Stroke of shape (%1%) contains unsupported: %2%." msgstr "" msgid "Face the camera" -msgstr "" +msgstr "面向摄像机" #. TRN - Preview of filename after clear local filepath. msgid "Unknown filename" -msgstr "" +msgstr "未知文件名" #, boost-format msgid "SVG file path is \"%1%\"" -msgstr "" +msgstr "SVG文件路径:\"%1%\"" msgid "Reload SVG file from disk." -msgstr "" +msgstr "从磁盘重新加载SVG文件。" msgid "Change file" msgstr "" @@ -1173,10 +1175,10 @@ msgid "Save as" msgstr "另存为" msgid "Save SVG file" -msgstr "" +msgstr "保存SVG文件" msgid "Save as '.svg' file" -msgstr "" +msgstr "另存为“.svg”文件" msgid "Size in emboss direction." msgstr "" @@ -1406,6 +1408,8 @@ msgid "" "features.\n" "Click Yes to install it now." msgstr "" +"Orca Slicer 依赖 Microsoft WebView2 运行时以运行部分功能。\n" +"请点击 Yes 进行安装。" msgid "WebView2 Runtime" msgstr "WebView2 运行库" @@ -1441,6 +1445,9 @@ msgid "" "Please note, application settings will be lost, but printer profiles will " "not be affected." msgstr "" +"OrcaSlicer 配置文件无法解析,可能已经损坏。\n" +"OrcaSlicer 已尝试重新创建配置文件。\n" +"请注意,您的程序设置会丢失,但打印机配置文件不会受到影响。" msgid "Rebuild" msgstr "重新构建" @@ -1695,6 +1702,13 @@ msgid "" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" +"该模型顶面具有文字浮雕。\n" +"为了获得最佳效果,我们推荐您将“单层墙阈值”设置为 0 " +"以使“仅首层单层墙”效果最佳。\n" +"\n" +"自动调整这些设置?\n" +"是 - 自动调整这些设置\n" +"否 - 不用为我调整这些设置" msgid "Text" msgstr "文字浮雕" @@ -1899,7 +1913,7 @@ msgid "arrange current plate" msgstr "在当前盘执行自动摆放" msgid "Reload All" -msgstr "" +msgstr "重新加载全部" msgid "reload all from disk" msgstr "" @@ -2306,7 +2320,7 @@ msgid "Check the status of current system services" msgstr "请检查当前系统服务状态" msgid "code" -msgstr "" +msgstr "代码" msgid "Failed to connect to cloud service" msgstr "无法连接到云服务" @@ -2477,7 +2491,7 @@ msgid "Orienting" msgstr "自动朝向中..." msgid "Orienting canceled." -msgstr "" +msgstr "自动朝向已取消。" msgid "Filling" msgstr "正在填充" @@ -2654,7 +2668,7 @@ msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero 通用公共许可证,版本 3下授权的" msgid "Orca Slicer is based on PrusaSlicer and BambuStudio" -msgstr "" +msgstr "Orca Slicer 基于 PrusaSlicer 以及 BambuStudio 开发" msgid "Libraries" msgstr "库" @@ -2672,10 +2686,10 @@ msgid "Orca Slicer " msgstr "逆戟鲸切片" msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." -msgstr "" +msgstr "OrcaSlicer基于BambuStudio、PrusaSlicer 以及SuperSlicer开发。" msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." -msgstr "" +msgstr "BambuStudio基于PrusaResearch的PrusaSlicer开发而来。" msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "PrusaSlicer最初是基于Alessandro Ranellucci的Slic3r。" @@ -2713,7 +2727,7 @@ msgstr "最小" #, boost-format msgid "The input value should be greater than %1% and less than %2%" -msgstr "输入的范围在 %1% 和 %2% 之间" +msgstr "输入的范围应当在 %1% 和 %2% 之间" msgid "SN" msgstr "序列号" @@ -2851,7 +2865,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "使用机箱背后挂载的材料打印" msgid "Current Cabin humidity" -msgstr "" +msgstr "当前舱内湿度" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -2912,10 +2926,10 @@ msgstr "" "(目前支持品牌、材料种类、颜色相同的耗材的自动补给)" msgid "DRY" -msgstr "" +msgstr "干燥" msgid "WET" -msgstr "" +msgstr "潮湿" msgid "AMS Settings" msgstr "AMS 设置" @@ -3300,13 +3314,13 @@ msgid "Timelapse" msgstr "延时摄影" msgid "Flow Dynamic Calibration" -msgstr "" +msgstr "动态流量校准" msgid "Send Options" msgstr "发送选项" msgid "Send to" -msgstr "" +msgstr "发送至" msgid "" "printers at the same time.(It depends on how many devices can undergo " @@ -3770,7 +3784,7 @@ msgstr "缺省" #, boost-format msgid "Edit Custom G-code (%1%)" -msgstr "" +msgstr "编辑自定义G-code (%1%)" msgid "Built-in placeholders (Double click item to add to G-code)" msgstr "" @@ -3809,7 +3823,7 @@ msgid "Temperatures" msgstr "温度" msgid "Timestamps" -msgstr "" +msgstr "时间戳" #, boost-format msgid "Specific for %1%" @@ -4302,10 +4316,10 @@ msgid "Enable" msgstr "开启" msgid "Hostname or IP" -msgstr "" +msgstr "主机名或IP地址" msgid "Custom camera source" -msgstr "" +msgstr "自定义摄像机源" msgid "Show \"Live Video\" guide page." msgstr "显示\"直播视频流\"指南" @@ -4498,10 +4512,10 @@ msgid "Load a model" msgstr "加载模型" msgid "Import Zip Archive" -msgstr "" +msgstr "导入 ZIP 压缩文件" msgid "Load models contained within a zip archive" -msgstr "" +msgstr "从 ZIP 压缩文件中导入一个或多个模型" msgid "Import Configs" msgstr "导入预设" @@ -4769,6 +4783,8 @@ msgid "" "Hint: Make sure you have added the corresponding printer before importing " "the configs." msgstr "" +"\n" +"注意:请确保您在导入配置前,已经添加了相应的打印机。" msgid "Import result" msgstr "导入结果" @@ -5122,7 +5138,7 @@ msgid "Camera Setting" msgstr "相机设置" msgid "Switch Camera View" -msgstr "" +msgstr "切换相机视图" msgid "Control" msgstr "控制" @@ -5380,7 +5396,7 @@ msgid "Latest Version: " msgstr "最新版本:" msgid "Not for now" -msgstr "" +msgstr "暂不" msgid "3D Mouse disconnected." msgstr "3D鼠标断连。" @@ -5594,7 +5610,7 @@ msgid "View all object's settings" msgstr "查看所有对象的配置" msgid "Material settings" -msgstr "" +msgstr "材料设置" msgid "Remove current plate (if not last one)" msgstr "移除当前板(如果不是最后一个)" @@ -5612,7 +5628,7 @@ msgid "Lock current plate" msgstr "锁定当前板" msgid "Edit current plate name" -msgstr "" +msgstr "编辑当前盘名" msgid "Customize current plate" msgstr "自定义当前板" @@ -6285,7 +6301,8 @@ msgstr "局域网模式" msgid "" "This stops the transmission of data to Bambu's cloud services. Users who " "don't use BBL machines or use LAN mode only can safely turn on this function." -msgstr "" +msgstr "停止向拓竹科技服务器发送数据。如果您不使用Bambu " +"Lab的打印机或仅使用局域网模式,则可以安全地启用此功能。" msgid "Enable network plugin" msgstr "启用网络插件" @@ -6303,7 +6320,7 @@ msgid "Units" msgstr "单位" msgid "Allow only one OrcaSlicer instance" -msgstr "" +msgstr "同时仅运行一个 OrcaSlicer 实例" msgid "" "On OSX there is always only one instance of app running by default. However " @@ -6317,28 +6334,32 @@ msgid "" "If this is enabled, when starting OrcaSlicer and another instance of the " "same OrcaSlicer is already running, that instance will be reactivated " "instead." -msgstr "" +msgstr "如果启用,当您在已经启动一个 OrcaSlicer 实例时再次启动 OrcaSlicer ," +"将会激活您已经启动的 OrcaSlicer 实例。" msgid "Home" msgstr "首页" msgid "Default Page" -msgstr "" +msgstr "起始页" msgid "Set the page opened on startup." -msgstr "" +msgstr "设置启动OrcaSlicer时首先显示的页面。" msgid "Touchpad" -msgstr "" +msgstr "触控板" msgid "Camera style" -msgstr "" +msgstr "视角控制模式" msgid "" "Select camera navigation style.\n" "Default: LMB+move for rotation, RMB/MMB+move for panning.\n" "Touchpad: Alt+move for rotation, Shift+move for panning." msgstr "" +"选择摄像机的导航模式。\n" +"缺省:鼠标左键+拖动 旋转,鼠标右键+拖动 平移;\n" +"触控板:Alt+拖动 旋转,Shift+拖动 平移。" msgid "Zoom to mouse position" msgstr "放大到鼠标位置" @@ -6355,10 +6376,10 @@ msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "如果启用,使用自由视角。如果未启用,使用约束视角。" msgid "Reverse mouse zoom" -msgstr "" +msgstr "反转鼠标缩放" msgid "If enabled, reverses the direction of zoom with mouse wheel." -msgstr "" +msgstr "如果启用,使用鼠标滚轮缩放的方向会反转。" msgid "Show splash screen" msgstr "显示启动画面" @@ -6386,15 +6407,15 @@ msgid "If enabled, auto-calculate every time when filament is changed" msgstr "如果启用,会在每一次更换材料时自动计算。" msgid "Remember printer configuration" -msgstr "" +msgstr "记住打印机选项" msgid "" "If enabled, Orca will remember and switch filament/process configuration for " "each printer automatically." -msgstr "" +msgstr "如果启用,Orca会自动记录并切换您不同打印机之间的耗材配置与打印参数。" msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "" +msgstr "多设备管理 (重启Orca后生效)" msgid "" "With this option enabled, you can send a task to multiple devices at the " @@ -6787,22 +6808,22 @@ msgid "Busy" msgstr "忙碌" msgid "Bambu Cool Plate" -msgstr "低温打印热床" +msgstr "低温打印板" msgid "PLA Plate" msgstr "PLA打印板" msgid "Bambu Engineering Plate" -msgstr "工程打印热床" +msgstr "工程材料打印板" msgid "Bambu Smooth PEI Plate" -msgstr "" +msgstr "光面PEI打印板" msgid "High temperature Plate" -msgstr "高温打印热床" +msgstr "高温打印板" msgid "Bambu Textured PEI Plate" -msgstr "" +msgstr "纹理PEI打印板" msgid "Send print job to" msgstr "发送打印任务至" @@ -7750,6 +7771,8 @@ msgid "" "You can discard the preset values you have modified, or choose to transfer " "the modified values to the new project" msgstr "" +"\n" +"您可以放弃已修改的预设值,或者将修改后的值转移到新项目" msgid "Extruders count" msgstr "挤出机数量" @@ -10750,16 +10773,16 @@ msgid "The physical arrangement and components of a printing device" msgstr "打印设备的物理结构和组件" msgid "CoreXY" -msgstr "" +msgstr "CoreXY" msgid "I3" -msgstr "" +msgstr "I3" msgid "Hbot" -msgstr "" +msgstr "Hbot" msgid "Delta" -msgstr "" +msgstr "Delta(三角洲)" msgid "Best object position" msgstr "最佳对象位置" @@ -10812,7 +10835,7 @@ msgid "The printer cost per hour" msgstr "打印机每小时的成本" msgid "money/h" -msgstr "" +msgstr "元/时" msgid "Support control chamber temperature" msgstr "支持仓温控制" @@ -11315,7 +11338,8 @@ msgid "" "The minimum printing speed that the printer will slow down to to attempt to " "maintain the minimum layer time above, when slow down for better layer " "cooling is enabled." -msgstr "" +msgstr "在您启用“降低打印速度 " +"以得到更好的冷却”选项时最小的打印速度,以尝试保持上方设置的最小层时间。" msgid "Nozzle diameter" msgstr "喷嘴直径" @@ -11491,6 +11515,10 @@ msgid "" "argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" +"如果您希望使用自定义脚本来处理输出的 " +"G-code,只需要在此列出这些脚本的绝对路径,使用分号来分割多个脚本。" +"脚本执行的第一个参数将会被设置为 G-code 文件的绝对路径," +"并支持脚本通过全局变量来读取 Orca Slicer 的设置。" msgid "Printer notes" msgstr "打印机注释" @@ -11716,7 +11744,7 @@ msgstr "禁用M73剩余打印时间" msgid "" "Disable generating of the M73: Set remaining print time in the final gcode" -msgstr "" +msgstr "在最终生成的G-code中禁用M73命令:设置剩余打印时间" msgid "Seam position" msgstr "接缝位置" @@ -11938,12 +11966,21 @@ msgid "" "distance from the object. Therefore, if brims are active it may intersect " "with them. To avoid this, increase the skirt distance value.\n" msgstr "" +"打印风挡有助于保护ABS或ASA材料的打印件,避免因气流流动产生变形或从打印床上脱" +"落。通常只有在开放式框架打印机上需要使用它,即没有封箱的打印机。\n" +"\n" +"选项:\n" +"启用 = Skirt和您的打印物体一样高。\n" +"限制 = Skirt高度将由Skirt高度选项指定。\n" +"\n" +"注意:当风挡功能启用时,Skirt将在远离物体自身的Skirt一定距离处打印。因此,如" +"果同时启用了Brims,则可能与Skirt相交。为避免这种情况,请增加Skirt距离值。\n" msgid "Limited" msgstr "限制" msgid "Enabled" -msgstr "打开" +msgstr "启用" msgid "Skirt loops" msgstr "Skirt圈数" @@ -12067,6 +12104,10 @@ msgid "" "printing, where we use M600/PAUSE to trigger the manual filament change " "action." msgstr "" +"启用该选项可以在打印开始时省略自定义更换耗材丝的 " +"G-code。整个打印过程中的工具头指令(如 " +"T0)将会被跳过。这对于手动多材料打印十分有用,其将会使用 M600/PAUSE " +"指令来使您可以进行手动对耗材丝进行更换。" msgid "Purge in prime tower" msgstr "冲刷进擦拭塔" @@ -12078,7 +12119,7 @@ msgid "Enable filament ramming" msgstr "启用耗材尖端成型" msgid "No sparse layers (beta)" -msgstr "" +msgstr "无稀疏层 (实验)" msgid "" "If enabled, the wipe tower will not be printed on layers with no " @@ -12325,6 +12366,11 @@ msgid "" "style will create similar structure to normal support under large flat " "overhangs." msgstr "" +"支撑物的样式和形状。对于普通支撑,将支撑投射到一个规则的网格中,将创建更稳定" +"的支撑(默认),而紧贴的支撑塔将节省材料并减少物体的瑕疵。\n" +"对于树形支撑,苗条树将更激进地合并树枝,并节省大量的材料;粗壮树会产生更大更" +"强壮的支撑结构,但用料更多;而混合树是苗条树和普通支撑的结合,它会在大的平面" +"悬垂下创建与正常支撑类似的结构(默认)。" msgid "Snug" msgstr "紧贴" @@ -12487,6 +12533,9 @@ msgid "" "added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" +"启用该选项以控制打印仓温度,这将会在\"machine_start_gcode" +"\"之前添加一个M191命令。\n" +"G-code命令:M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "机箱温度" @@ -12589,6 +12638,13 @@ msgid "" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." msgstr "" +"喷嘴在回抽时将沿着最后路径移动的距离\n" +"\n" +"根据擦拭操作的距离以及挤出机/耗材丝回抽的速度和长度,可能需要执行额外的回抽动" +"作以收回剩余的丝材。\n" +"\n" +"在下方的擦拭前回抽量设置中输入一个数值,将在擦拭动作之前执行任何超出部分的回" +"抽,否则超出部分的回抽将在擦拭之后执行。" msgid "" "The wiping tower can be used to clean up the residue on the nozzle and " @@ -13812,7 +13868,7 @@ msgid "To k Value" msgstr "结束k值" msgid "Step value" -msgstr "" +msgstr "步进长度" msgid "The nozzle diameter has been synchronized from the printer Settings" msgstr "喷嘴直径已从打印机设置同步" @@ -13937,25 +13993,25 @@ msgid "Temperature calibration" msgstr "温度校准" msgid "PLA" -msgstr "" +msgstr "PLA" msgid "ABS/ASA" -msgstr "" +msgstr "ABS/ASA" msgid "PETG" -msgstr "" +msgstr "PETG" msgid "PCTG" -msgstr "" +msgstr "PCTG" msgid "TPU" -msgstr "" +msgstr "TPU" msgid "PA-CF" -msgstr "" +msgstr "PA-CF" msgid "PET-CF" -msgstr "" +msgstr "PET-CF" msgid "Filament type" msgstr "耗材类型" @@ -14269,6 +14325,8 @@ msgid "" "\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" +"我们将会把预设重命名为“供应商类型名 @ 您选择的打印机”\n" +"如果您希望为更多打印机添加预设,请前往打印机选择页面" msgid "Create Printer/Nozzle" msgstr "创建打印机/喷嘴" @@ -14459,6 +14517,11 @@ msgid "" "page. \n" "Click \"Sync user presets\" to enable the synchronization function." msgstr "" +"\n" +"\n" +"Orca 检测到您没有启用同步用户预设功能,这可能会导致您在设备页面上无法成功设置" +"耗材丝。\n" +"点击“同步用户预设”以启用同步功能。" msgid "Printer Setting" msgstr "打印机设置" @@ -14558,7 +14621,7 @@ msgid "Please select a type you want to export" msgstr "请选择一个你想导出的类型" msgid "Failed to create temporary folder, please try Export Configs again." -msgstr "" +msgstr "创建临时文件夹失败,请尝试重新导出配置文件。" msgid "Edit Filament" msgstr "编辑材料" @@ -14669,16 +14732,16 @@ msgid "Success!" msgstr "成功!" msgid "Are you sure to log out?" -msgstr "" +msgstr "您确定要登出吗?" msgid "Refresh Printers" msgstr "刷新打印机" msgid "View print host webui in Device tab" -msgstr "" +msgstr "在设备标签页中,查看打印机主机的WebUI" msgid "Replace the BambuLab's device tab with print host webui" -msgstr "" +msgstr "使用打印机主机的WebUI替换BambuLab设备页面" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" From cf0a3449b0c7c210cc23fdc6dae3328ab6595edd Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 29 Jul 2024 21:58:08 +0800 Subject: [PATCH 070/151] fix build error --- src/libslic3r/Brim.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index 6bfa2c37e7..089761cd18 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -900,7 +900,7 @@ static ExPolygons outer_inner_brim_area(const Print& print, Polygons holes_object; Polygons holes_support; if (objectWithExtruder.second == extruderNo && brimToWrite.at(object->id()).obj) { - double adhension = getadhesionCoeff(object); + double adhesion = getadhesionCoeff(object); double maxSpeed = Model::findMaxSpeed(object->model_object()); // BBS: brims are generated by volume groups for (const auto& volumeGroup : object->firstLayerObjGroups()) { From 2940ae64b0bc45e31086c846c2219e42f16f6040 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 29 Jul 2024 23:12:47 +0800 Subject: [PATCH 071/151] fix build error --- src/libslic3r/Print.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 3ca8bd020f..c6417e700c 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2044,7 +2044,6 @@ void Print::process(long long *time_cost_with_cache, bool use_cache) //BBS: get the objects' indices when GCodes are generated ToolOrdering tool_ordering; unsigned int initial_extruder_id = (unsigned int)-1; - unsigned int final_extruder_id = (unsigned int)-1; bool has_wipe_tower = false; std::vector print_object_instances_ordering; std::vector::const_iterator print_object_instance_sequential_active; @@ -2752,7 +2751,7 @@ void Print::_make_wipe_tower() for (auto &layer_tools : m_wipe_tower_data.tool_ordering.layer_tools()) { // for all layers if (!layer_tools.has_wipe_tower) continue; - // bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); + bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); wipe_tower.plan_toolchange((float) layer_tools.print_z, (float) layer_tools.wipe_tower_layer_height, current_extruder_id, current_extruder_id, false); for (const auto extruder_id : layer_tools.extruders) { From ce9f2a67c60c7ba4a1cdcf73045110e410fad198 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 29 Jul 2024 23:19:28 +0800 Subject: [PATCH 072/151] fix flatpak --- src/libslic3r/Fill/FillCrossHatch.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/Fill/FillCrossHatch.cpp b/src/libslic3r/Fill/FillCrossHatch.cpp index a6f05b65d5..7b9f96fa78 100644 --- a/src/libslic3r/Fill/FillCrossHatch.cpp +++ b/src/libslic3r/Fill/FillCrossHatch.cpp @@ -1,3 +1,4 @@ +#include "../ClipperUtils.hpp" #include "../ShortestPath.hpp" #include From 5459cb07f9be529495f2325107091efaccc1022e Mon Sep 17 00:00:00 2001 From: legonigel Date: Mon, 29 Jul 2024 09:20:46 -0700 Subject: [PATCH 073/151] Revert "Update bambulab profiles to 01.09.00.18" This reverts commit a09aa1711a5622ffc03c05adc703df23f208dd27. --- resources/profiles/BBL/filament/fdm_filament_abs.json | 2 +- resources/profiles/BBL/filament/fdm_filament_asa.json | 2 +- resources/profiles/BBL/machine/Bambu Lab A1 mini.json | 4 ++-- resources/profiles/BBL/machine/fdm_machine_common.json | 4 +++- .../BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json | 2 +- .../BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json | 2 +- .../BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json | 2 +- .../BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json | 2 +- .../BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json | 2 +- .../profiles/BBL/process/0.08mm High Quality @BBL A1.json | 2 +- .../BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json | 2 +- .../profiles/BBL/process/0.08mm High Quality @BBL A1M.json | 2 +- .../BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json | 2 +- .../profiles/BBL/process/0.08mm High Quality @BBL P1P.json | 2 +- .../BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json | 2 +- .../profiles/BBL/process/0.08mm High Quality @BBL X1C.json | 2 +- .../BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json | 2 +- .../BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json | 2 +- .../BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json | 2 +- .../BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json | 2 +- .../profiles/BBL/process/0.12mm High Quality @BBL A1.json | 2 +- .../profiles/BBL/process/0.12mm High Quality @BBL A1M.json | 2 +- .../profiles/BBL/process/0.12mm High Quality @BBL P1P.json | 2 +- .../profiles/BBL/process/0.12mm High Quality @BBL X1C.json | 2 +- .../profiles/BBL/process/0.16mm High Quality @BBL A1.json | 2 +- .../profiles/BBL/process/0.16mm High Quality @BBL A1M.json | 2 +- .../profiles/BBL/process/0.16mm High Quality @BBL P1P.json | 2 +- .../profiles/BBL/process/0.16mm High Quality @BBL X1C.json | 2 +- resources/profiles/BBL/process/fdm_process_common.json | 2 +- 29 files changed, 32 insertions(+), 30 deletions(-) diff --git a/resources/profiles/BBL/filament/fdm_filament_abs.json b/resources/profiles/BBL/filament/fdm_filament_abs.json index 461dd5e610..74eb871518 100644 --- a/resources/profiles/BBL/filament/fdm_filament_abs.json +++ b/resources/profiles/BBL/filament/fdm_filament_abs.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "activate_air_filtration": [ - "1" + "0" ], "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/filament/fdm_filament_asa.json b/resources/profiles/BBL/filament/fdm_filament_asa.json index ac7a9294c1..a0da767a75 100644 --- a/resources/profiles/BBL/filament/fdm_filament_asa.json +++ b/resources/profiles/BBL/filament/fdm_filament_asa.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "activate_air_filtration": [ - "1" + "0" ], "cool_plate_temp": [ "0" diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json index 26ba6994c7..31896bebf5 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json @@ -2,12 +2,12 @@ "type": "machine_model", "name": "Bambu Lab A1 mini", "nozzle_diameter": "0.4;0.2;0.6;0.8", - "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", "bed_model": "bbl-3dp-A1M.stl", "bed_texture": "bbl-3dp-logo.svg", "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "N1", - "default_materials": "Bambu PLA Matte @BBL A1M;Bambu PLA Basic @BBL A1M;Bambu PLA Silk @BBL A1M;Bambu Support For PLA @BBL A1M;Bambu TPU 95A @BBL A1M;Generic PLA @BBL A1M;Generic PLA High Speed @BBL A1M;Bambu PLA Metal @BBL A1M;Generic PETG @BBL A1M;Bambu PLA Marble @BBL A1M;Bambu PLA-CF @BBL A1M;Bambu PETG-CF @BBL A1M;Bambu PETG HF @BBL A1M" + "url": "http://www.bambulab.com/Parameters/printer_model/Bambu Lab X1.json", + "default_materials": "Bambu PLA Matte @BBL A1M;Bambu PLA Basic @BBL A1M;Bambu PLA Silk @BBL A1M;Bambu Support For PLA @BBL A1M;Bambu PETG Basic @BBL A1M 0.4 nozzle;Bambu TPU 95A @BBL A1M;Generic PLA @BBL A1M;Generic PLA High Speed @BBL A1M;Bambu PLA Metal @BBL A1M;Generic PETG @BBL A1M;Bambu PLA Marble @BBL A1M;Bambu PLA-CF @BBL A1M;Bambu PETG-CF @BBL A1M" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/fdm_machine_common.json b/resources/profiles/BBL/machine/fdm_machine_common.json index c9426f5c62..59c372c15f 100644 --- a/resources/profiles/BBL/machine/fdm_machine_common.json +++ b/resources/profiles/BBL/machine/fdm_machine_common.json @@ -123,5 +123,7 @@ "upward_compatible_machine": [], "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end", - "change_filament_gcode": "" + "change_filament_gcode": "", + "purge_in_prime_tower": "0", + "enable_filament_ramming": "0" } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json index 19c218e4e3..fe4a28ca20 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json @@ -12,7 +12,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json index 15f97d190e..6faf0c5994 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json @@ -11,7 +11,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 mini 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json index da1f6a89c3..5f501034b5 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" ] diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json index 70e54ac6c2..3b06a8db08 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json index 7745977387..6f6bcb9366 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json @@ -12,7 +12,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json index 7d7f7be457..0e81a4944c 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "150", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "150", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json index 2d181eae1b..94e8922f4a 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json @@ -11,7 +11,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 mini 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json index 71e2f43b7d..5726784144 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "150", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "150", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json index 6424eae3c0..a20f5b62b8 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" ] diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json index f135573cf2..09a573a2c3 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "150", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "150", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json index 5b04803ced..ebdca7e8b7 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json index 1c7a15e91b..6772c21195 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "150", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "150", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json index 23393e37b9..330d2650a7 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json @@ -12,7 +12,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json index cb96b785af..8d56afe4a1 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json @@ -12,7 +12,7 @@ "initial_layer_speed": "16", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 mini 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json index f463a9e060..eff310601d 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" ] diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json index 60f8e2686b..9e065b37e6 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json @@ -10,7 +10,7 @@ "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json index 0a1a283141..6123087146 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "180", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "180", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json index dbe1743fbc..8996567139 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "180", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "180", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json index 1acd431c12..4585e25672 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "180", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "180", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json index f2e438994e..7c8599fc9a 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "180", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "180", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json index 5632bdbe26..59cd4239de 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "200", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "200", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json index fe51c4740f..b81470853f 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json @@ -13,7 +13,7 @@ "internal_solid_infill_speed": "200", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "200", "top_surface_speed": "150", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json index a3cd2eb87c..aa06dca1de 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "200", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "200", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json index e5f73eab5b..316fca9956 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json @@ -12,7 +12,7 @@ "internal_solid_infill_speed": "200", "outer_wall_acceleration": "2000", "outer_wall_speed": "60", - "sparse_infill_pattern": "gyroid", + "sparse_infill_pattern": "crosshatch", "sparse_infill_speed": "200", "top_surface_speed": "150", "compatible_printers": [ diff --git a/resources/profiles/BBL/process/fdm_process_common.json b/resources/profiles/BBL/process/fdm_process_common.json index 921718b995..fd909fd1c7 100644 --- a/resources/profiles/BBL/process/fdm_process_common.json +++ b/resources/profiles/BBL/process/fdm_process_common.json @@ -17,7 +17,7 @@ "line_width": "0.45", "infill_direction": "45", "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", + "sparse_infill_pattern": "crosshatch", "initial_layer_line_width": "0.42", "initial_layer_print_height": "0.2", "initial_layer_speed": "20", From a104effd22211690b672c4229325474e2544d1e4 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:21:01 +0900 Subject: [PATCH 074/151] Update translation template --- localization/i18n/OrcaSlicer.pot | 310 +++++++++++++++----- localization/i18n/ko/OrcaSlicer_ko.po | 393 ++++++++++++++++++++------ 2 files changed, 550 insertions(+), 153 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 4eb026e183..db3174b0e4 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-07-30 10:20+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -78,9 +78,6 @@ msgstr "" msgid "On overhangs only" msgstr "" -msgid "Auto support threshold angle: " -msgstr "" - msgid "Circle" msgstr "" @@ -100,6 +97,9 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "" +msgid "Auto support threshold angle: " +msgstr "" + msgid "No auto support" msgstr "" @@ -3857,15 +3857,6 @@ msgstr "" msgid "Total cost" msgstr "" -msgid "up to" -msgstr "" - -msgid "above" -msgstr "" - -msgid "from" -msgstr "" - msgid "Color Scheme" msgstr "" @@ -3929,10 +3920,10 @@ msgstr "" msgid "Cost" msgstr "" -msgid "Color change" +msgid "Print" msgstr "" -msgid "Print" +msgid "Color change" msgstr "" msgid "Printer" @@ -5730,13 +5721,18 @@ msgid "The file does not contain any geometry data." msgstr "" msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." msgstr "" msgid "Object too large" msgstr "" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "" + msgid "Export STL file:" msgstr "" @@ -6078,9 +6074,6 @@ msgstr "" msgid "Language selection" msgstr "" -msgid "Switching application language while some presets are modified." -msgstr "" - msgid "Changing application language" msgstr "" @@ -6255,6 +6248,12 @@ msgid "" "same time and manage multiple devices." msgstr "" +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "" @@ -7136,12 +7135,21 @@ msgstr "" msgid "Tree supports" msgstr "" -msgid "Skirt" +msgid "Multimaterial" msgstr "" msgid "Prime tower" msgstr "" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "" + msgid "Special mode" msgstr "" @@ -7187,6 +7195,9 @@ msgstr "" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7280,9 +7291,6 @@ msgstr "" msgid "Filament end G-code" msgstr "" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "" @@ -7372,12 +7380,30 @@ msgstr "" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "" + msgid "Wipe tower" msgstr "" msgid "Single extruder multimaterial parameters" msgstr "" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "" @@ -7823,10 +7849,7 @@ msgstr "" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "" -msgid "⌘+Shift+G" -msgstr "" - -msgid "Ctrl+Shift+G" +msgid "Shift+G" msgstr "" msgid "Paste from clipboard" @@ -7874,33 +7897,18 @@ msgstr "" msgid "Collapse/Expand the sidebar" msgstr "" -msgid "⌘+Any arrow" +msgid "Any arrow" msgstr "" msgid "Movement in camera space" msgstr "" -msgid "⌥+Left mouse button" -msgstr "" - msgid "Select a part" msgstr "" -msgid "⌘+Left mouse button" -msgstr "" - msgid "Select multiple objects" msgstr "" -msgid "Ctrl+Any arrow" -msgstr "" - -msgid "Alt+Left mouse button" -msgstr "" - -msgid "Ctrl+Left mouse button" -msgstr "" - msgid "Shift+Left mouse button" msgstr "" @@ -8003,24 +8011,12 @@ msgstr "" msgid "Move: press to snap by 1mm" msgstr "" -msgid "⌘+Mouse wheel" -msgstr "" - msgid "Support/Color Painting: adjust pen radius" msgstr "" -msgid "⌥+Mouse wheel" -msgstr "" - msgid "Support/Color Painting: adjust section position" msgstr "" -msgid "Ctrl+Mouse wheel" -msgstr "" - -msgid "Alt+Mouse wheel" -msgstr "" - msgid "Gizmo" msgstr "" @@ -8308,6 +8304,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -8529,8 +8530,9 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "" msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" msgid "" @@ -8539,7 +8541,8 @@ msgid "" msgstr "" msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" msgid "" @@ -9659,6 +9662,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -9812,6 +9895,21 @@ msgid "" "Specify desired number of these moves." msgstr "" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "" @@ -10487,7 +10585,11 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" msgid "Use beam interlocking" @@ -10827,9 +10929,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "" - msgid "Diameter of nozzle" msgstr "" @@ -10909,6 +11008,11 @@ msgid "" "model and save printing time, but make slicing and G-code generating slower" msgstr "" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "" @@ -11485,6 +11589,31 @@ msgstr "" msgid "Temperature variation" msgstr "" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "" @@ -12035,12 +12164,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -12066,9 +12189,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12108,6 +12228,30 @@ msgstr "" msgid "Maximal distance between supports on sparse infill sections." msgstr "" +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "" @@ -12371,6 +12515,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -12413,6 +12565,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -12557,6 +12715,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 81bba4fe87..384e636fbe 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-07-30 10:20+0900\n" "PO-Revision-Date: 2024-05-31 23:33+0900\n" "Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply." "github.com>, crwusiz \n" @@ -79,9 +79,6 @@ msgstr "스마트 채우기 각도" msgid "On overhangs only" msgstr "돌출부에만 칠하기" -msgid "Auto support threshold angle: " -msgstr "자동 지지대 임계값 각도: " - msgid "Circle" msgstr "원" @@ -101,6 +98,9 @@ msgstr "\"%1%\"에서 선택한 영역에만 칠하기 허용" msgid "Highlight faces according to overhang angle." msgstr "돌출부 각도에 따라 면을 강조 표시합니다." +msgid "Auto support threshold angle: " +msgstr "자동 지지대 임계값 각도: " + msgid "No auto support" msgstr "자동 지지대 비활성" @@ -4052,15 +4052,6 @@ msgstr "시간 합계" msgid "Total cost" msgstr "총 비용" -msgid "up to" -msgstr "까지" - -msgid "above" -msgstr "위에" - -msgid "from" -msgstr "부터" - msgid "Color Scheme" msgstr "색 구성표" @@ -4124,12 +4115,12 @@ msgstr "필라멘트 변경 시간" msgid "Cost" msgstr "비용" -msgid "Color change" -msgstr "색 변경" - msgid "Print" msgstr "출력" +msgid "Color change" +msgstr "색 변경" + msgid "Printer" msgstr "프린터" @@ -6008,13 +5999,18 @@ msgid "The file does not contain any geometry data." msgstr "파일에 형상 데이터가 포함되어 있지 않습니다." msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "개체가 너무 큽니다. 자동으로 고온 베드에 맞게 크기를 줄이시겠습니까?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" msgid "Object too large" msgstr "개체가 너무 큼" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "개체가 너무 큽니다. 자동으로 고온 베드에 맞게 크기를 줄이시겠습니까?" + msgid "Export STL file:" msgstr "STL 파일 내보내기:" @@ -6384,9 +6380,6 @@ msgstr "계속하시겠습니까?" msgid "Language selection" msgstr "언어 선택" -msgid "Switching application language while some presets are modified." -msgstr "일부 사전 설정이 수정되는 동안 응용 프로그램 언어를 전환합니다." - msgid "Changing application language" msgstr "응용 프로그램 언어 변경" @@ -6576,6 +6569,12 @@ msgid "" msgstr "" "활성화하면 여러 장치에 동시에 작업을 보내고 여러 장치를 관리할 수 있습니다." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "네트워크" @@ -7537,12 +7536,21 @@ msgstr "지지대 필라멘트" msgid "Tree supports" msgstr "나무 지지대" -msgid "Skirt" -msgstr "스커트" +msgid "Multimaterial" +msgstr "다중 재료" msgid "Prime tower" msgstr "프라임 타워" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "스커트" + msgid "Special mode" msgstr "특수 모드" @@ -7590,6 +7598,9 @@ msgstr "권장 노즐 온도" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "이 필라멘트의 권장 노즐 온도 범위. 0은 설정하지 않음을 의미합니다" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "출력 챔버 온도" @@ -7695,9 +7706,6 @@ msgstr "필라멘트 시작 G코드" msgid "Filament end G-code" msgstr "필라멘트 종료 G코드" -msgid "Multimaterial" -msgstr "다중 재료" - msgid "Wipe tower parameters" msgstr "닦기 타워 매개변수" @@ -7787,12 +7795,30 @@ msgstr "저크 제한" msgid "Single extruder multimaterial setup" msgstr "단일 압출기 다중 재료 설정" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "노즐 직경" + msgid "Wipe tower" msgstr "닦기 타워" msgid "Single extruder multimaterial parameters" msgstr "단일 압출기 다중 재료 매개변수" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "레이어 높이 한도" @@ -8286,11 +8312,8 @@ msgstr "개체 목록" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "STL/STEP/3MF/OBJ/AMF 파일에서 형상 데이터 가져오기" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "클립보드에서 붙여넣기" @@ -8340,33 +8363,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "사이드바 접기/펼치기" -msgid "⌘+Any arrow" -msgstr "⌘+아무 화살표" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "카메라 공간에서 이동" -msgid "⌥+Left mouse button" -msgstr "⌥+마우스 왼쪽 버튼" - msgid "Select a part" msgstr "부품 선택" -msgid "⌘+Left mouse button" -msgstr "⌘+마우스 왼쪽 버튼" - msgid "Select multiple objects" msgstr "여러 개체 선택" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+화살표" - -msgid "Alt+Left mouse button" -msgstr "Alt+마우스 왼쪽 버튼" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+마우스 왼쪽 버튼" - msgid "Shift+Left mouse button" msgstr "Shift+마우스 왼쪽 버튼" @@ -8469,24 +8477,12 @@ msgstr "출력판" msgid "Move: press to snap by 1mm" msgstr "이동: 눌러서 1mm씩 이동" -msgid "⌘+Mouse wheel" -msgstr "⌘+마우스 휠" - msgid "Support/Color Painting: adjust pen radius" msgstr "지지대/색상 칠하기: 펜 반경 조정" -msgid "⌥+Mouse wheel" -msgstr "⌥+마우스 휠" - msgid "Support/Color Painting: adjust section position" msgstr "지지대/색상 칠하기: 단면 위치 조정" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+마우스 휠" - -msgid "Alt+Mouse wheel" -msgstr "Alt+마우스 휠" - msgid "Gizmo" msgstr "도구 상자" @@ -8792,6 +8788,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "개체를 출력할 수 없습니다. 너무 작을 수 있습니다" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9030,11 +9031,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "유기체 지지대에서는 가변 레이어 높이가 지원되지 않습니다." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"다른 노즐 직경과 다른 필라멘트 직경은 허용되지 않습니다.프라임 타워가 활성화" -"되면." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9044,8 +9044,9 @@ msgstr "" "(use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." -msgstr "현재 프라임 타워가 활성화된 상태에서는 누출 방지가 지원되지 않습니다." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." +msgstr "" msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10431,6 +10432,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "프레셔 어드밴스(Klipper)/리니어 어드밴스(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10624,6 +10705,21 @@ msgstr "" "필라멘트는 냉각 튜브 내에서 앞뒤로 움직이면서 냉각됩니다. 원하는 이동 횟수를 " "지정하세요." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "첫 번째 냉각 이동 속도" @@ -11416,8 +11512,12 @@ msgstr "분할된 영역의 최대 너비입니다. 0은 이 기능을 비활성 msgid "Interlocking depth of a segmented region" msgstr "분할된 영역의 연동 깊이" -msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "분할된 영역의 깊이를 연동합니다. 0은 이 기능을 비활성화합니다." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." +msgstr "" msgid "Use beam interlocking" msgstr "인터로킹 빔 사용" @@ -11820,9 +11920,6 @@ msgstr "" "더 나은 레이어 냉각을 위해 속도를 낮추는 경우 위의 최소 레이어 시간을 유지하" "기 위해 프린터가 느려지는 최소 출력 속도입니다." -msgid "Nozzle diameter" -msgstr "노즐 직경" - msgid "Diameter of nozzle" msgstr "노즐 직경" @@ -11917,6 +12014,11 @@ msgstr "" "없습니다. 이는 복잡한 모델의 후퇴 시간을 줄이고 출력 시간을 절약할 수 있지만 " "슬라이싱 및 G코드 생성 속도를 느리게 만듭니다" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "파일 이름 형식" @@ -12619,6 +12721,31 @@ msgstr "기존" msgid "Temperature variation" msgstr "온도 가변" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "시작 G코드" @@ -13257,12 +13384,6 @@ msgstr "" "닦기 타워를 안정화하는 데 사용되는 원뿔 꼭대기의 각도입니다. 각도가 클수록 베" "이스가 넓어집니다." -msgid "Wipe tower purge lines spacing" -msgstr "닦기 타워 청소 선 간격" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "닦기 타워의 청소 선 간격입니다." - msgid "Maximum wipe tower print speed" msgstr "최대 와이프 타워 인쇄 속도" @@ -13303,9 +13424,6 @@ msgstr "" "\n" "와이프 타워 외부 경계의 경우 이 설정에 관계없이 내부 경계 속도가 사용됩니다." -msgid "Wipe tower extruder" -msgstr "닦기 타워 압출기" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13359,6 +13477,30 @@ msgstr "최대 브릿지 거리" msgid "Maximal distance between supports on sparse infill sections." msgstr "드문 채우기 부분의 지지대 사이의 최대 거리." +msgid "Wipe tower purge lines spacing" +msgstr "닦기 타워 청소 선 간격" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "닦기 타워의 청소 선 간격입니다." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y 구멍 보정" @@ -13691,6 +13833,14 @@ msgstr "추가 철회" msgid "Currently planned extra extruder priming after deretraction." msgstr "현재 철회 후 추가 압출기 프라이밍이 계획되어 있습니다." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "현재 압출기" @@ -13735,6 +13885,12 @@ msgstr "압출기를 사용하나요?" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "특정 압출기가 출력에 사용되는지 여부를 나타내는 값 입니다." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "압출기당 부피" @@ -13889,6 +14045,14 @@ msgstr "실제 프린터 이름" msgid "Name of the physical printer used for slicing." msgstr "슬라이싱에 사용되는 실제 프린터의 이름입니다." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "레이어 번호" @@ -16238,6 +16402,73 @@ msgstr "" "ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 " "높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +#~ msgid "up to" +#~ msgstr "까지" + +#~ msgid "above" +#~ msgstr "위에" + +#~ msgid "from" +#~ msgstr "부터" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "일부 사전 설정이 수정되는 동안 응용 프로그램 언어를 전환합니다." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+아무 화살표" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+마우스 왼쪽 버튼" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+마우스 왼쪽 버튼" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+화살표" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+마우스 왼쪽 버튼" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+마우스 왼쪽 버튼" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+마우스 휠" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+마우스 휠" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+마우스 휠" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+마우스 휠" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "다른 노즐 직경과 다른 필라멘트 직경은 허용되지 않습니다.프라임 타워가 활성" +#~ "화되면." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "현재 프라임 타워가 활성화된 상태에서는 누출 방지가 지원되지 않습니다." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "분할된 영역의 깊이를 연동합니다. 0은 이 기능을 비활성화합니다." + +#~ msgid "Wipe tower extruder" +#~ msgstr "닦기 타워 압출기" + #~ msgid "" #~ "File size exceeds the 100MB upload limit. Please upload your file through " #~ "the panel." From cd73399c10c11b4fb3ab95d980c78bf78e35dfdc Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Mon, 15 Jul 2024 15:40:40 +0900 Subject: [PATCH 075/151] Update Korean translation --- localization/i18n/ko/OrcaSlicer_ko.po | 32 ++++++++++++++------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 384e636fbe..61fcb5eb5e 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -9,8 +9,8 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-07-30 10:20+0900\n" "PO-Revision-Date: 2024-05-31 23:33+0900\n" -"Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply." -"github.com>, crwusiz \n" +"Last-Translator: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github." +"com>\n" "Language-Team: \n" "Language: ko_KR\n" "MIME-Version: 1.0\n" @@ -6570,10 +6570,10 @@ msgstr "" "활성화하면 여러 장치에 동시에 작업을 보내고 여러 장치를 관리할 수 있습니다." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "복제 후 플레이트 자동 정렬" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "개체를 복제한 후 플레이트를 자동으로 정렬합니다" msgid "Network" msgstr "네트워크" @@ -7460,8 +7460,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 닦기 타워\"를 추가하는 것이 좋" "습니다\n" @@ -11120,10 +11120,10 @@ msgstr "팬 최대 속도 레이어" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" " "의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 " @@ -12257,12 +12257,14 @@ msgid "Spiral" msgstr "나선형" msgid "Traveling angle" -msgstr "" +msgstr "이동 각도" msgid "" "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " "in Normal Lift" msgstr "" +"경사나 나선형 Z 올리기 유형에 사용할 이동 각도입니다. 90°로 설정할 경우 일반" +"적인 Z 올리기가 적용됩니다" msgid "Only lift Z above" msgstr "Z값 위에서만 올리기" @@ -15137,8 +15139,8 @@ msgstr "" "다시 작성하시겠습니까?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -16893,8 +16895,8 @@ msgstr "" #~ msgstr "드문 레이어 없음(실험적)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" From e556b1731182edc24a9b4381a2bd82e9b17c39a3 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 30 Jul 2024 22:27:56 +0800 Subject: [PATCH 076/151] Fixed an issue that skirt may overlap with stable cone of wipe tower --- src/libslic3r/Print.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index c6417e700c..b663f48976 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2404,14 +2404,24 @@ std::vector Print::first_layer_wipe_tower_corners(bool check_wipe_tower_e double width = m_config.prime_tower_width + 2*m_wipe_tower_data.brim_width; double depth = m_wipe_tower_data.depth + 2*m_wipe_tower_data.brim_width; Vec2d pt0(-m_wipe_tower_data.brim_width, -m_wipe_tower_data.brim_width); - for (Vec2d pt : { - pt0, - Vec2d(pt0.x()+width, pt0.y() ), - Vec2d(pt0.x()+width, pt0.y()+depth), - Vec2d(pt0.x(), pt0.y()+depth) - }) { + + // First the corners. + std::vector pts = { pt0, + Vec2d(pt0.x()+width, pt0.y()), + Vec2d(pt0.x()+width, pt0.y()+depth), + Vec2d(pt0.x(),pt0.y()+depth) + }; + + // Now the stabilization cone. + Vec2d center = (pts[0] + pts[2])/2.; + const auto [cone_R, cone_x_scale] = WipeTower2::get_wipe_tower_cone_base(m_config.prime_tower_width, m_wipe_tower_data.height, m_wipe_tower_data.depth, m_config.wipe_tower_cone_angle); + double r = cone_R + m_wipe_tower_data.brim_width; + for (double alpha = 0.; alpha<2*M_PI; alpha += M_PI/20.) + pts.emplace_back(center + r*Vec2d(std::cos(alpha)/cone_x_scale, std::sin(alpha))); + + for (Vec2d& pt : pts) { pt = Eigen::Rotation2Dd(Geometry::deg2rad(m_config.wipe_tower_rotation_angle.value)) * pt; - // BBS: add partplate logic + //Orca: offset the wipe tower to the plate origin pt += Vec2d(m_config.wipe_tower_x.get_at(m_plate_index) + m_origin(0), m_config.wipe_tower_y.get_at(m_plate_index) + m_origin(1)); corners.emplace_back(Point(scale_(pt.x()), scale_(pt.y()))); } From 65b3e4a222a31aca640338e4b8af66a2fc78efac Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Tue, 30 Jul 2024 22:32:15 +0800 Subject: [PATCH 077/151] Fix access violation when slicing project with print-by-object mode (#5984) Fix issue that models with only one color become multicolor after slicing when print-by-object mode is used. This applys the same fix as 612204b443ca716b9a9936386327b1e45120d06b --- src/libslic3r/GCode/ToolOrdering.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index b117d5a622..03a3c491e9 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -219,10 +219,14 @@ ToolOrdering::ToolOrdering(const PrintObject &object, unsigned int first_extrude // BBS // Reorder the extruders to minimize tool switches. - if (first_extruder == (unsigned int)-1) { - this->reorder_extruders(generate_first_layer_tool_order(object)); + std::vector first_layer_tool_order; + if (first_extruder == (unsigned int) -1) { + first_layer_tool_order = generate_first_layer_tool_order(object); } - else { + + if (!first_layer_tool_order.empty()) { + this->reorder_extruders(first_layer_tool_order); + } else { this->reorder_extruders(first_extruder); } From 449b12e8933ba8f1a83902b4133db84e998c8f14 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:34:41 +0000 Subject: [PATCH 078/151] Fix processes not showing for Flashforge Guider 2s (#5970) * Fix processes not showing for Guider 2s * Fix merge conflicts * Fix process not showing (after updating PR) --- .../machine/Flashforge Guider 2s 0.4 nozzle.json | 10 +++++----- ...0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json | 3 ++- ....16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json | 3 ++- ...20mm Standard @Flashforge Guider 2s 0.4 nozzle.json | 3 ++- .../0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json | 3 ++- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json index 47dc54bb7d..b45d8289b5 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 2s 0.4 nozzle.json @@ -12,15 +12,15 @@ "printer_variant": "0.4", "printable_area": [ "-140x-125", - "140x-125", - "140x125", - "-140x125" + "140x-125", + "140x125", + "-140x125" ], "printable_height": "300", "extruder_offset": [ "-20", "10" ], "extruder_clearance_height_to_lid": "70", - "extruder_clearance_height_to_rod": "23", - "extruder_clearance_radius": "40", + "extruder_clearance_height_to_rod": "23", + "extruder_clearance_radius": "40", "use_relative_e_distances": "0", "auxiliary_fan": "1", "machine_max_acceleration_e": [ "200", "200" ], diff --git a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json index 548172068a..23d6db2099 100644 --- a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json @@ -2,8 +2,9 @@ "type": "process", "name": "0.12mm Detail @Flashforge Guider 2s 0.4 nozzle", "setting_id": "GS001", + "from": "system", + "inherits": "fdm_process_flashforge_common", "instantiation": "true", - "inherits": "fdm_process_flashforge_0.20", "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "80%", diff --git a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json index 61a5bff705..2ee3d79d14 100644 --- a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json @@ -2,8 +2,9 @@ "type": "process", "name": "0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle", "setting_id": "GS002", + "from": "system", + "inherits": "fdm_process_flashforge_common", "instantiation": "true", - "inherits": "fdm_process_flashforge_0.20", "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "25", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json index d9dc079e09..6783df37eb 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json @@ -2,8 +2,9 @@ "type": "process", "name": "0.20mm Standard @Flashforge Guider 2s 0.4 nozzle", "setting_id": "GS003", + "from": "system", + "inherits": "fdm_process_flashforge_common", "instantiation": "true", - "inherits": "fdm_process_flashforge_0.20", "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50%", diff --git a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json index d50de09e28..bb8196f007 100644 --- a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json @@ -2,8 +2,9 @@ "type": "process", "name": "0.30mm Draft @Flashforge Guider 2s 0.4 nozzle", "setting_id": "GS004", + "from": "system", + "inherits": "fdm_process_flashforge_common", "instantiation": "true", - "inherits": "fdm_process_flashforge_0.30", "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50%", From 05278f53c31069cad88614225794093634097164 Mon Sep 17 00:00:00 2001 From: Pim Date: Wed, 31 Jul 2024 13:51:07 +0200 Subject: [PATCH 079/151] feat: add stealth mode select step to setup wizard (#6104) feat: add stealth mode select to setup wizard feat: enable stealth mode until user finishes setup wizard Co-authored-by: SoftFever --- resources/web/data/text.js | 3 ++ resources/web/guide/21/index.html | 2 +- resources/web/guide/22/22.js | 4 +-- resources/web/guide/4orca/4orca.css | 33 +++++++++++++++++++ resources/web/guide/4orca/4orca.js | 48 ++++++++++++++++++++++++++++ resources/web/guide/4orca/index.html | 38 ++++++++++++++++++++++ src/libslic3r/AppConfig.cpp | 9 ++++++ src/libslic3r/AppConfig.hpp | 5 ++- src/slic3r/GUI/GUI_App.cpp | 7 ++-- src/slic3r/GUI/WebGuideDialog.cpp | 14 ++++++++ src/slic3r/GUI/WebGuideDialog.hpp | 1 + 11 files changed, 157 insertions(+), 7 deletions(-) create mode 100644 resources/web/guide/4orca/4orca.css create mode 100644 resources/web/guide/4orca/4orca.js create mode 100644 resources/web/guide/4orca/index.html diff --git a/resources/web/data/text.js b/resources/web/data/text.js index a7577abc56..40e20fbbbc 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -107,6 +107,9 @@ var LangText = { t113: "You may change your choice in preference anytime.", orca1: "Edit Project Info", orca2: "no model information", + orca3: "Stealth Mode", + orca4: "This stops the transmission of data to Bambu's cloud services. Users who don't use BBL machines or use LAN mode only can safely turn on this function.", + orca5: "Enable Stealth Mode.", }, ca_ES: { t1: "Benvingut a Orca Slicer", diff --git a/resources/web/guide/21/index.html b/resources/web/guide/21/index.html index a5163568bd..3e19309d19 100644 --- a/resources/web/guide/21/index.html +++ b/resources/web/guide/21/index.html @@ -100,7 +100,7 @@
-
Back
+
Back
Next
diff --git a/resources/web/guide/22/22.js b/resources/web/guide/22/22.js index a335e75734..ff284ed91a 100644 --- a/resources/web/guide/22/22.js +++ b/resources/web/guide/22/22.js @@ -562,7 +562,7 @@ function ReturnPreviewPage() let nMode=m_ProfileItem["model"].length; if( nMode==1) - document.location.href="../3/index.html"; + document.location.href="../1/index.html"; else document.location.href="../21/index.html"; } @@ -573,7 +573,7 @@ function GotoNetPluginPage() let bRet=ResponseFilamentResult(); if(bRet) - window.location.href="../5/index.html"; + window.location.href="../4orca/index.html"; } function FinishGuide() diff --git a/resources/web/guide/4orca/4orca.css b/resources/web/guide/4orca/4orca.css new file mode 100644 index 0000000000..f12a7860fe --- /dev/null +++ b/resources/web/guide/4orca/4orca.css @@ -0,0 +1,33 @@ + +#Content +{ + padding:0% 15%; +} + +#FeatureText +{ + line-height: 30px; + margin-top: 10mm; +} + + +#CheckArea +{ + margin-top:10mm; + line-height: 30px; +} + +#StealthMode +{ + width: 30px; +} + +#RestartText +{ + padding-left:30px; +} + +.TextPoint +{ + font-size:14px; +} \ No newline at end of file diff --git a/resources/web/guide/4orca/4orca.js b/resources/web/guide/4orca/4orca.js new file mode 100644 index 0000000000..1dbb86abd2 --- /dev/null +++ b/resources/web/guide/4orca/4orca.js @@ -0,0 +1,48 @@ + +function OnInit() +{ + TranslatePage(); + + SendStealthModeCheck(); +} + + + +function SendStealthModeCheck() +{ + let nVal="no"; + if( $('#StealthMode').is(':checked') ) + nVal="yes"; + + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="save_stealth_mode"; + tSend['data']={}; + tSend['data']['action']=nVal; + + SendWXMessage( JSON.stringify(tSend) ); + + return true; +} + +function GotoNetPluginPage() +{ + let bRet=SendStealthModeCheck(); + + if(bRet) + window.location.href="../5/index.html"; +} + + +function FinishGuide() +{ + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="user_guide_finish"; + tSend['data']={}; + tSend['data']['action']="finish"; + + SendWXMessage( JSON.stringify(tSend) ); + + //window.location.href="../6/index.html"; +} diff --git a/resources/web/guide/4orca/index.html b/resources/web/guide/4orca/index.html new file mode 100644 index 0000000000..975123eabc --- /dev/null +++ b/resources/web/guide/4orca/index.html @@ -0,0 +1,38 @@ + + + + + +引导_P1 + + + + + + + + + + + +
+
Stealth Mode
+
+
+
+
Back
+
Next
+
+ + diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 7ab0ad2329..054a09c4f7 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -81,6 +81,15 @@ std::string AppConfig::get_hms_host() // #endif } +bool AppConfig::get_stealth_mode() +{ + // always return true when user did not finish setup wizard yet + if (!get_bool("firstguide","finish")) { + return true; + } + return get_bool("stealth_mode"); +} + void AppConfig::reset() { m_storage.clear(); diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index f58cfedb65..cf95b8ec8d 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -45,6 +45,7 @@ public: std::string get_language_code(); std::string get_hms_host(); + bool get_stealth_mode(); // Clear and reset to defaults. void reset(); @@ -80,8 +81,10 @@ public: { std::string value; this->get(section, key, value); return value; } std::string get(const std::string &key) const { std::string value; this->get("app", key, value); return value; } + bool get_bool(const std::string §ion, const std::string &key) const + { return this->get(section, key) == "true" || this->get(key) == "1"; } bool get_bool(const std::string &key) const - { return this->get(key) == "true" || this->get(key) == "1"; } + { return this->get_bool("app", key); } void set(const std::string §ion, const std::string &key, const std::string &value) { #ifndef NDEBUG diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 74c268c6a2..81e3c21fb2 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -940,7 +940,7 @@ void GUI_App::post_init() } #endif - if (app_config->get("stealth_mode") == "false") + if (!app_config->get_stealth_mode()) hms_query = new HMSQuery(); m_show_gcode_window = app_config->get_bool("show_gcode_window"); @@ -971,7 +971,7 @@ void GUI_App::post_init() this->preset_updater->sync(http_url, language, network_ver, sys_preset ? preset_bundle : nullptr); this->check_new_version_sf(); - if (is_user_login() && app_config->get("stealth_mode") == "false") { + if (is_user_login() && !app_config->get_stealth_mode()) { // this->check_privacy_version(0); request_user_handle(0); } @@ -4141,6 +4141,7 @@ void GUI_App::check_update(bool show_tips, int by_user) void GUI_App::check_new_version(bool show_tips, int by_user) { + return; // orca: not used, see check_new_version_sf std::string platform = "windows"; #ifdef __WINDOWS__ @@ -4674,7 +4675,7 @@ void GUI_App::sync_preset(Preset* preset) void GUI_App::start_sync_user_preset(bool with_progress_dlg) { - if (app_config->get("stealth_mode") == "true") + if (app_config->get_stealth_mode()) return; if (!m_agent || !m_agent->is_user_login()) return; diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index ecc3d533c5..94913348e1 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -109,6 +109,7 @@ GuideFrame::GuideFrame(GUI_App *pGUI, long style) // INI m_SectionName = "firstguide"; PrivacyUse = false; + StealthMode = false; InstallNetplugin = false; m_MainPtr = pGUI; @@ -486,6 +487,15 @@ void GuideFrame::OnScriptMessage(wxWebViewEvent &evt) else InstallNetplugin = false; } + else if (strCmd == "save_stealth_mode") { + wxString strAction = j["data"]["action"]; + + if (strAction == "yes") { + StealthMode = true; + } else { + StealthMode = false; + } + } } catch (std::exception &e) { // wxMessageBox(e.what(), "json Exception", MB_OK); BOOST_LOG_TRIVIAL(trace) << "GuideFrame::OnScriptMessage;Error:" << e.what(); @@ -616,6 +626,7 @@ int GuideFrame::SaveProfile() // m_MainPtr->app_config->set(std::string(m_SectionName.mb_str()), "privacyuse", "0"); m_MainPtr->app_config->set("region", m_Region); + m_MainPtr->app_config->set_bool("stealth_mode", StealthMode); //finish m_MainPtr->app_config->set(std::string(m_SectionName.mb_str()), "finish", "1"); @@ -1222,6 +1233,9 @@ int GuideFrame::LoadProfile() m_ProfileJson["network_plugin_install"] = wxGetApp().app_config->get("app","installed_networking"); m_ProfileJson["network_plugin_compability"] = wxGetApp().is_compatibility_version() ? "1" : "0"; network_plugin_ready = wxGetApp().is_compatibility_version(); + + StealthMode = wxGetApp().app_config->get_bool("app","stealth_mode"); + m_ProfileJson["stealth_mode"] = StealthMode; } catch (std::exception &e) { //wxLogMessage("GUIDE: load_profile_error %s ", e.what()); diff --git a/src/slic3r/GUI/WebGuideDialog.hpp b/src/slic3r/GUI/WebGuideDialog.hpp index ff66f5cb34..4fd495fe6d 100644 --- a/src/slic3r/GUI/WebGuideDialog.hpp +++ b/src/slic3r/GUI/WebGuideDialog.hpp @@ -109,6 +109,7 @@ private: // User Config bool PrivacyUse; + bool StealthMode; std::string m_Region; bool InstallNetplugin; From 8c6bf0930ebc38af4d901eb535d1e4cca36cec26 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 31 Jul 2024 20:43:13 +0800 Subject: [PATCH 080/151] fix flatpak build error --- src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp index ebeca40cf3..3043e091b5 100644 --- a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp @@ -1,3 +1,4 @@ +#include "../ClipperUtils.hpp" #include "../Layer.hpp" #include "RetractWhenCrossingPerimeters.hpp" From ecfd1909b4617f70689d1e155fbe70e601bdf5d0 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Thu, 1 Aug 2024 17:38:08 +0300 Subject: [PATCH 081/151] Improve overhang slowdown granularity & line segmentation handling (#5996) * Increase granularity of extrusion move splitting for small line segments ending in an overhang * Parameter tweak * Increase granularity of estimation for curled perimeters * Adjust parameters following experimentation with overhang prints * Updated overhang segmentation logic * Cleanup code comments --- src/libslic3r/GCode.cpp | 11 +++-- src/libslic3r/GCode/ExtrusionProcessor.hpp | 52 ++++++++++++++++++---- 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 192ecc892f..89357db28f 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -5269,8 +5269,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, ref_speed, speed, m_config.slowdown_for_curled_perimeters); } variable_speed = std::any_of(new_points.begin(), new_points.end(), - [speed](const ProcessedPoint &p) { return fabs(double(p.speed) - speed) > EPSILON; }); - + [speed](const ProcessedPoint &p) { return fabs(double(p.speed) - speed) > 1; }); // Ignore small speed variations (under 1mm/sec) } double F = speed * 60; // convert mm/sec to mm/min @@ -5727,10 +5726,14 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } }// ORCA: End of adaptive PA code segment - - if (last_set_speed != new_speed) { + // Ignore small speed variations - emit speed change if the delta between current and new is greater than 60mm/min / 1mm/sec + // Reset speed to F if delta to F is less than 1mm/sec + if ((std::abs(last_set_speed - new_speed) > 60)) { gcode += m_writer.set_speed(new_speed, "", comment); last_set_speed = new_speed; + } else if ((std::abs(F - new_speed) <= 60)) { + gcode += m_writer.set_speed(F, "", comment); + last_set_speed = F; } auto dE = e_per_mm * line_length; if (!this->on_first_layer() && m_small_area_infill_flow_compensator diff --git a/src/libslic3r/GCode/ExtrusionProcessor.hpp b/src/libslic3r/GCode/ExtrusionProcessor.hpp index c6c1c102de..64f7a718a2 100644 --- a/src/libslic3r/GCode/ExtrusionProcessor.hpp +++ b/src/libslic3r/GCode/ExtrusionProcessor.hpp @@ -38,7 +38,8 @@ template estimate_points_properties(const POINTS &input_points, const AABBTreeLines::LinesDistancer &unscaled_prev_layer, float flow_width, - float max_line_length = -1.0f) + float max_line_length = -1.0f, + float min_distance = -1.0f) { bool looped = input_points.front() == input_points.back(); std::function get_prev_index = [](size_t idx, size_t count) { @@ -118,7 +119,13 @@ std::vector estimate_points_properties(const POINTS if ((curr.distance > -boundary_offset && curr.distance < boundary_offset + 2.0f) || (next.distance > -boundary_offset && next.distance < boundary_offset + 2.0f)) { double line_len = (next.position - curr.position).norm(); - if (line_len > 4.0f) { + + // ORCA: Segment path to smaller lines by adding additional points only if the path has an overhang that + // will trigger a slowdown and the path is also reasonably large, i.e. 2mm in length or more + // If there is no overhang in the start/end point, dont segment it. + // Ignore this check if the control of segmentation for overhangs is disabled (min_distance=-1) + if ((min_distance > 0 && ((std::abs(curr.distance) > min_distance) || (std::abs(next.distance) > min_distance)) && line_len >= 2.f) || + (min_distance <= 0 && line_len > 4.0f)) { double a0 = std::clamp((curr.distance + 3 * boundary_offset) / line_len, 0.0, 1.0); double a1 = std::clamp(1.0f - (next.distance + 3 * boundary_offset) / line_len, 0.0, 1.0); double t0 = std::min(a0, a1); @@ -131,7 +138,11 @@ std::vector estimate_points_properties(const POINTS ExtendedPoint new_p{}; new_p.position = p0; new_p.distance = float(p0_dist + boundary_offset); - new_points.push_back(new_p); + if( (std::abs(p0_dist) > min_distance) || (min_distance<=0)){ + // ORCA: only create a new point in the path if the new point overhang distance will be used to generate a speed change + // or if this option is disabled (min_distance<=0) + new_points.push_back(new_p); + } } if (t1 > 0.0) { auto p1 = curr.position + t1 * (next.position - curr.position); @@ -140,7 +151,11 @@ std::vector estimate_points_properties(const POINTS ExtendedPoint new_p{}; new_p.position = p1; new_p.distance = float(p1_dist + boundary_offset); - new_points.push_back(new_p); + if( (std::abs(p1_dist) > min_distance) || (min_distance<=0)){ + // ORCA: only create a new point in the path if the new point overhang distance will be used to generate a speed change + // or if this option is disabled (min_distance<=0) + new_points.push_back(new_p); + } } } } @@ -300,9 +315,30 @@ public: last_section = section; } } + + // Orca: Find the smallest overhang distance where speed adjustments begin + float smallest_distance_with_lower_speed = std::numeric_limits::infinity(); // Initialize to a large value + bool found = false; + for (const auto& section : speed_sections) { + if (section.second <= original_speed) { + if (section.first < smallest_distance_with_lower_speed) { + smallest_distance_with_lower_speed = section.first; + found = true; + } + } + } - std::vector extended_points = - estimate_points_properties(path.polyline.points, prev_layer_boundaries[current_object], path.width); + // If a meaningful (i.e. needing slowdown) overhang distance was not found, then we shouldn't split the lines + if (!found) + smallest_distance_with_lower_speed=-1.f; + + // Orca: Pass to the point properties estimator the smallest ovehang distance that triggers a slowdown (smallest_distance_with_lower_speed) + std::vector extended_points = estimate_points_properties + (path.polyline.points, + prev_layer_boundaries[current_object], + path.width, + -1, + smallest_distance_with_lower_speed); const auto width_inv = 1.0f / path.width; std::vector processed_points; processed_points.reserve(extended_points.size()); @@ -323,7 +359,7 @@ public: // The whole segment gets slower unnecesarily. For these long lines, we do additional check whether it is worth slowing down. // NOTE that this is still quite rough approximation, e.g. we are still checking lines only near the middle point // TODO maybe split the lines into smaller segments before running this alg? but can be demanding, and GCode will be huge - if (len > 8) { + if (len > 2) { Vec2d dir = Vec2d(next.position - curr.position) / len; Vec2d right = Vec2d(-dir.y(), dir.x()); @@ -376,7 +412,7 @@ public: t = std::clamp(t, 0.0f, 1.0f); final_speed = (1.0f - t) * speed_sections[section_idx].second + t * speed_sections[section_idx + 1].second; } - return final_speed; + return round(final_speed); }; float extrusion_speed = std::min(calculate_speed(curr.distance), calculate_speed(next.distance)); From b010d7286ea8dd15c845640f5ba7054daaf807ed Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 2 Aug 2024 21:40:03 +0800 Subject: [PATCH 082/151] write correct extruder_colour to gcode fixes #6288 --- src/libslic3r/GCode.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 89357db28f..fc29347f9a 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4365,6 +4365,8 @@ void GCode::append_full_config(const Print &print, std::string &str) if (key == "wipe_tower_x" || key == "wipe_tower_y") { ss << std::fixed << std::setprecision(3) << "; " << key << " = " << dynamic_cast(cfg.option(key))->get_at(print.get_plate_index()) << "\n"; } + if(key == "extruder_colour") + ss << "; " << key << " = " << cfg.opt_serialize("filament_colour") << "\n"; else ss << "; " << key << " = " << cfg.opt_serialize(key) << "\n"; } From de76e36e3161cf1fdc1d37bf12ead6aca84c4d0d Mon Sep 17 00:00:00 2001 From: Duan Gauche Date: Fri, 2 Aug 2024 09:48:11 -0500 Subject: [PATCH 083/151] added FilX as a Filament vendor (#6216) * added FilX * Fixed Typo * Merge branch 'main' into FilX * Merge branch 'main' into FilX --- scripts/generate_presets_vendors.py | 1 + src/slic3r/GUI/CreatePresetsDialog.cpp | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/scripts/generate_presets_vendors.py b/scripts/generate_presets_vendors.py index e5c3c837d5..2dd53db53a 100644 --- a/scripts/generate_presets_vendors.py +++ b/scripts/generate_presets_vendors.py @@ -94,6 +94,7 @@ filament_vendors = [ 'Formfutura', 'Francofil', 'FilamentOne', + 'Fil X', 'GEEETECH', 'Giantarm', 'Gizmo Dorks', diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index cebe58fc0e..0166238cab 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -47,17 +47,17 @@ static const std::vector filament_vendors = "Duramic", "ELEGOO", "Eryone", "Essentium", "eSUN", "Extrudr", "Fiberforce", "Fiberlogy", "FilaCube", "Filamentive", "Fillamentum", "FLASHFORGE", "Formfutura", "Francofil", "FilamentOne", - "GEEETECH", "Giantarm", "Gizmo Dorks", "GreenGate3D", "HATCHBOX", - "Hello3D", "IC3D", "IEMAI", "IIID Max", "INLAND", - "iProspect", "iSANMATE", "Justmaker", "Keene Village Plastics", "Kexcelled", - "MakerBot", "MatterHackers", "MIKA3D", "NinjaTek", "Nobufil", - "Novamaker", "OVERTURE", "OVVNYXE", "Polymaker", "Priline", - "Printed Solid", "Protopasta", "Prusament", "Push Plastic", "R3D", - "Re-pet3D", "Recreus", "Regen", "Sain SMART", "SliceWorx", - "Snapmaker", "SnoLabs", "Spectrum", "SUNLU", "TTYT3D", - "Tianse", "UltiMaker", "Valment", "Verbatim", "VO3D", - "Voxelab", "VOXELPLA", "YOOPAI", "Yousu", "Ziro", - "Zyltech"}; + "Fil X", "GEEETECH", "Giantarm", "Gizmo Dorks", "GreenGate3D", + "HATCHBOX", "Hello3D", "IC3D", "IEMAI", "IIID Max", + "INLAND", "iProspect", "iSANMATE", "Justmaker", "Keene Village Plastics", + "Kexcelled", "MakerBot", "MatterHackers", "MIKA3D", "NinjaTek", + "Nobufil", "Novamaker", "OVERTURE", "OVVNYXE", "Polymaker", + "Priline", "Printed Solid", "Protopasta", "Prusament", "Push Plastic", + "R3D", "Re-pet3D", "Recreus", "Regen", "Sain SMART", + "SliceWorx", "Snapmaker", "SnoLabs", "Spectrum", "SUNLU", + "TTYT3D", "Tianse", "UltiMaker", "Valment", "Verbatim", + "VO3D", "Voxelab", "VOXELPLA", "YOOPAI", "Yousu", + "Ziro", "Zyltech"}; static const std::vector filament_types = {"PLA", "rPLA", "PLA+", "PLA Tough", "PETG", "ABS", "ASA", "FLEX", "HIPS", "PA", "PACF", "NYLON", "PVA", "PVB", "PC", "PCABS", "PCTG", "PCCF", "PHA", "PP", "PEI", "PET", "PETG", From 2dba699a42368cb0efec419dce359abf76e96a89 Mon Sep 17 00:00:00 2001 From: Dima Buzdyk <46728448+buzzhuzz@users.noreply.github.com> Date: Fri, 2 Aug 2024 20:56:23 +0600 Subject: [PATCH 084/151] Suppress some compiler warnings, fix few possible bugs. (#6224) * Supress warnings on unused functions an variables Compilation of OrcaSlicer produces 3056 warnings. Nearly half of them related to unused functions and variables. It is unlikely we going to clean them up since we may want to keep code base as close to the BBS as possible * initialize class member with correct value * Fix memset arguments order * Merge multiple statemensts into single * fix -Wpessimizing-move --- CMakeLists.txt | 6 ++++-- src/libslic3r/Extruder.cpp | 2 +- src/libslic3r/TreeSupport.cpp | 14 +++++++------- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 2 +- src/slic3r/GUI/UnsavedChangesDialog.hpp | 2 +- src/slic3r/Utils/ESP3D.cpp | 4 ++-- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ac25b14a1a..b062604fba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -252,8 +252,10 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP # On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error. add_compile_options(-Werror=return-type) - # Ignore unused functions warnings - add_compile_options(-Wno-unused-function) + # Since some portions of code are just commented out or put under conditional compilation, there are + # a bunch of warning related to unused functions and variables. Suppress those warnings to not pollute + # compilers diagnostics output with warnings we not going to look at + add_compile_options(-Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-label -Wno-unused-local-typedefs) # Ignore signed/unsigned comparison warnings add_compile_options(-Wno-sign-compare) diff --git a/src/libslic3r/Extruder.cpp b/src/libslic3r/Extruder.cpp index 8f4be4e048..b6fe4b842e 100644 --- a/src/libslic3r/Extruder.cpp +++ b/src/libslic3r/Extruder.cpp @@ -9,7 +9,7 @@ double Extruder::m_share_retracted = 0.; Extruder::Extruder(unsigned int id, GCodeConfig *config, bool share_extruder) : m_id(id), m_config(config), - m_share_extruder(m_share_extruder) + m_share_extruder(share_extruder) { reset(); diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index 96b7c0cbef..364e1f37eb 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -873,7 +873,7 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) // normal overhang ExPolygons lower_layer_offseted = offset_ex(lower_polys, support_offset_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); - ExPolygons overhang_areas = std::move(diff_ex(curr_polys, lower_layer_offseted)); + ExPolygons overhang_areas = diff_ex(curr_polys, lower_layer_offseted); overhang_areas.erase(std::remove_if(overhang_areas.begin(), overhang_areas.end(), [extrusion_width_scaled](ExPolygon& area) { return offset_ex(area, -0.1 * extrusion_width_scaled).empty(); }), @@ -2303,7 +2303,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no for (size_t i = 0; i <= bottom_gap_layers; i++) { const Layer* below_layer = m_object->get_layer(layer_nr - bottom_interface_layers - i); - ExPolygons bottom_interface = std::move(intersection_ex(base_areas, below_layer->lslices)); + ExPolygons bottom_interface = intersection_ex(base_areas, below_layer->lslices); floor_areas.insert(floor_areas.end(), bottom_interface.begin(), bottom_interface.end()); } } @@ -2315,7 +2315,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no } if (bottom_gap_layers > 0 && layer_nr > bottom_gap_layers) { const Layer* below_layer = m_object->get_layer(layer_nr - bottom_gap_layers); - ExPolygons bottom_gap_area = std::move(intersection_ex(floor_areas, below_layer->lslices)); + ExPolygons bottom_gap_area = intersection_ex(floor_areas, below_layer->lslices); if (!bottom_gap_area.empty()) { floor_areas = std::move(diff_ex(floor_areas, bottom_gap_area)); } @@ -2659,7 +2659,7 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) m_object->print()->set_status(60, (boost::format(_L("Support: propagate branches at layer %d")) % layer_nr).str()); - Polygons layer_contours = std::move(m_ts_data->get_contours_with_holes(layer_nr)); + Polygons layer_contours = m_ts_data->get_contours_with_holes(layer_nr); //std::unordered_map& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; std::unordered_map mst_line_x_layer_contour_cache; auto is_line_cut_by_contour = [&mst_line_x_layer_contour_cache,&layer_contours](Point a, Point b) @@ -3645,7 +3645,7 @@ const ExPolygons& TreeSupportData::calculate_collision(const RadiusLayerPair& ke { assert(key.layer_nr < m_layer_outlines.size()); - ExPolygons collision_areas = std::move(offset_ex(m_layer_outlines[key.layer_nr], scale_(key.radius))); + ExPolygons collision_areas = offset_ex(m_layer_outlines[key.layer_nr], scale_(key.radius)); const auto ret = m_collision_cache.insert({ key, std::move(collision_areas) }); return ret.first->second; } @@ -3677,7 +3677,7 @@ const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& ke } layer_nr_next = layer_heights[layer_nr].next_layer_nr; - ExPolygons avoidance_areas = std::move(offset_ex(get_avoidance(radius, layer_nr_next, key.recursions+1), scale_(-m_max_move))); + ExPolygons avoidance_areas = offset_ex(get_avoidance(radius, layer_nr_next, key.recursions+1), scale_(-m_max_move)); const ExPolygons &collision = get_collision(radius, layer_nr); avoidance_areas.insert(avoidance_areas.end(), collision.begin(), collision.end()); avoidance_areas = std::move(union_ex(avoidance_areas)); @@ -3685,7 +3685,7 @@ const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& ke //assert(ret.second); return ret.first->second; } else { - ExPolygons avoidance_areas = std::move(offset_ex(m_layer_outlines_below[layer_nr], scale_(m_xy_distance + radius))); + ExPolygons avoidance_areas = offset_ex(m_layer_outlines_below[layer_nr], scale_(m_xy_distance + radius)); auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); assert(ret.second); return ret.first->second; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 1cd3aee1e6..220032826a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -101,7 +101,7 @@ bool GLGizmoFdmSupports::on_init() m_desc["smart_fill_angle"] = _L("Smart fill angle"); m_desc["on_overhangs_only"] = _L("On overhangs only"); - memset(&m_print_instance, sizeof(m_print_instance), 0); + memset(&m_print_instance, 0, sizeof(m_print_instance)); return true; } diff --git a/src/slic3r/GUI/UnsavedChangesDialog.hpp b/src/slic3r/GUI/UnsavedChangesDialog.hpp index 4597e2cc54..f91fa844f4 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.hpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.hpp @@ -459,7 +459,7 @@ public: std::string get_left_preset_name(Preset::Type type); std::string get_right_preset_name(Preset::Type type); - std::vector get_selected_options(Preset::Type type) const { return std::move(m_tree->options(type, true)); } + std::vector get_selected_options(Preset::Type type) const { return m_tree->options(type, true); } std::array types_list() const; diff --git a/src/slic3r/Utils/ESP3D.cpp b/src/slic3r/Utils/ESP3D.cpp index 4c035bc1f9..c95d292afe 100644 --- a/src/slic3r/Utils/ESP3D.cpp +++ b/src/slic3r/Utils/ESP3D.cpp @@ -58,7 +58,7 @@ bool ESP3D::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn std::string short_name = get_short_name(upload_data.upload_path.string()); bool res = false; - auto http = Http::post(std::move((boost::format("http://%1%/upload_serial") % m_host).str())); + auto http = Http::post((boost::format("http://%1%/upload_serial") % m_host).str()); http.header("Connection", "keep-alive") .form_add_file("file", upload_data.source_path, short_name) .on_complete([&](std::string body, unsigned status) { @@ -171,4 +171,4 @@ std::string ESP3D::format_command(const std::string& path, const std::string& ar return (boost::format("http://%1%%2%?%3%=%4%") % m_host % path % arg % val).str(); } -} // namespace Slic3r \ No newline at end of file +} // namespace Slic3r From d1bf8bf6cd0854831725e0551aa27a0338a673c7 Mon Sep 17 00:00:00 2001 From: yw4z Date: Fri, 2 Aug 2024 18:15:58 +0300 Subject: [PATCH 085/151] Update plate list > plate number position (#6202) * Update GLCanvas3D.cpp --- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 3c47ce7b10..bf791cdec6 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -8041,7 +8041,7 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() } // draw text - ImVec2 text_start_pos = ImVec2(start_pos.x + 10.0f, start_pos.y + 8.0f); + ImVec2 text_start_pos = ImVec2(start_pos.x + 4.0f, start_pos.y + 2.0f); // ORCA move close to corner to prevent overlapping with preview ImGui::RenderText(text_start_pos, std::to_string(i + 1).c_str()); ImGui::PopID(); From 4067c4486571c0bd176529c8ac2de65ece3be812 Mon Sep 17 00:00:00 2001 From: Flsun3d <109834684+Flsun3d@users.noreply.github.com> Date: Sat, 3 Aug 2024 00:01:44 +0800 Subject: [PATCH 086/151] Improved Flsun S1,T1 configuration parameters (#6244) * Add files via upload * Add files via upload --------- Co-authored-by: SoftFever --- resources/profiles/FLSun.json | 418 ++++++++------- resources/profiles/FLSun/FLSun S1_cover.png | Bin 0 -> 223355 bytes resources/profiles/FLSun/FLSun T1_cover.png | Bin 0 -> 133582 bytes .../FLSun/filament/FLSun Generic ABS.json | 42 +- .../FLSun/filament/FLSun Generic ASA.json | 40 +- .../FLSun/filament/FLSun Generic PA-CF.json | 52 +- .../FLSun/filament/FLSun Generic PA.json | 46 +- .../FLSun/filament/FLSun Generic PC.json | 40 +- .../FLSun/filament/FLSun Generic PETG.json | 100 ++-- .../FLSun/filament/FLSun Generic PLA-CF.json | 52 +- .../filament/FLSun Generic PLA-HS-S1.json | 24 + .../filament/FLSun Generic PLA-HS-T1.json | 21 + .../FLSun/filament/FLSun Generic PLA.json | 46 +- .../FLSun/filament/FLSun Generic PVA.json | 52 +- .../FLSun/filament/FLSun Generic TPU.json | 34 +- .../FLSun/filament/fdm_filament_abs.json | 164 +++--- .../FLSun/filament/fdm_filament_asa.json | 164 +++--- .../FLSun/filament/fdm_filament_common.json | 276 +++++----- .../FLSun/filament/fdm_filament_pa.json | 158 +++--- .../FLSun/filament/fdm_filament_pc.json | 164 +++--- .../FLSun/filament/fdm_filament_pet.json | 152 +++--- .../FLSun/filament/fdm_filament_pla.json | 176 +++---- .../FLSun/filament/fdm_filament_pva.json | 188 +++---- .../FLSun/filament/fdm_filament_tpu.json | 164 +++--- .../FLSun/flsun_SR_buildplate_texture.svg | 108 ++-- .../FLSun/flsun_T1_buildplate_model.stl | Bin 0 -> 426484 bytes .../FLSun/flsun_T1_buildplate_texture.svg | 1 + .../FLSun/flsun_s1_buildplate_model.stl | Bin 0 -> 426484 bytes .../FLSun/flsun_s1_buildplate_texture.svg | 1 + .../FLSun/flsun_v400_buildplate_texture.svg | 118 ++--- .../FLSun/machine/FLSun Q5 0.4 nozzle.json | 376 +++++++------- .../profiles/FLSun/machine/FLSun Q5.json | 24 +- .../machine/FLSun QQ-S Pro 0.4 nozzle.json | 376 +++++++------- .../FLSun/machine/FLSun QQ-S Pro.json | 24 +- .../FLSun/machine/FLSun S1 0.4 nozzle.json | 100 ++++ .../profiles/FLSun/machine/FLSun S1.json | 12 + .../FLSun/machine/FLSun SR 0.4 nozzle.json | 474 +++++++++--------- .../profiles/FLSun/machine/FLSun SR.json | 22 +- .../FLSun/machine/FLSun T1 0.4 nozzle.json | 100 ++++ .../profiles/FLSun/machine/FLSun T1.json | 12 + .../FLSun/machine/FLSun V400 0.4 nozzle.json | 200 ++++---- .../profiles/FLSun/machine/FLSun V400.json | 24 +- .../FLSun/machine/fdm_machine_common.json | 112 ++--- .../FLSun/process/0.08mm Fine @FLSun Q5.json | 214 ++++---- .../process/0.08mm Fine @FLSun QQSPro.json | 214 ++++---- .../FLSun/process/0.08mm Fine @FLSun SR.json | 216 ++++---- .../process/0.16mm Optimal @FLSun Q5.json | 214 ++++---- .../process/0.16mm Optimal @FLSun QQSPro.json | 214 ++++---- .../process/0.16mm Optimal @FLSun SR.json | 216 ++++---- .../process/0.20mm Standard @FLSun Q5.json | 214 ++++---- .../0.20mm Standard @FLSun QQSPro.json | 214 ++++---- .../process/0.20mm Standard @FLSun S1.json | 30 ++ .../process/0.20mm Standard @FLSun SR.json | 216 ++++---- .../process/0.20mm Standard @FLSun T1.json | 30 ++ .../process/0.20mm Standard @FLSun V400.json | 58 +-- .../FLSun/process/0.24mm Draft @FLSun Q5.json | 214 ++++---- .../process/0.24mm Draft @FLSun QQSPro.json | 214 ++++---- .../FLSun/process/0.24mm Draft @FLSun SR.json | 216 ++++---- .../process/0.30mm Extra Draft @FLSun Q5.json | 214 ++++---- .../0.30mm Extra Draft @FLSun QQSPro.json | 214 ++++---- .../process/0.30mm Extra Draft @FLSun SR.json | 216 ++++---- .../FLSun/process/fdm_process_common.json | 214 ++++---- 62 files changed, 4286 insertions(+), 3923 deletions(-) create mode 100644 resources/profiles/FLSun/FLSun S1_cover.png create mode 100644 resources/profiles/FLSun/FLSun T1_cover.png create mode 100644 resources/profiles/FLSun/filament/FLSun Generic PLA-HS-S1.json create mode 100644 resources/profiles/FLSun/filament/FLSun Generic PLA-HS-T1.json create mode 100644 resources/profiles/FLSun/flsun_T1_buildplate_model.stl create mode 100644 resources/profiles/FLSun/flsun_T1_buildplate_texture.svg create mode 100644 resources/profiles/FLSun/flsun_s1_buildplate_model.stl create mode 100644 resources/profiles/FLSun/flsun_s1_buildplate_texture.svg create mode 100644 resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json create mode 100644 resources/profiles/FLSun/machine/FLSun S1.json create mode 100644 resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json create mode 100644 resources/profiles/FLSun/machine/FLSun T1.json create mode 100644 resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json create mode 100644 resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json diff --git a/resources/profiles/FLSun.json b/resources/profiles/FLSun.json index 3eece7ab8b..7b658ca355 100644 --- a/resources/profiles/FLSun.json +++ b/resources/profiles/FLSun.json @@ -1,194 +1,226 @@ -{ - "name": "FLSun", - "version": "02.01.01.00", - "force_update": "0", - "description": "FLSun configurations", - "machine_model_list": [ - { - "name": "FLSun Q5", - "sub_path": "machine/FLSun Q5.json" - }, - { - "name": "FLSun QQ-S Pro", - "sub_path": "machine/FLSun QQ-S Pro.json" - }, - { - "name": "FLSun Super Racer (SR)", - "sub_path": "machine/FLSun SR.json" - }, - { - "name": "FLSun V400", - "sub_path": "machine/FLSun V400.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - }, - { - "name": "0.08mm Fine @FLSun Q5", - "sub_path": "process/0.08mm Fine @FLSun Q5.json" - }, - { - "name": "0.08mm Fine @FLSun QQSPro", - "sub_path": "process/0.08mm Fine @FLSun QQSPro.json" - }, - { - "name": "0.08mm Fine @FLSun SR", - "sub_path": "process/0.08mm Fine @FLSun SR.json" - }, - { - "name": "0.16mm Optimal @FLSun Q5", - "sub_path": "process/0.16mm Optimal @FLSun Q5.json" - }, - { - "name": "0.16mm Optimal @FLSun QQSPro", - "sub_path": "process/0.16mm Optimal @FLSun QQSPro.json" - }, - { - "name": "0.16mm Optimal @FLSun SR", - "sub_path": "process/0.16mm Optimal @FLSun SR.json" - }, - { - "name": "0.20mm Standard @FLSun Q5", - "sub_path": "process/0.20mm Standard @FLSun Q5.json" - }, - { - "name": "0.20mm Standard @FLSun QQSPro", - "sub_path": "process/0.20mm Standard @FLSun QQSPro.json" - }, - { - "name": "0.20mm Standard @FLSun SR", - "sub_path": "process/0.20mm Standard @FLSun SR.json" - }, - { - "name": "0.20mm Standard @FLSun V400", - "sub_path": "process/0.20mm Standard @FLSun V400.json" - }, - { - "name": "0.24mm Draft @FLSun Q5", - "sub_path": "process/0.24mm Draft @FLSun Q5.json" - }, - { - "name": "0.24mm Draft @FLSun QQSPro", - "sub_path": "process/0.24mm Draft @FLSun QQSPro.json" - }, - { - "name": "0.24mm Draft @FLSun SR", - "sub_path": "process/0.24mm Draft @FLSun SR.json" - }, - { - "name": "0.30mm Extra Draft @FLSun Q5", - "sub_path": "process/0.30mm Extra Draft @FLSun Q5.json" - }, - { - "name": "0.30mm Extra Draft @FLSun QQSPro", - "sub_path": "process/0.30mm Extra Draft @FLSun QQSPro.json" - }, - { - "name": "0.30mm Extra Draft @FLSun SR", - "sub_path": "process/0.30mm Extra Draft @FLSun SR.json" - } - ], - "filament_list": [ - { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" - }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_abs", - "sub_path": "filament/fdm_filament_abs.json" - }, - { - "name": "fdm_filament_pc", - "sub_path": "filament/fdm_filament_pc.json" - }, - { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" - }, - { - "name": "fdm_filament_pva", - "sub_path": "filament/fdm_filament_pva.json" - }, - { - "name": "fdm_filament_pa", - "sub_path": "filament/fdm_filament_pa.json" - }, - { - "name": "FLSun Generic PLA", - "sub_path": "filament/FLSun Generic PLA.json" - }, - { - "name": "FLSun Generic PLA-CF", - "sub_path": "filament/FLSun Generic PLA-CF.json" - }, - { - "name": "FLSun Generic PETG", - "sub_path": "filament/FLSun Generic PETG.json" - }, - { - "name": "FLSun Generic ABS", - "sub_path": "filament/FLSun Generic ABS.json" - }, - { - "name": "FLSun Generic TPU", - "sub_path": "filament/FLSun Generic TPU.json" - }, - { - "name": "FLSun Generic ASA", - "sub_path": "filament/FLSun Generic ASA.json" - }, - { - "name": "FLSun Generic PC", - "sub_path": "filament/FLSun Generic PC.json" - }, - { - "name": "FLSun Generic PVA", - "sub_path": "filament/FLSun Generic PVA.json" - }, - { - "name": "FLSun Generic PA", - "sub_path": "filament/FLSun Generic PA.json" - }, - { - "name": "FLSun Generic PA-CF", - "sub_path": "filament/FLSun Generic PA-CF.json" - } - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - }, - { - "name": "FLSun Q5 0.4 nozzle", - "sub_path": "machine/FLSun Q5 0.4 nozzle.json" - }, - { - "name": "FLSun QQ-S Pro 0.4 nozzle", - "sub_path": "machine/FLSun QQ-S Pro 0.4 nozzle.json" - }, - { - "name": "FLSun Super Racer 0.4 nozzle", - "sub_path": "machine/FLSun SR 0.4 nozzle.json" - }, - { - "name": "FLSun V400 0.4 nozzle", - "sub_path": "machine/FLSun V400 0.4 nozzle.json" - } - ] +{ + "name": "FLSun", + "version": "02.01.01.00", + "force_update": "0", + "description": "FLSun configurations", + "machine_model_list": [ + { + "name": "FLSun Q5", + "sub_path": "machine/FLSun Q5.json" + }, + { + "name": "FLSun QQ-S Pro", + "sub_path": "machine/FLSun QQ-S Pro.json" + }, + { + "name": "FLSun Super Racer (SR)", + "sub_path": "machine/FLSun SR.json" + }, + { + "name": "FLSun V400", + "sub_path": "machine/FLSun V400.json" + }, + { + "name": "FLSun S1", + "sub_path": "machine/FLSun S1.json" + }, + { + "name": "FLSun T1", + "sub_path": "machine/FLSun T1.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "0.08mm Fine @FLSun Q5", + "sub_path": "process/0.08mm Fine @FLSun Q5.json" + }, + { + "name": "0.08mm Fine @FLSun QQSPro", + "sub_path": "process/0.08mm Fine @FLSun QQSPro.json" + }, + { + "name": "0.08mm Fine @FLSun SR", + "sub_path": "process/0.08mm Fine @FLSun SR.json" + }, + { + "name": "0.16mm Optimal @FLSun Q5", + "sub_path": "process/0.16mm Optimal @FLSun Q5.json" + }, + { + "name": "0.16mm Optimal @FLSun QQSPro", + "sub_path": "process/0.16mm Optimal @FLSun QQSPro.json" + }, + { + "name": "0.16mm Optimal @FLSun SR", + "sub_path": "process/0.16mm Optimal @FLSun SR.json" + }, + { + "name": "0.20mm Standard @FLSun Q5", + "sub_path": "process/0.20mm Standard @FLSun Q5.json" + }, + { + "name": "0.20mm Standard @FLSun QQSPro", + "sub_path": "process/0.20mm Standard @FLSun QQSPro.json" + }, + { + "name": "0.20mm Standard @FLSun SR", + "sub_path": "process/0.20mm Standard @FLSun SR.json" + }, + { + "name": "0.20mm Standard @FLSun V400", + "sub_path": "process/0.20mm Standard @FLSun V400.json" + }, + { + "name": "0.20mm Standard @FLSun S1", + "sub_path": "process/0.20mm Standard @FLSun S1.json" + }, + { + "name": "0.20mm Standard @FLSun T1", + "sub_path": "process/0.20mm Standard @FLSun T1.json" + }, + { + "name": "0.24mm Draft @FLSun Q5", + "sub_path": "process/0.24mm Draft @FLSun Q5.json" + }, + { + "name": "0.24mm Draft @FLSun QQSPro", + "sub_path": "process/0.24mm Draft @FLSun QQSPro.json" + }, + { + "name": "0.24mm Draft @FLSun SR", + "sub_path": "process/0.24mm Draft @FLSun SR.json" + }, + { + "name": "0.30mm Extra Draft @FLSun Q5", + "sub_path": "process/0.30mm Extra Draft @FLSun Q5.json" + }, + { + "name": "0.30mm Extra Draft @FLSun QQSPro", + "sub_path": "process/0.30mm Extra Draft @FLSun QQSPro.json" + }, + { + "name": "0.30mm Extra Draft @FLSun SR", + "sub_path": "process/0.30mm Extra Draft @FLSun SR.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, + { + "name": "FLSun Generic PLA", + "sub_path": "filament/FLSun Generic PLA.json" + }, + { + "name": "FLSun Generic PLA-CF", + "sub_path": "filament/FLSun Generic PLA-CF.json" + }, + { + "name": "FLSun Generic PETG", + "sub_path": "filament/FLSun Generic PETG.json" + }, + { + "name": "FLSun Generic ABS", + "sub_path": "filament/FLSun Generic ABS.json" + }, + { + "name": "FLSun Generic TPU", + "sub_path": "filament/FLSun Generic TPU.json" + }, + { + "name": "FLSun Generic ASA", + "sub_path": "filament/FLSun Generic ASA.json" + }, + { + "name": "FLSun Generic PC", + "sub_path": "filament/FLSun Generic PC.json" + }, + { + "name": "FLSun Generic PVA", + "sub_path": "filament/FLSun Generic PVA.json" + }, + { + "name": "FLSun Generic PA", + "sub_path": "filament/FLSun Generic PA.json" + }, + { + "name": "FLSun Generic PA-CF", + "sub_path": "filament/FLSun Generic PA-CF.json" + }, + { + "name": "FLSun Generic PLA-HS-S1", + "sub_path": "filament/FLSun Generic PLA-HS-S1.json" + }, + { + "name": "FLSun Generic PLA-HS-T1", + "sub_path": "filament/FLSun Generic PLA-HS-T1.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "FLSun Q5 0.4 nozzle", + "sub_path": "machine/FLSun Q5 0.4 nozzle.json" + }, + { + "name": "FLSun QQ-S Pro 0.4 nozzle", + "sub_path": "machine/FLSun QQ-S Pro 0.4 nozzle.json" + }, + { + "name": "FLSun Super Racer 0.4 nozzle", + "sub_path": "machine/FLSun SR 0.4 nozzle.json" + }, + { + "name": "FLSun V400 0.4 nozzle", + "sub_path": "machine/FLSun V400 0.4 nozzle.json" + }, + { + "name": "FLSun T1 0.4 nozzle", + "sub_path": "machine/FLSun T1 0.4 nozzle.json" + }, + { + "name": "FLSun S1 0.4 nozzle", + "sub_path": "machine/FLSun S1 0.4 nozzle.json" + } + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/FLSun S1_cover.png b/resources/profiles/FLSun/FLSun S1_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c49294bb201fa621dca104c8c96264a1de7877 GIT binary patch literal 223355 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

lJoK%^f`(jb>jF3zdt&2>nvDEvp~ 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%0A5F^wSYZwF))=)x2 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/FLSun/FLSun T1_cover.png b/resources/profiles/FLSun/FLSun T1_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee7fb0f129efeb5cc63b4200d05ecfd13263e2b GIT binary patch literal 133582 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 RlFMY^gVMaIQLE+<@jrjjQq}+f literal 0 HcmV?d00001 diff --git a/resources/profiles/FLSun/filament/FLSun Generic ABS.json b/resources/profiles/FLSun/filament/FLSun Generic ABS.json index dbaba98b86..226ba47724 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic ABS.json +++ b/resources/profiles/FLSun/filament/FLSun Generic ABS.json @@ -1,21 +1,21 @@ -{ - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "name": "FLSun Generic ABS", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_abs", - "filament_flow_ratio": [ - "0.926" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "FLSun Generic ABS", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.926" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun Generic ASA.json b/resources/profiles/FLSun/filament/FLSun Generic ASA.json index 716a279943..b29c085e4b 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic ASA.json +++ b/resources/profiles/FLSun/filament/FLSun Generic ASA.json @@ -1,21 +1,21 @@ -{ - "type": "filament", - "filament_id": "GFB98", - "setting_id": "GFSA04", - "name": "FLSun Generic ASA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_asa", - "filament_flow_ratio": [ - "0.93" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFSA04", + "name": "FLSun Generic ASA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PA-CF.json b/resources/profiles/FLSun/filament/FLSun Generic PA-CF.json index de4cdb119a..05220204bd 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PA-CF.json +++ b/resources/profiles/FLSun/filament/FLSun Generic PA-CF.json @@ -1,27 +1,27 @@ -{ - "type": "filament", - "filament_id": "GFN98", - "setting_id": "GFSA04", - "name": "FLSun Generic PA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "filament_type": [ - "PA-CF" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFSA04", + "name": "FLSun Generic PA-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "filament_type": [ + "PA-CF" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PA.json b/resources/profiles/FLSun/filament/FLSun Generic PA.json index 06da861a23..e97208d10f 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PA.json +++ b/resources/profiles/FLSun/filament/FLSun Generic PA.json @@ -1,24 +1,24 @@ -{ - "type": "filament", - "filament_id": "GFN99", - "setting_id": "GFSA04", - "name": "FLSun Generic PA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFN99", + "setting_id": "GFSA04", + "name": "FLSun Generic PA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PC.json b/resources/profiles/FLSun/filament/FLSun Generic PC.json index 42c95926ef..4a7c982675 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PC.json +++ b/resources/profiles/FLSun/filament/FLSun Generic PC.json @@ -1,21 +1,21 @@ -{ - "type": "filament", - "filament_id": "GFC99", - "setting_id": "GFSA04", - "name": "FLSun Generic PC", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pc", - "filament_max_volumetric_speed": [ - "12" - ], - "filament_flow_ratio": [ - "0.94" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSA04", + "name": "FLSun Generic PC", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_flow_ratio": [ + "0.94" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PETG.json b/resources/profiles/FLSun/filament/FLSun Generic PETG.json index 9f65ef5be2..170ae7e66a 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PETG.json +++ b/resources/profiles/FLSun/filament/FLSun Generic PETG.json @@ -1,51 +1,51 @@ -{ - "type": "filament", - "filament_id": "GFG99", - "setting_id": "GFSA04", - "name": "FLSun Generic PETG", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_cooling_layer_time": [ - "30" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "FLSun Generic PETG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PLA-CF.json b/resources/profiles/FLSun/filament/FLSun Generic PLA-CF.json index 5cd0835ce0..42f977ab8b 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PLA-CF.json +++ b/resources/profiles/FLSun/filament/FLSun Generic PLA-CF.json @@ -1,27 +1,27 @@ -{ - "type": "filament", - "filament_id": "GFL98", - "setting_id": "GFSA04", - "name": "FLSun Generic PLA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.95" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "7" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFL98", + "setting_id": "GFSA04", + "name": "FLSun Generic PLA-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.95" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-S1.json b/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-S1.json new file mode 100644 index 0000000000..b1a01576e7 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-S1.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFH99", + "setting_id": "GFSA04", + "name": "FLSun Generic PLA-HS-S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "1.1" + ], + "filament_type": [ + "PLA-HS" + ], + "filament_max_volumetric_speed": [ + "110" + ], + "slow_down_layer_time": [ + "1" + ], + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-T1.json b/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-T1.json new file mode 100644 index 0000000000..2f0ea5402c --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-T1.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "FLSun Generic PLA-HS-T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "60" + ], + "slow_down_layer_time": [ + "100" + ], + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PLA.json b/resources/profiles/FLSun/filament/FLSun Generic PLA.json index 0945715758..6fd89a2be7 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PLA.json +++ b/resources/profiles/FLSun/filament/FLSun Generic PLA.json @@ -1,24 +1,24 @@ -{ - "type": "filament", - "filament_id": "GFL99", - "setting_id": "GFSA04", - "name": "FLSun Generic PLA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "8" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "FLSun Generic PLA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PVA.json b/resources/profiles/FLSun/filament/FLSun Generic PVA.json index 8ad4ecdb61..ecb20a7771 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic PVA.json +++ b/resources/profiles/FLSun/filament/FLSun Generic PVA.json @@ -1,27 +1,27 @@ -{ - "type": "filament", - "filament_id": "GFS99", - "setting_id": "GFSA04", - "name": "FLSun Generic PVA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pva", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "7" - ], - "slow_down_min_speed": [ - "10" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFS99", + "setting_id": "GFSA04", + "name": "FLSun Generic PVA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pva", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "7" + ], + "slow_down_min_speed": [ + "10" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic TPU.json b/resources/profiles/FLSun/filament/FLSun Generic TPU.json index 357cd8d45a..55bd2a9cc3 100644 --- a/resources/profiles/FLSun/filament/FLSun Generic TPU.json +++ b/resources/profiles/FLSun/filament/FLSun Generic TPU.json @@ -1,18 +1,18 @@ -{ - "type": "filament", - "filament_id": "GFU99", - "setting_id": "GFSA04", - "name": "FLSun Generic TPU", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_tpu", - "filament_max_volumetric_speed": [ - "3.2" - ], - "compatible_printers": [ - "FLSun Q5 0.4 nozzle", - "FLSun QQ-S Pro 0.4 nozzle", - "FLSun Super Racer 0.4 nozzle", - "FLSun V400 0.4 nozzle" - ] +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSA04", + "name": "FLSun Generic TPU", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_tpu", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "FLSun Q5 0.4 nozzle", + "FLSun QQ-S Pro 0.4 nozzle", + "FLSun Super Racer 0.4 nozzle", + "FLSun V400 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/fdm_filament_abs.json b/resources/profiles/FLSun/filament/fdm_filament_abs.json index 7e478a37f3..acbe71bbd6 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_abs.json +++ b/resources/profiles/FLSun/filament/fdm_filament_abs.json @@ -1,82 +1,82 @@ -{ - "type": "filament", - "name": "fdm_filament_abs", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ABS" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} +{ + "type": "filament", + "name": "fdm_filament_abs", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/FLSun/filament/fdm_filament_asa.json b/resources/profiles/FLSun/filament/fdm_filament_asa.json index 29a752a4ee..0c6bcee195 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_asa.json +++ b/resources/profiles/FLSun/filament/fdm_filament_asa.json @@ -1,82 +1,82 @@ -{ - "type": "filament", - "name": "fdm_filament_asa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "35" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ASA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} +{ + "type": "filament", + "name": "fdm_filament_asa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "35" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ASA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/FLSun/filament/fdm_filament_common.json b/resources/profiles/FLSun/filament/fdm_filament_common.json index f1e09f49dc..7642105312 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_common.json +++ b/resources/profiles/FLSun/filament/fdm_filament_common.json @@ -1,138 +1,138 @@ -{ - "type": "filament", - "name": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "60" - ], - "hot_plate_temp_initial_layer" : [ - "60" - ], - "overhang_fan_threshold": [ - "95%" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "0" - ], - "filament_density": [ - "0" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_max_volumetric_speed": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "bed_type": [ - "Cool Plate" - ], - "nozzle_temperature_initial_layer": [ - "200" - ], - "full_fan_speed_layer": [ - "0" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "35" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "nozzle_temperature": [ - "200" - ], - "temperature_vitrification": [ - "100" - ] -} +{ + "type": "filament", + "name": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "overhang_fan_threshold": [ + "95%" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_flow_ratio": [ + "1" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "bed_type": [ + "Cool Plate" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "full_fan_speed_layer": [ + "0" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament gcode\n" + ], + "nozzle_temperature": [ + "200" + ], + "temperature_vitrification": [ + "100" + ] +} diff --git a/resources/profiles/FLSun/filament/fdm_filament_pa.json b/resources/profiles/FLSun/filament/fdm_filament_pa.json index e75e2e9f6c..2a80ac75f6 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_pa.json +++ b/resources/profiles/FLSun/filament/fdm_filament_pa.json @@ -1,79 +1,79 @@ -{ - "type": "filament", - "name": "fdm_filament_pa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "100" - ], - "hot_plate_temp" : [ - "100" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "100" - ], - "hot_plate_temp_initial_layer" : [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "4" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_type": [ - "PA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "0" - ], - "overhang_fan_speed": [ - "30" - ], - "nozzle_temperature": [ - "290" - ], - "temperature_vitrification": [ - "108" - ], - "nozzle_temperature_range_low": [ - "270" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "100" + ], + "hot_plate_temp" : [ + "100" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "100" + ], + "hot_plate_temp_initial_layer" : [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "4" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "30" + ], + "nozzle_temperature": [ + "290" + ], + "temperature_vitrification": [ + "108" + ], + "nozzle_temperature_range_low": [ + "270" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/FLSun/filament/fdm_filament_pc.json b/resources/profiles/FLSun/filament/fdm_filament_pc.json index 89f770017e..967155f3bc 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_pc.json +++ b/resources/profiles/FLSun/filament/fdm_filament_pc.json @@ -1,82 +1,82 @@ -{ - "type": "filament", - "name": "fdm_filament_pc", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "110" - ], - "hot_plate_temp" : [ - "110" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "110" - ], - "hot_plate_temp_initial_layer" : [ - "110" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "23.2" - ], - "filament_type": [ - "PC" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "60" - ], - "nozzle_temperature": [ - "280" - ], - "temperature_vitrification": [ - "140" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pc", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "23.2" + ], + "filament_type": [ + "PC" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "60" + ], + "nozzle_temperature": [ + "280" + ], + "temperature_vitrification": [ + "140" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/FLSun/filament/fdm_filament_pet.json b/resources/profiles/FLSun/filament/fdm_filament_pet.json index 2f98be665f..db024853e2 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_pet.json +++ b/resources/profiles/FLSun/filament/fdm_filament_pet.json @@ -1,76 +1,76 @@ -{ - "type": "filament", - "name": "fdm_filament_pet", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "80" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "20" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_type": [ - "PETG" - ], - "filament_density": [ - "1.27" - ], - "filament_cost": [ - "30" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "20" - ], - "overhang_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "255" - ], - "temperature_vitrification": [ - "80" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pet", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "80" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "30" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "255" + ], + "temperature_vitrification": [ + "80" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/FLSun/filament/fdm_filament_pla.json b/resources/profiles/FLSun/filament/fdm_filament_pla.json index de2f3c2a71..fda535d846 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_pla.json +++ b/resources/profiles/FLSun/filament/fdm_filament_pla.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_pla", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PLA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "cool_plate_temp" : [ - "35" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "45" - ], - "cool_plate_temp_initial_layer" : [ - "35" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "45" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pla", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "35" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "45" + ], + "cool_plate_temp_initial_layer" : [ + "35" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "45" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/FLSun/filament/fdm_filament_pva.json b/resources/profiles/FLSun/filament/fdm_filament_pva.json index f529bb39af..9858c78712 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_pva.json +++ b/resources/profiles/FLSun/filament/fdm_filament_pva.json @@ -1,94 +1,94 @@ -{ - "type": "filament", - "name": "fdm_filament_pva", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "35" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "45" - ], - "cool_plate_temp_initial_layer" : [ - "35" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "45" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_soluble": [ - "1" - ], - "filament_is_support": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "50" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pva", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "35" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "45" + ], + "cool_plate_temp_initial_layer" : [ + "35" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "45" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_soluble": [ + "1" + ], + "filament_is_support": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "50" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/FLSun/filament/fdm_filament_tpu.json b/resources/profiles/FLSun/filament/fdm_filament_tpu.json index d5cc57fbcc..7bee9e1b8c 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_tpu.json +++ b/resources/profiles/FLSun/filament/fdm_filament_tpu.json @@ -1,82 +1,82 @@ -{ - "type": "filament", - "name": "fdm_filament_tpu", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "30" - ], - "eng_plate_temp" : [ - "30" - ], - "hot_plate_temp" : [ - "35" - ], - "cool_plate_temp_initial_layer" : [ - "30" - ], - "eng_plate_temp_initial_layer" : [ - "30" - ], - "hot_plate_temp_initial_layer" : [ - "35" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_type": [ - "TPU" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "filament_retraction_length": [ - "0.4" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "240" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_tpu", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "30" + ], + "eng_plate_temp" : [ + "30" + ], + "hot_plate_temp" : [ + "35" + ], + "cool_plate_temp_initial_layer" : [ + "30" + ], + "eng_plate_temp_initial_layer" : [ + "30" + ], + "hot_plate_temp_initial_layer" : [ + "35" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_type": [ + "TPU" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "filament_retraction_length": [ + "0.4" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "240" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/FLSun/flsun_SR_buildplate_texture.svg b/resources/profiles/FLSun/flsun_SR_buildplate_texture.svg index 846833b686..70be17936b 100644 --- a/resources/profiles/FLSun/flsun_SR_buildplate_texture.svg +++ b/resources/profiles/FLSun/flsun_SR_buildplate_texture.svg @@ -1,54 +1,54 @@ - - - - - - - image/svg+xml - - - - - - - + + + + + + + image/svg+xml + + + + + + + diff --git a/resources/profiles/FLSun/flsun_T1_buildplate_model.stl b/resources/profiles/FLSun/flsun_T1_buildplate_model.stl new file mode 100644 index 0000000000000000000000000000000000000000..5702cb464f939f257596b3c8cd0e14618ea455ac GIT binary patch literal 426484 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%0D?>1gnDQ zMhSmK=tS(E8-aO-H0O$HM}PcH_;Pn0Z?{SKGMG(UxJmf4y@~VlP=7bf?133owlI;Q z`Bvf2@K?gVs}0BdN9iGBTm-AK%-kycSsj~T_nebADrQ(-t#|NN;mcIV1p7m_p1&V! zDX==>cE8Trj3?WLFAHUcr7^;n>9k{!9m1c(wEDiB`oFlhPel$>wlGotWQ-{NqL9jA zx*3F%^)$tLH^Hj2t#$~1*3%MgD(H{#9cTZAjT&2+X!kBgOw3hSNR^3+{a$I8z6SFGs5{;S{wsy&x)UQD_I=aEg{Sm<`@BSTP#=bI& zC_B58K4W#Lk^kgbjV(;{ENPFVq-v+)c1*=bt-7rDJ8Ro{~s7 z^p)=Hcm8z8RE_(&XYM^B&){I$&)hfo=5?@=z8t^KjT@}g*uq4f@Artii-N64`OX<} zppyOpeO^D*O|Xjl#-N_X4T{LEMsMo$35-XPf z7i29#A8@9vE*uup1MX{n(P)6&PY~3Lj8tTc=AIT%!1gp5+ux_bV zdwo1w_g{Ud#ug?X?uZpt3T0H;rf+~K2qJkkH^C}yH``u^-6(@F*Ozv|K8-C*j5-)A ze09;WKdMO&ym5sZzb$kVtm2l&FDG`2d=ZOmZ_}1)+&&eS#EFLWQp@(?Yr+?I?ECl= zzk@CNuG84U#ME7J!k=gRNkT_`A+G#fA2-1&z9!6F=MVN{JHL5HtDN7`NHFoFP#4_ z(*swU!e1+X5x#GpiVihaTPrlSFyZ#`Ilj973*x{0^IZh1mNfGUf35hk?bm2K@ynU@ zMB|XeMhAs2BmU9y3Bp&|q2KTX;jb|g_W4>#6xm%Oge^>jmOCW;6?K-bOrdYX@A<9V-?cHg%K`-Rf|x+(O+r& z(PwKlCue4_T_r;J-1|LE5WadW?9aAC7q8WhJ5MqrQiZUEiC+>934a}|nO~&TTVU2e zyWhk`u!_$RU-hHbYWMK%?&qVHm>IpN!s=v=93V$u^ zG}vcwAKyPBhI|>q7ADG7JuLhcZ`+mbs9(ihbYVX?!K$y{CklThrPIMU!)VM35@~mxqPF)^CP!BXy@<>cHQNhp>hJ?#o_>g}=h; zYYn z{i;Efv*b2F~Mh|;!XJ&fwnq=w(1$&bst|XpP_T*jlZf`Evc<~qOE>FTa7K% zbst-pVBh#^iP-%fgmJ2P922Zkv0H7h{N;QDVk4qG=y>rswlLwoj>g$X>U%-V&pyjV zuh^1KtYROtBKC`zD?2^C<=4KNr<3VhK-3Mfwf%Vk+cNa96 zU{!(kmOup;Pe=Lv<93=tx(=eQRncGz6CKXPi=4x*D`MG%>hcY8&5V{Vf>lpbc*XA< zuY1(FXf3JD&N*`@OI4ia~fM5#~xeCOKf7V>{jFvvO zolBV0mog^9jV@gly$bx$AJ=XcW<(i`HrmFRk)edfgRju-y zVt3b9Dz0{CsiuF9@3ng$OfcBOM808h;$rF4;#V10sWVs88{l2-4)#_v!K$AcnIdMz zD^C(3u$MY7=BexSnq#nq3H3xSp2>Urx7bTP3va?(KO$K5e5fhf|MAN6R1yvFq<<23 z>UKjT4Yn}hJdvMhms%W>zXmU|cF|+;#v(o@Nsz={yc>LhcY|Wq3WF_7 zIPVPJUa7?hdEfmN?*{+iNx#xZ1go5PhBE12dyMXuWH4L?x%ue zKXc!pR%1R*KZhPHh1>&dVM4w2sUFOeU(?fr82=H$D()M6=foRi4!l8ToVL_p3lr)+ zQT5=+Qcd*i=<|M4-2|(+Z?Iz>Z;(^5O7D7~bp~6QaNZNE7Rso4P{&*9LG*c0UpK)j z?i=jE!W*RXoS0tUY_Nq1^#&e5KTha74Q?MkLubaK(1~D?D96Vh5Jf?p1;G|3_-rwkv8aun zAH>vuye@)OYR*XG!y-n>D0zrEnK!7^^u@w`23wfm7P0LDQ@iRVBaw~d@L?ChDrb%? zOSi(x$4Jboty>#v90b7@Cb&gxTf^MzDG;4coOKbba%NI1A1kALcqE@PO4u{CP9U;n zDeEFwrM`=Z3DQRv&lUMKW777y2CLXd(C*cu=8{fgp!{`S`}(~0Bc1?yKVN9Dg^9tv zqD8~Ey~Q9&Y{sgcSy(wRXla6rVAYca(V|yKAJJX@p5MT#onJsqpMTt73ljqiM+vL% z5Ya;tqXy;EM`8|OLZxRef>k%_M~T$yhlnlm?(;p?)aF53waz09K6mb$uPR21(%X8= zzCk7BEfLx)%ziY=D-5}k!ZkQbIY%3uo<58f;j zsQ;mQaPF%#dI~&WU6^~^MX-un+O~WDbXr@AC>f9~%3u}y;Oj#Mfh|a8^j1@vTJ|b9k_(G&8aB++xR=23A zZ^Khx_0l;_wlLv*iG6cxqWE3@;`|IE8-AlIe?+j#`4W5m!x%->#~0qmSkEwTL|&6E zOsH?gVw}7uo&qrl`*D8%h+viaRxHL!qSW$adRO$|{XVx0?&qaJ^Tp$9lVz`Q-{4y+ zvX?t`$xdZVZL)<4^|fF1$L9mH>8sG^r!%+-R&n1T4`hWR`g^P#_$F0WlPyfB^#S6I z>_HoA4fdhWQ>Jzktm3{wjVi1hxRkWkz+?*(YJGq>E_*OLhz{uUpOK-P30866;HwN) z4$Q$?gOS$@nQURgSvg==ouYa$Ei$BU#k!1j9}%qL-n8vzSi_>BKMJ=+e>m$- zZkC!Zw#qy8Caht3gw{oE4wJ8zX|;+(weEz=`Spfa3HTjyth0p)w~sVfQ`8y6s}8wc z1gq3KAn{iAU~{Ztan^p^L=6INA3j58rOJ%<(^Y>&fQZDJqW=voXtIR~K3h}=27qIV!Rx+r$Icztl9(+Y+-`054-!ZCaMUCbl;b85v+37M$H&K zTlsiZw~U?xcb{{pbi@`W`1-Jq9&7Fjf*4h&yo+F!vx3eZFkkuj5o_)$qb|VzK(K`g zcU%2;wUAy2#F#u)Tm-AsT4ymqw$%=`=jY1i2t)1K5mWH2rdIZgr}#~DcG^t;utNU7 zZI4H_Hz!MT4iIc%Lao`CG}gDH+FJt<-(Q;KB3R|@&C%v8Q$GI2euGAMW*Gkbyum8= zp;lvy;qs|31$IGv2jZWqR}8i=;jG5b{r5UW#HighP1k&3GQlcm*G-?#*NeVMPkq?I zvjWeFiyCA!*}{a{C8&rzlh10Mu_7fqs#P+p*4#Jp-7#147)`2kf=dxFS^ikNI+ zqR)kz0{Pn&k*?YeZ2;am2cWtx6Rawb>^p({?c#&HmmF3*!)|n&ZgBf>|Et|2;+cHX zA6cxjwiG?Mrpt7LElfE3%90OSCnDsNe$9+!wPhfNeVFMYSfzHsi2tOID%cbE4~S&% zXBuo_LhX-JJ{JB_RC^2}<%l^hf>q9*zp3*#DIe)C6qR2TpN*blu!RY=&reL1*Kv2- zT&)3~6Z42GuD0S<;Qq&Y22_r$3F1)eYX)1GQ2W2c2pPMp)GpJVh$|*o#r<#F2h>j1 zW*0M?Y++*a`kG?H+f6DGcOb4l;CHYa;))4Yam3)c9Xs51VJA|}w$}{)yL=toPpAcP zGF*$t+-oXS-Q?C)du`>_x`}nzcefKh*3`P?>Om&hH}Z?3hUrB-k(D{0*<=-8hnx7b zVFs-oqNELKFkgLET1;_C-F#n)lGeUaGfeTYMZ zXJ6tXSXFyMkeGaCuXrv;)V=QSL#pG-?`2(Lu!V_|je|tog1uszjP{npAA~rSHjbQG z>LOUx%*mTT2T9arnh^ z7s0B&n}fudFJhIC*BfhTPIj@`@1GlNVS;q#XkBd)zA*!K!lqrV<@9#3>(T zCsoo)EJpN` zzvqiq&C`BB=HYsKbDC^nf};oD&$mp~T7if@_?3%bRmxGp0@an7~ypGIKebK zGCZ$~VAY4LsYUaeamq*MdjqsHIIB$~^O|g7f}_W_%eQT(od;1iUw#+Cs;>sU@_10V zE$KQ6cWI{`LjLx~h4PzhVS=Lvzk}=RNn-zR1zZHHy8LwAQ{z;;^3ic!J#7u5!jK9jr3UJ|on){iv6VV3m`<!OTbNLp zP{brj46DCVONLd&GY?iW`D(d!d2HJD-%$%SC*ymr)Ky&stHRy}iQHkasy{lcTBxl_ zhp&CjUEJY}H%@t8#CC<>^@;Uy@}c&IFML?;mE?Y9?El;IV1j{f_k4Ucg78YaSQDs;sfs zJ?HFrxqJG7Q`UWG43086B+xGoIk=is6-LiEt*}{aA9ca)@ zQ;os@A&1a(e8D>MLthucD))$5k32;l5GAMeH`&63%6O#4U>jWd|8V91E7ip0GvO=e zm_{aq?sK&AAbxMr)J3rB@ZYaImj{}vt%`z3gADw^AlSkL$24}V7Y)~Pf~efIxr<=c zAY`^$R?w?_G$l=e$flE&6HLY^6DsqUirp)1XKE2x-(D7H z#VS54js<*OLI$(dAZ8Wm;UZY2@|3CT$P8i+zJJ^-+{0uG6Wp`5J=UKe&PA|F<#ZFL z<*)M;5HsLo-JPB$TbSTjuAQ1L^1y9idPtbEGHe>c9@I$`hYsNua$wlLw2 zlHmJgv?d@Lp6%lzSfz3|Dj%h@hG}JxwJxO7AlF%`Om(u?xD9Q4bmlPa46?mV>^R8P zR!q42{EyC)v@IZJ%nEZ6tm0U(?M=`HbjEzZ%Hg@qN-pN!|0eL*TdWCpo`BzWKtI9mw*Aedq z$gOU&g^3y+cEuyNx+2o1PZx(8LT2fGbzKCj7Ej+5k1YRUxBPV;T>9a@d|2akvP=n+ zRqW$#iCyu?%q`E*wmlEfM!8=1az8 zT5GU{i65?a_O37M^AY?<5gP43BdvFXoxE+F%P4-=&Q54%81Q zAFr{-IVFfmOIEoER`pxF(|fk|e&wSI);K@ImEQxw7A9J?+vydb?pHoiU={9j5YNL` zx(HUiKXcSO>aJJ$sQsu(TsY=;XJt%j?rxgKi=5puemG+4y(;fTCTJB`??I@1$R=Bu z;ON0hz#LQJZeSMY`KlByf>kRAcky1?nxK3<%RVLUD9&ow$`mGBnBeHK?NT|{#2o?A zJ%^iMRrJ*2yJd`wcrFRU za|siyy8SH5i;ULlxx{<@dm{&kMR@jM3lr=5$9R!JSrO4+H#M^2nPC#18JJ*|swJeJ z87gK8Gn{9i@A2%z7A88LJLW}>Uqv+8bS^G4`uttRVkWmJ-zDCqituhukrXkuy=U{e zI1hd~-&HPVvV{pA|F+#|^oO|WAaZmm>LOT`dO?&InbK8Ur2*mORzKFcsL2*4c>LRT zov9g(nILBLEaDGDQDAP{Tn6?PG< z>Jxg*>!0hJu%nOjAo3CqNvl_nnJi)y^_8 zUjO{nnJFcV|KXXsS)K1pwlKlt2HBIos%|6)QTKHX7s09{V~=@}XI;&a-OF9w_#bA~ zvSU__EllvZ!F5b;X=DR&9y51Lu&T()>t6qSV)m&mjb(_$;+P#|3llsFkn=3Dza&ay z29gO@sakvLItm}@Z;ZoPO~ouHTbOWwscKKiZJjn~+h+8Q$~ z+~?dk9F@55#LS|Bxmcx#85Sm3<&O3`s3w>QqSW;MCR>W}dG!FX0c#*fVuqeAOmM5)_K&Fhx(7rX zd<9^FRZewR|ChMFAe=98-cu(RD|v3jg{Z%xTX1QQT-JCaS+u{-{adITbSTB#N7uz?jR3KwvT);&1Y-d#Za?2 z7<{m{cym4@Y6@fo^_WFXFML=}uCZh}?rE8miE*jNYRR76)ZsAFMk<9EBH5BBFK zwhhl~{Em5sJeTJgsqfaXP<27B>#16_rsZ3oR_U+G7OF0&^*)0K=QY-1_G9n4c?MgU z2oA1drEjuTtttBL-|Ui@lJyrC!K%(1OIxVApnSyl8)Ll1${O+ZuE8qyq3W%xwQ46% zh8rJ16!F|L*uuo1`VA~pT~Nf!0~?JSST&guYt@)w)uhP{EL2@kYtMRm0g|`+44?CR>>J`?Jm# zsxBxZ_RH6X7x(sAm#Vl3RyC^J*+SI?@m_v$kGb-R84sdcrHUq7n8?4pkCo?Av?3m! zO>36J7%cK%4Hv;G&FW*J>Vh~W=kzOHC~BNQT+JOb$KXET7%Tl*0}J&HRFoY1v#4OS3I3lrg~I$5Z1pjH)M z$R#9k3M-eHVAafxy)D!?P(GgK7KSsQxMfR(!4@W#w(o8ES4SWEBiz`8nWF#IyyfZ- zZa0o&)E{g#-G~FxwAD3(EliY1)6(*hbKjPW<#gj_`TC)>(}sk%E!az-3{l|b@|{dD?E0Z^05}gF`U(D5Nu(h z;V-kSMl+@gYH9Gq3vov{X6nBeF^{zROOL#(VB<04q~?e%%qo!H4@h-|B_Z{v+( zIID7K0k$yVj;q9+2}T7FY0=6|uqxg51(t6IFuw41IBWF7OlsaYsZ5SUjm$Q+5#TW*n;pG%2TbL-dV4{T@3O)jRcU$6@vzVUKMX>5+%tWh2%7tQ^{IlLwPO+whB6GHUdeyO;@ip#> z6aUI@vW1C)b*5X$b+3p8gA1C@-oA&WOSuSEwQW1ya_t{9eftO5!o=!+vn~Iw#$niR zml@wbCSa!?6RheyYPRLy4fv{dd2>04ci0Wc7A7wCn{WAdnI3z4#rPV(YPT<>Fu6s! z2YLJ>R~YsOmj-clc`_Hls$G9iwhn$aU-kK4eQz1(@#~x}I+@89CV2eY_O(q9jl&?G zN4_zbVAb_>(=F6c5WQq1&e{CXs0ZTck~aohnBeh`CmB5Lwgr(V{+Wwl)zL3!Tgcz9 zcC7z|@9nMeWH}NfTbSVSkF`;Y-WWfCn257uf>lxJ=3Bn~)tC{+75Bzjec1BQU<(sG znr%B_1-`n17&hRRi(u8XD+?_DUj0f@$;{dKN>-)!ErTsgxbF<#oljvd1abP!6&JxO zV^*Z)-`&4BD7D!JGxWybY_2Hb-sI7R`Sxb%%<&+?BQlw6VIrpFbPF{t)Hol3Q9B=d z^-p5dGQlbyUAA4OV{Y?D5Cb~pHrc|&`IfUSR76nwov(K(X70v!&I;X%xd>MA=)yW= z+z~c{h{9fEwlHz9<9rJ_`_=Ac6QkC`j@(F$S|(WK9<}+f=QSKe^&5puwlLAO`a%nt z>(y>@qiH&`6z-zqreretYPofJ+}QTg(O;P5Kr9^dg^OU-(vaDfe>ZuFAHOhjWkP;Y z{L2<5cof+7mydLnK+4Gni+`1KFDjp7AAPypsFr@%_f2PVrz02!Ky|(BQ1Ysiku)C zAg9xcEy+!`FyS6iCGY1l8-eK6qX*fhD-uy%KsmE6hzFTcy9icgx)5zytNJJ(rCU@qE2Coiv{E@;XC>}OTE4s} z+=jMYu4P4YHnK*Sne#j${j&@F11E3i_w`ae0%+|#2h z)W?wV!?DEvY`gtQ-7Ezn8hKdQ!UX%X?Zw-xnrU$5lP_g)5!{=fjft|Ry&EEq$$8Od zJF1$u@l_`6l`JM(nBacGbIILm<}DD(dS!4CteXBL+Paj`NBL+B;&ZI>{<&uclPyfR zd+_PA8fHEaCC{gI5v)q#S!3;O-&q`$*KuoCZPSdwI2T#X`yZmMeV6*k*5#Jw>%%hx z`Xdpd>3Ju|JjbM$(v+2xjEG<>i>H!%Zq;5#rg zvEfotdB;w-*kqv|i#(n+caw#BEaIV@FDZ+!F*`x*9GTZ(3lo_dZM9I3 zMG>Xn-8IJHE%i~@7#G2+FQ;s^GPbTF2FSP6OW_ZVa1ggX4KvunM7Ml9tONPWi2jlY zo|D7OgeTf>j+}#8{}VA~wi(&X$KNndd>YZ?w{23ljyt+hh4NE@o*FYC72v7aA)SFNlFn_Jp-gNRO9zixlCRp`kQ>^9B zXPN%|JYy!l8!R1?*WiBcmvyU!S~)UGxNq=_gYRjxK@5AA-Czq7bM9}q{(4wiJdkm< z>8FRrKj`!D)L|}yRopkYi(Y8!8^`H^f?o( z;=VzBwZmVTqd^SVIn`hb6a8}Ru~5xLWx5@gP|0*EFAiw9(nYX}`^L7@eOlGb10ooC zIoZNQh5oVD^8bQVp47V+8=5b%cj+hO^i|hvXLD1&yR@-f* z#dyqYa=YQ(x#B{@S$n>!Nd|*0OpI<9V;!DXNZgk_xb)Iv!>M>{_3G>*SjFvT+ZR50 zX7mFQ9o5ue3lq_|c3Z7#2df?&n(&ob8*h;FwoP>rtm1Zqk1e^)h9Fk17;mtJiFck@ z%a_B}wkxAQoII)Dqd%Bn6}L3jupm!{^Cd32Q3iwCr)0huYipZAVk}yhuL;@l%P%&Z z%#l6jq&C>XMAHqstq0kHRqGx}^~`WqU~gL0)J3q0ugSJ+zIkpqE3oTttYxr;iC;d8 zwHB=l68+@(_-ku!)A=?L9gX!%)b6a}RVhr8fB7MgQGa{hK-Em9sy* z*JfKHi9&te$FYTprGM_VhK>qSS3dgHbE7rJ`I6si8BDN>&(OB(A>W6yL*XQRoc?*Q z)v8{QJQF6^pKVtf9A)Ifb<}BdA@2I0`>f^hsl+`*^?;xESwZtti81KGJsS+mmmAx* zV+TbU-+~z1`a&FAnE17?VYMIsQsoQ({>gHq0*K_FA94|_GTX*m{+#54K$Hei83bFH z$eSzP^5-OPQ!mZM|iLR;kTfWTv*iDYzC=RhSWR{Cy)!Z=$ zEPn?6f*_on{eL<+`^mz@FChmkf0q9}vsX)EkQX`oiC|T}83(OS-YF`}|3K{A35AdM z*q6f=CVsDX&_Wd)mF0gdb_Y4c&XbK@1gpXZCRhV%bn)DhcTuh8TcawX{kAA>jQl*# z@?~J>sJwN@u>9HBhg5%SIQiQLB7ZwunBWM-uUh1LEV=1?V@dUPzl&g1zas~&lMkkNddWNWY3%hWgR>g-$$>bw zFu@UO+l{dU$sxMtUgIKIm1;|ZRc%@qPfzJ%bJi5*K%7;&9Bbm(!h}0^_bg9g4hNxS zo#G-`m8Z`k3zeFbkIV(~n}_gxRjqS7SG02+xBJSp{B;2)uP93T7r)_3C}R<*!h&Z)|mQ1ck)wIZ1xTQG) z--_m}2y+pvD!IwBBDWp${3~Za9vyBaiM?2r%N8bHesRF6*C9p`ZSVFpmt&sc_nqBc z1gk2RIAF~i8RI!9--O2w>us(EQTOKe23wd2>3Yz5`XS15KoV=PuXYV)ycU&e>LOUR zZs6>(hP_o}rR>zP5n*9iB3hudQcri*gV0 zJqB6Q(iSosfOv|kBuucXa7)Yb*D-mTrjY5>F`4bHXt0F|zGEOKdELUM2Sn#x1ziNI zn(f_ht<4bQ=^)<+Yh%Yt4V+ahs;jVt3BJeRyEAsx)C6$~`*N6I)#|4Qtc=l7p7zqm zranc?aOC$1o0ZXE3ln^gvF#7tikjm=Mfs=%;yMWLwsUc8VS?{5$iMTbn0XaMg*{tb z1gk!*JY)?N6+G=^Th+o2z4z$BY1pyH7AD+xpW7pgn<=obsO~QjE`n7{%O_gx=B4qp zl|DYheu=esS8G14r7IFS#&`r{t=gL!=5HX@VOIxRm{@vmzZF$AM%_zFCSqp-R;y>; z)51ltibt?*4-9D|iQd@z!xkov*FI?7xfA7iBJVy^ac5|cJ40LC8JJ)dk6=_@Jk!VQ z45IJ-G6q|iNH-+Gy4NwnvtQmz2KO0iu0oY#Z>~x%f>rK2L)O*9%mpBB-3&I^!o++0 zek|$I)iXriOHQG6FW_BmRG#VvUoE#Tk2Kr9Sob^gI*4o2O1KDCRmgYHT9Fv#Su1C8 zs({#o9{dsnTbSUHhTJ09-{q_XZ24yv7s0CaWfH8K-$Z!UNFQ%OOan0<1Y4Nkv1!}y zvFmImh?p1eUGSNAogWF=^|KF z;q)OZre6i+<1`o`|6mgFNGyXU^fF1kC|U&L|6{m+q) zDlyohR{_Kqy$Ts@VPa^D1S@Z7gy*pwgG(`@-u$t_IE)d+1gkjmQB^m2KQkG!O_x5J z)nE$~JzF2LIyda9#$aA#q)78isBzhN!33+^k@&w+ zBg{k)UzJRZV+#|%?@P4&wE@q+>1P)CYlCqu=w%$M_^dbG9R{3XH->pJlA@F z8H9aa)j+U?362HZ9uz;o%nsrrDo8THs!B}`TmCAQZOs8@xy$&@`DMX4wlLw2lHhD3 z&Fp(ZjaoTo#oa7;*h0-xS@)6qfLjE6$wrPa^MF`ZEYWr4OmIJ8k9+o!=5DNEIT7sk z!GD*p&$eHV8)-TMo&*tBYV2w}@?fUyL=AB}+E$ zWTLKYDKJI2u z@{!@}Zy`+hjvZBjk%?Al#eClS@;aDcOCaJ;c^%EFjB)xS+3UJbLYVL!JF3J@hpgPm zTX<_qA55?%5OGTS_&)P!>Ep+cFEu87$Bt_E`UJ~LnB?_HA55?%5OGraNWW^7^zl=% zsu~l%V@FlB_d#oX*A?Cn>4OQj1R_pIAEh6RkUrx6YO68fJ9bn%p6$1mo{9CAlRlVW zOCaKR>EqSCVbaIfO~-0X_>LXblrH_tP z21p-w?rqVS@Etpz%K0a@IRb#?; z?5L72-EQq#U*5_reK5h6K*T}mqgVM((#P#>k2NNI$Byckur1b+<-$rQeK5h6K*WCO zj+&Z0BnJ9bnbPOPy0S9E~&TKZsuErAGA`bhP@uJkeHT~3_|-?5{*yLqVMp2y! z-?5|8@6NXhcqdyAqz@+85{QVEK8}gX(nrRqQaTg9V@Fk~`fTf)P1BVRCfE{)Nb=Fu zQ%?HWeCS)93E#1!8aH^FwP@fR>xR4zCfE{)*dwpw^YmX!AB$tF=uG&I9o5LuldPBN ze^EY|U`rq($w&WHg{2QM!lN_cJ9bnH+K;zhj#_N}C9i`Cwge(}%j?k6=aoLbw7=7t z@Etp<$cn?Q#>O)1qV&N8TLKZgq>s}zzmz^o*ZW>)!guVbLVNYKPW%yVos~YAU`rq( zM*0}jIFs}-woN0Q3E#1!>e#%KrR`p0{ULoY!InV8PU&NGx%ARUt1``WCVa<^Dou*! z*66;!Dj!U+B@mJ1W86O}rH_|~TIo#qjvdvk0rjlW|8BI7$?IT(ErEy~@;c&DyfvKX z-Jf!|*O~AgJF40%b*pmqt=19gg9)|-BDPB(yRJQuK313StTW*|c2rTzzOmvu?od9M zU`rq($w$#qm!*$#>AUMp_>LV_+HQrdufE@9CCKYwf-QlFZSp!coH-_a{JyN0&V=vS zQDuDpr8Vi3y_O|?Fu|5U#8&Ae#q)jAN93cvIupKQN7bJ9aYLH_q@F>$6JPM zD<;?yh}a_A>Ur>V>7#Dtp*j=3V@I`T)Cuq27)$wJf-QlFBpLXb z;BR(%541R7?UmQT1X}_To8@(69MV+!XxL$-&V=vSQJsug>l`#f7F@q9XqPQpN;cYe43zqFu|5UM3RqvdxNBpr(H(tO!$r+Re>>ez1Qy^Qa+eq zOCTc2N0Tyt$2qaPZp0X!3E#1!I=d#b_u%S8<%0>f1R|1r)ZDaK`Z!Tztj>h**imJz z6Boa!$YJG!3AO|xl6=HIFD`vlOc<*(;X8IzV{+z;9~kEI!30|Z5lKESEl;!0X{#;o z$LdV@jvdwfBCYgK#`%0O!InTol8?cCj#qVjlzA{#XTo>vsJ@szx!Mmu_6Aqch<q1$wQkbK z{;&}`6TV|dHGQb%IXQE`8iP!*B@mJ1Bkvy*rH|j*4bz$M9XqN6D=vHHp7g5U4<^_W zh)DYVh-^Dw`pB1Zh|YxX*iluT@xs&iqN#psnP5vGBI&objj>AlIM`{R&V=vSQN?Bd zR4m^Rr+hHMmOw<3kM)mtNFU8c_1Bs39XqOs{h39s+Of(96Kn}YB>AZE@PPDjD725x zgzwlLXbtobFy*eg5LvnUg62}C44 ziykb0Q~KCkw5!g9@7Pf-+g?fhdw!ep!30|Z5lKG29raB5sQ*nzoeAHuqe{KBrr5E3 zv+}_NTLKYDJ{DK~M0f62f4yy^GvPaSR6o>jB=&r}LA~QJ!InTo(mT$MUp|#SLVs$Z zGvPaSR7JgQ#D5FdDIZL*B@mJ1<4ocg(#NRdO>`!F$BwGZ^X_8g(N*f5lL@v2B9h)Y ze>s&^`e=G7RA<6>?5N7#9w^!$U#{MrnP5vGBI(_E)uykckFgu-=uG&I9aV}sqs8&) zCCUdAYzagp`Ow=HkUr{Fuc0&HJ9bpHUr!XT>MT@q8BDMx5Ro*O(ebZh(nre`n$Cpp z*ik)95g~FPoTq#+!InTol8>4t%SazzCsx#%@Etp;-Mx zgKJliK7#j_)tT@eJF5S!m@9s(I#tbIF~OEVMAH0KwNfF{$FX50bS8Yqj%sV^1>#hd zaO<(W4kp+Vh}b8uBh%kP`goP1kj{kf*imhsA1Q`r9;fCLnP5vGB56KxRkPaCM|MvsCFKW66IzOQFE_Muq6f1R|1r zME=rP`UsvKq%+|=c2t=*trZ`pw^wuFOt2*oku(?nzIAiyBSVk0IupKQN0q<%Z{k{! zACwO!*b<0H@=^XqYw6>5wiG%OzGFwV`S>O=aB^++ZGs851R|2YOKgbQ9Hw3jS1heqpDkQrzpO-wEB+21X}_T zN#AjnzvwP~oLzKYW5Rdrs3s-fEh;rFpuTxA!InTo(l@Ws!+T2~$8IKSO!$r+)z81~ z700e-Q$CnrOCTc2N4uDQ(ns6pyEP_!$Bt@SaGV%bEuH#4$OKyg5lP<%^KK54K8l=L zr!nC>c2vb%nBvUicj{Xz6Kn}YBz;TOI}MgT?2!vKCVa<^s#zPaSeE66^1%dK0uf0* z1|A zxwyuJ@7PiGt8_^Gd~%>#Gr7)7fG15n5*5e^e_>LV_){}|ie6`eSeF+n62}JxUePrx2R{BUYIU2}GQiKCom- zUWfC3z=ZGEQK@4+$wvS}S^^PCKIp9C_;2}+9hEvmxn|0?nP5vGLawZ`eXW~%azq>x zzGFw_wDg5)sXhH?Jr`6mZ@hDskyuq6=jm-OKqwW}%@H<<7p{~uxJ9Tvsag>hr=y^CFA!-5hK zVeW;oH|&Zf_O7v)hzdkM6^yaR-YY0}1Qm9N9UGR|V(%?hY}k!D-2^nRCz8UHTb3zSx4miAD@0P;p1xGGe%XeOR^@b|hTKx=Z{L1x_|%Ac2ZI z;^ef!O=buCjBv5fjIAg%o*^Y$kSa<1H>WKl_IUS-5U0u^_}LnB7GxWBUBOSU87I@VqKom1WRkB!d(cdvFNT*tagzmv@q<1cS9VjzKv zJK~8E_9SPU5?h<$8GSx__7Y7Mc+z}~840xJQkZ>LAF7ad`Q_X>5Ac2ZI z;+YWxo{AJCT*tagJRyk~NTA}5aK?bAI|T{XvF;L2dNTDF(dR${6?eo7<8#1MDova+ zo?nfB%XO@~#1pHCfdne<2xpAl;`uxS&2U4)b*#JeC+~6j!{ub-b0C3=J0jKi98fh- zkZ>LAF1>WSUz)mM;k9qTSpDU|8jPM-q_RNN8o zjn9#|%~=;664OLM!gZ{>^onPXldDAxBv5fjIAcr__1*qggA^oO$GS^YZe_YA(&s<| z6?eo3<8wS0b?Sj9+bT%7j&+w_fqt_%N`7R-Kmrwa#785>5>apO{=Z-a3D>di5|wlj z0|`{z5zZL#;=RGif4eG3xQ=y~{zf2f^>+EC@i~w{#U1g<_#7WXobNw=uGLdP!gZ{> z#G4Hf0|`{z5zZL!Rz^X>b*#I@8yXP<2~^w>&KU4^NkPJOth>aUCYjE8$}1#LaYuYM zzN=~Cz1qH@Aqo<%W8I~{F)P_PfhI@lF_1vT9r4A80dM;hBwWY3OMmmXCdMXWAc2ZI z!WpBGc+YvJ*GL5k*Rk#rZ!kp+Bv5fjIAg%uR|N^zvF;LYVrgF){kuW}6?cSYd{^)m zSwX^eth>Y;W!eEukAVa#?g)C$rn(Qj4OftG9qTUfW?aNT0u^_JGX}iXSCDWW>n`zz zU&KHH6?cR)26QJVNVtx5m*`XwF_1vT9pQ`tT^0%wu4COLIxa*EBv5fjIAa97clMVI zc^Il7;X2k`dgsW*XUQT45~#Q%oH5>Rb@s^|oE4@Z;X2k`q60?6Kmrwagfj+o?n_nDCSo9giaWv?Lv*)=Q$L)7gzH#$iB2~W0|`{z5zZK* zOD~-I`V=Hw$GS^&?1>mipyG~j#t_|x;nbg~AmKXJU83_)#6SWScZ4&B=$Z_tK1&4& z*Rkfcq6a2@L|(U~i*wMd}ij&NRUMOSe+^&u-rxQ=y~=r9&B zkU+&9;fx`=qr<76T0z2fth+>~w1|NOD((np4AJEsPJQ7D60T$2B|5&vJsc9KxFekR zaF0Wb{`T;C+50OA;k*}p?d;PJ|Fd>)1qs)&?h+mNA_fwu zxFeh~COg*~gfA%BT|vTith@A;1fegt%1@1ZA0$w5NBm1PO&E8sn+U&uq_cvA>sWV* z6%pbY2MJW%5zc2Ev6>^C)_*8SxQ=y~SlJaD zA^Do|H%9^$cf>oQHBGE`3a9l^3KFhk-6d8&iCP8{sJJ7XwG6RpE1cGODM+}Eb(dJd zC1N0fiaWv?L##dvr}b(I60T$2C03$|`V|tWxFekPE3t|$oYvhbNVtx5msn9JVjzKv zJHi>`pmY6Tc#ry(6eL{7x=UXfcq3-As3#(UiaWwtPt5FG2N`}NzKnu|>sWW`D;(GT z6Cxip@(Kx5+!0inpuGC>$ym=BKK)ZM1qs)&?$TFkW~ww?)LxN5#U0_Sy*_ZROATL> zzkq^->sWV*6{j-wd(rbC5~#Q%o*SRzmUDe=c%L6~DoD7Fb(g+!_Vk@jq85$>D((np zEqv{!P71va4qtFEqk@F%Sa*pP!18Y6b0C3=JA$qT^!Lc@T<;uS=)e~{60T$2rLSZ@ zzFHRVCXhhI9pQX8Ay#3B)4FXt60T$2rLV}|8(mwx$3X%WcZBmjPK0y)dAQc~mK_P# zvF;Kp%jI>(cZCEh?g*+5(sw0R#fQ^6dOH%XW8EcI$cuMgNTA}5aK7{U?3@P>Uf^|- z9SPU5?$THKKln3`ct3~)D((p9`@!DMxd!1^AMLOs;X2k`Vq$@afdne<2xp98&iM@C zrD9gwk#HUBE`9RCfNU?syHq4laYs1cr3N_XOoX52bL>dCj&+xqAQ3pj_?shviaX*i z(VF(bIWHr;eETpv60T$2rBA|Gem+6G+eQKvcZBoZcJ(LYjr07_ji2pExQ=y~nCKz; z0FXe%9ihMBr^!an`6c0#D*M}!a2@L|eKLvT@U*}X3CJ zJj;bGHY8lfx=WvU;}dpC^vNKBiaX+p5kpMt32)Xp$cBXLSa<1@dtCF2Gz|$<+!4+g zdM^=OKJ?s5qg^_pzA6zMkfN(KW+aqen{*z<%|E_7e(?y_yM2$~Jp-#QTOQ7QDlw6T`T*lYEZ8PH!)B_ zV(DO2{+`$`ul7a)T~%X~)UGqmJMLS)E1f_EiAwvEM_j2jYu=6GJCZL89l8c=^8xbj5v&RR?FS>?Q^(NbF3zNB*98 z@t3DJ66mU!ZkIZ!N^SM7<-5`eRFEj2WtaRtA)TpiA<(t#{5G{#Az8g+iJ=pyAhGc3 zHu-x(|8|i;*T18;sEv-b_$G!~> zc(_Uap7`rZT?>J($tBjShkxy(-m=8d2~>~>Ew^6&p3pxz66iWzd9^z8mto(;& zn?P5-cLUY+p0qQf<#XsUP(dPFxr`LpT;%2z34Qs*$?1>Q?o#H3ku=AW=@@nxI~?{LOU&6(m|c z%_@IS=zl>Z(6zMwCr5;8`zD4?pn^nX*H3}p6LV(&@Dmc~Iy3Q(!#i0~FIql_PN0HB z(t|U8ov}T(5+c8~#Lx*;kPwv@llb~wA%QNv64Lls3zML~g!3Fk1qr?K@;$McDlAB#OH@MS zcb3ng6R02|YBk>wiBw@h0$q9~=6UaPSXUt=JFE>Q__69W|_M6JdozQ#ZTU7`|V5??(R4gF1l<5~5b~4RMqzEJ&bBuY@eCx>f#SiJ=pyAfZ=YEX3FE3JG+H zO2{`c=nG4O3KF7LV-jCuAb~DX2{8%!*PXwKs30L~H74;j1`_DfD@%3{cfi6)AF^R9= z6)H%G%F8!|USUB3U7`{qr%AIKdJS{}6(mIE#U#Fd4kXYeDj_EE^>d(tgs9b+#Mc-| zpi5LjOyX+{RFDw08k6`M0||7AN{C5(je!ahqE=%PUt=JFE>Q_FiLWtGK|<7OOyX+{ zB+w-)Atv!P1}aF1T8&A3je!KZL?y%|zQ#ZW2~n#tiLWt`K$ob5n8eo@s30L~H74;j z1`_BJ6&92D8Uqz1M6E^;6K{tpH+G%&?>0Bm-?i&kd+Oy9d#xpv`@OB=+N11eqsMDN z-!P>HO-@?bX`nwUNTdrns21)OPIwZrrPIJfB+#YP?TXh4@YLgJx#L2VZu5iK zt2})ZQ9&YbfHOwI@QOtAj}1{mb_cN|)vW}&^j+VI=BN{Jz#vw>9Igzx7Q^P&>zarP z5>hi~jQw9UyQW1E@e>iA-w^21_taaI>JxC>AS!k1sYD!3Ww|m2C8C1FwX)6_ZSTfW zjI%v@Dw`8iS-|TS76M(@a~@S!ob(BB61AQ*RgPx&;1!4ZCZd8wyI0A^-(%S9VH6|7 z!=}oU+#bB`BrAcg;2X(my|q38a}45mTTkV6Gl~BcSv(OHB#IgPz=`2Q~8~U zCDW}0y2@@$R&NjW2`E)fC!X(3uk^UznNQr9nt%!t_a-`HZ236WrfD;YSV6?*C@X=k z*Zq^#thIdtoW%KIQT7hX2!8qFk_1$cSXkE?WvOn zJ{LSCWr?UJ;dzH=u-G9n$-_9K_R!vd6$>5MUzhdMp2d;hh!LMROqsi~XX3pxTO?GF(7PMWy#YhxCn{6@)36JNj#&tF>3f4V zviXP@ReVB~LqmKMvov}kp@M|orD^UB=v959(&k=@^!(?v3<-3Jy>lJejn7db-z0@z zZTKDaFUn9sLhm*;_Xg~Jbb_*EY=X4e2x*pdvk|svWoL#I&9_Y~8#coi~wk-uhdD$GjB~*|YT5zXY z@@`!b)zKAhD zO@eLDyigwXyrYFcm#Y`g8DnJ46SkvGLix4cLnTy@I6ZcY`rBVYDv#E`t9EA;+s$F2 z{OxTkfv(TPqtsWEgVkD_bfQT5+4ioKC1Z=#WT+sqaQhbZeV&%;A8+*Bz4&F8J%q03 z(H9 zwpIdNMXyJxk8*SpM4x7Pm31xXJg*VQP(dO?ff%*<%$8~<qmB&|O*fN`yK-Zz6(Q4_Voz$KNQR_lG zE16>yA=o%G1Qd}l-yyyiT-=aa8!`c*QlC1dVZNMEBOwlNEg+z76M)E z>n&DSzMP`&H@+(^dw??QqTO$9y-FMvB*a=v=Hce7dJ)in0~R^!uU$g@A z?eea&?|RsoM}?hZNT6%h*1>8G@3rcLRQ>AQ?!{vJP9oaBzQj;LqFd`;>cQ|0f+$#0 zwilx7`KRrX76M&UGxkz5H{GDVTdv;d?1iD;3w`+?mp!=&Ie(GcEy)l&k-DQV_3KFiK+r?gsiKy4+f41NAhw=(j z&Pk{s5tkgKp89o*_`lk7vZHOo%x(*TE>{Qb>?X@8#-dUoww}d9c{}-ngbEUw z9@bY+b>1doH2)N2OISv`v5nbpA<*UOxpl_qnB316<{Qd0wfkE_1qt69b=CfbcZwLd zM>Mfr2@mC~uN|}y=yLVkI%5ne)XLVmPbiP}J|UrkMDMLN)C@a!ix@>~HMafRHk7xo z__u{X*Vc|dswKjqWVF-nA0w z8ma!MrdvW!Mg|cQHQz2bk$4+>F^&ongIjs2Cp*NdrHx+(pN;eF`I<|7Xo8hMSEZLf zs+CW~sXrLR<11V3f9Lez{kr>bRFDXm;H7q*9IJX7zljI0ZngWIj8N}|Q4*S#nsmyx3I(BlWMQcHd_gF)v8-TE$tDn zPBDnM5hv~E=xPvT@5C(%{JV?ez0`e5tXk2y;!GZS(!Tk046`X#0$nZIR8XhXju*uE zzb@EU#0RkxvwLw=kZ5?sOWkrRR-J2H&!-Y$i=|rlHw3!!^sJz6Z5S_zTW7D>3wDo` zqWbeU!=_UlDXNsm4cwh-w0Ts5!S*O8z`8lU{_>qL9mO8fWEqhQ01@ zCD66yhYyb6Rf>p_Y3_1+sX28LTkajjQ9(jX=n{Jzwy3+%-r!}5^zXBg76M(q>F+v1 z+c-pwHnb0KXyXHZp1xx_DoBV)V8*L%bb^p~WN1^_Q)KbP-TfDfh{TLD32an~bAd%Q1 z((%vO!)jrJ@O$WGUvoW%9shfXg+SLUInvRh^I>(A@mo?lxuAU)5w+6{<)|RxDBRZ( z8E`}pZL;RDH?*g+>#Mq12y{Jp(#J8k$PqQ0@tYV@^ntB55kqEl=cpiYzN3#L`vn*A zGVf_yVfx)YU9X9SK-at~K92Jnj;Ob0>UWl>e^_fPK*XDrCL9$cYER7K7+EJ-5IYw{ z+HTSHBkzPN76M&++h=hMPLr$-H?C2);_KUP6LI~16^;rL4?W|PN)B`pKZh5x#nF{> zP4Dy;0$l}P$0en!lB^DUp{&xPk5f?lp~K zNT4feY3-yb6_V9+3-x=3xo?*w=tQoeQ4AF%+D%dXhWNV(rOv(mMGJ-UiJL!2NTAEr zTR(C9db)?xU+>PQdSXPMGZHFDxVrA0grm;Ax~>?gAR%}52{1p$l|g;{JlBTu;og5s zNT5r+k5-*AA_i~ryIzHAuccl~s36g(P<+5y+I8CbT~&yG?3Za)DF1Tml7&E*Yqf$i z#-pPd{F}56<&Dogl2AcnWz{T!J;Plw5`t^{7waF&TQ$0CA<*?+Z#Svx+X)RPEhxs^cI@aMGyE7x!lzo)d7M$%i$9eLAp zRFGIaHA|p*eiVG(Ryt32ecSU{33OGd=o9$vmm}hgIA($B#>bPl3|M4^~0f#z8| zkBIbCfqWcdCD1jhi%+2W%aAV3S}8p}bH+Vx!cjq@?O#~}PYy^HzgIodt(83Jx8w=^ zmLP$y_~|}@=I>R3SG%R*d-Zx^4~_~F4IgF+%ruAIz#6~1Pg8eGhlz;$hCtVfEk1!2 zKf8W+xA#brKAekTtqu+2s31}1QNA8^oKG-z zVZ%3n^tAoMIAyxyrc`MAXod75iaff>C;~nu1@=3)3%E>b^tbUc>ECjmn%^&@?*XgI+B;slJSqv2< z-VayQZfD<%caVcSc2qX#ogAK1Ed;vo%^&qlbZ)P#Cn9*zT!sn~6-L<9%QZ65j5z(R zWn}&UWj~#RJ0DNB5a_};f7E4Bnkg|vB%c3+p@PJxzy!7bnLOehWLbKn=tFfMncgTO zfi8UWr)eoWODcXuY+L&qLj{So|Lj#eH}+6J7;jACKD@ENq~FBLF^wz)y70}Prq#;$ z%AQI@rSE`)6rLd z`%tQj?q1d2LZAz?l6noUKDQ4fLLJnbp@PKR$Gg?*DK*sG##{Y7zKe}F?q}NOwh-vD zX8YnI3+*4M;&tk6VTKA4_(qxb;8{9GsXb~~;v>H~3^QDxrPnXp3uC8H%t}o=ylbTL zrq*Z4qtHTz3KHX1C~EcWAH?~QamFy^(cU2Tma-iQbYWIfU9{~l%0eQRI@T~$keId8 zrk?DUNu6w*9}_6s-=C*li9X_#TT>YrOqYZETz$C5{$Xey0lLust&@1iCOQHEp@AnDQqPe?`w{ zs36g=OssmKtd}@H{=N3x{(_$F0*3Uq5a`0J)U@6IOR+yAVnn793>75uwce?wE$t^d z2PPC;XkS9t55HH1Ed;u(*?#@veET9I28}7rP(cE_AvEnwu2IVI<0%P0Y+21P!^J#H zV@F`jN=-|=K3wtJbW<8#Wj#X$iKa9+A!$%1)p`ARLfNjrSIeWWu@LCOtkkrdPX;M< zh$zjsGgOdxu`NOM`!TOLKb{}%sjQ-_!G$4F76M(Em9%?ZqwY!s5h;8RLj{QegZ8Pj z_j;&4#`R<9NR*95p5yRg;}X-=Q{=|Wr%3mcMn4ai5_p`)F~w@sEToa<$1(c z@t|z4(0ZMPKo@4Erv1~+M=3%?u4`KvDo9*y7pwMc?WrkrP!NOw*Qf3goQvCW+nA4eR^nbKt$BY zP=*Q;v*&G7^Hpmg&X080=G*ObHJBVy+Creqn(aM9=h|&V{BpGtLj?)!VM?!}>!oX*cQI6un4~1ArEBF?pBVR7Kc);) z)XhO`CS^Mk=)$bjw5)9hC?AN(vN(~Uf<&pQ`_%HMJk${5`Z2Ugccse781^`DkA*-N zW+h#tmUUHX5V7F7gQ0?iSJ8O24zHkAFwTz~ld36 zgQ0@N!0=f0r*L}DVw@i>y89@T=*`az%625sg;}X-OHO+$VMJ`Gx0j)U#JPPt)jwwY ziSy$vWxEe$`*X^6B+!LfscES4BTRv{$EWe@oep z1iCOQHEpH*kG&QV6aSvdP(cDa#5ApJ_*{Dr%JzNND_ID1S+hOQ?IBA4Hyxx;O_CVq z66S8$pZnB*uX(6|npV$3SIwP=eIC(q9$=UH1C% zYW{u|M2x5Qfl8NINq!{`pJu2aA!b#pg^d*>^AGh^yr@rR?3K$F0$uz6idB72c&S&6 z&#|v?Kc(GE-^4DRZZTAl&}VMPN7q*K8!@!zy_BugN&eHy`xXLSuWIa419SL`7*A^S zQu5n+Cg$7voS}k*K0Ex_YFW)@#P~aVcg3;zt(0T&D+__HcSED!A0$tc4MynwH?4*Q_JnbK{FC#|<3GDaM zwC4Wa%HD~i{Aa2^aqQR;yA`N+zl15+Wus};_f=DTmfe)H{NT$`LE>252=&YG1!}bM z7ko$EJDGO{vGUZtg9N&;%SO`%-2PEXq`QnQrTjQ5NZ9XAQ8Uz8Ec$(Z=v_+bO_jTO zmuguEbYYhbz16Qyca}ty>0F1Sg2dYMq3S>9m#MKvJ+XgW3z)M8D6O{-5kAR2NNtQo=%@3%hJItz6w#c8!SDW6E$; zkoc?45H;O`wW@5qqu(;;qyE;(!;K}5*)>>L#&mM-e0mWbUT z`hBveF1GKX-^4=iE-@s~gZW~WS_pJu&kR)u^VGD*5s~rBEQSga*a1V&I9aPH`3pZy2;T3w6;{13{+1`(8mTM{7kw6z_CGBx|t$`8)WIs>DsvG4wDoEtL*h`JLvq796d6yrychjFzZ)Ud;=)$a|r_>2{doLok zZOp|{LBcajC$+>)>R314b9RiKXRkr;aaJ_A&X7PCW+i1}+nM%qMBM6jo1ub4jT|l2 z#XGl%o}xg?_M?>T8$Zvo5a_aI`-i_P*-sELef(U83KH18rD>N}RZ!N24NH7CDv)D_ zi(Pxv8+84^tkkqZOUf$QDu0&3gJq5i64!Evsl`4nQ`Z>Rk4u#8v#2I>n6e!SbYWI% z+P;)x$`c~WbgIu$LE_W9F>1;1RcamMF8mkD_HBQ~u>NuW76M(El^R{7aw~rjG2(Fm zM+J$ptB0s1udY?s8`qDJe3_K@RFi2r(%V9y3$v2$^l$v2*ojc<*5RliaWhA6bxGEZ z;`~T^@sWKq)%0^;D{mptg;_~EH8r?pUqHl)(v>(WNPKM2NgbRsTAUwu$J_1i>7KgM zhFlf`U6_@cHoRt>{V5SVC@)6^iBT36!h6K7WE9q~3 zcB*|15v;*K3>75&D>YCf7i<&f$CWFU>|t~l?ioJULZHi?_qPbbeq~YFf2`63WAQH>C=V8gW#R*qLLjT4UBK zaemySZ0}EZOOq+vkw6z_rKXJxEU2U-V*lR892F#(Iz(NPx>lSYYX98IWLoc>{$YTH zKo@4ErY*dXRf!;C#H;!o6(m~M?X4E6vQeBLr>_5?9HVE>*1mNt1iCOQH7%j&2m1*k zW?uEDNGwJGM=nAHSWNYCl3X z{U_`nh6K7WD>cn`NT@-)eE*Q4f`o^MpPH@hPH}#Ck1cI)PgjF>m*-mubXl{#%d5in zc0|-DypW-S1a{48+PJ`?N`slB{0B5>&N0Kq?se(~IzKQgHLdfL!b-7n>!p-N%{eMa zl)5-XeV=BXI6u}>wm;n%#QgU)wh-vTtkksM$L3b<5@CDRoTGw7t}eaRZ1py(HH_=W z=!;pE!F0FO;7xrCfiBES>Y=ZcLHQpM+b%Zds34JLLnpOIaI`o-9u@mwe@AZt_FnU| z5a`0Jq`YeQ%zl!H;~hCi1&Iy&TB`E`V#N6o8F9g0mhP5zHuSU*=)$a|s`IiF_6kHK z*00V{K_Y%d19i*4+r;^?gR;GnUX!_;-$I}Zvr^MK*4$vPOhoSng*Ylmcy{npbI;f* zdYxa62(>%tYVhgHLxu#pFe^1}Pv#N!BqEfE6ov{C*p01e>s}YO=cH_3U1Xt!K$kV! ze{Gge>5`$N^dz+v$6T`H?y%nKp4J;h?#}edr$n77D*aTuH7^AU5@I(=^(>t$^m}z9 zyK=r`g5>jSI}3rX6&E|H`@*8tCC2^Ltyn?ErFNbXBVsg7Nw4fZSU0iVLAvJ!1qpq3&q*)0swa%k(IiV6MXr{H4eH#* zLZGW^nTBfW@a>`xdBx|CcBx#i#C%1&b5xKJyOgTOj2Nr_d}VLE`K?qvhm}BA*UbLv z!I%E}dv^tr>%2TUDo9k%?UVFjldHFO>4QCq3O#ey zUzy%QpbI-%X`al=)C8UQcVBvr3KDv^>HbhxZ|$(uB?~%+f>sk?WkqvogXI*$}o{*hKs$)jq?MuQqz{cEn%-OeU>^u4B@CCktV3GTg?+*Mo2G-_$~&3$s$ws$|b*5Iqx{a#WC*Q_m-<+AY`l(a$R- zaR${a>(}tK5a`0J)U=AziYMxGig-IujtUZbjyLo%27c=&z{O}T<6Cjn#QHi@uGQN z76M(Em710`wYa~FKn01Nr+fm;>&M{@seby^;3HiPkU$q^CA~|1y2oE9>d_Sk6(laU zjSnzabNqh4pZ_0Jlc~}=iXnk6YqnPiN-~JcS)&*#NMM&gb);0kY1>isX~OGqp&T>( z!p8iLLmQHf^8>SzZW$^Zw{@6(Q>s>L5=RAz!I!c)%r5VHm6L6wsV{sB^@SsWF3d_z z^C>*r7D_}!!4QrL5_yitCw(e#RNP;AOpmmcr@N)AU4~l-bYWJ~{F2h;ZRLmapn^ocbaevE>qqs7;{N*8fTq`32y|gqYFe9W zDF)Git~jV5v1Mj_fVp<5{M|kN@$}9sBdtV20$rGuRILpyBg~Q=6Ln(l>){*~B=n5Q*TR+U%|5h9{N;EmyVSL(g+LeP zn5GSV-ojreE)#(Y62DZh6JTBq_6+v*Pom%Uo%Gv|1iCQC=x!-zHc7u4w4v(h7n2rX77Y2*lJ z9@AO-VnE`E5($#ugHQ{BF8y1-G{F@^UY#XT-DUS%@F~prd$<%N7F6uae+YNQSkP&J zf1j8Xsj*BG7vSGQSB20z0p{mOJMg6cyJCKcPwt0tRFKFuXL>-pcCHw=b5@fwdZuB| zk|tRQbY=J38(^M;_6@_Om(P17E{h1`s37rj_p5+O&zx5{P5V2;Tq)ndx6;XplPm*Tq-{D~>M+FI7W29-`Tg$NRS}U49*<_2 z<~}W@qc@6+0-IP?>LD@nUZ22ej}D7j#mTy1q}~&7FtEv)Zg(JEU~9sI}^p0i3>U5TslSu6P zxldq|(TBwf&{;(zqziQSnrVZTKo_p_)UuxnI zK7&6i-{X{&w`B;&^A6A8*F{zbnrrokEv?U<`aAY-_n*K~L84r~sK6Qd4;kmbrtQcd z%re;CN>|$cY9Y|Ib5UHNIYA(^UqAMyVUNTkgU54JkeE4E4Lm*TfQT`~do=s0RT`E* za;$|wSF7hI0?kPXpH59-*Ot~v+}L>>M+J$4Ypw;(JM9qD7JhCP!LB??ksKdKTL^Sj z^tc;nPIP$Qbpd;|R`tu2ZVX2S3I9Ld2DZ7Ph{+U>mn~$&yC+EJW{$ED=vrFjLtyaN z$rQC$uV*ori%NrPkL0KzVJnGl4VIj~pWke>~oUqX~co)kY zxL#^ka2Q7gi8sD^WpnPwX=yvlzA}h;J{@Es(3QJtUis3F1ToQJ^TI?HNJPeV12`&3 zWWC@aXPZtdw~Tjpn*;W+D#v2jn5Nw=1iD5m9&-C3`^0pZ3eOy@BN5TdyK+>JsM4^4 zY|fKu(`yeKLeDtQIs{n=bd4@wK{lt{lql?Ay@(h_Giy*m!e_ddY);b2b9F20MR$ER zn!SSrx_Wo@lFj)({_POW=-PfRNH%9|t;$`K-6NtDbyJ~&M2#82GRz8V z^FJw)=6EfpIbKMh%eDKhbMjZo+I^(%G%HN$xYOh2ipFj3Us2~wJf3z&kU8$y9rBB%Sv~r%* zs5woDU9;Chplfi%B>C^O%LGwnYHKFbU$E_yDGU`P{&#P*tQ=Y?Cd!p2q8zd-n_M1D%6mAFKqrf<}hQ<`lt-{XVhF^ge1PO%X%| ziD5g&$Y$qqy1t*-GrH?bePkuj<=7r7o3jneSIN%DA53NEs9zKnB&OXOBbyzjd5O45 zMAA0|x|ZDzmCc^*oYxBQY}94(jJjA+LE=riv9j3-n2iVzB2vB~(A6fC-EhNx&&Ld1VdmwGSO7O8X<^TD}MjRC+ z(#@SDpIp1#=qb~*#jVQm8rx6%f38{ILZGYhhbi*=CX0I~n2Xj=AxN+A*HfM!BT9C*FQ)lMWHUlgKy6`Hh zX&Db6WyOi;5!sicf<(h^6=ZX++SU{Y+d+T9-4Y7hXlF4>?q2*NC`Yq$WoNiS5x1WV07%wbup~Nxvn+dk|B8(ZeHG-b{JjtUZ)f2kmw^ZFK1wx@0nVsVu1NT3U|Qqx}j zb%9+XqSTyT92F#HAMldRNriJpoMbTdfvkf>ZNDR5$Kz?3+yEs35e^c2h zx<;KXR?|YD3$s$w@-8{S&JiKW)j29iOqkzNHhVdzAKJ=hQk|g#b!H-gF3d_zbJU7s zvx!(n-Jhr+QK3L5*<1@Sk!Hj9qiiojo&89l3$s$wevO^SMiVii{&j{55^aC(C7ZKx z(^sp@3RAY{rb)L*pv#)=MN7&|pQigSP18jM3A{Vgv<{okvCeykCI0W?0FD_xdqGt> z?D`&~9}2UQc6L~Mna!*4S-L&5FGmFl_P3X8PQa`~*`ABm%Iu{Hm`I=tvr^LrZo12w z5OJqpca91Y_H_Pojk3GMT+S~iudpYM7^d#+U?I?jSxN5={=Lt9)fhHma$AlH66Mk~ zlzkd+7w1RUte03%>Re9zyMcv37iJ~RlnuDcS`pDNTBhG#^E^Oe*`b!Q*~@un*$K9l zIx~H#GZP7PVOCNVC*lIzMnrk){zL_d)YhG3b1lGP%J%J)?V*(INT3U|l6DN4U}sy2 z=tyg2P(fnux?Zxmmh9uUdCZrd?kY;x84~Eitkkr3FBY@9SL+{R%%+Q)-Tv0BG%>V z%27cg#-pJ;zUOw)>#V)I&q|z)VLst)Ed;tSD>W_dbt>~FBB6LIjtUZup0$*l_KFd` z&R?XvtRGzsZfue*1iCOQHLXRxXDoz>+U+?<1&LwPI?3i*fL*^`VE*}O;t6&3BY`f= zN}A~;-(tQ*G^Eu7s34K`ZZFwfOV*UK{S0Nh4`n+N=)$a|KICPG4dTs>>>L#&Hm4mT zo3qt7Q?~2#eS9g~kw6z_CB1RayNV4UVr}?2h6)n+#Hwk7?>Auqlyn-C+iedEhi*5GCgdsM8Ig+LePn5Km# zd|`e>WS-TWqk_Z_J3Gl{XMfqo&zSGNR8}{bTL^Svj!`BS|G)x?D0$tFqk_b_BE4mE zWmtHlTkHna`X-mDWFgRnIYw*4FFj(niD-JgJVynI1NDc<=E~w-OAoW(>DizICjnHDz`6$Yau!;}8dAL^NwrG-FOp}Rw5b9K$rzY6lIw9{X! z3qc$eBx>FtDR)1)T2v;kHY?0KM!l5|j%;Qj(1mpkniR6FIN$Tcv42EN6OIZJSl6J{ z%cm>zpYxybA3c}xlys4D$wTvvD#zh~2-!86z*_y-mZmaq|3{>hYYpS5Ao25?DYCh4 zd-J4n{16e_`q#4%=)zhJO`7_(G=E5yq7i4fr6z+!!lNm&IoIIDxYGO^KdVE zi=2HpT{)rNhD2)O6xrPQB>BfY{2!{^tr}`2(1kTX`U~zz%Ma48Pu_rHmg*o9l~+uW zqi!w|JD=7nsc(_Eoo0!;Yx>Rd!D4%>O%0i$EYyH$Ma_y+d533k!mydL zxtEYnRWF`3-_iZ0lIw6(kob824|#Th+3Evh&CkT$wfM*dZzZqTS{4FbJ${=bn>!q3 zuJ6MiJ?)WrVoyzu3KALC%#*kH&k(yPHQ!K&H*ArH9qd!hLZIv7=moO5Q&VM6ni~1C zPU5H0o*Wel&Bpxxfuhn|xgWLAf77;Cvb&xWDE@2_itu6ZvK_R} zc{Kg*M#}{)1iB*Lu9dGI9-?+M-UwaZY!A_7Wc$66mVy z7cHB+@a>|NpZ-LgqdoOdL1Iq*7}?zEuY5gEzLtJPFVjwcNLXA&V`Ovx!2*HR`Box^ zFFnCDP>|TFZIkD&ZJ<^#=0LtapP%b{9LA|zEd;vuoZKdxQ@Iug7UI!F_|(|IP(h-= ztevts=dPvpkPW6^(H>($Ed;u9cibtPQymLOrm*2eq+}bxP(k947rSM1PU==#`KeDm zok&wpkw90DJ-cOd576wihmgLP>3y24iV6~yE5^y@UZ(zeZc9^WpHa0>dkG12?M%Bz z9-OtZ*vmBi5QlV#_A=o*{fCYw9= zZk@`SX`vd;7exh$l-LB>oJiX5NKdZM->pvbcacEXjCh-D z&iLK(WDp-i?`uD@?FAf5TVaWO-qv_kw90&WSeZxVy#wuD9=0Vt+ajh zPKF8+yF6_2gn(?uY)jf_bo&V2`+f5MVrQZ(1iGpOEAsj0pNwhBnl@=x3+`w=+W%N& zVUAbJIp@~NzwH=gT#@k#M{E23ZOPNe-jw#Q%*#Uz6(o{IN6Y4(tncU@YCC!#b*fSZ3xO`Y!qF2X)neKcky-h| zP(h+`zZluvjrLFn&ePH}&ReR@Ab~Et!qMA4s?6)VJI2U&87fG;sI*;fdbWX>nR$uc zLsg_Rs_^m?76M&(g`+n=9yPfi5h+tth6)m=m7TIVGjnylLVPu?V<}K`gM~mBUg2oH z+Uz2HIT8Pxw49-WM9+$`vN?0P+Vm8bhkoH$))5v0U3i6~9^sqMS#Bcc4DHQOL1KKL zIN6-pe~Yf1=jh7$XS>`M0$q5$q7De(rR;Aa;%MJ+RFJ@{53P{?vkmvU^CY3%>^vMZ zJm0oW@|T(2)pRtM5wlXChS-*OXz*ED+cP^y1&N(gqGfZhUk7FTxb;D7E@e9s=)$bj zw6ho6@xerdM5O1aAWj z6cL|kN;4`*l1`pmAc1#IG|j3*NA49oG_iG`tQ<4E zY{xC~?TYP;^8>SzraEru$g4E}EY)q4k)wh{hgmVQxqJ3n%JwW#L2L+RI}+%^tkkp~ zRLeiKiB^W4_{2~_VnW~T^6v#2ie12~(0i!X^gim3x2YBaU6_@c79Q4?2M{s!BfaT` z^8kstId;j5Zu^Ou%ih$-kdtN`?xQ!oNT3U|lHLzeuY?~FYp7EQ6(sshibWPZhR)00=w#`YEhU6_?LS@qK!mW_xN+Zr)ckia`~swWm) z&bm{!UmWmRLIPdZYQJOj-P(dOgI#zzQ)=Omj`Lm7rDe6{lPq~W(x-iFR zCz|MH{0kA|iaHo7NOb!YCz})aOLX<&=c&7`+m)>r0$rG6G*#uGFaL*#sX^-)Do6}0 zxlcBCa5+x7`+#ycQ|t^2fiBE3O{=-9Bu^ot+`8WwDoEgS8_leF^M(b`6XcWVMiv5H zn3c41R=FNLWB<|qNB!S1%%#2gcFDP8{MFoaUxI&s%J#S2c}4H_(&dG(87fFTtG!D$ zXJB8Wyo#lnXKN_0kU$sy{Wa~E{Dh{Wi-3>73C2V&(v61_ww-ihnLr_lP^WXdZf z(1m}0O{<*LiFYER!kCi`6(p*aikHn<_kF1&b0YOwHui8>2z24!pC*!a3gVN9I7ZX) zQ9+_q^L?_pSIUM%zIUQzd!9CmC2v~M#O@(^sXK<4hekn*0kQcOY&r@ z0X(6+LIPcwF`AYyxi^oj*irglsfP^z2KYDM^LMOl&Q|}NsShuFrYP+w_<*5;MAPzn zLgCRoy<@{;?K?dG@JTrX-~ZzeWzInborcCRN1S7T@%%Ao>|j2Vh%5J+GgOc` z7Ia8{_+XV|yg`g*U3on9Ca-ejxvTG~w{_~zyaf@SgMVbGAQ9zr zSZ+`&QV?f0!Ca z@jil>SEn-XPkV;F-f_`FpzDXY!*by7eH^x`St!OMTJzeMh;s2eBvg>_7Bv=Hd(GyRC%Tf3Ole8Eq&tM1!e=cLmsLwVVJF@C5Z@$Zcz@~aZTNh7_>6Vci; zRq9+Tl!p}A=!Xgt(N&V=5g%$N#oP4H(Y^Ck=>g5kX#L~Ux=5g_#-}54d#{|{&KLpX zY29|0P#zcYcU@GFm>ZC65C;@JhKuMo>+k(Ypi8GmeW)GaB#a4cbcg)=%Owe@AaQfD zGsc#W`ro|g@F>QJIQz;*psQ3&vV41}Pe7?^dbUq)@5%en9hoDdcp@rDwEEzTG0Zpz^@(5ltd|$R zSqXHtzn3i6Tk8`r#~_x|ERHMm9F;i6HxU&iE>}8g{5{$lza<$THsw#~Em`1TD}k=7 z`H#vgPWl8mi3#0%@(olk$@r>8A}UDuwsywYZ~VfQ>D7}TiBDxavIJQObb0$9l^3Pb zgfW9yNPFF9pt@+r`dt%ILBfBiGe&~(OTC(ilQgAZ(l-RUygMD0i{_{kaKIpb-4nu( z(u!P1jlPMfAfbghW0d>7EzK|;5F5hB?+#*r7PAuQdN=5(+^%??08fMXEo~^zQRn|$ zopnGJ>G#I5K#aA;z%En_3=m=NFe75uT9{bag<`C6Z3RWq6+2Mu76Vk6dAXwkDk^q& zD|TVv{LT!szx&L0|9zg1v)noFynRj*N>mPsmJ4VI$4c3XX$0zc^|4{Gzet`vh%k6F_#j`(B^@_LH!_j>luSxs` z|BGD6vrr2vNX%|_O5D9L&X!C6JAU>X&tKZ#-r__RZ;?P3_HdL1%3%Wkl?baxR|_gg zG#znT{PZW<=xbL~&pC*C&b!oeB7rXK;b_(Q>PUVH5gD&MET|wcu5YqfxqY}TT#u`= zVSV@x+P*XOoJgPxdpMdqZ|^!OU-291`fl z9*%M$QGN+0B3@9w2~?2yu`5Lk5xtDQ_FYCTelmR-qN(RZ0$td{(KvBhZQe@6hSlL5 zDo8BPohm*U>1?~Nf8nAF<>uSaH*qah14jZ~*u$ynt^v9EwnT)_aN$rvqGr8R@nz-s zBscv_y@j$rwW2R|bju`PB+!NZm8yPen@z~~2m7Le1ol3vI`#8p{?$Zw;#16M3r2Wk z;wka|mi@LS)QT`FDX$u3a**S{aa&6UT2Mh^>$KBi;ewlt_EDLleH`r-&828Z0$muD zs>+X?$d4f6c{y(jDo8j@O%`AE54Ua6zgMx>M)C@+_5Gn}M*>|Kl~nOI=V<;C5w*{j zw4j2-KK~Rks9vzqJ~nRb%ipAtWk-s3B+!LXNi+KJApQywFI``7s36hcc8Yj(w3n@t z-s8B7t@t{$!@H599SL+{RMM*Rn^t^nBDPU=c2tm9S?+9WulIuzMSCZT_FWY1 zNT3U&lCqJ!tj+&T#HADd94bh(pfN*2ulS_w5r79pdlW_cSc-Ne(1lS+_i@(Hn1P7j zPmlVdf`m5u$m{8qlszul)NZGxHnorC6zxc$%N*@#H1^SmVjtJ|pn?RBoM>O|>=b@p zo&kw19NSqi!Z)}ii&M%***Iz+7?pH(F!~>UWkUzc{CPeWRFDXdNEV$(huaG1{l~)* z6ZzipG*>I{Z6eTxQAxEqwoc+(5^?F7s|6J#g8S15xnr==K9)L+=G)Qx9<8$x5z8x-wGpbMi?Rp(L$HjN1O$nZr432jvSaI}}vK8jQJ!2L8r_NQn^0$muD zs(OaT)EcpB%_kpJkiZc+)l1c~GgGv8{=CLSpvxTX<@-2 zUfYTIHou%NDoB(x%?JORL5_<4JvvYW#$V zP41~2DoB)wO%(?}akd@SBe4s`)fviFT$kbs33TE6r!4=J)%XGt&f(!4DkdT;RUG&r zK54i9-EDulAD=*T&Q}yyNYn)vzJFS$uHT=x5fL-K42KF5#_Tmo)W5sODXy+iT$QCP zl}Mlq-@mGsqPg>BBBqb`_C*B=oOx%j0R+=mH2>^!CIVd;F{+w2*UG<0D8qgFaGt~W zTrxdXyy@p;Ye!Ln??zSKgRFe9gl^oK(rFwjNSskp#ij3^jVQS^ z3*U{Z#=1=56(SClj^t25qDq-F;=>>DN!d|yh2HsoI#oO-EZjt(3*U{Zjl!q7Hda{t zM|ztGbm7~ieVheW{*VLJciy~=!`}zr$Aj8uMAv-Bl3evxdwI|d{-1B-eJjri=TJey zSOZAvO7CA)ExuO%-p&Wy`u=rI1iG}7DD!}LDxY+hy}(51bnW$&GZ>}O~# zDhIWw%cavKRFKfxO@QQO5V`3q`i#D!73-v$2y_|WO5v*h6)j9(>ia}Irs@l*AYt_L z2GNm5uajx?TCCW22?=y*W7IzNf`vEwS9Ar9kcSfCb*7|@3KH6^uTuMPgQ!cZAD*;c z@;QG&6M-&cjYF8Le?^Oi_0jJFIF70=qk@FCXR$doT8Pq#F_b$ff>u8gu9Ywm=!(fa zB^Hf|7Cz~-ySr@y_$5Rvk8qb!L85cgNpVNvIHA~5Z8u}sa5w%S?OOJVC~6|m6&Zd~ zjJtPK*rKo2zHM8Bk0s*aiE1(`NGNWK=v*;PIH?m`Z#eK#wA1jHzbYYtuGJYf@$|!U zLeng5o%)4MwX7iGMw`E6RFFsQ64W!= zdV7wKn=Hj?ggm8Cii8Rh+sDgd(5&x5{xpqfx8N<;s;rfN^0cUlK-Z{rSFqWEM{ZZVr^_Wda*G`8|J3%N?DAYq)87qkDbas^!A zo>E_!Gp&?~K$muY-`T5(SZsI-{a;1byU8&+r$457B?%QIw39VG+Y}L9E@*%Gih4J= zmUI_j#QwS_0$tjPw02L+idE7z;sKrB@upvQ&G0M<6(o!^6XMA~+B^3!PPeTIHWTR5 z&H=q~aW#lpbS|SOtr}d~*+NDI31i1y%u`R>Y4|{=knT|)mPZH71iFkfAqHWgUHvB% z?K!v3l2Jjz*x?tu=q<{d&X>HQkxb4lW&&Nt`2cZ(PI%_^<mQ*QwZqK>x(1CsE=C@66}fDpMUcM3o5mlNQ9(jGf$v+rsQ6X?w#O0SLF?4_|A#K9$bES)$>dC2@}r=jAiL>Uz%jNN{5u-*@*b{@+AT1&ebtIY(uj57!Zp`A5Y zn0?kjMgbJ|v8pjKJxCd4@4}j-j3t33Oo(N41w}ZAqJ-*Lv zUCZD8{5c|=DmRl+L85AqB6{{nGy2-Lt!wa&Xjgwqd^Hn+F6`k{HPg8|??FUarHPCR z5~HG%#3ZlBMqledJ?8^$SD$)LB+!LD9IfJP%(6TtqW(=+85Jas9FoOOSH2s4?V?Yc zEa&JPKthoe2?=yze?|FyCPZ7#5>Y1TmV^ot*!yI!0VunePXSM786#X<4~R-1CrqUF zfl-;g8dZ%}qZX8}AftkWw&s*~bhyx5Zy(bs+SB5wjyqKXLjqkGm8zOStF;=jr<}Kp z3KGT+gwZ}G&`z9|lks;aHlj=Sfbc-gDAj1jJ_-2PKGN|;9N z1EZ2^jL_ahN7|d1HP1&z1qox%!e}2&X(w&~?ZmYy?`}LE}nt5@Hdzc7xVN}wo z;)jAx{5dy9Mg@tURhW1zI8$h-j}u=|w6~^cpG?t?1iCOPX>X!(6}|%zasB$rs34); zJ{|ko(HQTxZvM;SL(#rftZgFDg;7cKDC4&5?}gqnDoEgnoU#bg9bO-b_Kc}-BqY#f zj&^M)ZdbkmiM(Sw8ROO1l@n%Dv}25A?^N%go$75R17%c@F!rN`HhOQ+m||C@a~Ufs zc9B3A#+a%)(W%KhL{xJLkx@ayI8A9p`>a>Pc*}*omSJ&2Oa!_x#^_F5&7nL`MD5zM zWK@tiQPU>6-+nB(>b*giYCZV(bSq`|rVtZ>E{ri%t52y|goW}lh3o_%IQ##l1WPYClV z67l_KpDB7qXNtx@3zbnp!Z%S6Nm&zDg_ zBC@$ny!-R9kfDEfT`8^_(v6Y0TC+?9y72we+1e(9`36Kd_FE#Og2dN}Oboi5X+&aB z_wM{f8fEbA^GpP~@cq-djGkTj3))C#_%az4B(!_!x9dBJ*^wAi!jCUYb7%F~B+!NLhVGJ4&VgJ+xGmfuqk;skYtZ=;%AIhQ-gyOj z=SZLn-=?Y#p>z7l^gd?3S}Ei2gYQE-@$XUKhw(lh(_Mh9ob=8|ua;3kLc14mk0G~B1iG{vF-_AvjAv+f zWlChGS8=Ory4v!G=Debq63KH5a+JbpH ziY0U+p6-VKq}`0&Up|=#bZK|SOT6eHj@HKvFBZ4u3*X&qDJ1`qQ9(k>sc>pn4}<7U zd5RXC_+(kr>Ya%|mzIsF!Hgc_H+{^|fN~+NCgO7WA2KRPEdFb|7+!Rs==4;(%`v%R zO};jb8Mqb?O$558KHnxvcLsRV&|LM3jI^cBv*`xmp=n#RFHVteU&)2;v9pRw*DA5!HaHM3|l85 zfi8=@N-QbN7Gp|`pq+-r_qTGtW?T71g(9HWY~x z-#=O)mR_dq_RU%K)1u`TIkeAApewcFQnAQi5u&$FbP6xVSEE(VR)P5$Do6x1juKhU zFtLW-YFC66|Be#-mJ6fR zb8T;8?cFN;7|Kpr@uZnR*Oj29Vz)LC2GOT}J^me?thqa(8bbw%q#;q_uliwPUHvOM zi-;IH6;@!PnLyX((52$ypa_F#+|rYuLb-}F+}s%|NNBkNRo^gimEM2sB;qO6$URik zOrT54VEA@Kgh5QDOoe@$J6Jvps>@J8!pK1=rt7_0DawZE=h;6o?q~xOfi5jG;?fe4 z;$@u}MYor|&V~A3@%=7iPiEX?77vgMdmlQTK=X+ z#>fGYO1&EXTj;{xhek_Ao{0%zxfv=*7`ao7e(*hIRhdHX{2BWrBY`gLeN=VY^_F}f z5r1mtVW=Qsf`>5*qCQbMhA{O1x!B9b>F^dtWP8=z^ z=ecSwcqJo&F6@2ij^en=d^izHntYZ~L1J8uXi*t8!T2)l%XH?y(%kv< zzZXmdy0G_A)qwAg{7)hp_Ps8nf<(jN>%=`(tj71s@9{;;ANnS)aoJ`f(1pDZ?NpaI zXZfUkMZfKqQ9&Zt!d2p(Hgk-AF!|w3%RTy1Fa8~9BG83>iKKU_;N+5vVT2nwC&YMa9~hN%SBA2xJonGy`nGU1DM%Q(Q;hZ@8##p5Qncg0 zg)WRrRo!mnDLTF+A43HRBU_hPUjM=sqkNW6FYdKO)XHNb(1lS+8M7#7=5HbrZsudC zAW`T+jHqlKDbCQp)Pi>tem;HMzfiOzfi8?nRgE0mh#x>itKv=!6(pXtix!=BO)%QW zwDFbs{&d=qd4HCXKo>?Oi*eR-=71p=d8aJ!ff(b|lb+ zQAsC$Z{^~15)qtrPeug^r{k-{RiSf?_92u!XW38D{*$5|33Opps_LK$$(9{N9FILH zqk;sEIOt|EMf*i+9}6kkkwBL@+98J!!+16F3F*;}F{Y|@DaTewc8)EE3KB*pEpfiy z8#FaC$~B?bMFL$IV>I5StaU4Br=jhn!VDE8j6ASLv^!GlR;Db1MJRTWKo`asjly60 z@qZDqVpw5@3KE4!MT_NbO)#RpBE@bLecK-tb21U=!Wg3+UaE|@nTQzo0t^)-IwY(U z+wHU((cX<>_dUh#{K3CvB+!L1rmD`AU;8N$xen%Js30-_$trR9nmIL9zSr z_dOX2bYYCqS((1lT%o$ak@cD6T$v1DX^ z6O-t>i|;=>8{&t<54ePlMNJA4M$SVc67y0X;SH2W_y)xl{#)q6_fKPL%2hm_i05KS zh6)n-=0=N)eoqjq>)%}uimTFeBR7QN3JG-K`&ZTRM|}BQL`=I|f}w)MnOp0`s<*9T zr2gHVIlDf8i|!lLu2aB7pbOtWos=Ep&R-_Np=J?=3KE`qSBnjgQ!aXaT(X8M%O9js z#_|I>O$55|{nIYMI2V2^5$g&&F;tMinT4u4Y;@oY(;O%FuxBz7=)#D}&Y2mPoimf+ zdp7cC>QRF4Mpeg9e(L1x{L~B;B#gY(MwC2>Z^=KSmDIxY&XGVDz8h5y4fN;V5+T1W z%TPhW@?o9$_>a|ylCt#9uhU9u8G7ePpbOs(-D3%C!dIZ3QLp-C87fG8t+rbHeR+-% zB?ZU2^AqV5>pgnsNT3Vf4Xqk9apPl&aC0ijP(cFcZFF`p)P?t^8Ket+6Olj{zD-rt zGK@FN&M?mK_rdpJ74_jOLSy&lFSjInG(il)kcG0{6zf zs)<0Ck#pUcc{QYL>{b3!e7tj2XQ&{dWoEzZGfzy@pW&a(@$v&Yk;2zB5$M8s8!eu@ zbNnsNJF(ydcZLcQIB%mF3uVV2McMHi9BF8p-QkQ*%d@|D`cg4k|E;tP{Epcf_!%ll zXxaEHo?b5A)c+1G%YQRkr=D5U+eDyC%l@y9jWV7A)jSv~NN6=Xeo(&q>}O1+Y922) zhI7uFEhYk8M%4{*hyHggqiP;0(c#?EAqLwGrLIVoVq4I8xNSZB87fFT4pMXce_a z{Hc_puy|j|rdV3)gfiA6nT!jZa#kTde^SdLB>U9wviZWD?Fe)+{L@ZS%Jw+#e z8}xZ3BY`fXVyXBjm$s71QT0Di(#mL9n3S`jaO8T7h(w*fpDoA*|ZYmBb6)UcLsu6xEgSk20R=#rQD-sgu;_LZ} zX`u(jCi|B(R#l&nR@}XrRzB;_DG3!Mdb-sYL&6RlL_*1qT%SR7F12BrgbEV9j@K9S z#2z;Ouf{iM$^GeU<@eUOVj|GBWngu&V%0cVF7y88w;3k2(=F?t*0xo%ju6 zJs2uT7?nQ7?)rB(gouxH)?nuU5a=>0;TnXM>Wns~s)*Yn2QXBSFzPFc$MpVVHxaj} z4sU~{W&&MC#ZoazCw5Ww({0(+PZ=sm7A(p_x-D(Kf|8PsFo!@Bp3ERbkl+=jSIyta*xKfFeylAHMl&ML>v8J2c!OZ>7M>3 z0$teqsOny!B>y+famF5R$xuO}@r9A%noluefc^&iQmr_epBq$y5qx8LBgoc zXY_-E{U2IpQby8x6>FLZbYbtKs^{ihw@f8sgy_ytLBgoKYV?C+saM-W{oqpS)sR3J z_CB=sN>z?`5D{>@I70;qqjIX(1lS+Gf1kP;7GTAlW(+S zs34(Llk6Y3%V;0>%Kor)qZxhcyFMlYT^N;A&nw`aC5VX7?mR;U39a(#a=*ReFuljw zPgRGyQy&%3+}%W=3!_q1hp$bu^dX`~vw92_B(%!idw=aW+Q(0-I+T-cL43YZ+(e)Y zqmnX=Q`Mo|M67G(!cak?$^aj+@WNQ5eXI_(T3*r!AT-A-83}Y@RH|xUsyg(9h-Qm2 zWK@vA5r?W?{8Y*^oTB}-%Ssc0E_1YBqFRmlKJ`!Rd%Zowcr|J@ichIGz!;-9*sUmk zv$2E4e^m#Qf`nFCGOp8hBiaj4>`tPd^UmA0CIVd;V{}U>A|GFgh)J0p87fHhN$(-1 zj@@NM`y`6p+Z65RDRz-S7seQ!R;Nk`kBA6a+Lob$gi)*2i1sZ1cb4fVX{VtpZz9lz zF{Y{l|HRUrh?6@-h6)l!9d0AqV<~n&()el|#V!))!Wg4$Rs)R6;h@AhHW~d;6<5E?P$Qz=Mkn@LS$Vi|I zqmnXnQ)SYwl6T_Uvz-~nl2)1Y>*}52D~d#X|CB?Bs-O0IoWUJ_*V&{XVboDIBJuCV z`S@v6HzVptM-zcAeE+mRxF9z_l!%@;yD(IcFsk?(kys=#yVmcW#cfRly72we81B<2 zO8`{|jw{=dp@M`_Bik4uf26poL1XGAyF?R#E`0y0n&o`c;z`8QE6o`yNW4DjBOZGm zYmD35&r~e=X(jbfnFb~TUHJZ0)y?mi@g zs{UG$m;W$V@d=(2$nZTIHFEVR!FQvoAE^%Su74dioV9U{RqADTa=x0E4_0h z(1q`YYNee0ZOJ5J(V{?x3KB+bX|aPodj0kJlcfvISl*QDXd=*s??zQ`WInf8i1;?6 zGeZT5JuiL423}}3!QV|)W2jp5WVIW&mc0y+I zUdxMFolOL~@OM+yR_AY9P7u-bST}|W5;$X}eS__37Av*d%&RR;1iJ8-ru}oOn7+I6 zRxaaP5X1j>{H=_-=*DmL7gc3%oG;Wj)4e}K1&NJ^y~U3=4;gdL)B-OoU1J__&WQs| z1iEm>N_9*cKebpFzfGv>7R*pV0%xrBcZ^B1Ost&6%~?9sG_S?E?ENRM;_y|+jk$Bf zH>WJU{(hTKrQJw|3KHQbi;ERnCWt@unQ%S&pZUE10eAh(2or&>uiiz)!L|hB8M9v> zvCQrf>N_uV3_}G8sZ?HZ^Ipk#M(@Bwmb}7Nu1iTXfv!0rPGa3tRQXMx8#K$}USym9S&TS||1&Jh< zCgeM)7)0kyA(jSoemBOghlxPfu~lip_i#mAsLu@wB?MYLi5PXRCqo5^ZLQ*jDQ`|1 z#P)K{EMKXQ`um5!i9pw$a&bb##FNGv*^MxFOC}NhS_LpvkodkoTA20al=w$qRV%Zw zs3o4xE%hJfW+KqlW_Gj?ES(aU=xcqKrv2d#6A?YICPM{@<(XkZ%e2!5vF6W7t{bgD z?g-6kBG6UkLYVM-3Egwgt*ttzm)*{FA);29TnrT?4)qx%v z1iBg(9VF~(kSrd4sjVTOKjF^ZC&I7T4jC0BejM@?+PwRZSQ;?VH_pe(@AiBrA%U({ zX}-daf0M;Y-%d27+1-SOzRYUncdfZAp@KxXvy-q|NHK_nKu_PYL#%wq7EdHpkl0wq zS?E7A#rQj3oyp_ds*{y(dFhpjKvxTwc)!ap|0A^g^8qyTI^wufMg@sny_|&*CB^u4 z&$dqT)lU50&1WXib)$2~$8#HAyw1{TmS-D0UCNG85>^n-uRy zX@?9VYU2>jfliC;9oCwmf<))@&ccPEsp49_omYq+!bQ@G*Wn>%0$qJF;{A?a`j41G z+3G@$eX?A-+K-`vM8HdD!D(r#n8U$=R#L|kQICkn|3jdwbKzrtj+7@poA^9GoV!hD zIbC{>WvC!g`M0z1j&gGj(Z8bQ7ld;veG?z|G85>!QtO!C?-FMW;z6lM?ki<`JLocn zp@Kxay!nI}Io0S5m`fy=OecQ3lrj_OD&TX>?^um92C+QvGVaOQZ`{6V(-|sAd_4Tw zZ`!+5kuqP(b?nLA;ONYT;=Ae7xs4hCP|@;%~y= zx0&8sV(&wFIoGYU{2P?OU5yyeP(i}Y^@(8p+h+V7jj2})SV3ndBF2~qbYbs9JEMc< zTXGVyU}*?L1qtC^nov4TG5WzS)T`~H6A<@n3^ftx!rn(!t%rtKHW0D>#W02n5`T}1 z6D}7yWyDnv>eUKTB<4)(X(G^ty^pE}ZsRRl_PrpXH$w%9dDo(aqE$~DEvn%{cguJh zw-;?2U?R|ky${tmr1~Y}h}c290H`4GwtTp7AXl={&Pz}K!;PdbLk9I~NT3UQA3AGr z;08CGh>J~YF;tM4w{?(kFE-iu!ZoK}O{Q<+w9>gu1iG;Ip)8wJzeFP*Eo}q%o>IHE^@w%ss_Mt`ldL!DAKo>@(st$PE))Gs^-iad^DoC9B z5-sd%ecEUr0b6-XbJ~?zVd-rm(1lT{s#Atmx3nSR!n{5V6(sWdg$r{UCL8UeDnZ3}8v@j9q!l+c$B~-0v77@ipw`8aw5%F}8F#pwm?W6Gi8(eehYg3xkG7;#)sHB@n zM-Ot%h;YfM#ZW<_wwssmeN>9kKJHVrU#B(XeA{xF2y|go(kc#B>$yfmY_Z%76(n%P zp{nJkIC3qheFSdUAtQk|80C$s+tt#5h`Bi?FjSDZk$;om zGUT)o?MEnf$I%*c_~a2L0$mtms@nUdhowIe1Fw%{s37sAXSmR=XR;CPm4{Wgh;$x~ z59?zh(1kHZkw_H;8WX{7?#oa?;(Xa)VOi-EBic_&7rg!d1r@WWv7;PfZh3|$k=@kCXc@xp@_h^O+5*zk-32s^cMadR= z=czP$eYz;fM4$`bjjHCN`V7fL#I@+hP(cFcZFGm1-g$2N`W$-Q%0!?G-=?ZI+E>|f zEZ=3{7rUl0d(6#Wh2@209b3s*;{7;i9<-bcBW z?Jb`4K9E2c{%-W^Qf~NyM3mk$nW2J2@nkRIcj^CTkTr^Y=Zf6lYkBx{w243${%#Z{ zK}lQzB4SUDVW=R1Ggehqsph~~dLQTMeIS7@{H3WD#HXB=F7#U+>o}d^|2zIx0oT2R z7+TB7Ub7UpI9OhWrTdP2GM%A<#Ie+RLS*~@=A5THo#Qs=yU3*vHxuZ>87rOg&P?Rq z7n4u)dTC{-Ab~Sh+Fi<9m-BAoV2MmJ&xCOnRFEj;7H+f8 zSZaRBl2+0;F*l9jkU-aO$8ei{em>_?33(L}&NRnC1qr8B(Kh?a_PS|*ByF8~6V2$6 zKv%Ef(Kh?awz#mUtgVFy(ONhvNSwQT)HZtFNn^&+DDIJ@gbEUuCw{jr86z8KoxfbpA#I7Y@)Mq3FcIil>;KyprbyzZK4s|4wvRf)zk9A4#@GGna#>l!I00$qWR@+srzB^b~6vaYVQtfZBnSM0Tf z3KES2iYU^m6UH;%{Z&ee*lFbpl|5-9&~jx4lNbKugU9q1% z&(YXh>KtL^k5)NtBG5I!wZ39M5nrcaOX(M#Z*T5)MM4FMf&1z!_7m|VT{=oV=?wj@ zMrkGjUEcSbD)y88FF%!%wNqh?PKBX@#LE};75j75Q4IYa9L_D`GO&&n`6VvEi1`_Bx zbk|3*pZ#z$4{@vB_9?Efc#Ml$gapAU{K&KP()9C~x(3Sk%N3oxP z=(yvFe3RgxZlv~~Ve+YE-&g-kZY;edR9QYUVqvjX6 zp>GE;RFH_?*ie!CA2CiRJbm;=?r32r=6Mb@5$I~Ug;$z3i#3S5yVgoiB0_z`I67el zW1Q>Ti`!09?KW-C1IG`ls#HBEZ8$`?ej7|TDM$?3?q#!&cfD(-N?L8F!c+e-5$MA4 z1LfbPoa$Otl9Ib8GgOdB_71k$XLrkrewV7!T&)$&)sR3JjvrL@cWOzw3=vCcK8Oku zpT%&SeKpFRs*z}GOP;j0gao>9{6M#UDW|$XL<3sCLIsJHQnby!H{pGyguIB_;1b$t zKmuJjexQtti`?Z%B0jbWV5lIGkSES&-__p`UR37jHu>eDZYBaBgcg=>Aw!9<`7#}AZWlya&^Yv07vs*DN}zn(v`#RMf8 zBblNrjz~@EOC3bx5+u-t;|E&PFOVW>xpBLH*d(KZ1dawM(`~&6QbL)x3122z8AfvqIo5|mZ7)qyJP(fm3`!t(VFU2_ZvgU9#IiA*DuePjVBG83VN!g~QCh`#?BJ);f zs31|S&SP8WbxB71NNn|&yokmOT@+PD0$muDl!5<-tGs}SiP2dyDoCWJez$GdFN=fp zQ!jfd+8a=`&!=cd0$t{4Z%#SY8xrwre6)-T5;&5j`#5n$WQQ7~6HE1-&M?A53(mAP z`INmnh*7Dk`M#Ey3v|rl%DHuYv)T8ymF>J7 zOFPwlXr~$pbYWD|3G9SGSs|hr?S`X*#Mv2XHv6eC|4Pl|A5<5hK$gFWKo>@(s^+Jh z>dv%=e0feYh6)m)BOlxRFC`i6W8JAH@-I5MJh5PP6M-&_N;>OIIo0#gSaj0vstgq* z4wlHYop~i2?IZe%tDJ}O_1#{ZB_n|@j7rK1%-5Fl67fg;C8L7G$OK0v^;)9QKHB%Y zB?Zwbq~OWXCIVgNX#acW8)+aBqi=7JQ9%M{VN|pDU_-fe&({gV^GstH;puT}ZAFyq zJr;~gs#1B+N4~Q80hdWGT!nU+A+CKJ0?h=3!{>51J>y(uOQ+K z?aH8n#Lh8sHv8Uo=|^qlpR`jQOFPv_pbMjtcKfJ;zd~DcajnwAZ9)M*>|Km8yDop10hd2)DRQ85JZtO)R1;xOT#5AL^tx zQd{Z`)?eFTBG6@y_US{iq;^CcExBGs1qob1ps&xEuJVu$<9#hXrZ9}~(1u5Crvgvu z<136xI#2yQP`xc^4ns?5B!5Yz&d} z)BV~z)q9u-bYWDgYA>oekcWsV-MTYWkf^&V(>AOfGiLP9&W@26Q*RLRNH7uT!ln@wh@AaQ)^McauuML$_Z85g&N$w$W}a2wZ5FcIkT&i%w@KW+H8YlLiV zdD6$-dm=*xiQHkYY{Ty+8P90fbfw(^5DEHmMPAqymilKr;(X2Ac{2V8Y zXY`F^@~09Pxo24;Oa!`K+;COw_dm9sN|QSzr2Dp8G@PM=M83f_lyYt3#jiADrR;l) z&&yZ)hI8Yu4KoqwD$>7(vM(UsxSR3t@@=_fP&l{q{9uL(61Xx&r`yh7r_pPB%SFl> zfdsm6y^J!-4ZSN*9C*q1edb_>|1PdyAx$IX6`$pnyT5Vu3I>^0yl|DPPGy>7jy+(k zstwKhDZf3_Ke0xcAchJOkz?B^){pzdxB72Y(b<7%JEPTl_A(LZ+EBEk(sSWn;~B#; zad8<+!Z}xWW%{Vy`mH^hO$>Ept#@Z|E$((V5$M`*qla>Q#xCPN=fj2t zSVS-8GopSsh6)n>yAMz-$F>{Kh`C>Ytqw@wCQj~RBG6TF%s|C{dwH!_F;-%G8Lp*g zCx!|V?T3$2E?$n&Z%eD{!ZyX&&->lDJfAz72y|7vF;cPT1DN=x6dPJ(D_68-TZRe} zu>~h8_6!?;3nf{u*!GsoltBOqbp8H5L9yqJ`j%0a4IyGIWtu_-iM~Iriaj^gk~<~X zBs#6$kupsofv%WqR^{2Xbw;MCIrYl29YkdHXu?oIA}M{2;!=6Fcu>#Wa>1<#TTi3c zr(@ks1iHS*%~1k#uNGVCcLAC>mSp;P*V~Pug2Y0HFlC-cl#%`WP!T8An^p&Rg}Rss zbj3edpqwrkCHB;B@NDXqpUom-TzD~t3KEa=M=0N1mm0)^0~vA;n%(VL|5HW+U9nFW zDcin8im&x-?BC_jRO^Lu4zSNMDoFhEDN?a#W1o2>L7q#uIhr3$FcIjwdpc6F=ZOFG zJ4q+@G>?-}L89-G<%&HI{hbe?a%md9mgqjjM4)T#oaKr=JATt~Q)O2o0{!~Qs34Ki zX_aEn^50^b{uJlHDzpe+BFD9b-8NQlQ)DfYSmR7pVk zuaW>NNStt3r`W3%mE)FXtRFJU# z-mLfz8eu%+^Tgd!#x^V8o&CQA{bmH%>Lj$~5c-_07k zQ~5kQQ1rQ~J>%*XNqRTQ%D>+>(nO%^SLhz4<=J*((C+Q@jL<7gx<1CrUw%4TLIsKR ziF=e;=i3|4h@(AJ){6FP2b&3WT@Bo?Jjn1jh;+)pwu45mKkw9(Q9)wmfj!F4A|1pt zs#bNn7ZDN>v;T)cSLDC@m11?98^q6M&t&a}g8S8Zbk@MGAaVEU9;NBu9mFB}w=r*fCEadAI-(S z*?kn<(f@URuVvErPckYIIE>@oE8z6zM@1qYW_R2u*zV>2|GcRz@201WPkf>8^ zpRysSy?9t3^?m=VFYB`T)QQ|D|Hw$7Yh}nm<=iGwuh~F(2Zb`M+UW7V)0($sIC@#v zWU|s(-l%6!!Vw3pGx(Kf?yDYfd0Mn!s338-@C>Ew&viz2vAmSw_A345(`h7w1iEm< zLC=_6iR~f6iSlxyf`t5Jj*_RzYSB|aDZ7hCGArnAU%8%5Oa!`c#G$IW2UcVQiCB8G zAwvZTx3XbMSo


{BgINmh%_0UT}OW+KpqBM!>)Pt{1?(W$V-_p2~ekcg`jp`7NI z8e^ZhuK8I>TDjX2R?I}83r8Guhj)4*R)&bV)Ts18CHQ3KESUFIVifYwG<QIOzOt*<{(Dh}QcL z%BUcbckU|1UfF?#OqFZVNaicw&qSaL#}BGH;lWJVod|cTaD)mHI2xdwXZb6!!*kvy z9Lx$}7~!jeW+~sNt`+Z6yThoYyyt7Gu#?c>vcitGVJ`)rDKB+!LXsj4qS ztFeznh#vJADo9jo6`|zlz0_zQb12%w=}Uc%q8$lzVN_Dqy8abd2oXU8Dlk-#*uX7S z?3IBkPb=0BbS$=nSQ_h-rjDB9yQ15E_F%+cQP^&FizFt3x03KBSyRn=S3HQ4bPV-mlQ z7Z^tPl_cB#=m7ErV=zOmQxqkcUTfi8?nRedqA78^k33Opps%n>eRoFwyCzC`i3l$^=){9c?wYF|9D8_0~ zZ!m>s#7LkEqmp8GoD1tn#C)1{qk_bud#ecf0>*-rO&30+V4FpTh-p^KC? z?OW#Dh^!CDcq zxs3-y1&M8=mn!y3X89<}lj!6?!NIjm1iCOPRkafJ8%K#4PSw&-K_a+qlwz;pcAldB z7>$-npDJS_(1lS+xx&2MSSk^2w8n%A65csiEA|Q%Psh8kCA3o1wWyPcKo>?OeM|VV zY(5dWV{u={`m#8;5`RAUD1iCOPRkd-ZBfCPx+o0<*DoA|zvQe>D zkZk$nqO8?}Tub#Jkw6zlC5?UNUX`_)lRK&ABq~T$X%M5-KQzLqIhk>DzPy{Fz3a19 zCIVgNXuq~MTqjn#iZUul;F<%i>H9Wf^0#rm%aq0pBiy^$Ql;Vk2)$w*My0AojcLTZ z-L`VBV;eD4kQg|1sba5?cY>n40PT$Wwe>I&=)$N})xW4Ett8?ZRpCPgiPQa~6nkwz zxn4bXhjvD-R80^GbYWDgYR(%C*&8ClX&!o&k>A5Qzj<&o4rN|hH)gvkZ#WmI=5I6@vx zMA=h*MS8PhB+RAVxX4GS-Ai=+k zQmWb(81*1m3l=uiErBbrzov;mSJ!5%m5m?g7?n@n7Vu*`|7AW~n$={eAYmD>M!COt zwozT>$^wz)xst&hQL2~-bmhuir}Ql`!>HhLeq(c1uC{k#IeF zU;Q}wG=S~$cd$JAT+T$Gt3pJy!WW%rRP8B}*_!oU+domxEXz4RO1<-s3F}M*x-!QyCFpXd;Hs}W5Azz#RuRDkEs;?{LaJg@+;2ZNh;4!0*>0NR$p!lw}LkgeaZJPiF>?(CqHk z!X739T{U_rif4~Bp_sl4Q2QrkS|s9Lg=R7;NOU`KQrS^B&LDcy4GT{?=`{aXH4}lZ zWphp{arcf2Tk2|6d*bL8M-w6(BZ|tXAh9UnlrnTev@lyIt{u$58qw;YeDslo1iJpU zo>Klaix%R4Yx_8hLUJ;#diJ86ibOP(dQSezNj8bD(hNq(Y{7ku^nmT-;f> zXw&}keTnIkNOwk`_9wJ>BG_>-aN^eh4K|x|)wNz#N z4^QJ6D;kYu`(wxZ-h6sc#&6W$KC+VIQEvS^h~E`eJ#%j?>$c?qH@)^&x@%(pk|8l^ z15-Q-{1Ce8-^2*|UL88t-g1e)S4f}>zbkYWXWNDrriDcSjf=7 ziHtJCHlT_+E9iTL1iJ9MLbd2>4rL9Acv5SYj0zHU_AAP|Luo<*{hR1mqX!#AJ0^=` zLQDj@@Vi3Q9nbb;1BrM-=c-XbV#BMGO0;jB@rAoj->dU9|7csWnTbFbepgiWdFudn zjR=Wup`n7rwoj*&qA}6Jr^qq%z1la@jYZK}=PpZ%nh12^cZDh<46ex{iD*CPkAw;m zqtBjJ(%*y`U%10sW>}h^pHWYm2z23hMO8g0Gi+;Z4WQh12^Azl#w9Cb{Rat+^l#$e zLEGiCw70$W>fa^;UHFxtj3<;CRwHUk?h-0UV4J7AWQE4F(GN2c3hvn?V}yJ6N>YaA z{~#=(u?R*bWn(`yjyW{S;#}#zGb%`I>S$A*{Po0WA1lMhu(P)ImRO2*B+!LXNw?1y zhp_8J3=Wi9`*E7lKGG>;hQHJa-9^Q9+`K`zdAllsKb(40=ho255hXyNxCtrF&Zx?|~2r$vTr<4pv*Fe+)zN%uJ05|N8;F{6USE{|lT zdBbpFu0BG}P1#he6z$;@?MR>tqmue4%GffSh{~B+5-LdSf03-TI5)^>A1x@_uTiuY zr)Wn4T^NcA1ER#|}!UAW?B-ic+_bm(X7yA*-8nv4eD`Xp2jji9i=dCC!}+ z=hlf=?>bAUAh9kfMQJHI8|`BkWsLNs5%RC;jwS+K=4dbOv{NTWwMt4v1qmE$(K&#Z zlbH9^HwhCu&yX>~k9J_}2a0wi(1lS+` zg;7Z-&#sMRDcUoKRW}jn!l4r4r0xV2KzLMz@DoFgQ7r~SciaR*HVx-cqL^$X>g{7S^^mEjU9NUZ#mqC6PsEcof|V;kj|oIs8LRe4c4-mk9Se|*ckQ+`bSN5R%fiAbQ!9PKSS zWD~dV4^Bh{3G@7;@Y8=-o=Ks;<8StnF~WUEoK|K9Zx*Ie`@pDF)eyRMRx1BiZsd5lhZxU^+dRp_m)vXBL9SB+7y%_ig$=_UeQ7?pIp|4l2_oQVB7VOEY-(XuPE9b==A4IigqN>g;A-h$EhBGM%+B+FQI}&t0AdMLa%tg?DmmN zH3v3Q|1p@N9SL+{RH|y-b=kzZ7e^COLE;NNBcG?2-=3e^_^NTcow9}ckA4pZn+SB7 zqrHbPm0e2f#(j`|WsD_^-H7?gN?yvYnjO2(CroA6a+T$NIr++{AaQJ0vSLe~FHE7f zLKzp&Ol4ChCU86FRxlCh%A&q@{h(lh)7wXlV$<1%1jQ%Kw~UMm5~=%Bl=3+Pg^Btz z8q}M{zCFp{-uKCABG8pa-;w~yOK7Y=qqdio1rGC0EYjkGgbET>r=%(!np74>>(7`T zKaK76b+Ft&ebz*v>wIFWvh2OH@r?MQGnjQ#|HONj_DHB8u{8e~#cRe*zrp%5N=={6 zUhn(H70bWOM4;8`((-&6Cfi9lDd<4L8(u%pH^E@xblmaee!lZPZEqJqT6U`6RLAi;P>9?$pEg(_D5 z;kOJEfvzdrZAz~V=Zt5}*>FypO!p1$JieTW3KDgWBq_ZYUK3JlzNB;dy$XMnoM^4j zrGle`1iC7fPg34(eyGO}N(5&x5{xt0wQ&Y}J7dOy-gKCZvDoFg?nW#Kjlv~XHI~sj_D)nq^il2AcnaK{shvsV$Z*zgqkt+u+~l+N|F@}A8q znFw@UU2#I`*`|o-azXn$HoM=Dy7aK}dG^+oP(eZ*b4+RXw5(VqT_eiT-CgZQ?uL^U^+%ysB!g~m+dNlm3q=Z@d$g|ZXe9wby z@ye$YxD>t49+QHu(=a4%F8MZvuQ z6_Ue=BDnY7dsOSLT1S3&j^WLn>-xQa^?L8`$8eH6>&f$cZ?~8D*dQ0V_f4f+ZHH80 zN@Il;CaRZB&~|mJXu2f1{z|ng?zO2{zs&?!@v+hM@;=MmMB(4^sjM)u;OQRi=CfLI zGxu7VOgCPrFY(M!Wk_Ee!Bu>0bbbBwXX-y7c4r@{vcg1(uw7b#-+fJ&T%TXu*$&72 zG0bp2eDqR#Fh{`@IMWrYb|--3DiCF?kI;f;RtUz&~JDn6P>J{jp!c158N zAi!DSk)kS==G@8qz^wg^Bz-_GsOA*D{Y_@rKLYXYHPL z`BWyjiuW6y!iz6;k6%UpTTEqziGpo+X<58{&9zHQW;|1kr@oo!2gw9i@qR;3j!%!( zl^{|^I#gDe;1x=`{y;A3Y>9WZ{k3Ck1XuB%*7cVj$;xotKR%3Wpz!{woOQQ0s9Jrw zVa~+*{F`(==)_GW7Wb&{^Y&F(VPaU3U0RuYjpUkVjjN~=y)r{_eq?)FOl5+r_&4FY zixl%2Af&NgDl1Iz`Y&Dg{PI|>iGB5Al*2}F74HRIulo0Xr76C|HSuqz@ZTPJVY~KI zQQ5t6j<=`ltyf)APFHkD>bSuQD@^dpH(men`XW`u-JsM&FO>&PsJ3~=B6Ax#x6M@+!Mk^=uT)rJ!t3aC zEq2-xx#7|(_#HdDY*Z?s|L(r912%%I>Xi=Bav5oovtX4)X)N75ojaO?ID!#usq?sG`*$A$h9~!KQ3)aXXw~cMIcoM2S9paGEBH|TRm{{F& zur}xGI+G9|w@^R9yUO*MDid5aZ`)w4R^4d%S{5Tm@mLwzeHER&GhAhbi5_kHXosf8 zm_*R)CL9y z3VW&G`+?d9?`XGQ`S@cVa$>mR!cOSMb$j_=*Xx;^U9W19%d90HR2#I!;!Yuyt0}&wYPc^+nI+ElAI1f~(ju zx}N7&uu^`xLt5};hr-8s^z9zn3H6Y7e+%uRc#@g^5~uT5HR9Z83W~eQGmDJ&JMa7G3Yy z2(IE|qw7!3&QOy;IGa3BSz%&G|E5~P(e0*7a$^+ycm_4;k6D+|$|!8z@`!U_`!>4Dm*@mn&EVE#Jl1{{yUU+1Yza24-2j1--(qHY4w zcj5w-6(;C(|Z)&KlR=;*CMNLb9de6-=yo6ye29=OF5)3 z@bGJOSLkQbkS0{d_IDE-=AW{F`*W-2^Z75Qv(1ie-ff?oW>= z16s7f7rZ#j) zr`w%VSYd)Y^Xq!rXfJoq{w3)b%?fTPRnjI;6GN4=Mcbat;C0y545& z^W+(m9a5FRi?+OpOQX_VmzTKQIToCCq3gZ+K1_Zh;LU5vV_OOa6J2}6yX5Z=nzn=6YMw23K)r2d)f$5z12#o~t+5(ma@W*&xa_bm}3qYxcp!J4$z4ukIjY zg#RtB;p<8JFOVGean#B#|je{I{CP)M7IA*K2p+< z26YR0UQBQmXWHOx`}H0rBhQN!Ci?Ho;j*%q5A;e=j^Imm=hWf0d>pRgY#v>gLc^64 zAc`S-nH47TA4^QJl9c_5M<}VtMQ($hvP^IlXAEI%>0~wKAc&7s?dd~Ia8?p#I{lfR z+;auy)@DAfu*2Kd*zS5&^`QIwU{|7R#K^PBo60z(Kd-z}SYe`BwkX#qMT+XXQyD@^>95azP7;`hVt#@xaEa61!R#jeD&sOLt- zm^;`2a|l^sVtsIs%S!J3y7iJGU=-&((odP-Dt4u=pNik9_<`_5`Y9_+EUf0^vN9(_ z3!PSq;i=C^6J&y`*p;|mWsO#ffH2YoSz%)2>KraBn>^>6JxT=5k5r_kF~L>rO7sNW zFjWZ!aSTc0tT3@)XJU$#G=6qwxZ;7FhC9d&XM(HPl^7%Qte|8AF)n3r3=Y_5tyE??hW>7!#aVrt6!s#U)?B^VP03Cotc~ zIwu|`EOKQJJ>)(=*p2S z+4oFv6}wW`mz?}f`3=Nq%)V!Zi8IxMTrGkRoA-~`m@{Z}XmTKRnhCCASEA!du`o9g zu|BJl6((AJsPD3pd&lnGsTg^wO)-~+39e#S>iWXP;YvncDl1IXpPa)rszJJ$$(k!u zwDKM^2VBTeWP+>MmB`^;H^5Eo9N5yy3KJ{mB&O^?lWu0qhQjSN;r6?5I}=>RuGIBu z!6g)L5FhIFcCy06!$m$Rc^e!tlSwa>sh~8$O!C&Q5jKLW*p<5O-LPA7GZ1Uu;Eba4 zfCf-?irho#`$3C0~~J?=QHFp=ALpTCtL>076N^1PJ}DRbO8g&n?km7ilNBcBH}*-XaXaJusF^pH;=;G> z-<&ON1Xr;u@jC`LOilr@>q$!|D@+*f*;OIq{J03W$H48A;C3dsid~5=1+RYf%OF@` z;*WL>{H^;(mKxpsn&WN|g}VV0T*a=$Y>`qGgr7mQ!5xPcCeBse=Wo4#ZlTeLG;J{gB2#)<=f|Py-f&ZDhQczZ6Aww117kNU5V9B zN4`sL(bggLJo7~1axNL69aCpOX-mC&BvI} zFnCkajcN{Q;*W1_1Xrc3te+B6Dc#)0wLw8i-q8+ec-?afD@-i?cII-{_{MC7B(lC=$2gZqs#w!s8f$z6T?t>1BV zP>`?jJ4WDlu);(YG1}kSS7C!U`5OCb3icHfT-Cg2qQ7-KDkVPkHIBzu91m8Q2+xr{ zAmh5C>uu}w_cQLb`EjpZcHA!@{fuYPmv|Osg^8zY z!vd^#wY{f)69RE9nSnPiCb+8H$*=%xWTIX2csDT(Z+EOPal1`afHl^);Ojxb7`a=6 zu?!}-s?}dn0aj-5_{2McF*Qmt5F zqDa!+04o`&PSi-z=qPs_=_*Wc)#yie1FSrjFI8rUM!HHE(p6Yt;>fKJ0oO-4k+x~9 z!D`WCo;U}0&O2By%mi0OXZ;v3dY;ovCQS;C6eodLUM$GT3KNU^WtYe7QB2}t$~v*& z+(5BV$DuZYt3pO*m#q|x!Qu{40`ckjASWwKylaRa6RspP3nF*HxqdbAuJ#Mw)!5+| zPc90`7|UQ+BB$Z(KEE)GWfa3$1}jX|_lyd##`@Z*;{{`^uOmk8nBXdQrLI@^i*OSM zFgnNz6Ww>m2UzLZ3li=KM&7nJ+|C47u`96_K+**xZ@Uljwpn4KX7%F%Rubl4dn<^c z7|ZyCG(je~ie0Jejhzid2Z)_W6J&*npy_u5tVFi@v$}}GFtXhm9V(dMDt0Bt0Mdtx zgF$pbsue3tl-cniz)A+13b%j8H{tpnI@t)WVpn3W^MD276A-03cW|=8M1kM3%Vn1< z=K0YcZZ|TKenZC)Cb)`SiIlOyvEptJb<%n}Sz#hy^#byhok`~T(F$(QgOQ2Ca61!R zWp{gnrOBcUqE!1ooUAZ$^PZ<{<*{I_&o5)Fj~yP+YVLg4oMI6wUG<%bEbVpn1u?!R@y0}!q7b%_-wo;^PnU}eQmlyzYnMkX2}#gz%J zVpn4JXREy8P7t|~;>rpW-!;7(U?pJ=IoLoTGg^4vj+2!1$6*D<&E8Je> z;A`;)+|C47u`6}Gci3w20oF(5soBoS3KQ9i6_8IYNixrm9&q~_xV=8y&IDJnD|P*V z7%$EOQQ+sEPF9%6dC^nO9lGBzx2Af%tNZyy8~e4Q{%08^KlVN?rfu zqNkfE67@x8g^8%@9|Dg2FA4LHxK`o?biYVKnjjNg#je!#`+a(d7eRDKnjkAod@Yh) zwi4Mc!tE3Av{V@xZcK0$yHeL1U7Rb1f*4v}bh5(4$WQs@G9#1B^P@Z5o(1QJ2i(pC zSFtN~{q@W^(Gx_ID{Y*tFcIwZlsgRBZ=N5)QoQJmKB>tqdfEuCVprmLJa>sLK-`J! z=46G5W<4s&A@vi@^J5d-{u=%Ccf;*WaFyNdbH+aRn~s?SoiKBN{hG4)Zb031r+X}e zJ%&DzU*7n6401>-n_p8{VWQUFI|12#OflX55Z*Q1-Vokpf~(kL$R^L7=61U`(t%lF zBJuY704q

UmGm$Yec)Ojahiian<5`=n~3k;$65@h6oPChETOkgZ(Hwmo`?5AimU zqii`R6I{g}Ll5l7BgA_kwjvvl6($;9&M!Y~oMh$?>hNw%E>G!P1<^)u6?+VG)z&W; z_kf7b<>zFDi4$u*<@`VIH{G5iEKZz~^jZwK*2YF~6?;tAcLc?YGeE5A66j=wiE7O% z$zGm`rrQg`yQlDOFdW`xf~(k-cv^apQ#cstkp76gt?+SXU%BSJ512Pxl_T#PUliY- z%`B{sa7bhBpHx_3BD~w@fH1@Xt?gc-p000sR!S&a)gd)Xd}JfI>fA~Xxzn;_a~sbe z=Mp|*4B%p=G=&u=+C0xGkDifaZsToa4PgOhdCw^L)JAYs_22T#%CZCIHvY+5OqheQ zj2}uKR9Io+Xh>0cQU3kz8A-^H-r_5q!g$H~+K+4mSJn8tq+DaqWoj|1aljC>NgZx&v8gv`Ba4! zCc0LxC65f-V{Rk=mq1}3=3jlq{41%ZpPVu0s)pWN&X{@j^-UAmnn%{5>_njpW}bOB zxu~$h#E$cUvNf--@cAmD3s;}?2@6yvxTZW-HkD4U!B%%f+f7?!CLLvckmX zEa<)4KiXWI@oeQ`aX7w`4M3746I{iv)b)Z3Pm04p#C^=+WQB>!W5&qg<)Y+C?)NWk0wa-V1ldcZr@VLTj~JfqLJo7=K&K*!{^9WBEspqK|&wQTgujL zr@{^&`mBeXF|(gtsq4j-hY9z8bVwhwom5z1Vq$?lvbFxBW%Wj)v6|x~R&y}HRqRU4 zbSf>oiTzkH!U_|i`v=R`+NIksmy2!S_K9#i6I{iv#M-`sQKFHUzIp0-l@%r?)*2&c zeZNM|H`I z`gds?!By-^tRLKwMe+f08~x~6Vd8aih-~GIZmgVNibOK0$4GA*!By-^9CME%(k&3F zNG4^4iE>_HvXuZ93b&8P$V4`zC^5lR>`Kf%53V2?T?C&XSB4cPy7ooR!T*wI3Rm`) z{Nn<}SY!||!Buv*=V?`2ss|zkIR~sT(Q6u3G!C9)_HUnXFIXswl`pHG?NHd^xv~zD zGuB73E3tlXU${`*-yxOhaZq7}iA944%hpQ0&ZT6r1I~|!=#tL_SFtPMs|PK_&LDoc zHdAGViRt%)WoPOdbEV$JB2i*9JS{avw|^$Mid~7moJC{YPh>t1PN}RgQKp(hZqq-~ zJU<%syeJmJ^HtbK4<{2`#jeB{+1DGQ7YNt2tWH*#sJc2tj=iYm zk>Vp4(n38&W%@CVIq7{uxzbl z4Sw80e2#JIyfiDZ zfOi7{-erQT*kkDS)~k&42*d`YbFsq2xt{Z7E6-~lyu0Y!R&fEck(l5rb|qFEMlBSY zV}F+Jzcg|tk3*?qfi`U8D6sw*a)sV@<*s_t%{$t zb*``!V;L2(DxMW41{?{Ot(Etut85YWVC8+hZ@i7*D$fP8WovbRhsleDb!#0`$?uja ztS~WVr&?5($r+i~t@EyuGqR}@JR)T)**a#5CN%RzcbKs&6;_z2xMYoNsl1>)5tRb_>VpaOC7o|auq;#27=(t6}UUT<>SMsQUl-#EF>lrCmwv0s3Mge)zAI6%2vv8?>JeKK`cbdF)K_o{AGu1r5yiI zs*Pl17XO3HVkWq1QokLtm03J_N;}CP#6qm6XN8Fdm3GV9KKq&}$N&7$O?r=!iFfT^ z+6b=tr~Yo)N>}MMpr_=q0iz$A@2RXX5r1y4Y-OdmTrt9V%*)8!daA+>KVECCoRO=} zuEeVN9_d0d#xe@%OB7a^n3yG6wldZ~UYjXq!;|HLCoNPaxQbngE;l>E#mpcoddVs) zOe9W^k*zeSJRdKM(Rdae@@~0};3{?{`hNJ|5Z8ccgjN2mFj3@Qto$TT7xVo14{i^K z+bd00Z3I`bE75T=uz(Z^;xShFv%-X4VykTBhJTg4r6fFA=0^7jCb)`SiB%8*HKoHK z3SyPNO`(7HWtAPWl>)vsR+hps3u!7+z?tAGb|pr(&o!0igGk7AS!IQZ1$lPM%kTKg zf$n)ri{bXw_|lLFw==<2>`Gn#C%&UJ0mPXTS5;P+a2?z$&r7Z?f9Fn}9@M|5v@JPM zjE}u%Be=@$_JD{!Qf?(s9DVYl$_f+vS|-X?&d-~%n}uiS*Vo|97=<0~D8E5Y8y_TZ zc{-y$yAr90`;Q2n%Q~cc_2wz8F!A}<7`b+?K63Mm#ut-GaC=d>ecq3<$^=)jD=~i6 ze~wrT#7{LFsjM*J+8!%!Jla|QC6m$1B0AuPD8ub9;dUmt%H~SF^zV1X<{&Pirv)oa zTza}iZuDDgd4T)=k@iagsUFstT&$g7BWzXVO3YijR7mm%(HuQ3*x^iU)3?hDqMOPI z?jCe0a!si+W?2kgb=*d96}wW`M|swfjE-`dr)w%JOejxx$yN`#muH$vLFn>d8@*DP z;3{?{(rC~AEd2%Ik4?u_R+vbN+bh3~u5F$l#}hhAe;wN@mOgdWMsO9o5@Y%)U8F7` z@{BpDvcg0}qeQuFr%LAeQG9+M>EBI(;=iXZ+6b<)yM0c0Kj|ch!AFj$tS~V#a=&b4 zRBe=Z3-^~gBv+f^3On5Y@g~_npo=`C<N?q@<^{_Bkc1W=YLKIe*_&7FJe)Csn z+4sD0eoW{$N9+Q(2cv@v6I{ivL_acpo}2J4Tt{VviG}f72^o_8?%sR zwwq%kxQbng8NbaQh(=$7^%rKStS}LOa=YAka8t9FUZ#tMqz#y*H&5GUBe;rPiH>ps zMWt8}-=UiaD@>er?vkyJi|lqLxQbngb;76XN=A>yS?JNo3KKyy_saFA)|M~cGrle@ zh1>s5do6z2c-%&C6}wW`SH`uHa-_c&=M{IUtT0jI$3(e-RLML)n#1kN(XC<)xSa{E zVpr;Vu2tQny&%@Vbg8T`QF``%x#B5L`HQD2vU3M)(;o4iGyb|TPpd%?^R;#a&I zgcPl#GQm~sF=VX&xj@W>^CR=sDk>{X%wE1-E?A?f>Gs@BABe`B?PKR>*a)s-k0Cch ze=K$Yp`n`xD@+ugw@bDPWf;-kk#Pc7u1B;41bQzF_tAk^TfB+}NhF!bFeH335p3N~YUeZfzyCNq#N9^mN$> zu40ejcytMr+Jh+7KVD^piJ%et<%oTrvfzGNy0W61m_zgFSc2R#(SCPxcF~&_D5!*i2!Ci3&M(%NboHb^Y4On?f`?M^^u#uZ`fUJn?&E zt1oBe?8(9~jAiUXcS=^6*p($-&gcWG>pvB`BaB7w&m99g*a)twS~)?sy0>}_a|sIi zi)yEU(XY`9MT|Py&IzeyB{Yofe^yMt&p|HZl zxUDYP>QDV=t7x%0t|c+c_Sy)pTK>!>r`|pm(CCZN-FV6L^OAliL==c%U15vhoQ}-h(eyy-qVFuCb%lr=dj%L ze`z-#2K_881F`Mp7ljoj_LfSMt^AM8YkEjmFypsmjyx(8T(zx9nrx*mc!l?rj0}Z` zo{tn(m}rwZU0%J=C*Ybp$7KKKVNw^2q|Pt$-bQehSLt-Q;5MIt^X@z6^3>s2$+1-& z(I*A{!Yze~!n@Mte)n<&9Cs6ECQguUV#e`JV!^?4zrqkns~_s^19VWL;=gR<2l zUI|$*c7)qEeO#w7!By-^ysNF;;3jtZMkuT>F>m@I*~-rByF0Ta0 zyL5f{&ytZ{PFrLKS1xP@e7*DOVv2P;g}xtbq0C}-p*uq)At?bpY`J7g%VEPpha6($xoJ|tT?4P{ns5DVh`Xf8x3 zOmG#u66>Sp$GC~nuJH;hOq5=fDqBghTY|GlM)xGY%!h0QSFtOxcBw>G$>`8DyYxnd z6(%w#9G0!TyR{9fO1+G+j2-AQMrRIJu`4n6{O_t#4-lJ>qQnXlALG(wD|e}++(I(4 zYd#h{Z6mmfU5T;RzgtK~c1^`>(F!X}yc?1(FWs9Xps)K~ZA!CVQXO>1@A-C*jo>PF zC3?4=>m}6%u{UO_!itUfk}mhXmFR!Weg8NEw{JhaRSXRew-Gg{ie0JegIpt|-5_R^ zuAs2OMBOe&~3E&^|~-?j6)iFG$xt-x~E*KoRRO# z9z(yrmN$eXq>^0q+nCG>6X|VJWh;Sr-P{;)9o+6f7bPaRiamx^jXgKIiO^HODXcIt zZ2V!_N)6ppJgc+>-rbL!Q6{*GJ%*Va>$6HLK-5ED8CIC^9F-


{BgINmh%_0UT}OW+KpqBM!>)Pt{1?(W$V-_p2~ekcg`jp`7NI z8e^ZhuK8I>TDjX2R?I}83r8Guhj)4*R)&bV)Ts18CHQ3KESUFIVifYwG<QIOzOt*<{(Dh}QcL z%BUcbckU|1UfF?#OqFZVNaicw&qSaL#}BGH;lWJVod|cTaD)mHI2xdwXZb6!!*kvy z9Lx$}7~!jeW+~sNt`+Z6yThoYyyt7Gu#?c>vcitGVJ`)rDKB+!LXsj4qS ztFeznh#vJADo9jo6`|zlz0_zQb12%w=}Uc%q8$lzVN_Dqy8abd2oXU8Dlk-#*uX7S z?3IBkPb=0BbS$=nSQ_h-rjDB9yQ15E_F%+cQP^&FizFt3x03KBSyRn=S3HQ4bPV-mlQ z7Z^tPl_cB#=m7ErV=zOmQxqkcUTfi8?nRedqA78^k33Opps%n>eRoFwyCzC`i3l$^=){9c?wYF|9D8_0~ zZ!m>s#7LkEqmp8GoD1tn#C)1{qk_bud#ecf0>*-rO&30+V4FpTh-p^KC? z?OW#Dh^!CDcq zxs3-y1&M8=mn!y3X89<}lj!6?!NIjm1iCOPRkafJ8%K#4PSw&-K_a+qlwz;pcAldB z7>$-npDJS_(1lS+xx&2MSSk^2w8n%A65csiEA|Q%Psh8kCA3o1wWyPcKo>?OeM|VV zY(5dWV{u={`m#8;5`RAUD1iCOPRkd-ZBfCPx+o0<*DoA|zvQe>D zkZk$nqO8?}Tub#Jkw6zlC5?UNUX`_)lRK&ABq~T$X%M5-KQzLqIhk>DzPy{Fz3a19 zCIVgNXuq~MTqjn#iZUul;F<%i>H9Wf^0#rm%aq0pBiy^$Ql;Vk2)$w*My0AojcLTZ z-L`VBV;eD4kQg|1sba5?cY>n40PT$Wwe>I&=)$N})xW4Ett8?ZRpCPgiPQa~6nkwz zxn4bXhjvD-R80^GbYWDgYR(%C*&8ClX&!o&k>A5Qzj<&o4rN|hH)gvkZ#WmI=5I6@vx zMA=h*MS8PhB+RAVxX4GS-Ai=+k zQmWb(81*1m3l=uiErBbrzov;mSJ!5%m5m?g7?n@n7Vu*`|7AW~n$={eAYmD>M!COt zwozT>$^wz)xst&hQL2~-bmhuir}Ql`!>HhLeq(c1uC{k#IeF zU;Q}wG=S~$cd$JAT+T$Gt3pJy!WW%rRP8B}*_!oU+domxEXz4RO1<-s3F}M*x-!QyCFpXd;Hs}W5Azz#RuRDkEs;?{LaJg@+;2ZNh;4!0*>0NR$p!lw}LkgeaZJPiF>?(CqHk z!X739T{U_rif4~Bp_sl4Q2QrkS|s9Lg=R7;NOU`KQrS^B&LDcy4GT{?=`{aXH4}lZ zWphp{arcf2Tk2|6d*bL8M-w6(BZ|tXAh9UnlrnTev@lyIt{u$58qw;YeDslo1iJpU zo>Klaix%R4Yx_8hLUJ;#diJ86ibOP(dQSezNj8bD(hNq(Y{7ku^nmT-;f> zXw&}keTnIkNOwk`_9wJ>BG_>-aN^eh4K|x|)wNz#N z4^QJ6D;kYu`(wxZ-h6sc#&6W$KC+VIQEvS^h~E`eJ#%j?>$c?qH@)^&x@%(pk|8l^ z15-Q-{1Ce8-^2*|UL88t-g1e)S4f}>zbkYWXWNDrriDcSjf=7 ziHtJCHlT_+E9iTL1iJ9MLbd2>4rL9Acv5SYj0zHU_AAP|Luo<*{hR1mqX!#AJ0^=` zLQDj@@Vi3Q9nbb;1BrM-=c-XbV#BMGO0;jB@rAoj->dU9|7csWnTbFbepgiWdFudn zjR=Wup`n7rwoj*&qA}6Jr^qq%z1la@jYZK}=PpZ%nh12^cZDh<46ex{iD*CPkAw;m zqtBjJ(%*y`U%10sW>}h^pHWYm2z23hMO8g0Gi+;Z4WQh12^Azl#w9Cb{Rat+^l#$e zLEGiCw70$W>fa^;UHFxtj3<;CRwHUk?h-0UV4J7AWQE4F(GN2c3hvn?V}yJ6N>YaA z{~#=(u?R*bWn(`yjyW{S;#}#zGb%`I>S$A*{Po0WA1lMhu(P)ImRO2*B+!LXNw?1y zhp_8J3=Wi9`*E7lKGG>;hQHJa-9^Q9+`K`zdAllsKb(40=ho255hXyNxCtrF&Zx?|~2r$vTr<4pv*Fe+)zN%uJ05|N8;F{6USE{|lT zdBbpFu0BG}P1#he6z$;@?MR>tqmue4%GffSh{~B+5-LdSf03-TI5)^>A1x@_uTiuY zr)Wn4T^NcA1ER#|}!UAW?B-ic+_bm(X7yA*-8nv4eD`Xp2jji9i=dCC!}+ z=hlf=?>bAUAh9kfMQJHI8|`BkWsLNs5%RC;jwS+K=4dbOv{NTWwMt4v1qmE$(K&#Z zlbH9^HwhCu&yX>~k9J_}2a0wi(1lS+` zg;7Z-&#sMRDcUoKRW}jn!l4r4r0xV2KzLMz@DoFgQ7r~SciaR*HVx-cqL^$X>g{7S^^mEjU9NUZ#mqC6PsEcof|V;kj|oIs8LRe4c4-mk9Se|*ckQ+`bSN5R%fiAbQ!9PKSS zWD~dV4^Bh{3G@7;@Y8=-o=Ks;<8StnF~WUEoK|K9Zx*Ie`@pDF)eyRMRx1BiZsd5lhZxU^+dRp_m)vXBL9SB+7y%_ig$=_UeQ7?pIp|4l2_oQVB7VOEY-(XuPE9b==A4IigqN>g;A-h$EhBGM%+B+FQI}&t0AdMLa%tg?DmmN zH3v3Q|1p@N9SL+{RH|y-b=kzZ7e^COLE;NNBcG?2-=3e^_^NTcow9}ckA4pZn+SB7 zqrHbPm0e2f#(j`|WsD_^-H7?gN?yvYnjO2(CroA6a+T$NIr++{AaQJ0vSLe~FHE7f zLKzp&Ol4ChCU86FRxlCh%A&q@{h(lh)7wXlV$<1%1jQ%Kw~UMm5~=%Bl=3+Pg^Btz z8q}M{zCFp{-uKCABG8pa-;w~yOK7Y=qqdio1rGC0EYjkGgbET>r=%(!np74>>(7`T zKaK76b+Ft&ebz*v>wIFWvh2OH@r?MQGnjQ#|HONj_DHB8u{8e~#cRe*zrp%5N=={6 zUhn(H70bWOM4;8`((-&6Cfi9lDd<4L8(u%pH^E@xblmaee!lZPZEqJqT6U`6RLAi;P>9?$pEg(_D5 z;kOJEfvzdrZAz~V=Zt5}*>FypO!p1$JieTW3KDgWBq_ZYUK3JlzNB;dy$XMnoM^4j zrGle`1iC7fPg34(eyGO}N(5&x5{xt0wQ&Y}J7dOy-gKCZvDoFg?nW#Kjlv~XHI~sj_D)nq^il2AcnaK{shvsV$Z*zgqkt+u+~l+N|F@}A8q znFw@UU2#I`*`|o-azXn$HoM=Dy7aK}dG^+oP(eZ*b4+RXw5(VqT_eiT-CgZQ?uL^U^+%ysB!g~m+dNlm3q=Z@d$g|ZXe9wby z@ye$YxD>t49+QHu(=a4%F8MZvuQ z6_Ue=BDnY7dsOSLT1S3&j^WLn>-xQa^?L8`$8eH6>&f$cZ?~8D*dQ0V_f4f+ZHH80 zN@Il;CaRZB&~|mJXu2f1{z|ng?zO2{zs&?!@v+hM@;=MmMB(4^sjM)u;OQRi=CfLI zGxu7VOgCPrFY(M!Wk_Ee!Bu>0bbbBwXX-y7c4r@{vcg1(uw7b#-+fJ&T%TXu*$&72 zG0bp2eDqR#Fh{`@IMWrYb|--3DiCF?kI;f;RtUz&~JDn6P>J{jp!c158N zAi!DSk)kS==G@8qz^wg^Bz-_GsOA*D{Y_@rKLYXYHPL z`BWyjiuW6y!iz6;k6%UpTTEqziGpo+X<58{&9zHQW;|1kr@oo!2gw9i@qR;3j!%!( zl^{|^I#gDe;1x=`{y;A3Y>9WZ{k3Ck1XuB%*7cVj$;xotKR%3Wpz!{woOQQ0s9Jrw zVa~+*{F`(==)_GW7Wb&{^Y&F(VPaU3U0RuYjpUkVjjN~=y)r{_eq?)FOl5+r_&4FY zixl%2Af&NgDl1Iz`Y&Dg{PI|>iGB5Al*2}F74HRIulo0Xr76C|HSuqz@ZTPJVY~KI zQQ5t6j<=`ltyf)APFHkD>bSuQD@^dpH(men`XW`u-JsM&FO>&PsJ3~=B6Ax#x6M@+!Mk^=uT)rJ!t3aC zEq2-xx#7|(_#HdDY*Z?s|L(r912%%I>Xi=Bav5oovtX4)X)N75ojaO?ID!#usq?sG`*$A$h9~!KQ3)aXXw~cMIcoM2S9paGEBH|TRm{{F& zur}xGI+G9|w@^R9yUO*MDid5aZ`)w4R^4d%S{5Tm@mLwzeHER&GhAhbi5_kHXosf8 zm_*R)CL9y z3VW&G`+?d9?`XGQ`S@cVa$>mR!cOSMb$j_=*Xx;^U9W19%d90HR2#I!;!Yuyt0}&wYPc^+nI+ElAI1f~(ju zx}N7&uu^`xLt5};hr-8s^z9zn3H6Y7e+%uRc#@g^5~uT5HR9Z83W~eQGmDJ&JMa7G3Yy z2(IE|qw7!3&QOy;IGa3BSz%&G|E5~P(e0*7a$^+ycm_4;k6D+|$|!8z@`!U_`!>4Dm*@mn&EVE#Jl1{{yUU+1Yza24-2j1--(qHY4w zcj5w-6(;C(|Z)&KlR=;*CMNLb9de6-=yo6ye29=OF5)3 z@bGJOSLkQbkS0{d_IDE-=AW{F`*W-2^Z75Qv(1ie-ff?oW>= z16s7f7rZ#j) zr`w%VSYd)Y^Xq!rXfJoq{w3)b%?fTPRnjI;6GN4=Mcbat;C0y545& z^W+(m9a5FRi?+OpOQX_VmzTKQIToCCq3gZ+K1_Zh;LU5vV_OOa6J2}6yX5Z=nzn=6YMw23K)r2d)f$5z12#o~t+5(ma@W*&xa_bm}3qYxcp!J4$z4ukIjY zg#RtB;p<8JFOVGean#B#|je{I{CP)M7IA*K2p+< z26YR0UQBQmXWHOx`}H0rBhQN!Ci?Ho;j*%q5A;e=j^Imm=hWf0d>pRgY#v>gLc^64 zAc`S-nH47TA4^QJl9c_5M<}VtMQ($hvP^IlXAEI%>0~wKAc&7s?dd~Ia8?p#I{lfR z+;auy)@DAfu*2Kd*zS5&^`QIwU{|7R#K^PBo60z(Kd-z}SYe`BwkX#qMT+XXQyD@^>95azP7;`hVt#@xaEa61!R#jeD&sOLt- zm^;`2a|l^sVtsIs%S!J3y7iJGU=-&((odP-Dt4u=pNik9_<`_5`Y9_+EUf0^vN9(_ z3!PSq;i=C^6J&y`*p;|mWsO#ffH2YoSz%)2>KraBn>^>6JxT=5k5r_kF~L>rO7sNW zFjWZ!aSTc0tT3@)XJU$#G=6qwxZ;7FhC9d&XM(HPl^7%Qte|8AF)n3r3=Y_5tyE??hW>7!#aVrt6!s#U)?B^VP03Cotc~ zIwu|`EOKQJJ>)(=*p2S z+4oFv6}wW`mz?}f`3=Nq%)V!Zi8IxMTrGkRoA-~`m@{Z}XmTKRnhCCASEA!du`o9g zu|BJl6((AJsPD3pd&lnGsTg^wO)-~+39e#S>iWXP;YvncDl1IXpPa)rszJJ$$(k!u zwDKM^2VBTeWP+>MmB`^;H^5Eo9N5yy3KJ{mB&O^?lWu0qhQjSN;r6?5I}=>RuGIBu z!6g)L5FhIFcCy06!$m$Rc^e!tlSwa>sh~8$O!C&Q5jKLW*p<5O-LPA7GZ1Uu;Eba4 zfCf-?irho#`$3C0~~J?=QHFp=ALpTCtL>076N^1PJ}DRbO8g&n?km7ilNBcBH}*-XaXaJusF^pH;=;G> z-<&ON1Xr;u@jC`LOilr@>q$!|D@+*f*;OIq{J03W$H48A;C3dsid~5=1+RYf%OF@` z;*WL>{H^;(mKxpsn&WN|g}VV0T*a=$Y>`qGgr7mQ!5xPcCeBse=Wo4#ZlTeLG;J{gB2#)<=f|Py-f&ZDhQczZ6Aww117kNU5V9B zN4`sL(bggLJo7~1axNL69aCpOX-mC&BvI} zFnCkajcN{Q;*W1_1Xrc3te+B6Dc#)0wLw8i-q8+ec-?afD@-i?cII-{_{MC7B(lC=$2gZqs#w!s8f$z6T?t>1BV zP>`?jJ4WDlu);(YG1}kSS7C!U`5OCb3icHfT-Cg2qQ7-KDkVPkHIBzu91m8Q2+xr{ zAmh5C>uu}w_cQLb`EjpZcHA!@{fuYPmv|Osg^8zY z!vd^#wY{f)69RE9nSnPiCb+8H$*=%xWTIX2csDT(Z+EOPal1`afHl^);Ojxb7`a=6 zu?!}-s?}dn0aj-5_{2McF*Qmt5F zqDa!+04o`&PSi-z=qPs_=_*Wc)#yie1FSrjFI8rUM!HHE(p6Yt;>fKJ0oO-4k+x~9 z!D`WCo;U}0&O2By%mi0OXZ;v3dY;ovCQS;C6eodLUM$GT3KNU^WtYe7QB2}t$~v*& z+(5BV$DuZYt3pO*m#q|x!Qu{40`ckjASWwKylaRa6RspP3nF*HxqdbAuJ#Mw)!5+| zPc90`7|UQ+BB$Z(KEE)GWfa3$1}jX|_lyd##`@Z*;{{`^uOmk8nBXdQrLI@^i*OSM zFgnNz6Ww>m2UzLZ3li=KM&7nJ+|C47u`96_K+**xZ@Uljwpn4KX7%F%Rubl4dn<^c z7|ZyCG(je~ie0Jejhzid2Z)_W6J&*npy_u5tVFi@v$}}GFtXhm9V(dMDt0Bt0Mdtx zgF$pbsue3tl-cniz)A+13b%j8H{tpnI@t)WVpn3W^MD276A-03cW|=8M1kM3%Vn1< z=K0YcZZ|TKenZC)Cb)`SiIlOyvEptJb<%n}Sz#hy^#byhok`~T(F$(QgOQ2Ca61!R zWp{gnrOBcUqE!1ooUAZ$^PZ<{<*{I_&o5)Fj~yP+YVLg4oMI6wUG<%bEbVpn1u?!R@y0}!q7b%_-wo;^PnU}eQmlyzYnMkX2}#gz%J zVpn4JXREy8P7t|~;>rpW-!;7(U?pJ=IoLoTGg^4vj+2!1$6*D<&E8Je> z;A`;)+|C47u`6}Gci3w20oF(5soBoS3KQ9i6_8IYNixrm9&q~_xV=8y&IDJnD|P*V z7%$EOQQ+sEPF9%6dC^nO9lGBzx2Af%tNZyy8~e4Q{%08^KlVN?rfu zqNkfE67@x8g^8%@9|Dg2FA4LHxK`o?biYVKnjjNg#je!#`+a(d7eRDKnjkAod@Yh) zwi4Mc!tE3Av{V@xZcK0$yHeL1U7Rb1f*4v}bh5(4$WQs@G9#1B^P@Z5o(1QJ2i(pC zSFtN~{q@W^(Gx_ID{Y*tFcIwZlsgRBZ=N5)QoQJmKB>tqdfEuCVprmLJa>sLK-`J! z=46G5W<4s&A@vi@^J5d-{u=%Ccf;*WaFyNdbH+aRn~s?SoiKBN{hG4)Zb031r+X}e zJ%&DzU*7n6401>-n_p8{VWQUFI|12#OflX55Z*Q1-Vokpf~(kL$R^L7=61U`(t%lF zBJuY704q

UmGm$Yec)Ojahiian<5`=n~3k;$65@h6oPChETOkgZ(Hwmo`?5AimU zqii`R6I{g}Ll5l7BgA_kwjvvl6($;9&M!Y~oMh$?>hNw%E>G!P1<^)u6?+VG)z&W; z_kf7b<>zFDi4$u*<@`VIH{G5iEKZz~^jZwK*2YF~6?;tAcLc?YGeE5A66j=wiE7O% z$zGm`rrQg`yQlDOFdW`xf~(k-cv^apQ#cstkp76gt?+SXU%BSJ512Pxl_T#PUliY- z%`B{sa7bhBpHx_3BD~w@fH1@Xt?gc-p000sR!S&a)gd)Xd}JfI>fA~Xxzn;_a~sbe z=Mp|*4B%p=G=&u=+C0xGkDifaZsToa4PgOhdCw^L)JAYs_22T#%CZCIHvY+5OqheQ zj2}uKR9Io+Xh>0cQU3kz8A-^H-r_5q!g$H~+K+4mSJn8tq+DaqWoj|1aljC>NgZx&v8gv`Ba4! zCc0LxC65f-V{Rk=mq1}3=3jlq{41%ZpPVu0s)pWN&X{@j^-UAmnn%{5>_njpW}bOB zxu~$h#E$cUvNf--@cAmD3s;}?2@6yvxTZW-HkD4U!B%%f+f7?!CLLvckmX zEa<)4KiXWI@oeQ`aX7w`4M3746I{iv)b)Z3Pm04p#C^=+WQB>!W5&qg<)Y+C?)NWk0wa-V1ldcZr@VLTj~JfqLJo7=K&K*!{^9WBEspqK|&wQTgujL zr@{^&`mBeXF|(gtsq4j-hY9z8bVwhwom5z1Vq$?lvbFxBW%Wj)v6|x~R&y}HRqRU4 zbSf>oiTzkH!U_|i`v=R`+NIksmy2!S_K9#i6I{iv#M-`sQKFHUzIp0-l@%r?)*2&c zeZNM|H`I z`gds?!By-^tRLKwMe+f08~x~6Vd8aih-~GIZmgVNibOK0$4GA*!By-^9CME%(k&3F zNG4^4iE>_HvXuZ93b&8P$V4`zC^5lR>`Kf%53V2?T?C&XSB4cPy7ooR!T*wI3Rm`) z{Nn<}SY!||!Buv*=V?`2ss|zkIR~sT(Q6u3G!C9)_HUnXFIXswl`pHG?NHd^xv~zD zGuB73E3tlXU${`*-yxOhaZq7}iA944%hpQ0&ZT6r1I~|!=#tL_SFtPMs|PK_&LDoc zHdAGViRt%)WoPOdbEV$JB2i*9JS{avw|^$Mid~7moJC{YPh>t1PN}RgQKp(hZqq-~ zJU<%syeJmJ^HtbK4<{2`#jeB{+1DGQ7YNt2tWH*#sJc2tj=iYm zk>Vp4(n38&W%@CVIq7{uxzbl z4Sw80e2#JIyfiDZ zfOi7{-erQT*kkDS)~k&42*d`YbFsq2xt{Z7E6-~lyu0Y!R&fEck(l5rb|qFEMlBSY zV}F+Jzcg|tk3*?qfi`U8D6sw*a)sV@<*s_t%{$t zb*``!V;L2(DxMW41{?{Ot(Etut85YWVC8+hZ@i7*D$fP8WovbRhsleDb!#0`$?uja ztS~WVr&?5($r+i~t@EyuGqR}@JR)T)**a#5CN%RzcbKs&6;_z2xMYoNsl1>)5tRb_>VpaOC7o|auq;#27=(t6}UUT<>SMsQUl-#EF>lrCmwv0s3Mge)zAI6%2vv8?>JeKK`cbdF)K_o{AGu1r5yiI zs*Pl17XO3HVkWq1QokLtm03J_N;}CP#6qm6XN8Fdm3GV9KKq&}$N&7$O?r=!iFfT^ z+6b=tr~Yo)N>}MMpr_=q0iz$A@2RXX5r1y4Y-OdmTrt9V%*)8!daA+>KVECCoRO=} zuEeVN9_d0d#xe@%OB7a^n3yG6wldZ~UYjXq!;|HLCoNPaxQbngE;l>E#mpcoddVs) zOe9W^k*zeSJRdKM(Rdae@@~0};3{?{`hNJ|5Z8ccgjN2mFj3@Qto$TT7xVo14{i^K z+bd00Z3I`bE75T=uz(Z^;xShFv%-X4VykTBhJTg4r6fFA=0^7jCb)`SiB%8*HKoHK z3SyPNO`(7HWtAPWl>)vsR+hps3u!7+z?tAGb|pr(&o!0igGk7AS!IQZ1$lPM%kTKg zf$n)ri{bXw_|lLFw==<2>`Gn#C%&UJ0mPXTS5;P+a2?z$&r7Z?f9Fn}9@M|5v@JPM zjE}u%Be=@$_JD{!Qf?(s9DVYl$_f+vS|-X?&d-~%n}uiS*Vo|97=<0~D8E5Y8y_TZ zc{-y$yAr90`;Q2n%Q~cc_2wz8F!A}<7`b+?K63Mm#ut-GaC=d>ecq3<$^=)jD=~i6 ze~wrT#7{LFsjM*J+8!%!Jla|QC6m$1B0AuPD8ub9;dUmt%H~SF^zV1X<{&Pirv)oa zTza}iZuDDgd4T)=k@iagsUFstT&$g7BWzXVO3YijR7mm%(HuQ3*x^iU)3?hDqMOPI z?jCe0a!si+W?2kgb=*d96}wW`M|swfjE-`dr)w%JOejxx$yN`#muH$vLFn>d8@*DP z;3{?{(rC~AEd2%Ik4?u_R+vbN+bh3~u5F$l#}hhAe;wN@mOgdWMsO9o5@Y%)U8F7` z@{BpDvcg0}qeQuFr%LAeQG9+M>EBI(;=iXZ+6b<)yM0c0Kj|ch!AFj$tS~V#a=&b4 zRBe=Z3-^~gBv+f^3On5Y@g~_npo=`C<N?q@<^{_Bkc1W=YLKIe*_&7FJe)Csn z+4sD0eoW{$N9+Q(2cv@v6I{ivL_acpo}2J4Tt{VviG}f72^o_8?%sR zwwq%kxQbng8NbaQh(=$7^%rKStS}LOa=YAka8t9FUZ#tMqz#y*H&5GUBe;rPiH>ps zMWt8}-=UiaD@>er?vkyJi|lqLxQbngb;76XN=A>yS?JNo3KKyy_saFA)|M~cGrle@ zh1>s5do6z2c-%&C6}wW`SH`uHa-_c&=M{IUtT0jI$3(e-RLML)n#1kN(XC<)xSa{E zVpr;Vu2tQny&%@Vbg8T`QF``%x#B5L`HQD2vU3M)(;o4iGyb|TPpd%?^R;#a&I zgcPl#GQm~sF=VX&xj@W>^CR=sDk>{X%wE1-E?A?f>Gs@BABe`B?PKR>*a)s-k0Cch ze=K$Yp`n`xD@+ugw@bDPWf;-kk#Pc7u1B;41bQzF_tAk^TfB+}NhF!bFeH335p3N~YUeZfzyCNq#N9^mN$> zu40ejcytMr+Jh+7KVD^piJ%et<%oTrvfzGNy0W61m_zgFSc2R#(SCPxcF~&_D5!*i2!Ci3&M(%NboHb^Y4On?f`?M^^u#uZ`fUJn?&E zt1oBe?8(9~jAiUXcS=^6*p($-&gcWG>pvB`BaB7w&m99g*a)twS~)?sy0>}_a|sIi zi)yEU(XY`9MT|Py&IzeyB{Yofe^yMt&p|HZl zxUDYP>QDV=t7x%0t|c+c_Sy)pTK>!>r`|pm(CCZN-FV6L^OAliL==c%U15vhoQ}-h(eyy-qVFuCb%lr=dj%L ze`z-#2K_881F`Mp7ljoj_LfSMt^AM8YkEjmFypsmjyx(8T(zx9nrx*mc!l?rj0}Z` zo{tn(m}rwZU0%J=C*Ybp$7KKKVNw^2q|Pt$-bQehSLt-Q;5MIt^X@z6^3>s2$+1-& z(I*A{!Yze~!n@Mte)n<&9Cs6ECQguUV#e`JV!^?4zrqkns~_s^19VWL;=gR<2l zUI|$*c7)qEeO#w7!By-^ysNF;;3jtZMkuT>F>m@I*~-rByF0Ta0 zyL5f{&ytZ{PFrLKS1xP@e7*DOVv2P;g}xtbq0C}-p*uq)At?bpY`J7g%VEPpha6($xoJ|tT?4P{ns5DVh`Xf8x3 zOmG#u66>Sp$GC~nuJH;hOq5=fDqBghTY|GlM)xGY%!h0QSFtOxcBw>G$>`8DyYxnd z6(%w#9G0!TyR{9fO1+G+j2-AQMrRIJu`4n6{O_t#4-lJ>qQnXlALG(wD|e}++(I(4 zYd#h{Z6mmfU5T;RzgtK~c1^`>(F!X}yc?1(FWs9Xps)K~ZA!CVQXO>1@A-C*jo>PF zC3?4=>m}6%u{UO_!itUfk}mhXmFR!Weg8NEw{JhaRSXRew-Gg{ie0JegIpt|-5_R^ zuAs2OMBOe&~3E&^|~-?j6)iFG$xt-x~E*KoRRO# z9z(yrmN$eXq>^0q+nCG>6X|VJWh;Sr-P{;)9o+6f7bPaRiamx^jXgKIiO^HODXcIt zZ2V!_N)6ppJgc+>-rbL!Q6{*GJ%*Va>$6HLK-5ED8CIC^9F-

2+D2SC#tW&8r*o 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg b/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg new file mode 100644 index 0000000000..082fc11ee9 --- /dev/null +++ b/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/profiles/FLSun/flsun_v400_buildplate_texture.svg b/resources/profiles/FLSun/flsun_v400_buildplate_texture.svg index 9e60c1fbca..2fab2421d7 100644 --- a/resources/profiles/FLSun/flsun_v400_buildplate_texture.svg +++ b/resources/profiles/FLSun/flsun_v400_buildplate_texture.svg @@ -1,59 +1,59 @@ - - - - - - - image/svg+xml - - - - - - - - - - + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/resources/profiles/FLSun/machine/FLSun Q5 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun Q5 0.4 nozzle.json index 0e17d1200a..241995f50d 100644 --- a/resources/profiles/FLSun/machine/FLSun Q5 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun Q5 0.4 nozzle.json @@ -1,189 +1,189 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "FLSun Q5 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "printer_model": "FLSun Q5", - "default_print_profile": "0.20mm Standard @FLSun Q5", - "gcode_flavor": "marlin", - "thumbnails": [ - "260x260" - ], - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "99.6195x8.71557", - "98.4808x17.3648", - "96.5926x25.8819", - "93.9693x34.202", - "90.6308x42.2618", - "86.6025x50", - "81.9152x57.3576", - "76.6044x64.2788", - "70.7107x70.7107", - "64.2788x76.6044", - "57.3576x81.9152", - "50x86.6025", - "42.2618x90.6308", - "34.202x93.9693", - "25.8819x96.5926", - "17.3648x98.4808", - "8.71557x99.6195", - "6.12323e-15x100", - "-8.71557x99.6195", - "-17.3648x98.4808", - "-25.8819x96.5926", - "-34.202x93.9693", - "-42.2618x90.6308", - "-50x86.6025", - "-57.3576x81.9152", - "-64.2788x76.6044", - "-70.7107x70.7107", - "-76.6044x64.2788", - "-81.9152x57.3576", - "-86.6025x50", - "-90.6308x42.2618", - "-93.9693x34.202", - "-96.5926x25.8819", - "-98.4808x17.3648", - "-99.6195x8.71557", - "-100x1.22465e-14", - "-99.6195x-8.71557", - "-98.4808x-17.3648", - "-96.5926x-25.8819", - "-93.9693x-34.202", - "-90.6308x-42.2618", - "-86.6025x-50", - "-81.9152x-57.3576", - "-76.6044x-64.2788", - "-70.7107x-70.7107", - "-64.2788x-76.6044", - "-57.3576x-81.9152", - "-50x-86.6025", - "-42.2618x-90.6308", - "-34.202x-93.9693", - "-25.8819x-96.5926", - "-17.3648x-98.4808", - "-8.71557x-99.6195", - "-1.83697e-14x-100", - "8.71557x-99.6195", - "17.3648x-98.4808", - "25.8819x-96.5926", - "34.202x-93.9693", - "42.2618x-90.6308", - "50x-86.6025", - "57.3576x-81.9152", - "64.2788x-76.6044", - "70.7107x-70.7107", - "76.6044x-64.2788", - "81.9152x-57.3576", - "86.6025x-50", - "90.6308x-42.2618", - "93.9693x-34.202", - "96.5926x-25.8819", - "98.4808x-17.3648", - "99.6195x-8.71557", - "100x-2.44929e-14" - ], - "printable_height": "200", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0", - "machine_max_acceleration_e": [ - "3000", - "800" - ], - "machine_max_acceleration_extruding": [ - "1500", - "800" - ], - "machine_max_acceleration_retracting": [ - "2000", - "800" - ], - "machine_max_acceleration_travel": [ - "1500", - "800" - ], - "machine_max_acceleration_x": [ - "1500", - "800" - ], - "machine_max_acceleration_y": [ - "1500", - "800" - ], - "machine_max_acceleration_z": [ - "1500", - "800" - ], - "machine_max_speed_e": [ - "60", - "30" - ], - "machine_max_speed_x": [ - "200", - "150" - ], - "machine_max_speed_y": [ - "200", - "150" - ], - "machine_max_speed_z": [ - "200", - "150" - ], - "machine_max_jerk_e": [ - "5", - "5" - ], - "machine_max_jerk_x": [ - "5", - "10" - ], - "machine_max_jerk_y": [ - "5", - "10" - ], - "machine_max_jerk_z": [ - "5", - "10" - ], - "max_layer_height": [ - "0.32" - ], - "min_layer_height": [ - "0.08" - ], - "printer_settings_id": "FLSun", - "retraction_minimum_travel": [ - "2" - ], - "retract_before_wipe": [ - "70%" - ], - "retraction_length": [ - "3" - ], - "retract_length_toolchange": [ - "1" - ], - "retraction_speed": [ - "30" - ], - "deretraction_speed": [ - "40" - ], - "single_extruder_multi_material": "1", - "change_filament_gcode": "", - "machine_pause_gcode": "M400 U1\n", - "default_filament_profile": [ - "FLSun Generic PLA" - ], - "machine_start_gcode": ";STARTGCODE\nM117 Initializing\n; G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM107\nG28 ;Home\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\n\nG92 E0\nG1 X-98 Y0 Z0.2 F4000 ; move to arc start\nG3 X0 Y-98 I98 Z0.2 E40 F400 ; lay arc stripe 90deg\nG0 Z1 \nG92 E0.0\n", - "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\n;M84\nM18 S180 ;disable motors after 180s\n", - "scan_first_layer": "0" - } +{ + "type": "machine", + "setting_id": "GM003", + "name": "FLSun Q5 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "FLSun Q5", + "default_print_profile": "0.20mm Standard @FLSun Q5", + "gcode_flavor": "marlin", + "thumbnails": [ + "260x260" + ], + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "99.6195x8.71557", + "98.4808x17.3648", + "96.5926x25.8819", + "93.9693x34.202", + "90.6308x42.2618", + "86.6025x50", + "81.9152x57.3576", + "76.6044x64.2788", + "70.7107x70.7107", + "64.2788x76.6044", + "57.3576x81.9152", + "50x86.6025", + "42.2618x90.6308", + "34.202x93.9693", + "25.8819x96.5926", + "17.3648x98.4808", + "8.71557x99.6195", + "6.12323e-15x100", + "-8.71557x99.6195", + "-17.3648x98.4808", + "-25.8819x96.5926", + "-34.202x93.9693", + "-42.2618x90.6308", + "-50x86.6025", + "-57.3576x81.9152", + "-64.2788x76.6044", + "-70.7107x70.7107", + "-76.6044x64.2788", + "-81.9152x57.3576", + "-86.6025x50", + "-90.6308x42.2618", + "-93.9693x34.202", + "-96.5926x25.8819", + "-98.4808x17.3648", + "-99.6195x8.71557", + "-100x1.22465e-14", + "-99.6195x-8.71557", + "-98.4808x-17.3648", + "-96.5926x-25.8819", + "-93.9693x-34.202", + "-90.6308x-42.2618", + "-86.6025x-50", + "-81.9152x-57.3576", + "-76.6044x-64.2788", + "-70.7107x-70.7107", + "-64.2788x-76.6044", + "-57.3576x-81.9152", + "-50x-86.6025", + "-42.2618x-90.6308", + "-34.202x-93.9693", + "-25.8819x-96.5926", + "-17.3648x-98.4808", + "-8.71557x-99.6195", + "-1.83697e-14x-100", + "8.71557x-99.6195", + "17.3648x-98.4808", + "25.8819x-96.5926", + "34.202x-93.9693", + "42.2618x-90.6308", + "50x-86.6025", + "57.3576x-81.9152", + "64.2788x-76.6044", + "70.7107x-70.7107", + "76.6044x-64.2788", + "81.9152x-57.3576", + "86.6025x-50", + "90.6308x-42.2618", + "93.9693x-34.202", + "96.5926x-25.8819", + "98.4808x-17.3648", + "99.6195x-8.71557", + "100x-2.44929e-14" + ], + "printable_height": "200", + "nozzle_type": "hardened_steel", + "auxiliary_fan": "0", + "machine_max_acceleration_e": [ + "3000", + "800" + ], + "machine_max_acceleration_extruding": [ + "1500", + "800" + ], + "machine_max_acceleration_retracting": [ + "2000", + "800" + ], + "machine_max_acceleration_travel": [ + "1500", + "800" + ], + "machine_max_acceleration_x": [ + "1500", + "800" + ], + "machine_max_acceleration_y": [ + "1500", + "800" + ], + "machine_max_acceleration_z": [ + "1500", + "800" + ], + "machine_max_speed_e": [ + "60", + "30" + ], + "machine_max_speed_x": [ + "200", + "150" + ], + "machine_max_speed_y": [ + "200", + "150" + ], + "machine_max_speed_z": [ + "200", + "150" + ], + "machine_max_jerk_e": [ + "5", + "5" + ], + "machine_max_jerk_x": [ + "5", + "10" + ], + "machine_max_jerk_y": [ + "5", + "10" + ], + "machine_max_jerk_z": [ + "5", + "10" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printer_settings_id": "FLSun", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retraction_length": [ + "3" + ], + "retract_length_toolchange": [ + "1" + ], + "retraction_speed": [ + "30" + ], + "deretraction_speed": [ + "40" + ], + "single_extruder_multi_material": "1", + "change_filament_gcode": "", + "machine_pause_gcode": "M400 U1\n", + "default_filament_profile": [ + "FLSun Generic PLA" + ], + "machine_start_gcode": ";STARTGCODE\nM117 Initializing\n; G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM107\nG28 ;Home\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\n\nG92 E0\nG1 X-98 Y0 Z0.2 F4000 ; move to arc start\nG3 X0 Y-98 I98 Z0.2 E40 F400 ; lay arc stripe 90deg\nG0 Z1 \nG92 E0.0\n", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\n;M84\nM18 S180 ;disable motors after 180s\n", + "scan_first_layer": "0" + } \ No newline at end of file diff --git a/resources/profiles/FLSun/machine/FLSun Q5.json b/resources/profiles/FLSun/machine/FLSun Q5.json index e595b53d50..58bb00f5ea 100644 --- a/resources/profiles/FLSun/machine/FLSun Q5.json +++ b/resources/profiles/FLSun/machine/FLSun Q5.json @@ -1,12 +1,12 @@ -{ - "type": "machine_model", - "name": "FLSun Q5", - "model_id": "FLSun-Q5", - "nozzle_diameter": "0.4", - "machine_tech": "FFF", - "family": "FLSun", - "bed_model": "flsun_q5_buildplate_model.stl", - "bed_texture": "flsun_q5_buildplate_texture.png", - "hotend_model": "", - "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" -} +{ + "type": "machine_model", + "name": "FLSun Q5", + "model_id": "FLSun-Q5", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "flsun_q5_buildplate_model.stl", + "bed_texture": "flsun_q5_buildplate_texture.png", + "hotend_model": "", + "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" +} diff --git a/resources/profiles/FLSun/machine/FLSun QQ-S Pro 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun QQ-S Pro 0.4 nozzle.json index 6b62e0e2fc..d955b23443 100644 --- a/resources/profiles/FLSun/machine/FLSun QQ-S Pro 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun QQ-S Pro 0.4 nozzle.json @@ -1,189 +1,189 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "FLSun QQ-S Pro 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "printer_model": "FLSun QQ-S Pro", - "default_print_profile": "0.20mm Standard @FLSun QQSPro", - "gcode_flavor": "marlin", - "thumbnails": [ - "260x260" - ], - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "129.505x11.3302", - "128.025x22.5743", - "125.57x33.6465", - "122.16x44.4626", - "117.82x54.9404", - "112.583x65", - "106.49x74.5649", - "99.5858x83.5624", - "91.9239x91.9239", - "83.5624x99.5858", - "74.5649x106.49", - "65x112.583", - "54.9404x117.82", - "44.4626x122.16", - "33.6465x125.57", - "22.5743x128.025", - "11.3302x129.505", - "7.9602e-15x130", - "-11.3302x129.505", - "-22.5743x128.025", - "-33.6465x125.57", - "-44.4626x122.16", - "-54.9404x117.82", - "-65x112.583", - "-74.5649x106.49", - "-83.5624x99.5858", - "-91.9239x91.9239", - "-99.5858x83.5624", - "-106.49x74.5649", - "-112.583x65", - "-117.82x54.9404", - "-122.16x44.4626", - "-125.57x33.6465", - "-128.025x22.5743", - "-129.505x11.3302", - "-130x1.59204e-14", - "-129.505x-11.3302", - "-128.025x-22.5743", - "-125.57x-33.6465", - "-122.16x-44.4626", - "-117.82x-54.9404", - "-112.583x-65", - "-106.49x-74.5649", - "-99.5858x-83.5624", - "-91.9239x-91.9239", - "-83.5624x-99.5858", - "-74.5649x-106.49", - "-65x-112.583", - "-54.9404x-117.82", - "-44.4626x-122.16", - "-33.6465x-125.57", - "-22.5743x-128.025", - "-11.3302x-129.505", - "-2.38806e-14x-130", - "11.3302x-129.505", - "22.5743x-128.025", - "33.6465x-125.57", - "44.4626x-122.16", - "54.9404x-117.82", - "65x-112.583", - "74.5649x-106.49", - "83.5624x-99.5858", - "91.9239x-91.9239", - "99.5858x-83.5624", - "106.49x-74.5649", - "112.583x-65", - "117.82x-54.9404", - "122.16x-44.4626", - "125.57x-33.6465", - "128.025x-22.5743", - "129.505x-11.3302", - "130x-3.18408e-14" - ], - "printable_height": "360", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0", - "machine_max_acceleration_e": [ - "3000", - "800" - ], - "machine_max_acceleration_extruding": [ - "1500", - "800" - ], - "machine_max_acceleration_retracting": [ - "2000", - "800" - ], - "machine_max_acceleration_travel": [ - "1500", - "800" - ], - "machine_max_acceleration_x": [ - "1500", - "800" - ], - "machine_max_acceleration_y": [ - "1500", - "800" - ], - "machine_max_acceleration_z": [ - "1500", - "800" - ], - "machine_max_speed_e": [ - "60", - "30" - ], - "machine_max_speed_x": [ - "200", - "150" - ], - "machine_max_speed_y": [ - "200", - "150" - ], - "machine_max_speed_z": [ - "200", - "150" - ], - "machine_max_jerk_e": [ - "5", - "5" - ], - "machine_max_jerk_x": [ - "5", - "10" - ], - "machine_max_jerk_y": [ - "5", - "10" - ], - "machine_max_jerk_z": [ - "5", - "10" - ], - "max_layer_height": [ - "0.32" - ], - "min_layer_height": [ - "0.08" - ], - "printer_settings_id": "FLSun", - "retraction_minimum_travel": [ - "2" - ], - "retract_before_wipe": [ - "70%" - ], - "retraction_length": [ - "5" - ], - "retract_length_toolchange": [ - "1" - ], - "retraction_speed": [ - "30" - ], - "deretraction_speed": [ - "40" - ], - "single_extruder_multi_material": "1", - "change_filament_gcode": "", - "machine_pause_gcode": "M400 U1\n", - "default_filament_profile": [ - "FLSun Generic PLA" - ], - "machine_start_gcode": ";STARTGCODE\nM117 Initializing\n; Set coordinate modes\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; Reset speed and extrusion rates\nM200 D0 ; disable volumetric E\nM220 S100 ; reset speed\n; Set initial warmup temps\nM117 Nozzle preheat\nM104 S100 ; preheat extruder to no ooze temp\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed final temp\nM300 S40 P10 ; Bip\n; Home\nM117 Homing\nG28 ; home all with default mesh bed level\n; For ABL users put G29 for a leveling request\n; Final warmup routine\nM117 Final warmup\nM104 S[nozzle_temperature_initial_layer] ; set extruder final temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder final temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed final temp\nM300 S440 P200; 1st beep for printer ready and allow some time to clean nozzle\nM300 S0 P250; wait between dual beep\nM300 S440 P200; 2nd beep for printer ready\nG4 S10; wait to clean the nozzle\nM300 S440 P200; 3rd beep for ready to start printing\n; Prime line routine\nM117 Printing prime line\n;M900 K0; Disable Linear Advance (Marlin) for prime line\nG92 E0.0; reset extrusion distance\nG1 X-54.672 Y-95.203 Z0.3 F4000; go outside print area\nG92 E0.0; reset extrusion distance\nG1 E2 F1000 ; de-retract and push ooze\nG3 X38.904 Y-102.668 I54.672 J95.105 E20.999\nG3 X54.671 Y-95.203 I-38.815 J102.373 E5.45800\nG92 E0.0\nG1 E-5 F3000 ; retract 5mm\nG1 X52.931 Y-96.185 F1000 ; wipe\nG1 X50.985 Y-97.231 F1000 ; wipe\nG1 X49.018 Y-98.238 F1000 ; wipe\nG1 X0 Y-109.798 F1000\nG1 E4.8 F1500; de-retract\nG92 E0.0 ; reset extrusion distance\n; Final print adjustments\nM117 Preparing to print\n;M82 ; extruder absolute mode\nM221 S{if layer_height<0.075}100{else}95{endif}\nM300 S40 P10 ; chirp\nM117 Print [output_filename_format]; Display: Printing started...", - "machine_end_gcode": "; printing object ENDGCODE\nG92 E0.0 ; prepare to retract\nG1 E-6 F3000; retract to avoid stringing\n; Anti-stringing end wiggle\n{if layer_z < max_print_height}G1 Z{min(layer_z+100, max_print_height)}{endif} F4000 ; Move print head up\nG1 X0 Y120 F3000 ; present print\n; Reset print setting overrides\nG92 E0\nM200 D0 ; disable volumetric e\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extruder factor to 100%\n;M900 K0 ; reset linear acceleration(Marlin)\n; Shut down printer\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM18 S180 ;disable motors after 180s\nM300 S40 P10 ; Bip\nM117 Print finish.", - "scan_first_layer": "0" - } +{ + "type": "machine", + "setting_id": "GM003", + "name": "FLSun QQ-S Pro 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "FLSun QQ-S Pro", + "default_print_profile": "0.20mm Standard @FLSun QQSPro", + "gcode_flavor": "marlin", + "thumbnails": [ + "260x260" + ], + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "129.505x11.3302", + "128.025x22.5743", + "125.57x33.6465", + "122.16x44.4626", + "117.82x54.9404", + "112.583x65", + "106.49x74.5649", + "99.5858x83.5624", + "91.9239x91.9239", + "83.5624x99.5858", + "74.5649x106.49", + "65x112.583", + "54.9404x117.82", + "44.4626x122.16", + "33.6465x125.57", + "22.5743x128.025", + "11.3302x129.505", + "7.9602e-15x130", + "-11.3302x129.505", + "-22.5743x128.025", + "-33.6465x125.57", + "-44.4626x122.16", + "-54.9404x117.82", + "-65x112.583", + "-74.5649x106.49", + "-83.5624x99.5858", + "-91.9239x91.9239", + "-99.5858x83.5624", + "-106.49x74.5649", + "-112.583x65", + "-117.82x54.9404", + "-122.16x44.4626", + "-125.57x33.6465", + "-128.025x22.5743", + "-129.505x11.3302", + "-130x1.59204e-14", + "-129.505x-11.3302", + "-128.025x-22.5743", + "-125.57x-33.6465", + "-122.16x-44.4626", + "-117.82x-54.9404", + "-112.583x-65", + "-106.49x-74.5649", + "-99.5858x-83.5624", + "-91.9239x-91.9239", + "-83.5624x-99.5858", + "-74.5649x-106.49", + "-65x-112.583", + "-54.9404x-117.82", + "-44.4626x-122.16", + "-33.6465x-125.57", + "-22.5743x-128.025", + "-11.3302x-129.505", + "-2.38806e-14x-130", + "11.3302x-129.505", + "22.5743x-128.025", + "33.6465x-125.57", + "44.4626x-122.16", + "54.9404x-117.82", + "65x-112.583", + "74.5649x-106.49", + "83.5624x-99.5858", + "91.9239x-91.9239", + "99.5858x-83.5624", + "106.49x-74.5649", + "112.583x-65", + "117.82x-54.9404", + "122.16x-44.4626", + "125.57x-33.6465", + "128.025x-22.5743", + "129.505x-11.3302", + "130x-3.18408e-14" + ], + "printable_height": "360", + "nozzle_type": "hardened_steel", + "auxiliary_fan": "0", + "machine_max_acceleration_e": [ + "3000", + "800" + ], + "machine_max_acceleration_extruding": [ + "1500", + "800" + ], + "machine_max_acceleration_retracting": [ + "2000", + "800" + ], + "machine_max_acceleration_travel": [ + "1500", + "800" + ], + "machine_max_acceleration_x": [ + "1500", + "800" + ], + "machine_max_acceleration_y": [ + "1500", + "800" + ], + "machine_max_acceleration_z": [ + "1500", + "800" + ], + "machine_max_speed_e": [ + "60", + "30" + ], + "machine_max_speed_x": [ + "200", + "150" + ], + "machine_max_speed_y": [ + "200", + "150" + ], + "machine_max_speed_z": [ + "200", + "150" + ], + "machine_max_jerk_e": [ + "5", + "5" + ], + "machine_max_jerk_x": [ + "5", + "10" + ], + "machine_max_jerk_y": [ + "5", + "10" + ], + "machine_max_jerk_z": [ + "5", + "10" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printer_settings_id": "FLSun", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retraction_length": [ + "5" + ], + "retract_length_toolchange": [ + "1" + ], + "retraction_speed": [ + "30" + ], + "deretraction_speed": [ + "40" + ], + "single_extruder_multi_material": "1", + "change_filament_gcode": "", + "machine_pause_gcode": "M400 U1\n", + "default_filament_profile": [ + "FLSun Generic PLA" + ], + "machine_start_gcode": ";STARTGCODE\nM117 Initializing\n; Set coordinate modes\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; Reset speed and extrusion rates\nM200 D0 ; disable volumetric E\nM220 S100 ; reset speed\n; Set initial warmup temps\nM117 Nozzle preheat\nM104 S100 ; preheat extruder to no ooze temp\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed final temp\nM300 S40 P10 ; Bip\n; Home\nM117 Homing\nG28 ; home all with default mesh bed level\n; For ABL users put G29 for a leveling request\n; Final warmup routine\nM117 Final warmup\nM104 S[nozzle_temperature_initial_layer] ; set extruder final temp\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder final temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed final temp\nM300 S440 P200; 1st beep for printer ready and allow some time to clean nozzle\nM300 S0 P250; wait between dual beep\nM300 S440 P200; 2nd beep for printer ready\nG4 S10; wait to clean the nozzle\nM300 S440 P200; 3rd beep for ready to start printing\n; Prime line routine\nM117 Printing prime line\n;M900 K0; Disable Linear Advance (Marlin) for prime line\nG92 E0.0; reset extrusion distance\nG1 X-54.672 Y-95.203 Z0.3 F4000; go outside print area\nG92 E0.0; reset extrusion distance\nG1 E2 F1000 ; de-retract and push ooze\nG3 X38.904 Y-102.668 I54.672 J95.105 E20.999\nG3 X54.671 Y-95.203 I-38.815 J102.373 E5.45800\nG92 E0.0\nG1 E-5 F3000 ; retract 5mm\nG1 X52.931 Y-96.185 F1000 ; wipe\nG1 X50.985 Y-97.231 F1000 ; wipe\nG1 X49.018 Y-98.238 F1000 ; wipe\nG1 X0 Y-109.798 F1000\nG1 E4.8 F1500; de-retract\nG92 E0.0 ; reset extrusion distance\n; Final print adjustments\nM117 Preparing to print\n;M82 ; extruder absolute mode\nM221 S{if layer_height<0.075}100{else}95{endif}\nM300 S40 P10 ; chirp\nM117 Print [output_filename_format]; Display: Printing started...", + "machine_end_gcode": "; printing object ENDGCODE\nG92 E0.0 ; prepare to retract\nG1 E-6 F3000; retract to avoid stringing\n; Anti-stringing end wiggle\n{if layer_z < max_print_height}G1 Z{min(layer_z+100, max_print_height)}{endif} F4000 ; Move print head up\nG1 X0 Y120 F3000 ; present print\n; Reset print setting overrides\nG92 E0\nM200 D0 ; disable volumetric e\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extruder factor to 100%\n;M900 K0 ; reset linear acceleration(Marlin)\n; Shut down printer\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM18 S180 ;disable motors after 180s\nM300 S40 P10 ; Bip\nM117 Print finish.", + "scan_first_layer": "0" + } \ No newline at end of file diff --git a/resources/profiles/FLSun/machine/FLSun QQ-S Pro.json b/resources/profiles/FLSun/machine/FLSun QQ-S Pro.json index eaf0dac196..e74a8a6f3a 100644 --- a/resources/profiles/FLSun/machine/FLSun QQ-S Pro.json +++ b/resources/profiles/FLSun/machine/FLSun QQ-S Pro.json @@ -1,12 +1,12 @@ -{ - "type": "machine_model", - "name": "FLSun QQ-S Pro", - "model_id": "FLSun-QQS-Pro", - "nozzle_diameter": "0.4", - "machine_tech": "FFF", - "family": "FLSun", - "bed_model": "flsun_qqspro_buildplate_model.stl", - "bed_texture": "flsun_qqspro_buildplate_texture.png", - "hotend_model": "", - "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" -} +{ + "type": "machine_model", + "name": "FLSun QQ-S Pro", + "model_id": "FLSun-QQS-Pro", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "flsun_qqspro_buildplate_model.stl", + "bed_texture": "flsun_qqspro_buildplate_texture.png", + "hotend_model": "", + "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" +} diff --git a/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json new file mode 100644 index 0000000000..940d7a6530 --- /dev/null +++ b/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json @@ -0,0 +1,100 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "FLSun S1 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "FLSun S1", + "default_print_profile": "0.20mm PLA_HS_S1_FLSUN @FLSUN", + "gcode_flavor": "klipper", + "nozzle_diameter": [ + "0.4" + ], + "bed_exclude_area": [ + "0x0" + ], + "printable_area": [ + "159.392x13.945", + "157.57x27.7838", + "154.549x41.4112", + "150.351x54.7234", + "145.01x67.6191", + "138.564x80.0002", + "131.065x91.7725", + "122.567x102.846", + "113.137x113.137", + "102.846x122.567", + "91.7725x131.065", + "80.0003x138.564", + "67.6191x145.01", + "54.7234x150.351", + "41.4112x154.549", + "27.7838x157.57", + "13.945x159.392", + "9.79721e-15x160", + "-13.945x159.392", + "-27.7838x157.57", + "-41.4112x154.549", + "-54.7234x150.351", + "-67.6191x145.01", + "-80.0002x138.564", + "-91.7725x131.065", + "-102.846x122.567", + "-113.137x113.137", + "-122.567x102.846", + "-131.065x91.7725", + "-138.564x80.0003", + "-145.01x67.6191", + "-150.351x54.7234", + "-154.549x41.4112", + "-157.57x27.7838", + "-159.392x13.945", + "-160x1.95944e-14", + "-159.392x-13.945", + "-157.57x-27.7838", + "-154.549x-41.4112", + "-150.351x-54.7234", + "-145.01x-67.6191", + "-138.564x-80.0003", + "-131.065x-91.7725", + "-122.567x-102.846", + "-113.137x-113.137", + "-102.846x-122.567", + "-91.7725x-131.065", + "-80.0003x-138.564", + "-67.6191x-145.01", + "-54.7234x-150.351", + "-41.4112x-154.549", + "-27.7838x-157.57", + "-13.945x-159.392", + "-2.93916e-14x-160", + "13.945x-159.392", + "27.7838x-157.57", + "41.4112x-154.549", + "54.7234x-150.351", + "67.6191x-145.01", + "80.0002x-138.564", + "91.7725x-131.065", + "102.846x-122.567", + "113.137x-113.137", + "122.567x-102.846", + "131.065x-91.7725", + "138.564x-80.0002", + "145.01x-67.6191", + "150.351x-54.7234", + "154.549x-41.4112", + "157.57x-27.7838", + "159.392x-13.945", + "160x-3.91888e-14" + ], + "printable_height": "430", + "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning", + "machine_start_gcode": "G21\nG90\nM82\nG28 ; home all axes\nM140 S[first_layer_bed_temperature] is_AB\nM104 S[first_layer_temperature] T0\nG1 F3000 Z1\nG1 X-155 Y0 Z0.4\nM107 T0\nM109 S[first_layer_temperature] T0\nM190 S[first_layer_bed_temperature] is_AB\nG92 E0\nG3 X0 Y-155 I155 Z0.3 E30 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", + "layer_change_gcode": "", + "machine_pause_gcode": "M600", + "scan_first_layer": "0", + "nozzle_type": "hardened_steel", + "auxiliary_fan": "0" +} + diff --git a/resources/profiles/FLSun/machine/FLSun S1.json b/resources/profiles/FLSun/machine/FLSun S1.json new file mode 100644 index 0000000000..bb824ef906 --- /dev/null +++ b/resources/profiles/FLSun/machine/FLSun S1.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "FLSun S1", + "model_id": "FLSun_S1", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "flsun_s1_buildplate_model.stl", + "bed_texture": "flsun_s1_buildplate_texture.svg", + "hotend_model": "", + "default_materials": "FLSun Generic PLA-HS-S1" +} diff --git a/resources/profiles/FLSun/machine/FLSun SR 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun SR 0.4 nozzle.json index 2bae873ef6..67b444d317 100644 --- a/resources/profiles/FLSun/machine/FLSun SR 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun SR 0.4 nozzle.json @@ -1,238 +1,238 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "FLSun Super Racer 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "printer_model": "FLSun Super Racer (SR)", - "default_print_profile": "0.20mm Standard @FLSun SR", - "gcode_flavor": "marlin", - "nozzle_diameter": [ - "0.4" - ], - "nozzle_type": "brass", - "default_filament_profile": [ - "FLSun Generic PLA" - ], - "bed_exclude_area": [ - "0x0" - ], - "auxiliary_fan": "0", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", - "change_filament_gcode": ";FILAMENT_CHANGE\nM600", - "deretraction_speed": [ - "40" - ], - "extruder_clearance_height_to_lid": "140", - "extruder_clearance_height_to_rod": "36", - "extruder_clearance_radius": "65", - "machine_end_gcode": "; printing object ENDGCODE\nG92 E0.0 ; prepare to retract\nG1 E-6 F3000; retract to avoid stringing\n; Anti-stringing end wiggle\n{if layer_z < max_print_height}G1 Z{min(layer_z+100, max_print_height)}{endif} F4000 ; Move print head up\nG1 X0 Y120 F3000 ; present print\n; Reset print setting overrides\nG92 E0\nM200 D0 ; disable volumetric e\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extruder factor to 100%\n;M900 K0 ; reset linear acceleration(Marlin)\n; Shut down printer\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM18 S180 ;disable motors after 180s\nM300 S40 P10 ; Bip\nM117 Print finish.", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "5000", - "2000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "3000", - "3000" - ], - "machine_max_acceleration_x": [ - "5000", - "2000" - ], - "machine_max_acceleration_y": [ - "5000", - "2000" - ], - "machine_max_acceleration_z": [ - "1500", - "200" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "0.4" - ], - "machine_max_speed_e": [ - "30", - "25" - ], - "machine_max_speed_x": [ - "300", - "200" - ], - "machine_max_speed_y": [ - "300", - "200" - ], - "machine_max_speed_z": [ - "20", - "12" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M600", - "machine_start_gcode": ";STARTGCODE\nM117 Initializing\n; Set coordinate modes\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; Reset speed and extrusion rates\nM200 D0 ; disable volumetric E\nM220 S100 ; reset speed\n; Set initial warmup temps\nM117 Nozzle preheat\nM104 S100 ; preheat extruder to no ooze temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed final temp\nM300 S40 P10 ; Bip\n; Home\nM117 Homing\nG28 ; home all with default mesh bed level\n; For ABL users put G29 for a leveling request\n; Final warmup routine\nM117 Final warmup\nM104 S[first_layer_temperature] ; set extruder final temp\nM109 S[first_layer_temperature] ; wait for extruder final temp\nM190 S[first_layer_bed_temperature] ; wait for bed final temp\nM300 S440 P200 ; 1st beep for printer ready and allow some time to clean nozzle\nM300 S0 P250 ; wait between dual beep\nM300 S440 P200 ; 2nd beep for printer ready\nG4 S10 ; wait to clean the nozzle\nM300 S440 P200 ; 3rd beep for ready to start printing\n; Prime line routine\nM117 Printing prime line\n;M900 K0; Disable Linear Advance (Marlin) for prime line\nG92 E0.0; reset extrusion distance\nG1 F3000 Z1\nG1 X-150 Y0 Z0.4\nG92 E0\nG3 X0 Y-130 I150 Z0.3 E30 F2000\nG92 E0.0 ; reset extrusion distance\n; Final print adjustments\nM117 Preparing to print\n;M82 ; extruder absolute mode\nM221 S{if layer_height<0.075}100{else}95{endif}\nM300 S40 P10 ; chirp\nM117 Print [input_filename_base]; Display: Printing started...", - "machine_unload_filament_time": "0", - "max_layer_height": [ - "0.2" - ], - "min_layer_height": [ - "0.08" - ], - "printable_area": [ - "134.486x11.766", - "132.949x23.4425", - "130.4x34.9406", - "126.859x46.1727", - "122.352x57.0535", - "116.913x67.5", - "110.586x77.4328", - "103.416x86.7763", - "95.4594x95.4594", - "86.7763x103.416", - "77.4328x110.586", - "67.5x116.913", - "57.0535x122.352", - "46.1727x126.859", - "34.9406x130.4", - "23.4425x132.949", - "11.766x134.486", - "8.26637e-15x135", - "-11.766x134.486", - "-23.4425x132.949", - "-34.9406x130.4", - "-46.1727x126.859", - "-57.0535x122.352", - "-67.5x116.913", - "-77.4328x110.586", - "-86.7763x103.416", - "-95.4594x95.4594", - "-103.416x86.7763", - "-110.586x77.4328", - "-116.913x67.5", - "-122.352x57.0535", - "-126.859x46.1727", - "-130.4x34.9406", - "-132.949x23.4425", - "-134.486x11.766", - "-135x1.65327e-14", - "-134.486x-11.766", - "-132.949x-23.4425", - "-130.4x-34.9406", - "-126.859x-46.1727", - "-122.352x-57.0535", - "-116.913x-67.5", - "-110.586x-77.4328", - "-103.416x-86.7763", - "-95.4594x-95.4594", - "-86.7763x-103.416", - "-77.4328x-110.586", - "-67.5x-116.913", - "-57.0535x-122.352", - "-46.1727x-126.859", - "-34.9406x-130.4", - "-23.4425x-132.949", - "-11.766x-134.486", - "-2.47991e-14x-135", - "11.766x-134.486", - "23.4425x-132.949", - "34.9406x-130.4", - "46.1727x-126.859", - "57.0535x-122.352", - "67.5x-116.913", - "77.4328x-110.586", - "86.7763x-103.416", - "95.4594x-95.4594", - "103.416x-86.7763", - "110.586x-77.4328", - "116.913x-67.5", - "122.352x-57.0535", - "126.859x-46.1727", - "130.4x-34.9406", - "132.949x-23.4425", - "134.486x-11.766", - "135x-3.30655e-14" - ], - "printable_height": "330", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_apikey": "", - "printhost_authorization_type": "key", - "printhost_cafile": "", - "printhost_password": "", - "printhost_port": "", - "printhost_ssl_ignore_revoke": "0", - "printhost_user": "", - "retract_before_wipe": [ - "70%" - ], - "retract_length_toolchange": [ - "2" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_length": [ - "6.5" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "40" - ], - "template_custom_gcode": ";FILAMENT_CHANGE\nM600", - "thumbnails": [ - "260x260" - ], - "wipe": [ - "1" - ], - "wipe_distance": [ - "1" - ], - "z_hop": [ - "0.3" - ], - "z_hop_types": [ - "Normal Lift" - ] +{ + "type": "machine", + "setting_id": "GM003", + "name": "FLSun Super Racer 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "FLSun Super Racer (SR)", + "default_print_profile": "0.20mm Standard @FLSun SR", + "gcode_flavor": "marlin", + "nozzle_diameter": [ + "0.4" + ], + "nozzle_type": "brass", + "default_filament_profile": [ + "FLSun Generic PLA" + ], + "bed_exclude_area": [ + "0x0" + ], + "auxiliary_fan": "0", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]", + "change_filament_gcode": ";FILAMENT_CHANGE\nM600", + "deretraction_speed": [ + "40" + ], + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "machine_end_gcode": "; printing object ENDGCODE\nG92 E0.0 ; prepare to retract\nG1 E-6 F3000; retract to avoid stringing\n; Anti-stringing end wiggle\n{if layer_z < max_print_height}G1 Z{min(layer_z+100, max_print_height)}{endif} F4000 ; Move print head up\nG1 X0 Y120 F3000 ; present print\n; Reset print setting overrides\nG92 E0\nM200 D0 ; disable volumetric e\nM220 S100 ; reset speed factor to 100%\nM221 S100 ; reset extruder factor to 100%\n;M900 K0 ; reset linear acceleration(Marlin)\n; Shut down printer\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM18 S180 ;disable motors after 180s\nM300 S40 P10 ; Bip\nM117 Print finish.", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "5000", + "2000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "3000", + "3000" + ], + "machine_max_acceleration_x": [ + "5000", + "2000" + ], + "machine_max_acceleration_y": [ + "5000", + "2000" + ], + "machine_max_acceleration_z": [ + "1500", + "200" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "0.4" + ], + "machine_max_speed_e": [ + "30", + "25" + ], + "machine_max_speed_x": [ + "300", + "200" + ], + "machine_max_speed_y": [ + "300", + "200" + ], + "machine_max_speed_z": [ + "20", + "12" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M600", + "machine_start_gcode": ";STARTGCODE\nM117 Initializing\n; Set coordinate modes\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n; Reset speed and extrusion rates\nM200 D0 ; disable volumetric E\nM220 S100 ; reset speed\n; Set initial warmup temps\nM117 Nozzle preheat\nM104 S100 ; preheat extruder to no ooze temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed final temp\nM300 S40 P10 ; Bip\n; Home\nM117 Homing\nG28 ; home all with default mesh bed level\n; For ABL users put G29 for a leveling request\n; Final warmup routine\nM117 Final warmup\nM104 S[first_layer_temperature] ; set extruder final temp\nM109 S[first_layer_temperature] ; wait for extruder final temp\nM190 S[first_layer_bed_temperature] ; wait for bed final temp\nM300 S440 P200 ; 1st beep for printer ready and allow some time to clean nozzle\nM300 S0 P250 ; wait between dual beep\nM300 S440 P200 ; 2nd beep for printer ready\nG4 S10 ; wait to clean the nozzle\nM300 S440 P200 ; 3rd beep for ready to start printing\n; Prime line routine\nM117 Printing prime line\n;M900 K0; Disable Linear Advance (Marlin) for prime line\nG92 E0.0; reset extrusion distance\nG1 F3000 Z1\nG1 X-150 Y0 Z0.4\nG92 E0\nG3 X0 Y-130 I150 Z0.3 E30 F2000\nG92 E0.0 ; reset extrusion distance\n; Final print adjustments\nM117 Preparing to print\n;M82 ; extruder absolute mode\nM221 S{if layer_height<0.075}100{else}95{endif}\nM300 S40 P10 ; chirp\nM117 Print [input_filename_base]; Display: Printing started...", + "machine_unload_filament_time": "0", + "max_layer_height": [ + "0.2" + ], + "min_layer_height": [ + "0.08" + ], + "printable_area": [ + "134.486x11.766", + "132.949x23.4425", + "130.4x34.9406", + "126.859x46.1727", + "122.352x57.0535", + "116.913x67.5", + "110.586x77.4328", + "103.416x86.7763", + "95.4594x95.4594", + "86.7763x103.416", + "77.4328x110.586", + "67.5x116.913", + "57.0535x122.352", + "46.1727x126.859", + "34.9406x130.4", + "23.4425x132.949", + "11.766x134.486", + "8.26637e-15x135", + "-11.766x134.486", + "-23.4425x132.949", + "-34.9406x130.4", + "-46.1727x126.859", + "-57.0535x122.352", + "-67.5x116.913", + "-77.4328x110.586", + "-86.7763x103.416", + "-95.4594x95.4594", + "-103.416x86.7763", + "-110.586x77.4328", + "-116.913x67.5", + "-122.352x57.0535", + "-126.859x46.1727", + "-130.4x34.9406", + "-132.949x23.4425", + "-134.486x11.766", + "-135x1.65327e-14", + "-134.486x-11.766", + "-132.949x-23.4425", + "-130.4x-34.9406", + "-126.859x-46.1727", + "-122.352x-57.0535", + "-116.913x-67.5", + "-110.586x-77.4328", + "-103.416x-86.7763", + "-95.4594x-95.4594", + "-86.7763x-103.416", + "-77.4328x-110.586", + "-67.5x-116.913", + "-57.0535x-122.352", + "-46.1727x-126.859", + "-34.9406x-130.4", + "-23.4425x-132.949", + "-11.766x-134.486", + "-2.47991e-14x-135", + "11.766x-134.486", + "23.4425x-132.949", + "34.9406x-130.4", + "46.1727x-126.859", + "57.0535x-122.352", + "67.5x-116.913", + "77.4328x-110.586", + "86.7763x-103.416", + "95.4594x-95.4594", + "103.416x-86.7763", + "110.586x-77.4328", + "116.913x-67.5", + "122.352x-57.0535", + "126.859x-46.1727", + "130.4x-34.9406", + "132.949x-23.4425", + "134.486x-11.766", + "135x-3.30655e-14" + ], + "printable_height": "330", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_apikey": "", + "printhost_authorization_type": "key", + "printhost_cafile": "", + "printhost_password": "", + "printhost_port": "", + "printhost_ssl_ignore_revoke": "0", + "printhost_user": "", + "retract_before_wipe": [ + "70%" + ], + "retract_length_toolchange": [ + "2" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "6.5" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "40" + ], + "template_custom_gcode": ";FILAMENT_CHANGE\nM600", + "thumbnails": [ + "260x260" + ], + "wipe": [ + "1" + ], + "wipe_distance": [ + "1" + ], + "z_hop": [ + "0.3" + ], + "z_hop_types": [ + "Normal Lift" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/machine/FLSun SR.json b/resources/profiles/FLSun/machine/FLSun SR.json index 6e85731d28..92e29acc48 100644 --- a/resources/profiles/FLSun/machine/FLSun SR.json +++ b/resources/profiles/FLSun/machine/FLSun SR.json @@ -1,12 +1,12 @@ -{ - "type": "machine_model", - "name": "FLSun Super Racer (SR)", - "model_id": "FLSun_Super_Racer", - "nozzle_diameter": "0.4", - "machine_tech": "FFF", - "family": "FLSun", - "bed_model": "flsun_SR_buildplate_model.stl", - "bed_texture": "flsun_SR_buildplate_texture.svg", - "hotend_model": "", - "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" +{ + "type": "machine_model", + "name": "FLSun Super Racer (SR)", + "model_id": "FLSun_Super_Racer", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "flsun_SR_buildplate_model.stl", + "bed_texture": "flsun_SR_buildplate_texture.svg", + "hotend_model": "", + "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" } \ No newline at end of file diff --git a/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json new file mode 100644 index 0000000000..fe098bd2bc --- /dev/null +++ b/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json @@ -0,0 +1,100 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "FLSun T1 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "FLSun T1", + "default_print_profile": "0.20mm PLA_HS_T1_FLSUN @FLSUN", + "gcode_flavor": "klipper", + "nozzle_diameter": [ + "0.4" + ], + "bed_exclude_area": [ + "0x0" + ], + "printable_area": [ + "129.505x11.3302", + "128.025x22.5743", + "125.57x33.6465", + "122.16x44.4626", + "117.82x54.9404", + "112.583x65", + "106.49x74.5649", + "99.5858x83.5624", + "91.9239x91.9239", + "83.5624x99.5858", + "74.5649x106.49", + "65x112.583", + "54.9404x117.82", + "44.4626x122.16", + "33.6465x125.57", + "22.5743x128.025", + "11.3302x129.505", + "7.9602e-15x130", + "-11.3302x129.505", + "-22.5743x128.025", + "-33.6465x125.57", + "-44.4626x122.16", + "-54.9404x117.82", + "-65x112.583", + "-74.5649x106.49", + "-83.5624x99.5858", + "-91.9239x91.9239", + "-99.5858x83.5624", + "-106.49x74.5649", + "-112.583x65", + "-117.82x54.9404", + "-122.16x44.4626", + "-125.57x33.6465", + "-128.025x22.5743", + "-129.505x11.3302", + "-130x1.59204e-14", + "-129.505x-11.3302", + "-128.025x-22.5743", + "-125.57x-33.6465", + "-122.16x-44.4626", + "-117.82x-54.9404", + "-112.583x-65", + "-106.49x-74.5649", + "-99.5858x-83.5624", + "-91.9239x-91.9239", + "-83.5624x-99.5858", + "-74.5649x-106.49", + "-65x-112.583", + "-54.9404x-117.82", + "-44.4626x-122.16", + "-33.6465x-125.57", + "-22.5743x-128.025", + "-11.3302x-129.505", + "-2.38806e-14x-130", + "11.3302x-129.505", + "22.5743x-128.025", + "33.6465x-125.57", + "44.4626x-122.16", + "54.9404x-117.82", + "65x-112.583", + "74.5649x-106.49", + "83.5624x-99.5858", + "91.9239x-91.9239", + "99.5858x-83.5624", + "106.49x-74.5649", + "112.583x-65", + "117.82x-54.9404", + "122.16x-44.4626", + "125.57x-33.6465", + "128.025x-22.5743", + "129.505x-11.3302", + "130x-3.18408e-14" + ], + "printable_height": "330", + "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning\nTIMELAPSE_RENDER", + "machine_start_gcode": "G21\nG90\nM82\nG28 ; home all axes\nM140 S[first_layer_bed_temperature]\nM104 S[first_layer_temperature] T0\nG1 F3000 Z1\nG1 X-125 Y0 Z0.4\nM109 S[first_layer_temperature] T0\nM190 S[first_layer_bed_temperature]\nM107 T0\nG92 E0\nG3 X0 Y-125 I125 Z0.3 E30 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", + "layer_change_gcode": "", + "machine_pause_gcode": "M600", + "scan_first_layer": "0", + "nozzle_type": "hardened_steel", + "auxiliary_fan": "0" +} + diff --git a/resources/profiles/FLSun/machine/FLSun T1.json b/resources/profiles/FLSun/machine/FLSun T1.json new file mode 100644 index 0000000000..65ea1a3737 --- /dev/null +++ b/resources/profiles/FLSun/machine/FLSun T1.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "FLSun T1", + "model_id": "FLSun_T1", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "flsun_T1_buildplate_model.stl", + "bed_texture": "flsun_T1_buildplate_texture.svg", + "hotend_model": "", + "default_materials": "FLSun Generic PLA-HS-T1" +} diff --git a/resources/profiles/FLSun/machine/FLSun V400 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun V400 0.4 nozzle.json index 98c26efe89..795d2398ed 100644 --- a/resources/profiles/FLSun/machine/FLSun V400 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun V400 0.4 nozzle.json @@ -1,100 +1,100 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "FLSun V400 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "printer_model": "FLSun V400", - "default_print_profile": "0.20mm Standard @FLSun V400", - "gcode_flavor": "klipper", - "nozzle_diameter": [ - "0.4" - ], - "bed_exclude_area": [ - "0x0" - ], - "printable_area": [ - "149.429x13.0734", - "147.721x26.0472", - "144.889x38.8229", - "140.954x51.303", - "135.946x63.3927", - "129.904x75", - "122.873x86.0365", - "114.907x96.4181", - "106.066x106.066", - "96.4181x114.907", - "86.0365x122.873", - "75x129.904", - "63.3927x135.946", - "51.303x140.954", - "38.8229x144.889", - "26.0472x147.721", - "13.0734x149.429", - "9.18485e-15x150", - "-13.0734x149.429", - "-26.0472x147.721", - "-38.8229x144.889", - "-51.303x140.954", - "-63.3927x135.946", - "-75x129.904", - "-86.0365x122.873", - "-96.4181x114.907", - "-106.066x106.066", - "-114.907x96.4181", - "-122.873x86.0365", - "-129.904x75", - "-135.946x63.3927", - "-140.954x51.303", - "-144.889x38.8229", - "-147.721x26.0472", - "-149.429x13.0734", - "-150x1.83697e-14", - "-149.429x-13.0734", - "-147.721x-26.0472", - "-144.889x-38.8229", - "-140.954x-51.303", - "-135.946x-63.3927", - "-129.904x-75", - "-122.873x-86.0365", - "-114.907x-96.4181", - "-106.066x-106.066", - "-96.4181x-114.907", - "-86.0365x-122.873", - "-75x-129.904", - "-63.3927x-135.946", - "-51.303x-140.954", - "-38.8229x-144.889", - "-26.0472x-147.721", - "-13.0734x-149.429", - "-2.75546e-14x-150", - "13.0734x-149.429", - "26.0472x-147.721", - "38.8229x-144.889", - "51.303x-140.954", - "63.3927x-135.946", - "75x-129.904", - "86.0365x-122.873", - "96.4181x-114.907", - "106.066x-106.066", - "114.907x-96.4181", - "122.873x-86.0365", - "129.904x-75", - "135.946x-63.3927", - "140.954x-51.303", - "144.889x-38.8229", - "147.721x-26.0472", - "149.429x-13.0734", - "150x-3.67394e-14" - ], - "printable_height": "410", - "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 E-1 F300\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning", - "machine_start_gcode": "G21\nG90\nM82\nM107 T0\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer] T0\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer] T0\nG28\nG1 F3000 Z1\nG1 X-150 Y0 Z0.4\nG92 E0\nG3 X0 Y-130 I150 Z0.3 E30 F2000\nG92 E0", - "layer_change_gcode": "", - "machine_pause_gcode": "PAUSE", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0" - } - +{ + "type": "machine", + "setting_id": "GM003", + "name": "FLSun V400 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "FLSun V400", + "default_print_profile": "0.20mm Standard @FLSun V400", + "gcode_flavor": "klipper", + "nozzle_diameter": [ + "0.4" + ], + "bed_exclude_area": [ + "0x0" + ], + "printable_area": [ + "149.429x13.0734", + "147.721x26.0472", + "144.889x38.8229", + "140.954x51.303", + "135.946x63.3927", + "129.904x75", + "122.873x86.0365", + "114.907x96.4181", + "106.066x106.066", + "96.4181x114.907", + "86.0365x122.873", + "75x129.904", + "63.3927x135.946", + "51.303x140.954", + "38.8229x144.889", + "26.0472x147.721", + "13.0734x149.429", + "9.18485e-15x150", + "-13.0734x149.429", + "-26.0472x147.721", + "-38.8229x144.889", + "-51.303x140.954", + "-63.3927x135.946", + "-75x129.904", + "-86.0365x122.873", + "-96.4181x114.907", + "-106.066x106.066", + "-114.907x96.4181", + "-122.873x86.0365", + "-129.904x75", + "-135.946x63.3927", + "-140.954x51.303", + "-144.889x38.8229", + "-147.721x26.0472", + "-149.429x13.0734", + "-150x1.83697e-14", + "-149.429x-13.0734", + "-147.721x-26.0472", + "-144.889x-38.8229", + "-140.954x-51.303", + "-135.946x-63.3927", + "-129.904x-75", + "-122.873x-86.0365", + "-114.907x-96.4181", + "-106.066x-106.066", + "-96.4181x-114.907", + "-86.0365x-122.873", + "-75x-129.904", + "-63.3927x-135.946", + "-51.303x-140.954", + "-38.8229x-144.889", + "-26.0472x-147.721", + "-13.0734x-149.429", + "-2.75546e-14x-150", + "13.0734x-149.429", + "26.0472x-147.721", + "38.8229x-144.889", + "51.303x-140.954", + "63.3927x-135.946", + "75x-129.904", + "86.0365x-122.873", + "96.4181x-114.907", + "106.066x-106.066", + "114.907x-96.4181", + "122.873x-86.0365", + "129.904x-75", + "135.946x-63.3927", + "140.954x-51.303", + "144.889x-38.8229", + "147.721x-26.0472", + "149.429x-13.0734", + "150x-3.67394e-14" + ], + "printable_height": "410", + "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 E-1 F300\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning", + "machine_start_gcode": "G21\nG90\nM82\nM107 T0\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer] T0\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer] T0\nG28\nG1 F3000 Z1\nG1 X-150 Y0 Z0.4\nG92 E0\nG3 X0 Y-130 I150 Z0.3 E30 F2000\nG92 E0", + "layer_change_gcode": "", + "machine_pause_gcode": "PAUSE", + "scan_first_layer": "0", + "nozzle_type": "hardened_steel", + "auxiliary_fan": "0" + } + diff --git a/resources/profiles/FLSun/machine/FLSun V400.json b/resources/profiles/FLSun/machine/FLSun V400.json index 732b7c8729..a5c79cac65 100644 --- a/resources/profiles/FLSun/machine/FLSun V400.json +++ b/resources/profiles/FLSun/machine/FLSun V400.json @@ -1,12 +1,12 @@ -{ - "type": "machine_model", - "name": "FLSun V400", - "model_id": "FLSun_V400", - "nozzle_diameter": "0.4", - "machine_tech": "FFF", - "family": "FLSun", - "bed_model": "flsun_v400_buildplate_model.stl", - "bed_texture": "flsun_v400_buildplate_texture.svg", - "hotend_model": "", - "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" -} +{ + "type": "machine_model", + "name": "FLSun V400", + "model_id": "FLSun_V400", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "flsun_v400_buildplate_model.stl", + "bed_texture": "flsun_v400_buildplate_texture.svg", + "hotend_model": "", + "default_materials": "FLSun Generic ABS;FLSun Generic PLA;FLSun Generic PLA-CF;FLSun Generic PETG;FLSun Generic TPU;FLSun Generic ASA;FLSun Generic PC;FLSun Generic PVA;FLSun Generic PA;FLSun Generic PA-CF" +} diff --git a/resources/profiles/FLSun/machine/fdm_machine_common.json b/resources/profiles/FLSun/machine/fdm_machine_common.json index 6f2b40c2a2..3deef99eaa 100644 --- a/resources/profiles/FLSun/machine/fdm_machine_common.json +++ b/resources/profiles/FLSun/machine/fdm_machine_common.json @@ -1,56 +1,56 @@ -{ - "type": "machine", - "name": "fdm_machine_common", - "from": "system", - "instantiation": "false", - "gcode_flavor": "marlin", - "machine_start_gcode": "", - "machine_end_gcode": "", - "extruder_colour": ["#018001"], - "extruder_offset": ["0x0"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["5000", "5000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["500", "500"], - "machine_max_speed_e": ["30", "30"], - "machine_max_speed_x": ["1000", "1000"], - "machine_max_speed_y": ["1000", "1000"], - "machine_max_speed_z": ["20", "20"], - "machine_max_jerk_e": ["2.5", "2.5"], - "machine_max_jerk_x": ["12", "12"], - "machine_max_jerk_y": ["12", "12"], - "machine_max_jerk_z": ["0.2", "0.4"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "max_layer_height": ["0.3"], - "min_layer_height": ["0.08"], - "printable_height": "250", - "extruder_clearance_radius": "65", - "extruder_clearance_height_to_rod": "36", - "extruder_clearance_height_to_lid": "140", - "nozzle_diameter": ["0.4"], - "printer_settings_id": "", - "printer_technology": "FFF", - "printer_variant": "0.4", - "retraction_minimum_travel": ["1"], - "retract_before_wipe": ["70%"], - "retract_when_changing_layer": ["1"], - "retraction_length": ["0.8"], - "retract_length_toolchange": ["2"], - "z_hop": ["0.4"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retraction_speed": ["30"], - "deretraction_speed": ["30"], - "silent_mode": "0", - "single_extruder_multi_material": "1", - "change_filament_gcode": "", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "machine_pause_gcode": "M400 U1\n", - "wipe": ["1"], - "z_hop_types": "Normal Lift" -} +{ + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "gcode_flavor": "marlin", + "machine_start_gcode": "", + "machine_end_gcode": "", + "extruder_colour": ["#018001"], + "extruder_offset": ["0x0"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["500", "500"], + "machine_max_speed_e": ["30", "30"], + "machine_max_speed_x": ["1000", "1000"], + "machine_max_speed_y": ["1000", "1000"], + "machine_max_speed_z": ["20", "20"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["12", "12"], + "machine_max_jerk_y": ["12", "12"], + "machine_max_jerk_z": ["0.2", "0.4"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "max_layer_height": ["0.3"], + "min_layer_height": ["0.08"], + "printable_height": "250", + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_height_to_lid": "140", + "nozzle_diameter": ["0.4"], + "printer_settings_id": "", + "printer_technology": "FFF", + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["0.8"], + "retract_length_toolchange": ["2"], + "z_hop": ["0.4"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retraction_speed": ["30"], + "deretraction_speed": ["30"], + "silent_mode": "0", + "single_extruder_multi_material": "1", + "change_filament_gcode": "", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "machine_pause_gcode": "M400 U1\n", + "wipe": ["1"], + "z_hop_types": "Normal Lift" +} diff --git a/resources/profiles/FLSun/process/0.08mm Fine @FLSun Q5.json b/resources/profiles/FLSun/process/0.08mm Fine @FLSun Q5.json index 0fc5f7c580..ecad68ac1f 100644 --- a/resources/profiles/FLSun/process/0.08mm Fine @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.08mm Fine @FLSun Q5.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.08mm Fine @FLSun Q5", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.08", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "10", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.7", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "800", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "800", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.06", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "1.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.06", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "12", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Q5 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.08mm Fine @FLSun Q5", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.08", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "10", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.7", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "800", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "800", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.06", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "1.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.06", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "12", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Q5 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.08mm Fine @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.08mm Fine @FLSun QQSPro.json index 8478fbab7a..45686b4bde 100644 --- a/resources/profiles/FLSun/process/0.08mm Fine @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.08mm Fine @FLSun QQSPro.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.08mm Fine @FLSun QQSPro", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.08", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "10", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.7", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "1500", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "1000", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.06", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "1.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.06", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "12", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun QQ-S Pro 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.08mm Fine @FLSun QQSPro", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.08", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "10", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.7", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1500", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "1000", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.06", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "1.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.06", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "12", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun QQ-S Pro 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.08mm Fine @FLSun SR.json b/resources/profiles/FLSun/process/0.08mm Fine @FLSun SR.json index 28fd70266d..1481b2bb75 100644 --- a/resources/profiles/FLSun/process/0.08mm Fine @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.08mm Fine @FLSun SR.json @@ -1,109 +1,109 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.08mm Fine @FLSun SR", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.08", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "10", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.7", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "5000", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "3000", - "travel_acceleration": "0", - "inner_wall_acceleration": "3000", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "only_one_wall_top": "1", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.06", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "1.5", - "support_interface_speed": "70%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.06", - "support_speed": "80", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "12", - "top_shell_thickness": "0.8", - "initial_layer_speed": "50%", - "initial_layer_infill_speed": "50%", - "outer_wall_speed": "40", - "inner_wall_speed": "80", - "internal_solid_infill_speed": "40", - "top_surface_speed": "50", - "gap_infill_speed": "50", - "sparse_infill_speed": "100", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Super Racer 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.08mm Fine @FLSun SR", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.08", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "10", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.7", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "5000", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "3000", + "travel_acceleration": "0", + "inner_wall_acceleration": "3000", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "only_one_wall_top": "1", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.06", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "1.5", + "support_interface_speed": "70%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.06", + "support_speed": "80", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "12", + "top_shell_thickness": "0.8", + "initial_layer_speed": "50%", + "initial_layer_infill_speed": "50%", + "outer_wall_speed": "40", + "inner_wall_speed": "80", + "internal_solid_infill_speed": "40", + "top_surface_speed": "50", + "gap_infill_speed": "50", + "sparse_infill_speed": "100", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Super Racer 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun Q5.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun Q5.json index 6bebc0249f..d0c1e18226 100644 --- a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun Q5.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.16mm Optimal @FLSun Q5", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.16", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.9", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "800", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "800", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.16", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.16", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "6", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Q5 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @FLSun Q5", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.16", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.9", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "800", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "800", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.16", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.16", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "6", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Q5 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun QQSPro.json index 47c6467fab..36137ae052 100644 --- a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun QQSPro.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.16mm Optimal @FLSun QQSPro", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.16", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.9", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "1500", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "1000", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.16", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.16", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "6", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun QQ-S Pro 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @FLSun QQSPro", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.16", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.9", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1500", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "1000", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.16", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.16", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "6", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun QQ-S Pro 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun SR.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun SR.json index 22871b63a0..0bb0777024 100644 --- a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun SR.json @@ -1,109 +1,109 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.16mm Optimal @FLSun SR", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.16", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.9", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "5000", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "3000", - "travel_acceleration": "0", - "inner_wall_acceleration": "3000", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "only_one_wall_top": "1", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.16", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "70%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.16", - "support_speed": "80", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "6", - "top_shell_thickness": "0.8", - "initial_layer_speed": "50%", - "initial_layer_infill_speed": "50%", - "outer_wall_speed": "40", - "inner_wall_speed": "80", - "internal_solid_infill_speed": "40", - "top_surface_speed": "50", - "gap_infill_speed": "50", - "sparse_infill_speed": "100", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Super Racer 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @FLSun SR", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.16", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.9", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "5000", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "3000", + "travel_acceleration": "0", + "inner_wall_acceleration": "3000", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "only_one_wall_top": "1", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.16", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "70%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.16", + "support_speed": "80", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "6", + "top_shell_thickness": "0.8", + "initial_layer_speed": "50%", + "initial_layer_infill_speed": "50%", + "outer_wall_speed": "40", + "inner_wall_speed": "80", + "internal_solid_infill_speed": "40", + "top_surface_speed": "50", + "gap_infill_speed": "50", + "sparse_infill_speed": "100", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Super Racer 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun Q5.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun Q5.json index 4836352921..30ff864755 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun Q5.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @FLSun Q5", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.2", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "800", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "800", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.2", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "5", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Q5 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @FLSun Q5", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.2", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "800", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "800", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.2", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "5", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Q5 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun QQSPro.json index 9a98c2f09a..c8619d20da 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun QQSPro.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @FLSun QQSPro", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.2", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "1500", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "1000", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.2", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "5", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun QQ-S Pro 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @FLSun QQSPro", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.2", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1500", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "1000", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.2", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "5", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun QQ-S Pro 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json new file mode 100644 index 0000000000..0d528e7387 --- /dev/null +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm PLA_HS_S1_FLSUN @FLSUN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "outer_wall_speed": "400", + "inner_wall_speed": "500", + "sparse_infill_speed": "800", + "internal_solid_infill_speed": "500", + "default_acceleration": "30000", + "default_jerk": "200", + "gap_infill_speed": "400", + "initial_layer_acceleration": "5000", + "initial_layer_infill_speed": "80", + "initial_layer_speed": "50", + "inner_wall_acceleration": "22000", + "is_custom_defined": "0", + "outer_wall_acceleration": "8000", + "overhang_2_4_speed": "1234", + "top_surface_acceleration": "12000", + "top_surface_speed": "400", + "travel_acceleration": "32000", + "travel_speed": "1200", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun SR.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun SR.json index c0aff8ff02..deefdebe0a 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun SR.json @@ -1,109 +1,109 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @FLSun SR", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.2", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "5000", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "3000", - "travel_acceleration": "0", - "inner_wall_acceleration": "3000", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "only_one_wall_top": "1", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.2", - "support_speed": "80", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "5", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "75", - "inner_wall_speed": "150", - "internal_solid_infill_speed": "150", - "top_surface_speed": "75", - "gap_infill_speed": "75", - "sparse_infill_speed": "150", - "travel_speed": "180", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Super Racer 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @FLSun SR", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.2", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "5000", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "3000", + "travel_acceleration": "0", + "inner_wall_acceleration": "3000", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "only_one_wall_top": "1", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.2", + "support_speed": "80", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "5", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "75", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "150", + "top_surface_speed": "75", + "gap_infill_speed": "75", + "sparse_infill_speed": "150", + "travel_speed": "180", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Super Racer 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json new file mode 100644 index 0000000000..90caef323d --- /dev/null +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm PLA_HS_T1_FLSUN @FLSUN", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "outer_wall_speed": "120", + "inner_wall_speed": "260", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "260", + "default_acceleration": "8000", + "default_jerk": "20", + "gap_infill_speed": "250", + "initial_layer_acceleration": "1000", + "initial_layer_infill_speed": "60", + "initial_layer_speed": "30", + "inner_wall_acceleration": "8000", + "is_custom_defined": "0", + "outer_wall_acceleration": "8000", + "overhang_1_4_speed": "80", + "top_surface_acceleration": "12000", + "top_surface_speed": "300", + "travel_acceleration": "20000", + "travel_speed": "800", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun V400.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun V400.json index 87a5547808..e2874b93db 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun V400.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun V400.json @@ -1,30 +1,30 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.20mm Standard @FLSun V400", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_common", - "outer_wall_speed": "120", - "inner_wall_speed": "200", - "sparse_infill_speed": "250", - "internal_solid_infill_speed": "200", - "default_acceleration": "5000", - "default_jerk": "9", - "gap_infill_speed": "200", - "initial_layer_acceleration": "1000", - "initial_layer_infill_speed": "100", - "initial_layer_speed": "50", - "inner_wall_acceleration": "5000", - "is_custom_defined": "0", - "outer_wall_acceleration": "4000", - "overhang_1_4_speed": "80", - "top_surface_acceleration": "3000", - "top_surface_speed": "200", - "travel_acceleration": "5000", - "travel_speed": "400", - "compatible_printers": [ - "FLSun V400 0.4 nozzle" - ], - "exclude_object": "1" +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @FLSun V400", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "outer_wall_speed": "120", + "inner_wall_speed": "200", + "sparse_infill_speed": "250", + "internal_solid_infill_speed": "200", + "default_acceleration": "5000", + "default_jerk": "9", + "gap_infill_speed": "200", + "initial_layer_acceleration": "1000", + "initial_layer_infill_speed": "100", + "initial_layer_speed": "50", + "inner_wall_acceleration": "5000", + "is_custom_defined": "0", + "outer_wall_acceleration": "4000", + "overhang_1_4_speed": "80", + "top_surface_acceleration": "3000", + "top_surface_speed": "200", + "travel_acceleration": "5000", + "travel_speed": "400", + "compatible_printers": [ + "FLSun V400 0.4 nozzle" + ], + "exclude_object": "1" } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun Q5.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun Q5.json index 8ab5ea8fd0..457acf0965 100644 --- a/resources/profiles/FLSun/process/0.24mm Draft @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun Q5.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.24mm Draft @FLSun Q5", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.24", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "800", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "800", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.18", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.18", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Q5 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @FLSun Q5", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.24", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "800", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "800", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.18", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.18", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Q5 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun QQSPro.json index c5b733ee4a..bc29f577b6 100644 --- a/resources/profiles/FLSun/process/0.24mm Draft @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun QQSPro.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.24mm Draft @FLSun QQSPro", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.24", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "1500", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "1000", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.18", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.18", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun QQ-S Pro 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @FLSun QQSPro", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.24", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1500", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "1000", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.18", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.18", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun QQ-S Pro 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun SR.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun SR.json index 1d11c2b26e..483c9ab71e 100644 --- a/resources/profiles/FLSun/process/0.24mm Draft @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun SR.json @@ -1,109 +1,109 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.24mm Draft @FLSun SR", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.24", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0.5", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "1500", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.45", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "1000", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "only_one_wall_top": "1", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.18", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.18", - "support_speed": "80", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.38", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "75", - "inner_wall_speed": "150", - "internal_solid_infill_speed": "150", - "top_surface_speed": "75", - "gap_infill_speed": "75", - "sparse_infill_speed": "150", - "travel_speed": "180", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Super Racer 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @FLSun SR", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.24", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0.5", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1500", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.45", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "1000", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "only_one_wall_top": "1", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.18", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.18", + "support_speed": "80", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.38", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "75", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "150", + "top_surface_speed": "75", + "gap_infill_speed": "75", + "sparse_infill_speed": "150", + "travel_speed": "180", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Super Racer 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun Q5.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun Q5.json index 534c02f77b..0629144f2f 100644 --- a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun Q5.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.30mm Extra Draft @FLSun Q5", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.3", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0.6", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "800", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.5", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.5", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "800", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.5", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.22", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.22", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.45", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Q5 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Extra Draft @FLSun Q5", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.3", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.6", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "800", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.5", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.5", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "800", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.5", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.22", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.22", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.45", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Q5 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun QQSPro.json index 851a3a25c2..d76a71b618 100644 --- a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun QQSPro.json @@ -1,108 +1,108 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.30mm Extra Draft @FLSun QQSPro", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.3", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0.6", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "1500", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.5", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.5", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "1000", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.5", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.22", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.22", - "support_speed": "60", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.45", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "40", - "inner_wall_speed": "40", - "internal_solid_infill_speed": "40", - "top_surface_speed": "30", - "gap_infill_speed": "30", - "sparse_infill_speed": "60", - "travel_speed": "150", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun QQ-S Pro 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Extra Draft @FLSun QQSPro", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.3", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.6", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1500", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.5", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.5", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "1000", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.5", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.22", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.22", + "support_speed": "60", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.45", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun QQ-S Pro 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun SR.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun SR.json index 079f74388c..782bd42083 100644 --- a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun SR.json @@ -1,109 +1,109 @@ -{ - "type": "process", - "setting_id": "GP004", - "name": "0.30mm Extra Draft @FLSun SR", - "from": "system", - "inherits": "fdm_process_common", - "instantiation": "true", - "adaptive_layer_height": "1", - "reduce_crossing_wall": "0", - "layer_height": "0.3", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0.6", - "bridge_flow": "0.95", - "bridge_speed": "30", - "brim_width": "0", - "brim_object_gap": "0", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "1500", - "top_surface_acceleration": "0", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.2", - "enable_arc_fitting": "0", - "outer_wall_line_width": "0.5", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.5", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "1000", - "travel_acceleration": "0", - "inner_wall_acceleration": "800", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.5", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "15%", - "ironing_spacing": "0.1", - "ironing_speed": "15", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "20", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "only_one_wall_top": "1", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "5", - "skirt_height": "1", - "skirt_loops": "2", - "minimum_sparse_infill_area": "10", - "internal_solid_infill_line_width": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_style": "grid", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.22", - "support_filament": "0", - "support_line_width": "0.38", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "-1", - "support_interface_spacing": "0.5", - "support_interface_speed": "100%", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "0.22", - "support_speed": "80", - "support_threshold_angle": "30", - "support_object_xy_distance": "60%", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "1", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.45", - "top_shell_layers": "4", - "top_shell_thickness": "0.8", - "initial_layer_speed": "35%", - "initial_layer_infill_speed": "35%", - "outer_wall_speed": "75", - "inner_wall_speed": "150", - "internal_solid_infill_speed": "150", - "top_surface_speed": "75", - "gap_infill_speed": "75", - "sparse_infill_speed": "150", - "travel_speed": "180", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "FLSun Super Racer 0.4 nozzle" - ] +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Extra Draft @FLSun SR", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.3", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.6", + "bridge_flow": "0.95", + "bridge_speed": "30", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1500", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.2", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.5", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.5", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "1000", + "travel_acceleration": "0", + "inner_wall_acceleration": "800", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.5", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "only_one_wall_top": "1", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.22", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.22", + "support_speed": "80", + "support_threshold_angle": "30", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.45", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "75", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "150", + "top_surface_speed": "75", + "gap_infill_speed": "75", + "sparse_infill_speed": "150", + "travel_speed": "180", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "FLSun Super Racer 0.4 nozzle" + ] } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/fdm_process_common.json b/resources/profiles/FLSun/process/fdm_process_common.json index ef2f117abf..241854486a 100644 --- a/resources/profiles/FLSun/process/fdm_process_common.json +++ b/resources/profiles/FLSun/process/fdm_process_common.json @@ -1,107 +1,107 @@ -{ - "type": "process", - "name": "fdm_process_common", - "from": "system", - "instantiation": "false", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_thickness": "0", - "bridge_speed": "50", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers": [], - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "1000", - "initial_layer_acceleration": "500", - "top_surface_acceleration": "800", - "travel_acceleration": "1000", - "inner_wall_acceleration": "900", - "outer_wall_acceleration": "700", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - - "outer_wall_line_width": "0.4", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.4", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "10%", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.45", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "minimum_sparse_infill_area": "15", - "internal_solid_infill_line_width": "0.4", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_line_width": "0.4", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "30", - "tree_support_wall_count": "0", - "tree_support_with_infill": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.4", - "top_shell_thickness": "0.8", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "layer_height": "0.2", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "bridge_flow": "1", - "initial_layer_speed": "45", - "initial_layer_infill_speed": "45", - "outer_wall_speed": "45", - "inner_wall_speed": "80", - "sparse_infill_speed": "150", - "internal_solid_infill_speed": "150", - "top_surface_speed": "50", - "gap_infill_speed": "30", - "travel_speed": "200", - "enable_arc_fitting": "0", - "exclude_object" : "0" -} +{ + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_thickness": "0", + "bridge_speed": "50", + "brim_width": "5", + "brim_object_gap": "0.1", + "compatible_printers": [], + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1000", + "initial_layer_acceleration": "500", + "top_surface_acceleration": "800", + "travel_acceleration": "1000", + "inner_wall_acceleration": "900", + "outer_wall_acceleration": "700", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0", + + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.4", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.4", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.4", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_angle": "30", + "tree_support_wall_count": "0", + "tree_support_with_infill": "0", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.4", + "top_shell_thickness": "0.8", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "layer_height": "0.2", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "bridge_flow": "1", + "initial_layer_speed": "45", + "initial_layer_infill_speed": "45", + "outer_wall_speed": "45", + "inner_wall_speed": "80", + "sparse_infill_speed": "150", + "internal_solid_infill_speed": "150", + "top_surface_speed": "50", + "gap_infill_speed": "30", + "travel_speed": "200", + "enable_arc_fitting": "0", + "exclude_object" : "0" +} From d79cf50dfa608148b2642de0ef9f6ca249e5f4bb Mon Sep 17 00:00:00 2001 From: Gabriel Janucik Date: Fri, 2 Aug 2024 18:02:51 +0200 Subject: [PATCH 087/151] FlasForge Adventurer 3 machine start gcode fix #6282 (#6312) Co-authored-by: SoftFever --- .../profiles/Flashforge/machine/fdm_adventurer3_common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json b/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json index 537a691ccb..4a49f80f56 100644 --- a/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json +++ b/resources/profiles/Flashforge/machine/fdm_adventurer3_common.json @@ -41,7 +41,7 @@ "change_filament_gcode": "M600", "machine_pause_gcode": "M25", "default_filament_profile": [ "Flashforge PLA" ], - "machine_start_gcode": "M140 S[bed_temperature_initial_layer] T0\nM104 S[nozzle_temperature_initial_layer] T0\nM104 S0 T1\nM107\nM900 K[pressure_advance] T0\nG90\nG28\nM132 X Y Z A B\nG1 Z50.000 F420\nG161 X Y F3300\nM7 T0\nM6 T0\nM651 S255\n;pre-extrude\nM108 T0\nG1 X-37.50 Y-75.00 F6000\nM106\nG1 Z0.200 F420\nG1 X-37.50 Y-75.00 F6000\nG1 X37.50 Y-75.00 E9.5 F1200\n", + "machine_start_gcode": "M140 S[bed_temperature_initial_layer] T0\nM104 S[nozzle_temperature_initial_layer] T0\nM104 S0 T1\nM107\nM900 K[pressure_advance] T0\nG90\nG28\nM132 X Y Z A B\nG1 Z50.000 F420\nG161 X Y F3300\nM7 T0\nM6 T0\nM651 S255", "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F9000\nM104 S0 T0\nM140 S0 T0\nG162 Z F1800\nG28 X Y\nM132 X Y A B\nM652\nG91\nM18", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", From 91f881cf1c0a697ae4de3da838e64e5cb0cc5fb8 Mon Sep 17 00:00:00 2001 From: FlyingbearOfficial <150423627+FlyingbearOfficial@users.noreply.github.com> Date: Sat, 3 Aug 2024 00:11:56 +0800 Subject: [PATCH 088/151] fix "exclude_object" for FlyingBear profiles (#6294) * Update FlyingBear S1 0.4 nozzle.json * Update 0.16mm Optimal @FlyingBear Reborn3.json * Update 0.16mm Optimal @FlyingBear S1.json * Update fdm_process_common.json * Update fdm_klipper_common.json * Update fdm_machine_common.json * Update fdm_klipper_common.json * Update fdm_machine_common.json * Update fdm_process_common.json * Update fdm_process_common_S1.json fix some parameters * Update fdm_process_common.json * Update FlyingBear S1 0.4 nozzle.json * Update 0.08mm Extra Fine @FlyingBear S1.json * Update 0.12mm Fine @FlyingBear S1.json * Update 0.16mm Optimal @FlyingBear S1.json * Update 0.20mm Standard @FlyingBear S1.json * Update 0.24mm Draft @FlyingBear S1.json * Update 0.08mm Extra Fine @FlyingBear Reborn3.json * Update 0.12mm Fine @FlyingBear Reborn3.json * Update 0.16mm Optimal @FlyingBear Reborn3.json * Update 0.20mm Standard @FlyingBear Reborn3.json * Update 0.24mm Draft @FlyingBear Reborn3.json --- .../process/0.08mm Extra Fine @FlyingBear Reborn3.json | 2 +- .../FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json | 2 +- .../FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json | 2 +- .../FlyingBear/process/0.20mm Standard @FlyingBear Reborn3.json | 2 +- .../FlyingBear/process/0.24mm Draft @FlyingBear Reborn3.json | 2 +- .../FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json | 2 +- .../FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json | 2 +- .../FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json | 2 +- .../FlyingBear/process/S1/0.20mm Standard @FlyingBear S1.json | 2 +- .../FlyingBear/process/S1/0.24mm Draft @FlyingBear S1.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/profiles/FlyingBear/process/0.08mm Extra Fine @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.08mm Extra Fine @FlyingBear Reborn3.json index e8d734ca1f..39001ee125 100644 --- a/resources/profiles/FlyingBear/process/0.08mm Extra Fine @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.08mm Extra Fine @FlyingBear Reborn3.json @@ -20,7 +20,7 @@ "layer_height": "0.08", "print_settings_id": "0.08mm Extra Fine @InfiMech TX", "sparse_infill_speed": "450", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "FlyingBear Reborn3 0.4 nozzle" diff --git a/resources/profiles/FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json index e83de4cbc6..1000d06175 100644 --- a/resources/profiles/FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json @@ -20,7 +20,7 @@ "layer_height": "0.12", "print_settings_id": "0.12mm Fine @InfiMech TX", "sparse_infill_speed": "400", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "FlyingBear Reborn3 0.4 nozzle" diff --git a/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json index 159c45bea5..f24fa3ca22 100644 --- a/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json @@ -14,7 +14,7 @@ "bottom_shell_layers": "4", "bridge_speed": "25", "brim_object_gap": "0.1", - "exclude_object": "0", + "exclude_object": "1", "gap_infill_speed": "300", "inner_wall_speed": "300", "internal_bridge_speed": "50", diff --git a/resources/profiles/FlyingBear/process/0.20mm Standard @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.20mm Standard @FlyingBear Reborn3.json index c7f687a31a..ab04494f0d 100644 --- a/resources/profiles/FlyingBear/process/0.20mm Standard @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.20mm Standard @FlyingBear Reborn3.json @@ -20,7 +20,7 @@ "layer_height": "0.2", "print_settings_id": "0.20mm Standard @InfiMech TX", "sparse_infill_speed": "270", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "top_solid_infill_flow_ratio": "0.97", "initial_layer_speed": "25", diff --git a/resources/profiles/FlyingBear/process/0.24mm Draft @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.24mm Draft @FlyingBear Reborn3.json index 258be4bc8c..78d6819417 100644 --- a/resources/profiles/FlyingBear/process/0.24mm Draft @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.24mm Draft @FlyingBear Reborn3.json @@ -22,7 +22,7 @@ "layer_height": "0.24", "print_settings_id": "0.24mm Draft @InfiMech TX", "sparse_infill_speed": "230", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "FlyingBear Reborn3 0.4 nozzle" diff --git a/resources/profiles/FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json index c5922a7f85..8fae3c93c6 100644 --- a/resources/profiles/FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json @@ -21,7 +21,7 @@ "layer_height": "0.08", "print_settings_id": "0.08mm Extra Fine @FlyingBear S1", "sparse_infill_speed": "450", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "FlyingBear S1 0.4 nozzle" diff --git a/resources/profiles/FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json index dad9af3e4d..ca70860ca1 100644 --- a/resources/profiles/FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json @@ -20,7 +20,7 @@ "layer_height": "0.12", "print_settings_id": "0.12mm Fine @FlyingBear S1", "sparse_infill_speed": "400", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "FlyingBear S1 0.4 nozzle" diff --git a/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json index 7cb68c5a10..d19bf46834 100644 --- a/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json @@ -14,7 +14,7 @@ "bottom_shell_layers": "4", "bridge_speed": "25", "brim_object_gap": "0.1", - "exclude_object": "0", + "exclude_object": "1", "gap_infill_speed": "300", "inner_wall_speed": "300", "internal_bridge_speed": "50", diff --git a/resources/profiles/FlyingBear/process/S1/0.20mm Standard @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.20mm Standard @FlyingBear S1.json index 3092c240a6..a5d6ec3f20 100644 --- a/resources/profiles/FlyingBear/process/S1/0.20mm Standard @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.20mm Standard @FlyingBear S1.json @@ -20,7 +20,7 @@ "layer_height": "0.2", "print_settings_id": "0.20mm Standard @FlyingBear S1", "sparse_infill_speed": "270", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "top_solid_infill_flow_ratio": "0.97", "compatible_printers": [ diff --git a/resources/profiles/FlyingBear/process/S1/0.24mm Draft @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.24mm Draft @FlyingBear S1.json index b662b2b615..1e78555c6a 100644 --- a/resources/profiles/FlyingBear/process/S1/0.24mm Draft @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.24mm Draft @FlyingBear S1.json @@ -20,7 +20,7 @@ "layer_height": "0.24", "print_settings_id": "0.24mm Draft @FlyingBear S1", "sparse_infill_speed": "230", - "exclude_object": "0", + "exclude_object": "1", "internal_bridge_speed": "50", "compatible_printers": [ "FlyingBear S1 0.4 nozzle" From 85ae238bcb07116642cffc32f250034be61bf5b5 Mon Sep 17 00:00:00 2001 From: Ocraftyone Date: Fri, 2 Aug 2024 12:23:07 -0400 Subject: [PATCH 089/151] Enable WebView devtools if developer mode is enabled (#6298) * Enable WebView devtools if developer mode is enabled --- src/slic3r/GUI/GUI_App.cpp | 4 ++++ src/slic3r/GUI/PrinterWebView.cpp | 8 ++++++++ src/slic3r/GUI/PrinterWebView.hpp | 1 + 3 files changed, 13 insertions(+) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 81e3c21fb2..7dc8f10271 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -5255,6 +5255,8 @@ void GUI_App::update_mode() mainframe->m_param_panel->update_mode(); if (mainframe->m_param_dialog) mainframe->m_param_dialog->panel()->update_mode(); + if (mainframe->m_printer_view) + mainframe->m_printer_view->update_mode(); mainframe->m_webview->update_mode(); #ifdef _MSW_DARK_MODE @@ -5274,6 +5276,8 @@ void GUI_App::update_mode() void GUI_App::update_internal_development() { mainframe->m_webview->update_mode(); + if (mainframe->m_printer_view) + mainframe->m_printer_view->update_mode(); } void GUI_App::show_ip_address_enter_dialog(wxString title) diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index a629790e78..952cf892de 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -38,6 +38,8 @@ PrinterWebView::PrinterWebView(wxWindow *parent) topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); + update_mode(); + // Log backend information /* m_browser->GetUserAgent() may lead crash if (wxGetApp().get_mode() == comDevelop) { @@ -83,6 +85,12 @@ void PrinterWebView::reload() { m_browser->Reload(); } + +void PrinterWebView::update_mode() +{ + m_browser->EnableAccessToDevTools(wxGetApp().app_config->get_bool("developer_mode")); +} + /** * Method that retrieves the current state from the web control and updates the * GUI the reflect this current state. diff --git a/src/slic3r/GUI/PrinterWebView.hpp b/src/slic3r/GUI/PrinterWebView.hpp index 070bd4ea97..4b2702a4c8 100644 --- a/src/slic3r/GUI/PrinterWebView.hpp +++ b/src/slic3r/GUI/PrinterWebView.hpp @@ -42,6 +42,7 @@ public: void OnError(wxWebViewEvent& evt); void OnLoaded(wxWebViewEvent& evt); void reload(); + void update_mode(); private: void SendAPIKey(); From 37eeefacd4052ef3d4b3b4e9193e5d51be971beb Mon Sep 17 00:00:00 2001 From: Carlos Francisco Caruncho Serrano Date: Fri, 2 Aug 2024 18:23:47 +0200 Subject: [PATCH 090/151] Updated and Fixed spanish translation (#6320) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update OrcaSlicer_es.po * Merge remote-tracking branch 'upstream/main' into Spanish_Translation * Merge remote-tracking branch 'upstream/main' into Spanish_Translation * some changes * Merge remote-tracking branch 'upstream/main' into Spanish_Translation * Some fixes * More fixes * More fixes and improves * More fixes * Merge remote-tracking branch 'upstream/main' * Merge remote-tracking branch 'upstream/main' * Update OrcaSlicer_es.po * Merge branch 'main' of https://github.com/tadeu2/OrcaSlicer * Merge remote-tracking branch 'upstream/main' into Spanish_Translation * Merge remote-tracking branch 'upstream/main' into spanish_translation * Update OrcaSlicer_es.po * Merge remote-tracking branch 'upstream/main' into spanish_translation * Merge remote-tracking branch 'upstream/main' into spanish_translation * Traducción español Beta 2.1.0 * Update text.js * Update OrcaSlicer_es.po Cambiado punto por coma * Merge remote-tracking branch 'upstream/main' into Spanish_Translation * Merge remote-tracking branch 'upstream/main' * Minor fix PR * Update OrcaSlicer_es.po * Merge remote-tracking branch 'upstream/main' into spanish_translation * Update OrcaSlicer_es.po * Merge remote-tracking branch 'upstream/main' into Spanish_Translation * Update Spanish Language * Updated strings * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Fixed Spanish Strings in English Fixed a lot of string whose are translations were english to english. * Some spanish strings improved * Merge remote-tracking branch 'upstream/main' into Spanish_Translation * Update Spanish Strings in RC * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Merge remote-tracking branch 'upstream/main' into spanish_translation * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po * Merge remote-tracking branch 'upstream/main' into Spanish_Translation * Update OrcaSlicer_es.po * Merge branch 'Spanish_Translation' * Update OrcaSlicer_es.po * Some fixes * More fixes and improves * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po Cambiado punto por coma --- .gitignore | 1 + localization/i18n/es/OrcaSlicer_es.po | 629 +++++++++++++++++++------- resources/web/data/text.js | 3 + 3 files changed, 478 insertions(+), 155 deletions(-) diff --git a/.gitignore b/.gitignore index df5239095e..8ba5bbc4ff 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ src/OrcaSlicer-doc/ /deps/DL_CACHE **/.flatpak-builder/ resources/profiles/user/default +OrcaSlicer.code-workspace diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 8b2cdd8172..e27d124ecc 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-07-30 10:20+0900\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "Ángulo de relleno en puente" msgid "On overhangs only" msgstr "Solo en voladizos" -msgid "Auto support threshold angle: " -msgstr "Ángulo del umbral de soporte automático: " - msgid "Circle" msgstr "Círculo" @@ -96,6 +93,9 @@ msgstr "Permite pintar solo las facetas seleccionadas por: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Resalte las caras según el ángulo del voladizo." +msgid "Auto support threshold angle: " +msgstr "Ángulo del umbral de soporte automático: " + msgid "No auto support" msgstr "No auto soportes" @@ -529,8 +529,8 @@ msgstr "Corte en Plano" msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" -"Los bordes con pliegues pueden ser causa de la herramienta de corte, " -"¿quieres arreglarlo ahora?" +"Los bordes no plegados son causados por la herramienta de corte, ¿quieres " +"arreglarlo ahora?" msgid "Repairing model object" msgstr "Reparación de un objeto modelo" @@ -3490,7 +3490,7 @@ msgid "Bed Leveling" msgstr "Nivelación de la cama" msgid "Timelapse" -msgstr "Intervalo" +msgstr "Timelapse" msgid "Flow Dynamic Calibration" msgstr "Calibración Dinámica de Flujo" @@ -4206,15 +4206,6 @@ msgstr "Tiempo total" msgid "Total cost" msgstr "Costo total" -msgid "up to" -msgstr "hasta" - -msgid "above" -msgstr "sobre" - -msgid "from" -msgstr "desde" - msgid "Color Scheme" msgstr "Esquema de colores" @@ -4278,12 +4269,12 @@ msgstr "Tiempos de cambio de filamento" msgid "Cost" msgstr "Coste" -msgid "Color change" -msgstr "Cambio de color" - msgid "Print" msgstr "Imprimir" +msgid "Color change" +msgstr "Cambio de color" + msgid "Printer" msgstr "Impresora" @@ -4631,10 +4622,10 @@ msgid "Export G-code file" msgstr "Exportar archivo G-Code" msgid "Export plate sliced file" -msgstr "Explorar archivo laminado" +msgstr "Exportar los objetos laminados de la bandeja a un archivo" msgid "Export all sliced file" -msgstr "Exportar todos los archivos laminados" +msgstr "Exportar todos los objetos laminados a un archivo" msgid "Print all" msgstr "Imprimir todo" @@ -4778,10 +4769,10 @@ msgid "Export 3mf file without using some 3mf-extensions" msgstr "Exporte el archivo 3mf sin usar algunas de las extensiones" msgid "Export current sliced file" -msgstr "Exportar archivo laminado actual" +msgstr "Exportar la bandeja activa laminada a un archivo" msgid "Export all plate sliced file" -msgstr "Exportar todo el archivo de bandeja laminada" +msgstr "Exportar todas las bandejas laminadas a un archivo" msgid "Export G-code" msgstr "Exportar G-Code" @@ -5497,8 +5488,7 @@ msgid "" "unload the filament and try again." msgstr "" "No se puede leer la información del filamento: el filamento está cargado en " -"el cabezal de la herramienta, por favor, descargue el filamento y vuelva a " -"intentarlo." +"el cabezal, por favor, descargue el filamento y vuelva a intentarlo." msgid "This only takes effect during printing" msgstr "Esto solo tendrá efecto durante la impresión" @@ -5871,7 +5861,7 @@ msgid "" "the tag is not in predefined range." msgstr "" "Se detecta la etiqueta de localización de la bandeja y se detiene la " -"impresión si la etiqueta no se encuentra dentro del intervalo predefinido." +"impresión si la etiqueta no se encuentra dentro del rango predefinido." msgid "First Layer Inspection" msgstr "Inspección de Primera Capa" @@ -6001,7 +5991,7 @@ msgid "Search plate, object and part." msgstr "Buscar bandeja, objeto y parte." msgid "Pellets" -msgstr "" +msgstr "Pellets" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." @@ -6220,6 +6210,16 @@ msgstr "Se ha detectado un objeto con varias piezas" msgid "The file does not contain any geometry data." msgstr "El archivo no contiene ninguna información geométrica." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" +"Su objeto parece demasiado grande, ¿Desea disminuirlo para que quepa en la " +"cama caliente automáticamente?." + +msgid "Object too large" +msgstr "Objeto demasiado grande" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6227,9 +6227,6 @@ msgstr "" "Tu objeto parece demasiado grande, ¿Deseas disminuirlo para que quepa en la " "cama caliente automáticamente?" -msgid "Object too large" -msgstr "Objeto demasiado grande" - msgid "Export STL file:" msgstr "Exportar archivo STL:" @@ -6610,10 +6607,6 @@ msgstr "¿Quieres continuar?" msgid "Language selection" msgstr "Selección de idiomas" -msgid "Switching application language while some presets are modified." -msgstr "" -"Cambiando idioma de la aplicación mientras se modifican algunos perfiles." - msgid "Changing application language" msgstr "Cambiar el idioma de la aplicación" @@ -6812,6 +6805,12 @@ msgstr "" "Con esta opción activada, puede enviar una tarea a varios dispositivos al " "mismo tiempo y gestionar varios dispositivos." +msgid "Auto arrange plate after cloning" +msgstr "Disposición automática de la placa tras la clonación" + +msgid "Auto arrange plate after object cloning" +msgstr "Disposición automática de la placa tras la clonación de objetos" + msgid "Network" msgstr "Red" @@ -7827,12 +7826,21 @@ msgstr "Filamento de soporte" msgid "Tree supports" msgstr "Soportes de árbol" -msgid "Skirt" -msgstr "Falda" +msgid "Multimaterial" +msgstr "Multimaterial" msgid "Prime tower" msgstr "Torre de Purga" +msgid "Filament for Features" +msgstr "Filamento para Características" + +msgid "Ooze prevention" +msgstr "Optimizar rezumado" + +msgid "Skirt" +msgstr "Falda" + msgid "Special mode" msgstr "Ajustes especiales" @@ -7886,6 +7894,9 @@ msgstr "" "Rango de temperatura de boquilla recomendado para este filamento. 0 " "significa que no se ajusta" +msgid "Flow ratio and Pressure Advance" +msgstr "Ratio de flujo y Avance de Presión Lineal" + msgid "Print chamber temperature" msgstr "Temperatura de la cámara" @@ -7999,21 +8010,18 @@ msgstr "G-Code de inicio de filamento" msgid "Filament end G-code" msgstr "Final del G-Code de filamento" -msgid "Multimaterial" -msgstr "Multimaterial" - msgid "Wipe tower parameters" msgstr "Parámetros de torre de purga" msgid "Toolchange parameters with single extruder MM printers" -msgstr "Parámetros de cambio de herramienta para impresoras de 1 extrusor MM" +msgstr "Parámetros de cambio de cabezal para impresoras de 1 extrusor MM" msgid "Ramming settings" msgstr "Parámetros de Moldeado de Extremo" msgid "Toolchange parameters with multi extruder MM printers" msgstr "" -"Parámetros de cambio de herramienta para impresoras de varios extrusores MM" +"Parámetros de cambio de cabezal para impresoras de varios extrusores MM" msgid "Printable space" msgstr "Espacio imprimible" @@ -8092,12 +8100,36 @@ msgstr "Limitación de Jerk" msgid "Single extruder multimaterial setup" msgstr "Configuración de extrusor único multimaterial" +msgid "Number of extruders of the printer." +msgstr "Número de extrusores de la impresora." + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" +"Seleccionado Extrusor Único Multi Material, \n" +"y todos los extrusores deben tener el mismo diámetro. \n" +"¿Desea cambiar el diámetro de todos los extrusores al valor del diámetro de " +"la boquilla del primer extrusor?" + +msgid "Nozzle diameter" +msgstr "Diámetro de boquilla" + msgid "Wipe tower" msgstr "Torre de purga" msgid "Single extruder multimaterial parameters" msgstr "Parámetros de extrusor único multimaterial" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" +"Esta es una impresora multimaterial de un solo extrusor, los diámetros de " +"todos los extrusores se ajustarán al nuevo valor. ¿Desea continuar?" + msgid "Layer height limits" msgstr "Límites de altura de la capa" @@ -8477,8 +8509,8 @@ msgid "" "jams, extruder wheel grinding into filament etc." msgstr "" "El moldeado de extremo se refiere a una extrusión rápida justo antes del " -"cambio de herramienta en la impresora MM de extrusor único. Su propósito es " -"dar una forma adecuada al final del filamento descargado para no impedir la " +"cambio de cabezal en la impresora MM de extrusor único. Su propósito es dar " +"una forma adecuada al final del filamento descargado para no impedir la " "inserción del nuevo filamento, y que pueda ser reinsertada por si misma " "posteriormente." @@ -8605,11 +8637,8 @@ msgstr "Lista de objetos" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importar datos de geometría de los archivos STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" @@ -8649,9 +8678,9 @@ msgid "" "objects, it just orientates the selected ones.Otherwise, it will orientates " "all objects in the current disk." msgstr "" -"Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay " -"objetos seleccionados, sólo orienta los seleccionados.En caso contrario, " -"orientará todos los objetos del disco actual." +"Orienta automáticamente los objetos seleccionados o todos los objetos. Si " +"hay objetos seleccionados, sólo orienta los seleccionados. En caso " +"contrario, orientará todos los objetos actuales." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -8659,33 +8688,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Ocultar/Expandir barra lateral" -msgid "⌘+Any arrow" -msgstr "⌘+Cualquier tecla" +msgid "Any arrow" +msgstr "⌘+Cualquier flecha" msgid "Movement in camera space" msgstr "Movimiento en el espacio de la cámara" -msgid "⌥+Left mouse button" -msgstr "Botón de ratón ⌥+Left" - msgid "Select a part" msgstr "Seleccionar una pieza" -msgid "⌘+Left mouse button" -msgstr "⌘+botón izquierdo de ratón" - msgid "Select multiple objects" msgstr "Seleccionar varios objetos" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Cualquier flecha" - -msgid "Alt+Left mouse button" -msgstr "Alt+Botón izquierdo de ratón" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Botón izquierdo de ratón" - msgid "Shift+Left mouse button" msgstr "Shift+Left+Botón izquierdo de ratón" @@ -8788,24 +8802,12 @@ msgstr "Bandeja" msgid "Move: press to snap by 1mm" msgstr "Mover: pulsar para ajustar 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Rueda del ratón" - msgid "Support/Color Painting: adjust pen radius" msgstr "Soporte/Pintado en color: ajuste del radio de la pluma" -msgid "⌥+Mouse wheel" -msgstr "⌥+Rueda del ratón" - msgid "Support/Color Painting: adjust section position" msgstr "Soporte/Pintado de color: ajuste de la posición de la sección" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Rueda del ratón" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Rueda del ratón" - msgid "Gizmo" msgstr "Artilugio" @@ -9123,6 +9125,13 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "No se puede imprimir ningún objeto. Tal vez sea demasiado pequeño" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" +"Su huella está muy cerca de las regiones de imprimación. Asegúrese de que no " +"hay colisión." + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9372,11 +9381,13 @@ msgstr "" "La altura de capa variable no es compatible con los soportes orgánicos." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Diámetros de boquillas diferentes y diámetros de filamento diferentes no " -"están permitidos cuando la torre de purga está activada." +"Diámetros de boquillas y diámetros de filamento diferentes pueden no " +"funcionar correctamente cuando la torre de purga está activada. Esta función " +"es experimental, así que proceda con cautela." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9386,9 +9397,11 @@ msgstr "" "relativo del extrusor (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Actualmente no se puede evitar el rezume con la torre principal activada." +"La prevención de rezumado sólo es compatible con la torre de limpieza cuando " +"'single_extruder_multi_material' está desactivado." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9865,7 +9878,7 @@ msgstr "" "incrementarán" msgid "Bottom shell thickness" -msgstr "Espesor de la cubierta inferior" +msgstr "Espesor mínimo de la cubierta inferior" msgid "" "The number of bottom solid layers is increased when slicing if the thickness " @@ -10895,6 +10908,143 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure Advance(Klipper) AKA Factor de avance lineal(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "Activar Avance de Presión Lineal" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" +"Al aumentar la velocidad de impresión (y, por tanto, el flujo volumétrico a " +"través de la boquilla) y las aceleraciones, se ha observado que el valor PA " +"efectivo suele disminuir. Esto significa que un único valor de PA no siempre " +"es óptimo al 100% opara todas las características y que se suele utilizar un " +"valor de compromiso que no provoque demasiado abombamiento en los perfiles " +"con velocidades de flujo y aceleraciones más bajas y que, al mismo tiempo, " +"no provoque fallos en los perfiles más rápidos.\n" +"\n" +"Esta función pretende abordar esta limitación modelando la respuesta del " +"sistema de extrusión de su impresora en función de la velocidad de flujo " +"volumétrico y la aceleración a la que está imprimiendo. Internamente, genera " +"un modelo ajustado que puede extrapolar el avance de presión necesario para " +"cualquier velocidad de flujo volumétrico y aceleración, que luego se emite a " +"la impresora en función de las condiciones de impresión actuales.\n" +"\n" +"Cuando se activa, el valor de avance de presión anterior se anula. Sin " +"embargo, se recomienda encarecidamente un valor predeterminado razonable que " +"actúe como un alternativa y para los cambios de cabezal.\n" +"\n" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "Medidas adaptativas de avance presión (beta)" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" +"Añada conjuntos de valores de avance de presión (PA), las velocidades de " +"flujo volumétrico y las aceleraciones a las que se midieron, separados por " +"una coma. Un conjunto de valores por línea. Por ejemplo \n" +"0,04,3,96,3000 \n" +"0,033,3,96,10000 \n" +"0,029,7,91,3000 \n" +"0,026,7,91,10000\n" +"\n" +"Cómo calibrar: \n" +"Ejecute la prueba de avance de presión durante al menos 3 velocidades por " +"valor de aceleración. Se recomienda que la prueba se ejecute para al menos " +"la velocidad de los perímetros externos, la velocidad de los perímetros " +"internos y la velocidad de impresión de características más rápida en su " +"perfil (por lo general es el relleno de baja densidad o sólido). A " +"continuación, ejecútelos para las mismas velocidades para las aceleraciones " +"de impresión más lentas y más rápidas, y no más rápido que la aceleración " +"máxima recomendada según lo dado por el \"input shaper\" de Klipper. 2. Tome " +"nota del valor óptimo de PA para el perfil. Tome nota del valor óptimo de PA " +"para cada velocidad de flujo volumétrico y aceleración. Puede encontrar el " +"número de flujo seleccionando flujo en el desplegable del esquema de colores " +"y moviendo el deslizador horizontal sobre las líneas del patrón PA. El " +"número debería ser visible en la parte inferior de la página. El valor ideal " +"de PA debería disminuir cuanto mayor sea el caudal volumétrico. Si no es " +"así, confirme que su extrusor funciona correctamente. Cuanto más lento y con " +"menos aceleración imprimas, mayor será el rango de valores PA aceptables. Si " +"no se aprecia ninguna diferencia, utilice el valor PA de la prueba más " +"rápida. Introduzca los trios de valores PA, Flujo y Aceleraciones en el " +"cuadro de texto que aparece aquí y guarde su perfil de filamento.\n" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "Activación del Avance de Presión Adaptativo para Voladizos (beta)" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" +"Habilitar PA adaptable para voladizos, así como cuando el flujo cambia " +"dentro de la misma característica. Se trata de una opción experimental, ya " +"que si el perfil PA no se ajusta con precisión, causará problemas de " +"uniformidad en las superficies externas antes y después de los voladizos.\n" + +msgid "Pressure advance for bridges" +msgstr "Avance de Presión Lineal para puentes" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" +"Valor de Avance de Presión para puentes. Establecer a 0 para desactivar.\n" +"\n" +" Un valor de PA más bajo al imprimir puentes ayuda a reducir la aparición de " +"una ligera sub-extrusión inmediatamente después de los puentes. Esto es " +"causado por la caída de presión en la boquilla cuando se imprime en el aire " +"y un PA más bajo ayuda a contrarrestar esto." + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11087,8 +11237,8 @@ msgid "" "original dimensions." msgstr "" "Tiempo de espera después de la descarga de filamento. Esto debería ayudar a " -"unos cambios de herramienta confiables con materiales flexibles que " -"necesitan más tiempo para encogerse a las dimensiones originales." +"cambios de cabezal confiables con materiales flexibles que necesitan más " +"tiempo para encogerse a las dimensiones originales." msgid "Number of cooling moves" msgstr "Cantidad de movimientos de refrigeración" @@ -11100,6 +11250,27 @@ msgstr "" "El filamento se enfría moviéndose hacía atrás y hacía delante en los tubos " "de refrigeración. Especifique la cantidad de movimientos." +msgid "Stamping loading speed" +msgstr "Velocidad de Descarga" + +msgid "Speed used for stamping." +msgstr "Velocidad utilizada para \"Stamping\"." + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" +"Distancia del punto central del tubo de refrigeración a la punta del " +"extrusor." + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" +"Si se establece en un valor distinto de cero, el filamento se mueve hacia la " +"boquilla entre los movimientos de enfriamiento individuales (\"Stamping\"). " +"Esta opción configura cuánto tiempo debe durar este movimiento antes de que " +"el filamento se retraiga de nuevo." + msgid "Speed of the first cooling move" msgstr "Velocidad del primer movimiento de refrigeración" @@ -11117,12 +11288,12 @@ msgid "" "object, Orca Slicer will always prime this amount of material into the wipe " "tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" -"Tras un cambio de herramienta, es posible que no se conozca la posición " -"exacta del filamento recién cargado dentro de la boquilla y que la presión " -"del filamento aún no sea estable. Antes de purgar el cabezal de impresión en " -"un relleno o un objeto de sacrificio, OrcaSlicer siempre cebará esta " -"cantidad de material en la torre de purga para producir sucesivas " -"extrusiones de relleno u objetos de sacrificio de forma fiable." +"Tras un cambio de cabezal, es posible que no se conozca la posición exacta " +"del filamento recién cargado dentro de la boquilla y que la presión del " +"filamento aún no sea estable. Antes de purgar el cabezal de impresión en un " +"relleno o un objeto de sacrificio, OrcaSlicer siempre cebará esta cantidad " +"de material en la torre de purga para producir sucesivas extrusiones de " +"relleno u objetos de sacrificio de forma fiable." msgid "Speed of the last cooling move" msgstr "La velocidad del último movimiento de refrigeración" @@ -11138,9 +11309,9 @@ msgid "" "added to the total print time by the G-code time estimator." msgstr "" "Tiempo que tarda el firmware de la impresora (o la Unidad Multi Material " -"2.0) en cargar un nuevo filamento durante un cambio de herramienta (al " -"ejecutar el T-Code). El estimador de tiempo del G-Code añade este tiempo al " -"tiempo total de impresión." +"2.0) en cargar un nuevo filamento durante un cambio de cabezal (al ejecutar " +"el T-Code). El estimador de tiempo del G-Code añade este tiempo al tiempo " +"total de impresión." msgid "Ramming parameters" msgstr "Parámetros de moldeado de extremo" @@ -11158,12 +11329,12 @@ msgid "" "added to the total print time by the G-code time estimator." msgstr "" "Tiempo que tarda el firmware (para la unidad Multi Material 2.0) en " -"descargar el filamento durante el cambio de herramienta ( cuando se ejecuta " -"el T-Code). Esta duración se añade a la duración total de impresión estimada " -"del G-Code." +"descargar el filamento durante el cambio de cabezal ( cuando se ejecuta el T-" +"Code). Esta duración se añade a la duración total de impresión estimada del " +"G-Code." msgid "Enable ramming for multitool setups" -msgstr "Activar moldeado de extremo para configuraciones multiherramienta" +msgstr "Activar moldeado de extremo para configuraciones multicabezal" msgid "" "Perform ramming when using multitool printer (i.e. when the 'Single Extruder " @@ -11172,20 +11343,20 @@ msgid "" "toolchange. This option is only used when the wipe tower is enabled." msgstr "" "Llevar a cabo el moldeado de extremo cuando se usa una impresora multi " -"herramienta (es decir, cuando el 'Extrusor Único Multimaterial' en los " -"Ajustes de Impresora está desmarcado). Cuando está marcado, una pequeña " -"cantidad de filamento es extruida rápidamente en la torre de purga, justo " -"antes del cambio de herramienta. Esta opción se usa solamente cuando la " -"torre de purga está activada." +"cabezal (es decir, cuando el 'Extrusor Único Multimaterial' en los Ajustes " +"de Impresora está desmarcado). Cuando está marcado, una pequeña cantidad de " +"filamento es extruida rápidamente en la torre de purga, justo antes del " +"cambio de cabezal. Esta opción se usa solamente cuando la torre de purga " +"está activada." msgid "Multitool ramming volume" -msgstr "Volumen de Moldeado de Extremo multiherramienta" +msgstr "Volumen de Moldeado de Extremo Multicabezal" msgid "The volume to be rammed before the toolchange." -msgstr "El volumen de Moldeado de Extremo antes del cambio de herramienta." +msgstr "El volumen de Moldeado de Extremo antes del cambio de cabezal." msgid "Multitool ramming flow" -msgstr "Flujo de Moldeado de Extremo multiherramienta" +msgstr "Flujo de Moldeado de Extremo multicabezal" msgid "Flow used for ramming the filament before the toolchange." msgstr "" @@ -11732,8 +11903,8 @@ msgstr "Mejor posición de los objetos" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "" -"Mejor auto posicionamiento de los objetos en el intervalo [0,1] con respecto " -"a la forma de la cama." +"Mejor auto posicionamiento de los objetos en el rango [0,1] con respecto a " +"la forma de la cama." msgid "" "Enable this option if machine has auxiliary part cooling fan. G-code " @@ -11952,10 +12123,16 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profundidad de entrelazado de una región segmentada" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profundidad de entrelazado de una región segmentada. Cero desactiva esta " -"característica." +"Profundidad de enlazado de una región segmentada. Se ignorará si " +"\"mmu_segmented_region_max_width\" es cero o si " +"\"mmu_segmented_region_interlocking_depth \"es mayor que " +"\"mmu_segmented_region_max_width\". El valor cero desactiva esta función." msgid "Use beam interlocking" msgstr "Usar entrelazado de vigas" @@ -12379,9 +12556,6 @@ msgstr "" "para intentar mantener el tiempo mínimo de capa anterior, cuando la " "ralentización para un mejor ventilación de la capa está activada." -msgid "Nozzle diameter" -msgstr "Diámetro de boquilla" - msgid "Diameter of nozzle" msgstr "Diámetro de boquilla" @@ -12485,6 +12659,13 @@ msgstr "" "retracción para modelos complejos y ahorrar tiempo de impresión, pero hacer " "que el corte y la generación de G-Code sea más lento" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" +"Esta opción reducirá la temperatura de los extrusores inactivos para evitar " +"el rezumado." + msgid "Filename format" msgstr "Formato de los archivos" @@ -12808,8 +12989,8 @@ msgid "" "When the retraction is compensated after changing tool, the extruder will " "push this additional amount of filament." msgstr "" -"Cuando se compensa la retracción después de cambiar de herramienta, el " -"extrusor empujará esta cantidad adicional de filamento." +"Cuando se compensa la retracción después de cambiar de cabezal, el extrusor " +"empujará esta cantidad adicional de filamento." msgid "Retraction Speed" msgstr "Velocidad de retracción" @@ -13234,10 +13415,10 @@ msgstr "" "lapse para cada impresión. Después de imprimir cada capa, se toma una " "instantánea con la cámara. Todas estas instantáneas se componen en un vídeo " "time-lapse cuando finaliza la impresión. Si se selecciona el modo suave, el " -"cabezal de la herramienta se moverá a la rampa de exceso después de cada " -"capa se imprime y luego tomar una instantánea. Dado que el filamento fundido " -"puede gotear de la boquilla durante el proceso de tomar una instantánea, la " -"torre de purga es necesaria para el modo suave de limpiar la boquilla." +"cabezal se moverá a la rampa de exceso después de cada capa se imprime y " +"luego tomar una instantánea. Dado que el filamento fundido puede gotear de " +"la boquilla durante el proceso de tomar una instantánea, la torre de purga " +"es necesaria para el modo suave de limpiar la boquilla." msgid "Traditional" msgstr "Tradicional" @@ -13245,6 +13426,41 @@ msgstr "Tradicional" msgid "Temperature variation" msgstr "Variación de temperatura" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" +"Diferencia de temperatura a aplicar cuando un extrusor no está activo. El " +"valor no se utiliza cuando 'idle_temperature' en los ajustes de filamento se " +"establece en un valor distinto de cero." + +msgid "Preheat time" +msgstr "Tiempo de Precalentamiento" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" +"Para reducir el tiempo de espera tras el cambio de cabezal, Orca puede " +"precalentar lel siguiente cabezal mientras el cabezal actual todavía está en " +"uso. Este ajuste especifica el tiempo en segundos para precalentar la " +"siguiente herramienta. Orca insertará un comando M104 para precalentar el " +"cabezal por adelantado." + +msgid "Preheat steps" +msgstr "Pasos precalentamiento" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" +"Insertar múltiples comandos de precalentamiento (por ejemplo, M104.1). Sólo " +"útil para Prusa XL. Para otras impresoras, por favor ajústelo a 1." + msgid "Start G-code" msgstr "G-Code inicial" @@ -13271,7 +13487,7 @@ msgid "" "action." msgstr "" "Active esta opción para omitir el G-Code personalizado Cambiar filamento " -"sólo al principio de la impresión. El comando de cambio de herramienta (por " +"sólo al principio de la impresión. El comando de cambio de cabezal (por " "ejemplo, T0) se omitirá durante toda la impresión. Esto es útil para la " "impresión manual multi-material, donde utilizamos M600/PAUSE para activar la " "acción manual de cambio de filamento." @@ -13295,9 +13511,9 @@ msgid "" "with the print." msgstr "" "Sí está activado, la torre de purga no se imprimirá en las capa sin cambio " -"de herramienta. En las capas con cambio de herramienta, viajará hacía abajo " -"para imprimir la torre de purga. El usuario es responsable de asegurarse que " -"no hay colisiones con la impresión." +"de cabezal. En las capas con cambio de cabezal, viajará hacía abajo para " +"imprimir la torre de purga. El usuario es responsable de asegurarse que no " +"hay colisiones con la impresión." msgid "Prime all printing extruders" msgstr "Purgar todos los extrusores" @@ -13794,7 +14010,7 @@ msgid "" "tool change" msgstr "" "Este G-Code se inserta al cambiar de filamento, incluyendo el comando T para " -"activar el cambio de herramienta" +"activar el cambio de cabezal" msgid "This gcode is inserted when the extrusion role is changed" msgstr "Este G-Code se inserta cuando se cambia el rol de extrusión" @@ -13927,12 +14143,6 @@ msgstr "" "Ángulo del vértice del cono que se usa para estabilidad la torre de purga. " "Un angulo mayor significa una base más ancha." -msgid "Wipe tower purge lines spacing" -msgstr "Separación de las líneas de la torre de purga" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Separación de las líneas de la torre de purga." - msgid "Maximum wipe tower print speed" msgstr "Velocidad máxima de impresión de la torre de purga" @@ -13973,15 +14183,12 @@ msgstr "" "\n" "Antes de aumentar este parámetro más allá del valor por defecto de 90mm/seg, " "asegúrese de que su impresora puede puentear de forma fiable a las " -"velocidades aumentadas y que el rezume al cambiar de herramienta está bien " +"velocidades aumentadas y que el rezume al cambiar de cabezal está bien " "controlado.\n" "\n" "Para los perímetros externos de la torre de purga se utiliza la velocidad " "del perímetro interno independientemente de este ajuste." -msgid "Wipe tower extruder" -msgstr "Extrusor de torre de purga" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13997,9 +14204,9 @@ msgid "" "wipe tower. These values are used to simplify creation of the full purging " "volumes below." msgstr "" -"Este vector guarda los volúmenes necesarios para cambiar de/a cada " -"herramienta utilizada en la torre de purga. Estos valores se utilizan para " -"simplificar la creación de los volúmenes de purga completos a continuación." +"Este vector guarda los volúmenes necesarios para cambiar de/a cada cabezal " +"utilizada en la torre de purga. Estos valores se utilizan para simplificar " +"la creación de los volúmenes de purga completos a continuación." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -14040,6 +14247,35 @@ msgstr "" "Distancia máxima entre los soportes en las sección de relleno de baja " "densidad." +msgid "Wipe tower purge lines spacing" +msgstr "Separación de las líneas de la torre de purga" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Separación de las líneas de la torre de purga." + +msgid "Extra flow for purging" +msgstr "Caudal adicional para purgar" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" +"Flujo extra utilizado para las líneas de purga en la torre de limpieza. Esto " +"hace que las líneas de purga sean más gruesas o más estrechas de lo normal. " +"La separación se ajusta automáticamente." + +msgid "Idle temperature" +msgstr "Temperatura en Espera" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" +"Temperatura de la boquilla cuando el cabezal no se está utilizando en " +"configuraciones multicabezal. Póngalo a 0 para desactivarlo." + msgid "X-Y hole compensation" msgstr "Compensación de huecos X-Y" @@ -14396,6 +14632,16 @@ msgstr "" "Actualmente está previsto un purgado adicional del extrusor después de la " "desretracción." +msgid "Absolute E position" +msgstr "Posición E absoluta" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" +"Posición actual del eje del extrusor. Sólo se utiliza con direccionamiento " +"absoluto del extrusor." + msgid "Current extruder" msgstr "Extrusora actual" @@ -14426,7 +14672,7 @@ msgid "" "initial_tool." msgstr "" "Índice de base cero del primer extrusor utilizado en la impresión. Igual que " -"herramienta inicial." +"cabezal inicial." msgid "Initial tool" msgstr "Herramienta inicial" @@ -14446,6 +14692,14 @@ msgstr "" "Vector de bools que indica si un determinado extrusor se utiliza en la " "impresión." +msgid "Has single extruder MM priming" +msgstr "Parámetros de cambio de cabezal para impresoras de 1 extrusor MM" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" +"¿Se utilizan las regiones de imprimación multimaterial adicionales en esta " +"impresión?" + msgid "Volume per extruder" msgstr "Volumen por extrusora" @@ -14454,10 +14708,10 @@ msgstr "" "Volumen total de filamento extruido por extrusor durante toda la impresión." msgid "Total toolchanges" -msgstr "Total de cambios de herramientas" +msgstr "Total de cambios de cabezales" msgid "Number of toolchanges during the print." -msgstr "Número de cambios de herramienta durante la impresión." +msgstr "Número de cambios de cabezal durante la impresión." msgid "Total volume" msgstr "Volumen total" @@ -14610,6 +14864,16 @@ msgstr "Nombre físico de la impresora" msgid "Name of the physical printer used for slicing." msgstr "Nombre de la impresora física utilizada para el corte." +msgid "Number of extruders" +msgstr "Número de Cabezales" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" +"Número total de extrusores, independientemente de si se utilizan en la " +"impresión actual." + msgid "Layer number" msgstr "Número de capa" @@ -14679,7 +14943,7 @@ msgstr "" "generación de soporte." msgid "Optimizing toolpath" -msgstr "Optimización de la trayectoria de la herramienta" +msgstr "Optimización de la trayectoria de cabezal" msgid "Slicing mesh" msgstr "Malla de corte" @@ -15116,7 +15380,7 @@ msgid "material with significant thermal shrinkage/expansion, such as..." msgstr "Material con importante contracción/expansión térmica, como..." msgid "materials with inaccurate filament diameter" -msgstr "Materiales con diámetro de filamento inpreciso" +msgstr "Materiales con diámetro de filamento impreciso" msgid "We found the best Flow Dynamics Calibration Factor" msgstr "Hemos encontrado el mejor Factor de Calibración de Dinámicas de Flujo" @@ -15420,7 +15684,7 @@ msgid "PETG" msgstr "PETG" msgid "PCTG" -msgstr "" +msgstr "PCTG" msgid "TPU" msgstr "TPU" @@ -15667,7 +15931,7 @@ msgid "Select Vendor" msgstr "Seleccionar Fabricante" msgid "Input Custom Vendor" -msgstr "Introducor Fabricante Personalizado" +msgstr "Introducir Fabricante Personalizado" msgid "Can't find vendor I want" msgstr "No es posible encontrar el fabricante que deseamos" @@ -16047,8 +16311,8 @@ msgid "" "User's fillment preset set. \n" "Can be shared with others." msgstr "" -"Conjunto de perfiles de relleno del usuario. \n" -"Se puede compartir con otros." +"Conjunto de perfiles de filamento del usuario. \n" +"Se pueden compartir con otros." msgid "" "Only display printer names with changes to printer, filament, and process " @@ -16440,6 +16704,7 @@ msgstr "" "En comparación con el perfil predeterminado de una boquilla de 0,2 mm, tiene " "una altura de capa menor. Esto da como resultado líneas de capa casi " "invisibles y una mayor calidad de impresión, pero un tiempo de impresión más " +"corto." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -16738,7 +17003,7 @@ msgid "" "Did you know that OrcaSlicer supports chamber temperature?" msgstr "" "Temperatura de la cámara \n" -"¿Sabía que OrcaSlicer admite la temperatura de la cámara?" +"¿Sabía que OrcaSlicer admite la temperatura de cámara?" #: resources/data/hints.ini: [hint:Calibration] msgid "" @@ -16830,9 +17095,8 @@ msgid "" "Timelapse\n" "Did you know that you can generate a timelapse video during each print?" msgstr "" -"Intervalo\n" -"¿Sabías que puedes generar un vídeo de intervalo de trabajo durante cada " -"impresión?" +"Timelapse\n" +"¿Sabías que puedes generar un vídeo timelapse durante cada impresión?" #: resources/data/hints.ini: [hint:Auto-Arrange] msgid "" @@ -17099,6 +17363,61 @@ msgstr "" "aumentar adecuadamente la temperatura del lecho térmico puede reducir la " "probabilidad de deformaciones." +#~ msgid "up to" +#~ msgstr "hasta" + +#~ msgid "above" +#~ msgstr "sobre" + +#~ msgid "from" +#~ msgstr "desde" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Cambiando idioma de la aplicación mientras se modifican algunos perfiles." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "Botón de ratón ⌥+Left" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+botón izquierdo de ratón" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Cualquier flecha" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Botón izquierdo de ratón" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Botón izquierdo de ratón" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Rueda del ratón" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Rueda del ratón" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Rueda del ratón" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Rueda del ratón" + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Profundidad de entrelazado de una región segmentada. Cero desactiva esta " +#~ "característica." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Extrusor de torre de purga" + #~ msgid "" #~ "When recording timelapse without toolhead, it is recommended to add a " #~ "\"Timelapse Wipe Tower\" \n" diff --git a/resources/web/data/text.js b/resources/web/data/text.js index 40e20fbbbc..7d24296084 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -328,6 +328,9 @@ var LangText = { t113: "Puede cambiar su elección en preferencias en cualquier momento.", orca1: "Editar información del proyecto", orca2: "No hay información sobre el modelo", + orca3: "Modo Invisible", + orca4: "Esta función detiene la transmisión de datos a los servicios en la nube de Bambu. Los usuarios que no utilicen máquinas BBL o que solo utilicen el modo LAN pueden activar esta función de forma segura.", + orca5: "Activar Modo Invisible.", }, de_DE: { t1: "Willkommen im Orca Slicer", From fe6a7a8e504366cedd7ec9470f6ff42faa18e6da Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 3 Aug 2024 11:37:50 +0800 Subject: [PATCH 091/151] Disable flatpak for now. The current flatpak workflow in Orca is too troublesome to maintain. --- .github/workflows/build_all.yml | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index b36d1990db..dc24e2aa63 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -60,21 +60,21 @@ jobs: arch: ${{ matrix.arch }} build-deps-only: ${{ inputs.build-deps-only || false }} secrets: inherit - flatpak: - name: "Flatpak" - runs-on: ubuntu-latest - container: - image: bilelmoussaoui/flatpak-github-actions:gnome-45 - options: --privileged - steps: - # maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd - - name: "Remove unneeded stuff to free disk space" - run: - sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY" - - uses: actions/checkout@v4 - - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 - with: - bundle: orcaslicer.flatpak - manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml - cache-key: flatpak-builder-${{ github.sha }} - cache: false \ No newline at end of file + # flatpak: + # name: "Flatpak" + # runs-on: ubuntu-latest + # container: + # image: bilelmoussaoui/flatpak-github-actions:gnome-45 + # options: --privileged + # steps: + # # maybe i'm too dumb and fucked up to do CI. OH WELL :D -ppd + # - name: "Remove unneeded stuff to free disk space" + # run: + # sudo rm -rf /usr/share/dotnet /opt/ghc "/usr/local/share/boost" "$AGENT_TOOLSDIRECTORY" + # - uses: actions/checkout@v4 + # - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + # with: + # bundle: orcaslicer.flatpak + # manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml + # cache-key: flatpak-builder-${{ github.sha }} + # cache: false \ No newline at end of file From afc1a65df2a3a0e86664199fffe14dd678811d0d Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sat, 3 Aug 2024 22:01:37 +0800 Subject: [PATCH 092/151] Fix/crashing when generating walls (#6325) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix crash when filling very tiny (1-5nm) gaps (#6279) Cherry-picked from prusa3d/PrusaSlicer@8784ca0ecf538d0e4071086b09c9dbecb68b1c22 Co-authored-by: Lukáš Hejl * SPE-2256: Fix the issue that we used the old Voronoi graph during the detection of invalid Voronoi diagrams. This happens because we didn't set a modified flag that is required to be set before we use the new Voronoi graph. Possibly related to #12385 Cherry-picked from prusa3d/PrusaSlicer@2de1f3aa45cd609f4c6adad3a56137fc9955bada Co-authored-by: Lukáš Hejl --------- Co-authored-by: Lukáš Hejl --- src/libslic3r/Geometry/MedialAxis.cpp | 13 +++++++++++++ src/libslic3r/Geometry/Voronoi.cpp | 6 +++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Geometry/MedialAxis.cpp b/src/libslic3r/Geometry/MedialAxis.cpp index 2a27db1d8a..d3a6ac6c84 100644 --- a/src/libslic3r/Geometry/MedialAxis.cpp +++ b/src/libslic3r/Geometry/MedialAxis.cpp @@ -449,6 +449,19 @@ MedialAxis::MedialAxis(double min_width, double max_width, const ExPolygon &expo void MedialAxis::build(ThickPolylines* polylines) { m_vd.construct_voronoi(m_lines.begin(), m_lines.end()); + + // For several ExPolygons in SPE-1729, an invalid Voronoi diagram was produced that wasn't fixable by rotating input data. + // Those ExPolygons contain very thin lines and holes formed by very close (1-5nm) vertices that are on the edge of our resolution. + // Those thin lines and holes are both unprintable and cause the Voronoi diagram to be invalid. + // So we filter out such thin lines and holes and try to compute the Voronoi diagram again. + if (!m_vd.is_valid()) { + m_lines = to_lines(closing_ex({m_expolygon}, float(2. * SCALED_EPSILON))); + m_vd.construct_voronoi(m_lines.begin(), m_lines.end()); + + if (!m_vd.is_valid()) + BOOST_LOG_TRIVIAL(error) << "MedialAxis - Invalid Voronoi diagram even after morphological closing."; + } + Slic3r::Voronoi::annotate_inside_outside(m_vd, m_lines); // static constexpr double threshold_alpha = M_PI / 12.; // 30 degrees // std::vector skeleton_edges = Slic3r::Voronoi::skeleton_edges_rough(vd, lines, threshold_alpha); diff --git a/src/libslic3r/Geometry/Voronoi.cpp b/src/libslic3r/Geometry/Voronoi.cpp index fc7ead40d0..f9ab6a6945 100644 --- a/src/libslic3r/Geometry/Voronoi.cpp +++ b/src/libslic3r/Geometry/Voronoi.cpp @@ -146,6 +146,9 @@ void VoronoiDiagram::copy_to_local(voronoi_diagram_type &voronoi_diagram) { new_edge.prev(&m_edges[prev_edge_idx]); } } + + m_voronoi_diagram.clear(); + m_is_modified = true; } template @@ -346,9 +349,6 @@ VoronoiDiagram::try_to_repair_degenerated_voronoi_diagram_by_rotation(const Segm for (vertex_type &vertex : m_vertices) vertex.color(0); - m_voronoi_diagram.clear(); - m_is_modified = true; - return issue_type; } From 799c362fcde134dc41ef07ff4de419641876f469 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Sat, 3 Aug 2024 23:02:21 +0900 Subject: [PATCH 093/151] Localization: Change Python executable name for Windows (#6302) Change Python executable name for Windows --- run_gettext.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run_gettext.bat b/run_gettext.bat index c095a3db0a..a5fac6a70f 100644 --- a/run_gettext.bat +++ b/run_gettext.bat @@ -10,7 +10,7 @@ for %%a in (%*) do ( if %FULL_MODE%==1 ( .\tools\xgettext.exe --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost -f ./localization/i18n/list.txt -o ./localization/i18n/OrcaSlicer.pot - python3 scripts/HintsToPot.py ./resources ./localization/i18n + python scripts/HintsToPot.py ./resources ./localization/i18n ) REM Print the current directory echo %cd% From 407d09764b01290b33925574ebe446b9880e970a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 4 Aug 2024 00:54:03 +0800 Subject: [PATCH 094/151] Toolchanger: fix an issue that wall_filament/sparse_infill_filament/solid_infill_filament didn't always work --- src/libslic3r/ExtrusionEntityCollection.hpp | 13 +++++++++++ src/libslic3r/GCode/ToolOrdering.cpp | 26 ++++++++++++++++----- src/libslic3r/PresetBundle.cpp | 10 +++++++- src/libslic3r/PrintObject.cpp | 8 +++---- 4 files changed, 46 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/ExtrusionEntityCollection.hpp b/src/libslic3r/ExtrusionEntityCollection.hpp index 7d6f92a528..613d531db0 100644 --- a/src/libslic3r/ExtrusionEntityCollection.hpp +++ b/src/libslic3r/ExtrusionEntityCollection.hpp @@ -62,6 +62,19 @@ public: } return out; } + bool has_perimeters() const + { + return std::any_of(entities.begin(), entities.end(), [](const ExtrusionEntity* ee) { return is_perimeter(ee->role()); }); + } + bool has_infill() const + { + return std::any_of(entities.begin(), entities.end(), [](const ExtrusionEntity* ee) { return is_infill(ee->role()); }); + } + bool has_solid_infill() const + { + return std::any_of(entities.begin(), entities.end(), [](const ExtrusionEntity* ee) { return is_solid_infill(ee->role()); }); + } + bool can_sort() const override { return !this->no_sort; } bool can_reverse() const override { diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 03a3c491e9..1f2aa13e7f 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -1,3 +1,4 @@ +#include "ExtrusionEntity.hpp" #include "Print.hpp" #include "ToolOrdering.hpp" #include "Layer.hpp" @@ -171,12 +172,25 @@ unsigned int LayerTools::extruder(const ExtrusionEntityCollection &extrusions, c assert(region.config().sparse_infill_filament.value > 0); assert(region.config().solid_infill_filament.value > 0); // 1 based extruder ID. - unsigned int extruder = ((this->extruder_override == 0) ? - (is_infill(extrusions.role()) ? - (is_solid_infill(extrusions.entities.front()->role()) ? region.config().solid_infill_filament : region.config().sparse_infill_filament) : - region.config().wall_filament.value) : - this->extruder_override); - return (extruder == 0) ? 0 : extruder - 1; + unsigned int extruder = 1; + + if (this->extruder_override == 0) { + if (extrusions.has_infill()) { + if (extrusions.has_solid_infill()) { + extruder = region.config().solid_infill_filament; + } else { + extruder = region.config().sparse_infill_filament; + } + } else if (extrusions.has_perimeters()) { + extruder = region.config().wall_filament.value; + } else { + extruder = this->extruder_override; + } + } else { + extruder = this->extruder_override; + } + + return (extruder == 0) ? 0 : extruder - 1; } static double calc_max_layer_height(const PrintConfig &config, double max_object_layer_height) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index b45edc8a85..a6f55a9bfe 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -2275,7 +2275,7 @@ DynamicPrintConfig PresetBundle::full_fff_config() const //BBS: add logic for settings check between different system presets out.erase("different_settings_to_system"); - static const char *keys[] = { "support_filament", "support_interface_filament" }; + static const char* keys[] = {"support_filament", "support_interface_filament", "wipe_tower_filament"}; for (size_t i = 0; i < sizeof(keys) / sizeof(keys[0]); ++ i) { std::string key = std::string(keys[i]); auto *opt = dynamic_cast(out.option(key, false)); @@ -2283,6 +2283,14 @@ DynamicPrintConfig PresetBundle::full_fff_config() const opt->value = boost::algorithm::clamp(opt->value, 0, int(num_filaments)); } + static const char* keys_1based[] = {"wall_filament", "sparse_infill_filament", "solid_infill_filament"}; + for (size_t i = 0; i < sizeof(keys_1based) / sizeof(keys_1based[0]); ++ i) { + std::string key = std::string(keys_1based[i]); + auto *opt = dynamic_cast(out.option(key, false)); + assert(opt != nullptr); + if(opt->value < 1 || opt->value > int(num_filaments)) + opt->value = 1; + } out.option("print_settings_id", true)->value = this->prints.get_selected_preset_name(); out.option("filament_settings_id", true)->values = this->filament_presets; out.option("printer_settings_id", true)->value = this->printers.get_selected_preset_name(); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 72efdb02a8..0efc1a5421 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -2887,11 +2887,11 @@ static void apply_to_print_region_config(PrintRegionConfig &out, const DynamicPr // 1) Copy the "extruder key to sparse_infill_filament and wall_filament. auto *opt_extruder = in.opt(key_extruder); if (opt_extruder) - if (int extruder = opt_extruder->value; extruder != 1) { + if (int extruder = opt_extruder->value; extruder != 0) { // Not a default extruder. - out.sparse_infill_filament .value = extruder; - out.solid_infill_filament.value = extruder; - out.wall_filament .value = extruder; + out.sparse_infill_filament.value = extruder; + out.solid_infill_filament.value = extruder; + out.wall_filament.value = extruder; } // 2) Copy the rest of the values. for (auto it = in.cbegin(); it != in.cend(); ++ it) From 591f3faa8ee31e936cbf9af40930654448f41e7b Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 4 Aug 2024 00:54:58 +0800 Subject: [PATCH 095/151] Add camera sanity check --- src/slic3r/GUI/Camera.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/slic3r/GUI/Camera.cpp b/src/slic3r/GUI/Camera.cpp index c6c0414194..c87b3cf2d2 100644 --- a/src/slic3r/GUI/Camera.cpp +++ b/src/slic3r/GUI/Camera.cpp @@ -586,6 +586,9 @@ double Camera::calc_zoom_to_volumes_factor(const GLVolumePtrs& volumes, Vec3d& c void Camera::set_distance(double distance) { + if(distance < EPSILON || distance > 1.0e6) + return; + if (m_distance != distance) { m_view_matrix.translate((distance - m_distance) * get_dir_forward()); m_distance = distance; From 8cbf3b83b9407b482488d485ab82dc5e5ec52012 Mon Sep 17 00:00:00 2001 From: KrisMorr <154343071+KrisMorr@users.noreply.github.com> Date: Sun, 4 Aug 2024 02:58:24 +0200 Subject: [PATCH 096/151] Adding missing string aliases for gettext (#6329) --- src/libslic3r/PrintConfig.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index b17746db4f..32d3b563ce 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3458,9 +3458,9 @@ void PrintConfigDef::init_fff_params() def = this->add("wall_filament", coInt); def->gui_type = ConfigOptionDef::GUIType::i_enum_open; - def->label = "Walls"; - def->category = "Extruders"; - def->tooltip = "Filament to print walls"; + def->label = L("Walls"); + def->category = L("Extruders"); + def->tooltip = L("Filament to print walls"); def->min = 1; def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); @@ -3518,8 +3518,8 @@ void PrintConfigDef::init_fff_params() def = this->add("printer_model", coString); //def->label = L("Printer type"); //def->tooltip = L("Type of the printer"); - def->label = "Printer type"; - def->tooltip = "Type of the printer"; + def->label = L("Printer type"); + def->tooltip = L("Type of the printer"); def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; @@ -3534,7 +3534,7 @@ void PrintConfigDef::init_fff_params() def = this->add("printer_variant", coString); //def->label = L("Printer variant"); - def->label = "Printer variant"; + def->label = L("Printer variant"); //def->tooltip = L("Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter."); def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; @@ -4049,9 +4049,9 @@ void PrintConfigDef::init_fff_params() def = this->add("solid_infill_filament", coInt); def->gui_type = ConfigOptionDef::GUIType::i_enum_open; - def->label = "Solid infill"; - def->category = "Extruders"; - def->tooltip = "Filament to print solid infill"; + def->label = L("Solid infill"); + def->category = L("Extruders"); + def->tooltip = L("Filament to print solid infill"); def->min = 1; def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); @@ -4776,7 +4776,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionInts { 240 }); def = this->add("head_wrap_detect_zone", coPoints); - def->label ="Head wrap detect zone"; //do not need translation + def->label = "Head wrap detect zone"; //do not need translation def->mode = comDevelop; def->set_default_value(new ConfigOptionPoints{}); From 3257ebb7acf51c05180c3919fe65cb30b864854f Mon Sep 17 00:00:00 2001 From: KrisMorr <154343071+KrisMorr@users.noreply.github.com> Date: Sun, 4 Aug 2024 02:58:48 +0200 Subject: [PATCH 097/151] update locale and Polish translations (#6330) * update locale and Polish translations for PR #6329 * fix * text.js_update Polish translation * fix --- localization/i18n/OrcaSlicer.pot | 316 +-- localization/i18n/ca/OrcaSlicer_ca.po | 437 +++- localization/i18n/cs/OrcaSlicer_cs.po | 389 +++- localization/i18n/de/OrcaSlicer_de.po | 436 +++- localization/i18n/en/OrcaSlicer_en.po | 406 +++- localization/i18n/es/OrcaSlicer_es.po | 78 +- localization/i18n/fr/OrcaSlicer_fr.po | 418 +++- localization/i18n/hu/OrcaSlicer_hu.po | 410 +++- localization/i18n/it/OrcaSlicer_it.po | 414 +++- localization/i18n/ja/OrcaSlicer_ja.po | 411 +++- localization/i18n/ko/OrcaSlicer_ko.po | 40 +- localization/i18n/nl/OrcaSlicer_nl.po | 413 +++- localization/i18n/pl/OrcaSlicer_pl.po | 642 ++++-- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 416 +++- localization/i18n/ru/OrcaSlicer_ru.po | 414 +++- localization/i18n/sv/OrcaSlicer_sv.po | 408 +++- localization/i18n/tr/OrcaSlicer_tr.po | 2079 +++++++++++-------- localization/i18n/uk/OrcaSlicer_uk.po | 413 +++- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 437 +++- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 381 +++- resources/web/data/text.js | 3 + 21 files changed, 6841 insertions(+), 2520 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index db3174b0e4..4fea2ad475 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-30 10:20+0900\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -11054,6 +11054,9 @@ msgid "" "speed to print. For 100%% overhang, bridge speed is used." msgstr "" +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11087,12 +11090,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "" msgid "You can put your notes regarding the printer here." msgstr "" +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "" @@ -11542,6 +11554,12 @@ msgid "" "internal solid infill" msgstr "" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -14443,151 +14461,151 @@ msgstr "" msgid "User cancelled." msgstr "" - -#: resources/data/hints.ini: [hint:Precise wall] -msgid "Precise wall\nDid you know that turning on precise wall can improve precision and layer consistency?" -msgstr "" - -#: resources/data/hints.ini: [hint:Sandwich mode] -msgid "Sandwich mode\nDid you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" -msgstr "" - -#: resources/data/hints.ini: [hint:Chamber temperature] -msgid "Chamber temperature\nDid you know that OrcaSlicer supports chamber temperature?" -msgstr "" - -#: resources/data/hints.ini: [hint:Calibration] -msgid "Calibration\nDid you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." -msgstr "" - -#: resources/data/hints.ini: [hint:Auxiliary fan] -msgid "Auxiliary fan\nDid you know that OrcaSlicer supports Auxiliary part cooling fan?" -msgstr "" - -#: resources/data/hints.ini: [hint:Air filtration] -msgid "Air filtration/Exhaust Fan\nDid you know that OrcaSlicer can support Air filtration/Exhaust Fan?" -msgstr "" - -#: resources/data/hints.ini: [hint:G-code window] -msgid "G-code window\nYou can turn on/off the G-code window by pressing the C key." -msgstr "" - -#: resources/data/hints.ini: [hint:Switch workspaces] -msgid "Switch workspaces\nYou can switch between Prepare and Preview workspaces by pressing the Tab key." -msgstr "" - -#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] -msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." -msgstr "" - -#: resources/data/hints.ini: [hint:Reverse on odd] -msgid "Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" -msgstr "" - -#: resources/data/hints.ini: [hint:Cut Tool] -msgid "Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool?" -msgstr "" - -#: resources/data/hints.ini: [hint:Fix Model] -msgid "Fix Model\nDid you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" -msgstr "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "Timelapse\nDid you know that you can generate a timelapse video during each print?" -msgstr "" - -#: resources/data/hints.ini: [hint:Auto-Arrange] -msgid "Auto-Arrange\nDid you know that you can auto-arrange all objects in your project?" -msgstr "" - -#: resources/data/hints.ini: [hint:Auto-Orient] -msgid "Auto-Orient\nDid you know that you can rotate objects to an optimal orientation for printing by a simple click?" -msgstr "" - -#: resources/data/hints.ini: [hint:Lay on Face] -msgid "Lay on Face\nDid you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." -msgstr "" - -#: resources/data/hints.ini: [hint:Object List] -msgid "Object List\nDid you know that you can view all objects/parts in a list and change settings for each object/part?" -msgstr "" - -#: resources/data/hints.ini: [hint:Search Functionality] -msgid "Search Functionality\nDid you know that you use the Search tool to quickly find a specific Orca Slicer setting?" -msgstr "" - -#: resources/data/hints.ini: [hint:Simplify Model] -msgid "Simplify Model\nDid you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." -msgstr "" - -#: resources/data/hints.ini: [hint:Slicing Parameter Table] -msgid "Slicing Parameter Table\nDid you know that you can view all objects/parts on a table and change settings for each object/part?" -msgstr "" - -#: resources/data/hints.ini: [hint:Split to Objects/Parts] -msgid "Split to Objects/Parts\nDid you know that you can split a big object into small ones for easy colorizing or printing?" -msgstr "" - -#: resources/data/hints.ini: [hint:Subtract a Part] -msgid "Subtract a Part\nDid you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." -msgstr "" - -#: resources/data/hints.ini: [hint:STEP] -msgid "STEP\nDid you know that you can improve your print quality by slicing a STEP file instead of an STL?\nOrca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" -msgstr "" - -#: resources/data/hints.ini: [hint:Z seam location] -msgid "Z seam location\nDid you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] -msgid "Fine-tuning for flow rate\nDid you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." -msgstr "" - -#: resources/data/hints.ini: [hint:Split your prints into plates] -msgid "Split your prints into plates\nDid you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." -msgstr "" - -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] -msgid "Speed up your print with Adaptive Layer Height\nDid you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Support painting] -msgid "Support painting\nDid you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." -msgstr "" - -#: resources/data/hints.ini: [hint:Different types of supports] -msgid "Different types of supports\nDid you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Printing Silk Filament] -msgid "Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." -msgstr "" - -#: resources/data/hints.ini: [hint:Brim for better adhesion] -msgid "Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" -msgstr "" - -#: resources/data/hints.ini: [hint:Set parameters for multiple objects] -msgid "Set parameters for multiple objects\nDid you know that you can set slicing parameters for all selected objects at one time?" -msgstr "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "Stack objects\nDid you know that you can stack objects as a whole one?" -msgstr "" - -#: resources/data/hints.ini: [hint:Flush into support/objects/infill] -msgid "Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" -msgstr "" - -#: resources/data/hints.ini: [hint:Improve strength] -msgid "Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" -msgstr "" - -#: resources/data/hints.ini: [hint:When need to print with the printer door opened] -msgid "When need to print with the printer door opened\nDid you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." -msgstr "" - -#: resources/data/hints.ini: [hint:Avoid warping] -msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping." -msgstr "" + +#: resources/data/hints.ini: [hint:Precise wall] +msgid "Precise wall\nDid you know that turning on precise wall can improve precision and layer consistency?" +msgstr "" + +#: resources/data/hints.ini: [hint:Sandwich mode] +msgid "Sandwich mode\nDid you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" +msgstr "" + +#: resources/data/hints.ini: [hint:Chamber temperature] +msgid "Chamber temperature\nDid you know that OrcaSlicer supports chamber temperature?" +msgstr "" + +#: resources/data/hints.ini: [hint:Calibration] +msgid "Calibration\nDid you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." +msgstr "" + +#: resources/data/hints.ini: [hint:Auxiliary fan] +msgid "Auxiliary fan\nDid you know that OrcaSlicer supports Auxiliary part cooling fan?" +msgstr "" + +#: resources/data/hints.ini: [hint:Air filtration] +msgid "Air filtration/Exhaust Fan\nDid you know that OrcaSlicer can support Air filtration/Exhaust Fan?" +msgstr "" + +#: resources/data/hints.ini: [hint:G-code window] +msgid "G-code window\nYou can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "Switch workspaces\nYou can switch between Prepare and Preview workspaces by pressing the Tab key." +msgstr "" + +#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] +msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." +msgstr "" + +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" +msgstr "" + +#: resources/data/hints.ini: [hint:Cut Tool] +msgid "Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool?" +msgstr "" + +#: resources/data/hints.ini: [hint:Fix Model] +msgid "Fix Model\nDid you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" +msgstr "" + +#: resources/data/hints.ini: [hint:Timelapse] +msgid "Timelapse\nDid you know that you can generate a timelapse video during each print?" +msgstr "" + +#: resources/data/hints.ini: [hint:Auto-Arrange] +msgid "Auto-Arrange\nDid you know that you can auto-arrange all objects in your project?" +msgstr "" + +#: resources/data/hints.ini: [hint:Auto-Orient] +msgid "Auto-Orient\nDid you know that you can rotate objects to an optimal orientation for printing by a simple click?" +msgstr "" + +#: resources/data/hints.ini: [hint:Lay on Face] +msgid "Lay on Face\nDid you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." +msgstr "" + +#: resources/data/hints.ini: [hint:Object List] +msgid "Object List\nDid you know that you can view all objects/parts in a list and change settings for each object/part?" +msgstr "" + +#: resources/data/hints.ini: [hint:Search Functionality] +msgid "Search Functionality\nDid you know that you use the Search tool to quickly find a specific Orca Slicer setting?" +msgstr "" + +#: resources/data/hints.ini: [hint:Simplify Model] +msgid "Simplify Model\nDid you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." +msgstr "" + +#: resources/data/hints.ini: [hint:Slicing Parameter Table] +msgid "Slicing Parameter Table\nDid you know that you can view all objects/parts on a table and change settings for each object/part?" +msgstr "" + +#: resources/data/hints.ini: [hint:Split to Objects/Parts] +msgid "Split to Objects/Parts\nDid you know that you can split a big object into small ones for easy colorizing or printing?" +msgstr "" + +#: resources/data/hints.ini: [hint:Subtract a Part] +msgid "Subtract a Part\nDid you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." +msgstr "" + +#: resources/data/hints.ini: [hint:STEP] +msgid "STEP\nDid you know that you can improve your print quality by slicing a STEP file instead of an STL?\nOrca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" +msgstr "" + +#: resources/data/hints.ini: [hint:Z seam location] +msgid "Z seam location\nDid you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] +msgid "Fine-tuning for flow rate\nDid you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." +msgstr "" + +#: resources/data/hints.ini: [hint:Split your prints into plates] +msgid "Split your prints into plates\nDid you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." +msgstr "" + +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +msgid "Speed up your print with Adaptive Layer Height\nDid you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Support painting] +msgid "Support painting\nDid you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." +msgstr "" + +#: resources/data/hints.ini: [hint:Different types of supports] +msgid "Different types of supports\nDid you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Printing Silk Filament] +msgid "Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." +msgstr "" + +#: resources/data/hints.ini: [hint:Brim for better adhesion] +msgid "Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" +msgstr "" + +#: resources/data/hints.ini: [hint:Set parameters for multiple objects] +msgid "Set parameters for multiple objects\nDid you know that you can set slicing parameters for all selected objects at one time?" +msgstr "" + +#: resources/data/hints.ini: [hint:Stack objects] +msgid "Stack objects\nDid you know that you can stack objects as a whole one?" +msgstr "" + +#: resources/data/hints.ini: [hint:Flush into support/objects/infill] +msgid "Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" +msgstr "" + +#: resources/data/hints.ini: [hint:Improve strength] +msgid "Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" +msgstr "" + +#: resources/data/hints.ini: [hint:When need to print with the printer door opened] +msgid "When need to print with the printer door opened\nDid you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." +msgstr "" + +#: resources/data/hints.ini: [hint:Avoid warping] +msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping." +msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index bfb8efd99f..da702fafcf 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-07-07 18:43+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -79,9 +79,6 @@ msgstr "Angle de farciment intel·ligent" msgid "On overhangs only" msgstr "Només als voladissos" -msgid "Auto support threshold angle: " -msgstr "Angle llindar de suport automàtic: " - msgid "Circle" msgstr "Cercle" @@ -101,6 +98,9 @@ msgstr "Permet pintar només les facetes seleccionades per: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Ressalteu les cares segons l'angle del voladís." +msgid "Auto support threshold angle: " +msgstr "Angle llindar de suport automàtic: " + msgid "No auto support" msgstr "No suports automàtics" @@ -4170,15 +4170,6 @@ msgstr "Temps total" msgid "Total cost" msgstr "Cost total" -msgid "up to" -msgstr "fins a" - -msgid "above" -msgstr "sobre" - -msgid "from" -msgstr "des de" - msgid "Color Scheme" msgstr "Esquema de color" @@ -4242,12 +4233,12 @@ msgstr "Canvis de filament" msgid "Cost" msgstr "Cost" -msgid "Color change" -msgstr "Canvi de color" - msgid "Print" msgstr "Imprimir" +msgid "Color change" +msgstr "Canvi de color" + msgid "Printer" msgstr "Impressora" @@ -6180,6 +6171,14 @@ msgstr "S'ha detectat un objecte amb múltiples peces" msgid "The file does not contain any geometry data." msgstr "El fitxer no conté cap dada de geometria." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objecte massa gran" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6187,9 +6186,6 @@ msgstr "" "El teu objecte sembla ser massa gran, Vols reduir-lo per adaptar-lo " "automàticament al llit?" -msgid "Object too large" -msgstr "Objecte massa gran" - msgid "Export STL file:" msgstr "Exportar el fitxer STL:" @@ -6568,9 +6564,6 @@ msgstr "Voleu continuar?" msgid "Language selection" msgstr "Selecció d'idiomes" -msgid "Switching application language while some presets are modified." -msgstr "Canviant l'idioma de l'aplicació mentre es modifiquen alguns perfils." - msgid "Changing application language" msgstr "Canviant de l'idioma de l'aplicació" @@ -6774,6 +6767,12 @@ msgstr "" "Amb aquesta opció habilitada, podeu enviar una tasca a diversos dispositius " "alhora i gestionar múltiples dispositius." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Xarxa" @@ -7706,8 +7705,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Quan graveu timelapse sense capçal d'impressió, es recomana afegir una " "\"Torre de Purga Timelapse\" \n" @@ -7784,12 +7783,21 @@ msgstr "Filament de suport" msgid "Tree supports" msgstr "Suports d'arbre" -msgid "Skirt" -msgstr "Faldilla" +msgid "Multimaterial" +msgstr "Multimaterial" msgid "Prime tower" msgstr "Torre de Purga" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Faldilla" + msgid "Special mode" msgstr "Ajustos especials" @@ -7843,6 +7851,9 @@ msgstr "" "Rang de temperatures del broquet recomanat per a aquest filament. 0 " "significa que no es configura" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Temperatura de la cambra d'impressió" @@ -7952,9 +7963,6 @@ msgstr "Codi-G Inicial del Filament" msgid "Filament end G-code" msgstr "Codi-G Final del Filament" -msgid "Multimaterial" -msgstr "Multimaterial" - msgid "Wipe tower parameters" msgstr "Paràmetres de la Torre de Purga" @@ -8044,12 +8052,30 @@ msgstr "Limitació de la sacsejada( Jerk )" msgid "Single extruder multimaterial setup" msgstr "Configuració d'extrusor únic multimaterial" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Diàmetre del broquet( nozzle )" + msgid "Wipe tower" msgstr "Torre de Purga" msgid "Single extruder multimaterial parameters" msgstr "Paràmetres d'extrusor únic multimaterial" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Límits d'alçada de capa" @@ -8559,11 +8585,8 @@ msgstr "Llista d'objectes" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importar dades de geometria des de fitxers STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Maj+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Maj+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Enganxa des del porta-retalls" @@ -8614,33 +8637,18 @@ msgstr "Maj+Tab" msgid "Collapse/Expand the sidebar" msgstr "Replegar/Expandir barra lateral" -msgid "⌘+Any arrow" -msgstr "⌘+Qualsevol fletxa" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Moviment a l'espai de la càmera" -msgid "⌥+Left mouse button" -msgstr "⌥+Botó esquerre del ratolí" - msgid "Select a part" msgstr "Seleccionar una peça" -msgid "⌘+Left mouse button" -msgstr "⌘+Botó esquerre del ratolí" - msgid "Select multiple objects" msgstr "Seleccionar múltiples objectes" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Qualsevol fletxa" - -msgid "Alt+Left mouse button" -msgstr "Alt+Botó esquerre del ratolí" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Botó esquerre del ratolí" - msgid "Shift+Left mouse button" msgstr "Maj+Botó esquerre del ratolí" @@ -8743,24 +8751,12 @@ msgstr "Plataforma" msgid "Move: press to snap by 1mm" msgstr "Moure: Clicka per ajustar en passos d'1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Roda del ratolí" - msgid "Support/Color Painting: adjust pen radius" msgstr "Suport/Pintat de color: configuració del radi de la ploma" -msgid "⌥+Mouse wheel" -msgstr "⌥+Roda del ratolí" - msgid "Support/Color Painting: adjust section position" msgstr "Suport/Pintat de color: configuració de la posició de la secció" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Roda del ratolí" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Roda del ratolí" - msgid "Gizmo" msgstr "Gizmo" @@ -9082,6 +9078,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "No es pot imprimir cap objecte. Potser que sigui massa petit" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9328,11 +9329,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Alçada de Capa Variable no és compatible amb suports Orgànics." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"No es permeten diferents diàmetres de broquet i diferents diàmetres de " -"filament quan s'habilita la Torre de Purga." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9342,10 +9342,9 @@ msgstr "" "relatiu de l'extrusor ( use_relative_e_distances=1 )." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Actualment, la Prevenció d'Ooze( goteig ) no és compatible amb la Torre de " -"Purga habilitada." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10842,6 +10841,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Avanç de Pressió Lineal( Klipper ) AKA Factor d'Avanç Lineal( Marlin )" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11049,6 +11128,21 @@ msgstr "" "El filament es refreda en ser mogut cap endavant i cap enrere als tubs de " "refredament. Especifica el nombre que vulgueu d'aquests moviments." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Velocitat del primer moviment de refredament" @@ -11480,15 +11574,15 @@ msgstr "Velocitat màxima del ventilador a la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocitat del ventilador augmentarà linealment de zero a la capa " -"\"close_fan_the_first_x_layers\" al màxim a la capa " -"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior " -"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " +"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer" +"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a " +"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " "la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" @@ -11900,10 +11994,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profunditat d'entrellaçament d'una regió segmentada" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profunditat d'entrellaçament d'una regió segmentada. Zero desactiva aquesta " -"funció." msgid "Use beam interlocking" msgstr "Utilitzar feixos d'entrellaçament" @@ -12326,9 +12422,6 @@ msgstr "" "intentar mantenir el temps mínim de capa anterior, quan \"alentir per a un " "millor refredament de la capa\" està habilitat." -msgid "Nozzle diameter" -msgstr "Diàmetre del broquet( nozzle )" - msgid "Diameter of nozzle" msgstr "Diàmetre del broquet" @@ -12432,6 +12525,11 @@ msgstr "" "retracció per a models complexos i estalviar temps d'impressió, però fer que " "el laminat i la generació de Codi-G siguin més lents" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Format del nom del fitxer" @@ -12482,6 +12580,9 @@ msgstr "" "utilitzar una velocitat diferent per imprimir. Per al voladís del 100%%, " "s'utilitza la velocitat de pont." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12531,12 +12632,21 @@ msgstr "" "fitxer Codi-G com a primer argument, i poden accedir als paràmetres de " "configuració d'OrcaSlicer llegint variables d'entorn." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Notes de la impressora" msgid "You can put your notes regarding the printer here." msgstr "Podeu posar les vostres notes sobre la impressora aquí." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distància Z de contacte de la Vora d'Adherència" @@ -13123,6 +13233,12 @@ msgstr "" "L'àrea de farciment poc dens que sigui més petita que el valor del llindar " "serà substituït per un farciment sòlid intern" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13189,6 +13305,31 @@ msgstr "Tradicional" msgid "Temperature variation" msgstr "Variació de temperatura" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Codi-G inicial" @@ -13878,12 +14019,6 @@ msgstr "" "Angle del vèrtex del con que s'utilitza per estabilitzar la Torre de Purga. " "Un angle més gran significa una base més ampla." -msgid "Wipe tower purge lines spacing" -msgstr "Espaiat de les línies de la Torre de Purga" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Espaiat de les línies de purga de la Torre de Purga." - msgid "Maximum wipe tower print speed" msgstr "Velocitat màxima d'impressió de la torre de purga" @@ -13929,9 +14064,6 @@ msgstr "" "Per als perímetres externs de la torre de purga, s'utilitza la velocitat " "perimetral interna independentment d'aquesta configuració." -msgid "Wipe tower extruder" -msgstr "Extrusor de la Torre de Purga" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13988,6 +14120,30 @@ msgstr "Distància màxima dels ponts" msgid "Maximal distance between supports on sparse infill sections." msgstr "Distància màxima entre suports a les seccions amb farciment poc dens." +msgid "Wipe tower purge lines spacing" +msgstr "Espaiat de les línies de la Torre de Purga" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Espaiat de les línies de purga de la Torre de Purga." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Compensació de forat( contorn intern ) X-Y" @@ -14343,6 +14499,14 @@ msgstr "" "En l'actualitat es preveu un cebament addicional de l'extrusora després de " "la deretracció." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Extrusora actual" @@ -14393,6 +14557,12 @@ msgstr "" "Vector de booleans que indica si s'utilitza un extrusor donat en la " "impressió." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Volum per extrusora" @@ -14556,6 +14726,14 @@ msgstr "Nom de la impressora física" msgid "Name of the physical printer used for slicing." msgstr "Nom de la impressora física utilitzada per laminar." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Número de capa" @@ -15688,8 +15866,8 @@ msgstr "" "Vols reescriure'l?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus " @@ -17033,6 +17211,77 @@ msgstr "" "augmentar adequadament la temperatura del llit pot reduir la probabilitat de " "deformació." +#~ msgid "up to" +#~ msgstr "fins a" + +#~ msgid "above" +#~ msgstr "sobre" + +#~ msgid "from" +#~ msgstr "des de" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Canviant l'idioma de l'aplicació mentre es modifiquen alguns perfils." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Maj+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Maj+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Qualsevol fletxa" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Botó esquerre del ratolí" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Botó esquerre del ratolí" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Qualsevol fletxa" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Botó esquerre del ratolí" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Botó esquerre del ratolí" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Roda del ratolí" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Roda del ratolí" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Roda del ratolí" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Roda del ratolí" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "No es permeten diferents diàmetres de broquet i diferents diàmetres de " +#~ "filament quan s'habilita la Torre de Purga." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Actualment, la Prevenció d'Ooze( goteig ) no és compatible amb la Torre " +#~ "de Purga habilitada." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Profunditat d'entrellaçament d'una regió segmentada. Zero desactiva " +#~ "aquesta funció." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Extrusor de la Torre de Purga" + #~ msgid "Associate prusaslicer://" #~ msgstr "Associar prusaslicer://" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 484a81da9f..5c5c4aba53 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2023-09-30 15:15+0200\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -78,9 +78,6 @@ msgstr "Úhel chytrého vybarvení" msgid "On overhangs only" msgstr "Pouze na převisech" -msgid "Auto support threshold angle: " -msgstr "Auto podpěry hraniční úhlel: " - msgid "Circle" msgstr "Kruh" @@ -100,6 +97,9 @@ msgstr "Umožňuje malovat pouze na fasety vybrané pomocí: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Zvýrazněte plochy podle úhlu převisů." +msgid "Auto support threshold angle: " +msgstr "Auto podpěry hraniční úhlel: " + msgid "No auto support" msgstr "Žádné automatické podpěry" @@ -4085,15 +4085,6 @@ msgstr "Celkový čas" msgid "Total cost" msgstr "Celková cena" -msgid "up to" -msgstr "až do" - -msgid "above" -msgstr "nad" - -msgid "from" -msgstr "z" - msgid "Color Scheme" msgstr "Barevné schéma" @@ -4157,12 +4148,12 @@ msgstr "Doby výměny Filamentu" msgid "Cost" msgstr "Náklady" -msgid "Color change" -msgstr "Změna barvy" - msgid "Print" msgstr "Tisk" +msgid "Color change" +msgstr "Změna barvy" + msgid "Printer" msgstr "Tiskárna" @@ -6048,6 +6039,14 @@ msgstr "Byl detekován objekt s více částmi" msgid "The file does not contain any geometry data." msgstr "Soubor neobsahuje žádná geometrická data." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objekt je příliš velký" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6055,9 +6054,6 @@ msgstr "" "Váš objekt se zdá být příliš velký, chcete jej zmenšit, aby se vešel na " "vyhřívanou podložku automaticky?" -msgid "Object too large" -msgstr "Objekt je příliš velký" - msgid "Export STL file:" msgstr "Exportovat STL soubor:" @@ -6425,9 +6421,6 @@ msgstr "Chcete pokračovat?" msgid "Language selection" msgstr "Výběr jazyka" -msgid "Switching application language while some presets are modified." -msgstr "Přepínání jazyka aplikace při změně některých předvoleb." - msgid "Changing application language" msgstr "Změna jazyka aplikace" @@ -6607,6 +6600,12 @@ msgid "" "same time and manage multiple devices." msgstr "" +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Síť" @@ -7565,12 +7564,21 @@ msgstr "Filament na podpěry" msgid "Tree supports" msgstr "Stromové podpěry" -msgid "Skirt" -msgstr "Obrys" +msgid "Multimaterial" +msgstr "Multimateriál" msgid "Prime tower" msgstr "Čistící věž" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Obrys" + msgid "Special mode" msgstr "Speciální režim" @@ -7627,6 +7635,9 @@ msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" "Doporučený rozsah teploty trysky tohoto filamentu. 0 znamená nenastaveno" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Teplota v tiskové komoře" @@ -7735,9 +7746,6 @@ msgstr "Filament Začátek G-kók" msgid "Filament end G-code" msgstr "Filament Konec G-kód" -msgid "Multimaterial" -msgstr "Multimateriál" - msgid "Wipe tower parameters" msgstr "Parametry čistící věže" @@ -7827,12 +7835,30 @@ msgstr "Omezení Jerk-Ryv" msgid "Single extruder multimaterial setup" msgstr "Nastavení multimateriálu s jedním extruderem" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Průměr trysky" + msgid "Wipe tower" msgstr "Čistící věž" msgid "Single extruder multimaterial parameters" msgstr "Parametry jednoho multimateriálového extruderu" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Výškové limity vrstvy" @@ -8308,11 +8334,8 @@ msgstr "Seznam objektů" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometrických dat ze souborů STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Vložit ze schránky" @@ -8362,33 +8385,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Sbalit/Rozbalit postranní panel" -msgid "⌘+Any arrow" -msgstr "⌘+libovolná šipka" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Posun výběru v ortogonálním prostoru kamery" -msgid "⌥+Left mouse button" -msgstr "⌥+levé tlačítko myši" - msgid "Select a part" msgstr "Vyberte část" -msgid "⌘+Left mouse button" -msgstr "⌘+levé tlačítko myši" - msgid "Select multiple objects" msgstr "Vyberte více objektů" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+libovolná šipka" - -msgid "Alt+Left mouse button" -msgstr "Alt+levé tlačítko myši" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+levé tlačítko myši" - msgid "Shift+Left mouse button" msgstr "Shift+levé tlačítko myši" @@ -8491,24 +8499,12 @@ msgstr "Podložka" msgid "Move: press to snap by 1mm" msgstr "Posunout: stisknutím přitáhnete o 1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+kolečko myši" - msgid "Support/Color Painting: adjust pen radius" msgstr "Podpěry/Barva: upravit poloměr pera" -msgid "⌥+Mouse wheel" -msgstr "⌥+kolečko myši" - msgid "Support/Color Painting: adjust section position" msgstr "Podpěry/Barva: upravit polohu sekce" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+kolečko myši" - -msgid "Alt+Mouse wheel" -msgstr "Alt+kolečko myši" - msgid "Gizmo" msgstr "Gizmo" @@ -8813,6 +8809,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Nelze vytisknout žádný objekt. Možná je příliš malý" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9052,8 +9053,9 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variabilní výška vrstvy není podporována s organickými podpěrami." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" msgid "" @@ -9064,7 +9066,8 @@ msgstr "" "exruderu (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" msgid "" @@ -10351,6 +10354,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Předstih tlaku (Klipper) AKA Lineární faktor předstihu (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10535,6 +10618,21 @@ msgstr "" "Filament je chlazen pohyby tam a zpět v chladicí trubičce. Zadejte " "požadovaný počet těchto pohybů." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Rychlost prvního pohybu chlazení" @@ -11328,7 +11426,11 @@ msgstr "Maximální šířka segmentované oblasti. Nula tuto funkci vypne." msgid "Interlocking depth of a segmented region" msgstr "Hloubka propojení segmentované oblasti" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" msgid "Use beam interlocking" @@ -11723,9 +11825,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Průměr trysky" - msgid "Diameter of nozzle" msgstr "Průměr trysky" @@ -11823,6 +11922,11 @@ msgstr "" "vytékání není vidět. To může zkrátit dobu retrakcí u složitého modelu a " "ušetřit čas tisku, ale zpomalit krájení a generování G-kódu" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Formát názvu souboru" @@ -11871,6 +11975,9 @@ msgstr "" "Zjistěte procento převisů vzhledem k šířce extruze a použijte jinou rychlost " "tisku. Pro 100%% převisy se použije rychlost mostu." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11910,12 +12017,21 @@ msgstr "" "předána absolutní cesta k souboru G-kódu jako první argument a mohou přístup " "k nastavení konfigurace Orca Slicer čtením proměnných prostředí." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Poznámky o tiskárně" msgid "You can put your notes regarding the printer here." msgstr "Zde můžete uvést poznámky týkající se tiskárny." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Mezera mezi objektem a raftem v ose Z" @@ -12418,6 +12534,12 @@ msgstr "" "Řídká oblast výplně, která je menší než hraniční hodnota, je nahrazena " "vnitřní plnou výplní" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12477,6 +12599,31 @@ msgstr "Tradiční" msgid "Temperature variation" msgstr "Kolísání teploty" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Začátek G-kódu" @@ -13128,12 +13275,6 @@ msgstr "" "Úhel na vrcholu kužele, který se používá ke stabilizaci čistící věže. Větší " "úhel znamená širší základnu." -msgid "Wipe tower purge lines spacing" -msgstr "Rozteč čistících linek v čistící věži" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Rozteč čistících linek v čistící věži." - msgid "Maximum wipe tower print speed" msgstr "" @@ -13159,9 +13300,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "Extruder čistící věže" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13217,6 +13355,30 @@ msgstr "Maximální vzdálenost přemostění" msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximální vzdálenost mezi podpěrami u částí s řídkou výplní." +msgid "Wipe tower purge lines spacing" +msgstr "Rozteč čistících linek v čistící věži" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Rozteč čistících linek v čistící věži." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y Kompenzace otvoru" @@ -13544,6 +13706,14 @@ msgstr "Extra deretrakce" msgid "Currently planned extra extruder priming after deretraction." msgstr "Současně naplánované extra čištění extruderu po deretrakci." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Aktuální extruder" @@ -13592,6 +13762,12 @@ msgstr "Je extruder použitý?" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Objem pro každý extruder" @@ -13740,6 +13916,14 @@ msgstr "Fyzický název tiskárny" msgid "Name of the physical printer used for slicing." msgstr "Název fyzické tiskárny použité pro slicování." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Číslo vrstvy" @@ -15911,6 +16095,57 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "up to" +#~ msgstr "až do" + +#~ msgid "above" +#~ msgstr "nad" + +#~ msgid "from" +#~ msgstr "z" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Přepínání jazyka aplikace při změně některých předvoleb." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+libovolná šipka" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+levé tlačítko myši" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+levé tlačítko myši" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+libovolná šipka" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+levé tlačítko myši" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+levé tlačítko myši" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+kolečko myši" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+kolečko myši" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+kolečko myši" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+kolečko myši" + +#~ msgid "Wipe tower extruder" +#~ msgstr "Extruder čistící věže" + #~ msgid "Printer local connection failed, please try again." #~ msgstr "Lokální připojení k tiskárně selhalo, zkuste to znovu." diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 4cb5df317c..2dd0c93dbc 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "Intelligenter Füllwinkel" msgid "On overhangs only" msgstr "Nur an Überhängen" -msgid "Auto support threshold angle: " -msgstr "Winkel für automatische Supports: " - msgid "Circle" msgstr "Kreis" @@ -97,6 +94,9 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Markieren der Flächen entsprechend dem Überhangwinkel." +msgid "Auto support threshold angle: " +msgstr "Winkel für automatische Supports: " + msgid "No auto support" msgstr "Kein automatischer Support" @@ -4214,15 +4214,6 @@ msgstr "Gesamtdauer" msgid "Total cost" msgstr "Geamtkosten" -msgid "up to" -msgstr "bis zu" - -msgid "above" -msgstr "über" - -msgid "from" -msgstr "von" - msgid "Color Scheme" msgstr "Farbschema" @@ -4286,12 +4277,12 @@ msgstr "Filamentwechselzeiten" msgid "Cost" msgstr "Kosten" -msgid "Color change" -msgstr "Farbwechsel" - msgid "Print" msgstr "aktuelle Platte drucken" +msgid "Color change" +msgstr "Farbwechsel" + msgid "Printer" msgstr "Drucker" @@ -6241,6 +6232,14 @@ msgstr "Objekt mit mehreren Teilen wurde entdeckt" msgid "The file does not contain any geometry data." msgstr "Die Datei enthält keine Geometriedaten." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objekt zu groß" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6248,9 +6247,6 @@ msgstr "" "Ihr Objekt scheint zu groß zu sein. Möchten Sie es verkleinern, um es " "automatisch an das Druckbett anzupassen?" -msgid "Object too large" -msgstr "Objekt zu groß" - msgid "Export STL file:" msgstr "Exportiere STL Datei:" @@ -6636,10 +6632,6 @@ msgstr "Möchten Sie fortfahren?" msgid "Language selection" msgstr "Sprachauswahl" -msgid "Switching application language while some presets are modified." -msgstr "" -"Umschalten der Anwendungssprache, während einige Profile geändert werden." - msgid "Changing application language" msgstr "Anwendungssprache ändern" @@ -6832,6 +6824,12 @@ msgstr "" "Wenn diese Option aktiviert ist, können Sie eine Aufgabe gleichzeitig an " "mehrere Geräte senden und mehrere Geräte verwalten." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Netzwerk" @@ -7855,12 +7853,21 @@ msgstr "Supportfilament" msgid "Tree supports" msgstr "Baumstützen" -msgid "Skirt" -msgstr "Saum" +msgid "Multimaterial" +msgstr "Multimaterial" msgid "Prime tower" msgstr "Reinigungsturm" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Saum" + msgid "Special mode" msgstr "Spezialmodus" @@ -7914,6 +7921,9 @@ msgstr "" "Empfohlener Düsentemperaturbereich für dieses Filament. 0 bedeutet nicht " "gesetzt" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Druckkammertemperatur" @@ -8025,9 +8035,6 @@ msgstr "Filament Start G-Code" msgid "Filament end G-code" msgstr "Filament End G-Code" -msgid "Multimaterial" -msgstr "Multimaterial" - msgid "Wipe tower parameters" msgstr "Reinigungsturm-Parameter" @@ -8117,12 +8124,30 @@ msgstr "Jerkbegrenzung" msgid "Single extruder multimaterial setup" msgstr "Single-Extruder-Multimaterial-Einstellung" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Düsendurchmesser" + msgid "Wipe tower" msgstr "Reinigungsturm" msgid "Single extruder multimaterial parameters" msgstr "Single-Extruder-Multimaterial-Parameter" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Höhenbegrenzungen für Schichten" @@ -8641,11 +8666,8 @@ msgstr "Liste der Objekte" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importiere Geometriedaten aus STL/STEP/3MF/OBJ/AMF-Dateien" -msgid "⌘+Shift+G" -msgstr "⌘+Umschalttaste+G" - -msgid "Ctrl+Shift+G" -msgstr "Strg+Umschalt+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" @@ -8696,33 +8718,18 @@ msgstr "Umschalt+Tab" msgid "Collapse/Expand the sidebar" msgstr "Seitenleiste zu-/aufklappen" -msgid "⌘+Any arrow" -msgstr "⌘+beliebiger Pfeil" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Bewegung im Kameraraum" -msgid "⌥+Left mouse button" -msgstr "⌥+Linke Maustaste" - msgid "Select a part" msgstr "Teil auswählen" -msgid "⌘+Left mouse button" -msgstr "⌘+Linke Maustaste" - msgid "Select multiple objects" msgstr "Mehrere Objekte auswählen" -msgid "Ctrl+Any arrow" -msgstr "Strg + beliebige Pfeiltaste" - -msgid "Alt+Left mouse button" -msgstr "Alt + Linke Maustaste" - -msgid "Ctrl+Left mouse button" -msgstr "Strg + Linke Maustaste" - msgid "Shift+Left mouse button" msgstr "Umschalt+Linke Maustaste" @@ -8825,24 +8832,12 @@ msgstr "Druckplatte" msgid "Move: press to snap by 1mm" msgstr "Verschieben: Drücken, um in 1 mm einzurasten" -msgid "⌘+Mouse wheel" -msgstr "⌘+Mausrad" - msgid "Support/Color Painting: adjust pen radius" msgstr "Stützen/Farbmalen: Stiftradius einstellen" -msgid "⌥+Mouse wheel" -msgstr "⌥+Mausrad" - msgid "Support/Color Painting: adjust section position" msgstr "Stützen/Farbmalen: Position des Abschnitts anpassen" -msgid "Ctrl+Mouse wheel" -msgstr "Strg + Mausrad" - -msgid "Alt+Mouse wheel" -msgstr "Alt + Mausrad" - msgid "Gizmo" msgstr "Gizmo" @@ -9160,6 +9155,11 @@ msgid "No object can be printed. Maybe too small" msgstr "" "Es kann kein Objekt gedruckt werden. Vielleicht sind die Objekte zu klein." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9408,11 +9408,10 @@ msgstr "" "Variable Schichthöhe wird nicht mit organischen Stützstrukturen unterstützt." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Unterschiedliche Düsendurchmesser und unterschiedliche Filamentdurchmesser " -"sind nicht zulässig, wenn der Reinigungsturm aktiviert ist." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9422,8 +9421,9 @@ msgstr "" "unterstützt (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." -msgstr "Ooze Prevention wird derzeit nicht mit dem Reinigungsturm unterstützt." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." +msgstr "" msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10922,6 +10922,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure advance(Klipper)AKA Linear advance Faktor(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11130,6 +11210,21 @@ msgstr "" "Das Filament wird gekühlt, indem es in den Kühlrohren hin und her bewegt " "wird. Geben Sie die gewünschte Anzahl dieser Bewegungen an." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Geschwindigkeit der ersten Kühlbewegung" @@ -11855,7 +11950,9 @@ msgid "Pellet Modded Printer" msgstr "Pellet-Modifizierter Drucker" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "aktivieren Sie diese Option, wenn Ihr Drucker Pellets anstelle von Filamenten verwendet" +msgstr "" +"aktivieren Sie diese Option, wenn Ihr Drucker Pellets anstelle von " +"Filamenten verwendet" msgid "Support multi bed types" msgstr "Unterstützung mehrerer Betttypen" @@ -11982,10 +12079,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Interlock-Struktur-Tiefe eines segmentierten Bereichs" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Interlock-Struktur-Tiefe eines segmentierten Bereichs. Null deaktiviert diese " -"Funktion." msgid "Use beam interlocking" msgstr "Verwende Interlock-Strukturen" @@ -11996,8 +12095,8 @@ msgid "" "models printed in different materials." msgstr "" "Erzeugen Sie eine verzahnte Struktur an den Stellen, an denen sich " -"unterschiedliche Filamente berühren. Dies verbessert die Haftung zwischen den " -"Filamenten, insbesondere bei Modellen, die aus verschiedenen Materialien " +"unterschiedliche Filamente berühren. Dies verbessert die Haftung zwischen " +"den Filamenten, insbesondere bei Modellen, die aus verschiedenen Materialien " "gedruckt werden." msgid "Interlocking beam width" @@ -12013,7 +12112,7 @@ msgid "Orientation of interlock beams." msgstr "Ausrichtung der Interlock-Strukturen." msgid "Interlocking beam layers" -msgstr "Interlock-Struktur Schichten" +msgstr "Interlock-Struktur Schichten" msgid "" "The height of the beams of the interlocking structure, measured in number of " @@ -12029,9 +12128,9 @@ msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" -"Der Abstand von der Grenze zwischen den Filamenten, um die Interlock-Strukturen-" -"zu generieren, gemessen in Zellen. Zu wenige Zellen führen zu einer schlechten " -"Haftung." +"Der Abstand von der Grenze zwischen den Filamenten, um die Interlock-" +"Strukturen-zu generieren, gemessen in Zellen. Zu wenige Zellen führen zu " +"einer schlechten Haftung." msgid "Interlocking boundary avoidance" msgstr "Vermeidung von Interlock-Strukturgrenzen" @@ -12040,8 +12139,8 @@ msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" -"Der Abstand von der Außenseite eines Modells, an dem keine Interlock-Strukturen " -"generiert werden, gemessen in Zellen." +"Der Abstand von der Außenseite eines Modells, an dem keine Interlock-" +"Strukturen generiert werden, gemessen in Zellen." msgid "Ironing Type" msgstr "Glättungsmethode" @@ -12399,9 +12498,6 @@ msgstr "" "die minimale Schichtzeit einzuhalten, wenn die Verlangsamung für eine " "bessere Schichtkühlung aktiviert ist." -msgid "Nozzle diameter" -msgstr "Düsendurchmesser" - msgid "Diameter of nozzle" msgstr "Düsendurchmesser" @@ -12503,6 +12599,11 @@ msgstr "" "bei komplexeren Modellen verkürzen und Druckzeit sparen, verlangsamt aber " "das Slicen und die G-Code Generierung." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Format des Dateinamens" @@ -12554,6 +12655,9 @@ msgstr "" "verwenden hierfür eine unterschiedliche Druckgeschwindigkeiten. Bei einem " "100%% Überhang wird die Brückengeschwindigkeit verwendet." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12604,12 +12708,21 @@ msgstr "" "zur G-Code-Datei als erstes Argument und können die Orca Slicer-" "Konfigurationseinstellungen durch Lesen von Umgebungsvariablen abrufen." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Druckernotizen" msgid "You can put your notes regarding the printer here." msgstr "Sie können hier Ihre Notizen zum Drucker eintragen." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Z Abstand Objekt Druckbasis " @@ -13194,6 +13307,12 @@ msgstr "" "Innere Füllbereiche, die kleiner als dieser Wert sind, werden durch massive " "Füllungen ersetzt." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13264,6 +13383,31 @@ msgstr "Traditionell" msgid "Temperature variation" msgstr "Temperaturvariation" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Start G-Code" @@ -13952,12 +14096,6 @@ msgstr "" "Winkel an der Spitze des Kegels, der zum Stabilisieren des Reinigungsturms " "verwendet wird. Ein größerer Winkel bedeutet eine breitere Basis." -msgid "Wipe tower purge lines spacing" -msgstr "Wischabstand der Reinigungsturmpurges" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Abstand der Reinigungsturmpurges." - msgid "Maximum wipe tower print speed" msgstr "Maximale Druckgeschwindigkeit des Reinigungsturms" @@ -14005,9 +14143,6 @@ msgstr "" "Für die äußeren Umfänge des Reinigungsturms wird die Geschwindigkeit des " "inneren Umfangs unabhängig von dieser Einstellung verwendet." -msgid "Wipe tower extruder" -msgstr "Reinigungsturm-Extruder" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -14067,6 +14202,30 @@ msgstr "Maximale Brückenlänge" msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximaler Abstand zwischen Stützstrukturen auf dünnem Infill." +msgid "Wipe tower purge lines spacing" +msgstr "Wischabstand der Reinigungsturmpurges" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Abstand der Reinigungsturmpurges." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y-Loch-Kompensation" @@ -14422,6 +14581,14 @@ msgstr "Zusätzlicher Rückzug" msgid "Currently planned extra extruder priming after deretraction." msgstr "Derzeit geplantes zusätzliches Extruder-Priming nach dem Rückzug." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Aktueller Extruder" @@ -14472,6 +14639,12 @@ msgstr "" "Vektor von Booleschen Werten, die angeben, ob ein bestimmter Extruder im " "Druck verwendet wird." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Volumen pro Extruder" @@ -14633,6 +14806,14 @@ msgstr "Name des physischen Druckers" msgid "Name of the physical printer used for slicing." msgstr "Name des physischen Druckers, der zum Slicen verwendet wird." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Schichtnummer" @@ -17115,6 +17296,77 @@ msgstr "" "wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die " "Wahrscheinlichkeit von Verwerfungen verringert werden kann." +#~ msgid "up to" +#~ msgstr "bis zu" + +#~ msgid "above" +#~ msgstr "über" + +#~ msgid "from" +#~ msgstr "von" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Umschalten der Anwendungssprache, während einige Profile geändert werden." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Umschalttaste+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Strg+Umschalt+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+beliebiger Pfeil" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Linke Maustaste" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Linke Maustaste" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Strg + beliebige Pfeiltaste" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt + Linke Maustaste" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Strg + Linke Maustaste" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Mausrad" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Mausrad" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Strg + Mausrad" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt + Mausrad" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Unterschiedliche Düsendurchmesser und unterschiedliche " +#~ "Filamentdurchmesser sind nicht zulässig, wenn der Reinigungsturm " +#~ "aktiviert ist." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze Prevention wird derzeit nicht mit dem Reinigungsturm unterstützt." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Interlock-Struktur-Tiefe eines segmentierten Bereichs. Null deaktiviert " +#~ "diese Funktion." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Reinigungsturm-Extruder" + #~ msgid "Current association: " #~ msgstr "Aktuelle Zuordnung:" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 3ad19dc3f6..922551be48 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "Smart fill angle" msgid "On overhangs only" msgstr "On overhangs only" -msgid "Auto support threshold angle: " -msgstr "Auto support threshold angle: " - msgid "Circle" msgstr "Circle" @@ -96,6 +93,9 @@ msgstr "Allows painting only on facets selected by: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Highlight faces according to overhang angle." +msgid "Auto support threshold angle: " +msgstr "Auto support threshold angle: " + msgid "No auto support" msgstr "No auto support" @@ -4041,15 +4041,6 @@ msgstr "Total time" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "up to" - -msgid "above" -msgstr "above" - -msgid "from" -msgstr "from" - msgid "Color Scheme" msgstr "Color scheme" @@ -4113,12 +4104,12 @@ msgstr "Filament change times" msgid "Cost" msgstr "Cost" -msgid "Color change" -msgstr "Color change" - msgid "Print" msgstr "Print" +msgid "Color change" +msgstr "Color change" + msgid "Printer" msgstr "Printer" @@ -5999,6 +5990,14 @@ msgstr "An object with multiple parts was detected" msgid "The file does not contain any geometry data." msgstr "The file does not contain any geometry data." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Object too large" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6006,9 +6005,6 @@ msgstr "" "Your object appears to be too large, Do you want to scale it down to fit the " "print bed automatically?" -msgid "Object too large" -msgstr "Object too large" - msgid "Export STL file:" msgstr "Export STL file:" @@ -6372,9 +6368,6 @@ msgstr "Do you want to continue?" msgid "Language selection" msgstr "Language selection" -msgid "Switching application language while some presets are modified." -msgstr "Switching application language while some presets are modified." - msgid "Changing application language" msgstr "Changing application language" @@ -6556,6 +6549,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "" @@ -7535,12 +7534,21 @@ msgstr "Filament for Supports" msgid "Tree supports" msgstr "" -msgid "Skirt" +msgid "Multimaterial" msgstr "" msgid "Prime tower" msgstr "Prime tower" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "" + msgid "Special mode" msgstr "Special mode" @@ -7592,6 +7600,9 @@ msgstr "Recommended nozzle temperature" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "Recommended nozzle temperature range of this filament. 0 means not set" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7700,9 +7711,6 @@ msgstr "Filament start G-code" msgid "Filament end G-code" msgstr "Filament end G-code" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "" @@ -7792,12 +7800,30 @@ msgstr "Jerk limitation" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Nozzle diameter" + msgid "Wipe tower" msgstr "" msgid "Single extruder multimaterial parameters" msgstr "" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Layer height limits" @@ -8270,11 +8296,8 @@ msgstr "Objects list" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Paste from clipboard" @@ -8324,33 +8347,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Collapse/Expand the sidebar" -msgid "⌘+Any arrow" -msgstr "⌘+Any arrow" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Movement in camera space" -msgid "⌥+Left mouse button" -msgstr "⌥+Left mouse button" - msgid "Select a part" msgstr "Select a part" -msgid "⌘+Left mouse button" -msgstr "⌘+Left mouse button" - msgid "Select multiple objects" msgstr "Select multiple objects" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Any arrow" - -msgid "Alt+Left mouse button" -msgstr "Alt+Left mouse button" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Left mouse button" - msgid "Shift+Left mouse button" msgstr "Shift+Left mouse button" @@ -8453,24 +8461,12 @@ msgstr "Plater" msgid "Move: press to snap by 1mm" msgstr "Move: press to snap by 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Mouse wheel" - msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Color Painting: adjust pen radius" -msgid "⌥+Mouse wheel" -msgstr "⌥+Mouse wheel" - msgid "Support/Color Painting: adjust section position" msgstr "Support/Color Painting: adjust section position" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Mouse wheel" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Mouse wheel" - msgid "Gizmo" msgstr "Gizmo" @@ -8776,6 +8772,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "No object can be printed. It may be too small." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9010,11 +9011,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variable layer height is not supported with Organic supports." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9024,9 +9024,9 @@ msgstr "" "addressing (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Ooze prevention is currently not supported with the prime tower enabled." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10274,6 +10274,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10449,6 +10529,21 @@ msgid "" "Specify desired number of these moves." msgstr "" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "" @@ -11166,8 +11261,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Interlocking depth of a segmented region" -msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." +msgstr "" msgid "Use beam interlocking" msgstr "" @@ -11521,9 +11620,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Nozzle diameter" - msgid "Diameter of nozzle" msgstr "The diameter of the nozzle" @@ -11613,6 +11709,11 @@ msgstr "" "oozing can't been seen. This can reduce times of retraction for complex " "model and save printing time, but make slicing and G-code generation slower." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Filename format" @@ -11656,6 +11757,9 @@ msgstr "" "This detects the overhang percentage relative to line width and uses a " "different speed to print. For 100%% overhang, bridging speed is used." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11689,12 +11793,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Raft contact Z distance" @@ -12191,6 +12304,12 @@ msgstr "" "Sparse infill areas which are smaller than this threshold value are replaced " "by internal solid infill." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12255,6 +12374,31 @@ msgstr "Traditional" msgid "Temperature variation" msgstr "Temperature variation" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Start G-code" @@ -12869,12 +13013,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -12900,9 +13038,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12952,6 +13087,30 @@ msgstr "" msgid "Maximal distance between supports on sparse infill sections." msgstr "" +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y hole compensation" @@ -13254,6 +13413,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13296,6 +13463,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13440,6 +13613,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -15742,6 +15923,71 @@ msgstr "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping?" +#~ msgid "up to" +#~ msgstr "up to" + +#~ msgid "above" +#~ msgstr "above" + +#~ msgid "from" +#~ msgstr "from" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Switching application language while some presets are modified." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Any arrow" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Left mouse button" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Left mouse button" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Any arrow" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Left mouse button" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Left mouse button" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Mouse wheel" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Mouse wheel" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Mouse wheel" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Mouse wheel" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Please input a valid value (K in 0~0.3)" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index e27d124ecc..c124c2eade 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-30 10:20+0900\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -7382,10 +7382,9 @@ msgid "" "start printing." msgstr "" "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " -"compruebe si son los filamentos requeridos. Si lo son, presione " -"\"Confirmar\" para empezar a imprimir. Por favor, compruebe si son los " -"filamentos requeridos. Si lo son, presione \"Confirmar\" para empezar a " -"imprimir." +"compruebe si son los filamentos requeridos. Si lo son, presione \"Confirmar" +"\" para empezar a imprimir. Por favor, compruebe si son los filamentos " +"requeridos. Si lo son, presione \"Confirmar\" para empezar a imprimir." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7748,13 +7747,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Cuando se graba un timelapse sin cabezal, se recomienda añadir una \"Torre " "de Purga de Timelapse\" haciendo clic con el botón derecho del ratón en la " -"posición vacía de la bandeja de impresión y seleccionando \"Añadir " -"Primitivo\"->Torre de Purga de Timelapse\"." +"posición vacía de la bandeja de impresión y seleccionando \"Añadir Primitivo" +"\"->Torre de Purga de Timelapse\"." msgid "Line width" msgstr "Ancho de extrusión" @@ -11706,10 +11705,10 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocidad de ventilador se incrementará linealmente de cero a " "\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " @@ -12717,6 +12716,9 @@ msgstr "" "utiliza diferentes velocidades para imprimir. Para el 100%% de voladizo, se " "utiliza la velocidad de puente." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12766,12 +12768,21 @@ msgstr "" "como primer argumento, y pueden acceder a los ajustes de configuración de " "OrcaSlicer leyendo variables de entorno." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Anotaciones de la impresora" msgid "You can put your notes regarding the printer here." msgstr "Puede colocar sus notas acerca de la impresora aquí." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distancia Z de contacto de la balsa(base de impresión)" @@ -13359,6 +13370,12 @@ msgstr "" "El área de relleno de baja densidad que es menor que el valor del umbral se " "sustituye por un relleno sólido interno" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -14486,10 +14503,9 @@ msgstr "" "NOTA: Las superficies inferior y superior no se verán afectadas por este " "valor para evitar huecos visuales en el exterior del modelo. Ajuste \"Umbral " "de Perímetro\" en la configuración avanzada para ajustar la sensibilidad de " -"lo que se considera una superficie superior. El \"Umbral de un Solo " -"Perímetro\" sólo es visible si este valor es superior al valor " -"predeterminado de 0,5, o si las superficies superiores de un solo perímetro " -"están activados." +"lo que se considera una superficie superior. El \"Umbral de un Solo Perímetro" +"\" sólo es visible si este valor es superior al valor predeterminado de 0,5, " +"o si las superficies superiores de un solo perímetro están activados." msgid "First layer minimum wall width" msgstr "Ancho mínimo del perímetro de la primera capa" @@ -15259,12 +15275,12 @@ msgstr "" "impresión de varios colores/materiales, la impresora utilizará el parámetro " "de compensación por defecto para el filamento durante cada cambio de " "filamento que tendrá un buen resultado en la mayoría de los casos.\n" -"un solo color/material, con la opción \"calibración de la dinámica de " -"flujo\" marcada en el menú de inicio de impresión, la impresora seguirá el " -"camino antiguo, calibrar el filamento antes de la impresión; cuando se " -"inicia una impresión de varios colores/materiales, la impresora utilizará el " -"parámetro de compensación por defecto para el filamento durante cada cambio " -"de filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"un solo color/material, con la opción \"calibración de la dinámica de flujo" +"\" marcada en el menú de inicio de impresión, la impresora seguirá el camino " +"antiguo, calibrar el filamento antes de la impresión; cuando se inicia una " +"impresión de varios colores/materiales, la impresora utilizará el parámetro " +"de compensación por defecto para el filamento durante cada cambio de " +"filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos que pueden hacer que los resultados de " "la calibración no sean fiables, como una adhesión insuficiente en la bandeja " @@ -16020,8 +16036,8 @@ msgstr "" "¿Quieres reescribirlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " @@ -17428,14 +17444,14 @@ msgstr "" #~ "Cuando grabamos timelapse sin cabezal de impresión, es recomendable " #~ "añadir un \"Torre de Purga de Intervalo\" \n" #~ "presionando con el botón derecho la posición vacía de la bandeja de " -#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de " -#~ "Purga\"." +#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga" +#~ "\"." #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" #~ "To add preset for more printers, Please go to printer selection" #~ msgstr "" #~ "Cambiaríamos el nombre de los preajustes a \"Número de serie del Vendedor " diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index f7342ab1d7..c495ac4ca6 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -77,9 +77,6 @@ msgstr "Angle de remplissage intelligent" msgid "On overhangs only" msgstr "Sur les surplombs uniquement" -msgid "Auto support threshold angle: " -msgstr "Angle de seuil de support automatique : " - msgid "Circle" msgstr "Cercle" @@ -100,6 +97,9 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Mettre en surbrillance les faces en fonction de l'angle de surplomb." +msgid "Auto support threshold angle: " +msgstr "Angle de seuil de support automatique : " + msgid "No auto support" msgstr "Pas de support auto" @@ -4200,15 +4200,6 @@ msgstr "Durée totale" msgid "Total cost" msgstr "Coût total" -msgid "up to" -msgstr "jusqu'à" - -msgid "above" -msgstr "au-dessus" - -msgid "from" -msgstr "de" - msgid "Color Scheme" msgstr "Schéma de couleur" @@ -4272,12 +4263,12 @@ msgstr "Temps de changement de filament" msgid "Cost" msgstr "Coût" -msgid "Color change" -msgstr "Changement de couleur" - msgid "Print" msgstr "Imprimer" +msgid "Color change" +msgstr "Changement de couleur" + msgid "Printer" msgstr "Imprimante" @@ -6223,6 +6214,14 @@ msgstr "Un objet en plusieurs parties a été détecté" msgid "The file does not contain any geometry data." msgstr "Le fichier ne contient pas de données géométriques." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objet trop grand" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6230,9 +6229,6 @@ msgstr "" "Votre objet semble trop grand. Voulez-vous le réduire pour l'adapter " "automatiquement au plateau d'impression ?" -msgid "Object too large" -msgstr "Objet trop grand" - msgid "Export STL file:" msgstr "Exporter le fichier STL :" @@ -6623,11 +6619,6 @@ msgstr "Voulez-vous continuer?" msgid "Language selection" msgstr "Sélection de la langue" -msgid "Switching application language while some presets are modified." -msgstr "" -"Changer la langue de l'application pendant que certains préréglages sont " -"modifiés." - msgid "Changing application language" msgstr "Changer la langue de l'application" @@ -6833,6 +6824,12 @@ msgstr "" "Si cette option est activée, vous pouvez envoyer une tâche à plusieurs " "appareils en même temps et gérer plusieurs appareils." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Réseau" @@ -7871,12 +7868,21 @@ msgstr "Filament de support" msgid "Tree supports" msgstr "Supports arborescents" -msgid "Skirt" -msgstr "Jupe" +msgid "Multimaterial" +msgstr "Multi-matériaux" msgid "Prime tower" msgstr "Tour de purge" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Jupe" + msgid "Special mode" msgstr "Mode spécial" @@ -7930,6 +7936,9 @@ msgstr "" "Plage de température de buse recommandée pour ce filament. 0 signifie pas " "d'ensemble" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Température du caisson d’impression" @@ -8043,9 +8052,6 @@ msgstr "G-code de démarrage du filament" msgid "Filament end G-code" msgstr "G-code de fin de filament" -msgid "Multimaterial" -msgstr "Multi-matériaux" - msgid "Wipe tower parameters" msgstr "Paramètres de la tour d’essuyage" @@ -8138,12 +8144,30 @@ msgstr "Limitation des secousses" msgid "Single extruder multimaterial setup" msgstr "Configuration multi-matériaux pour extrudeur unique" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Diamètre de la buse" + msgid "Wipe tower" msgstr "Tour d’essuyage" msgid "Single extruder multimaterial parameters" msgstr "Paramètres multi-matériaux pour extrudeur unique" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Limites de hauteur de couche" @@ -8672,11 +8696,8 @@ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "" "Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF." -msgid "⌘+Shift+G" -msgstr "⌘+Maj+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Maj+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" @@ -8728,33 +8749,18 @@ msgstr "Maj+Tab" msgid "Collapse/Expand the sidebar" msgstr "Réduire/développer la barre latérale" -msgid "⌘+Any arrow" -msgstr "⌘+n'importe quelle flèche" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Mouvement dans l'espace de la caméra" -msgid "⌥+Left mouse button" -msgstr "⌥+Bouton gauche de la souris" - msgid "Select a part" msgstr "Sélectionner une pièce" -msgid "⌘+Left mouse button" -msgstr "⌘+Bouton gauche de la souris" - msgid "Select multiple objects" msgstr "Sélectionnez tous les objets sur la plaque actuelle" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+n'importe quelle flèche" - -msgid "Alt+Left mouse button" -msgstr "Alt+Bouton gauche de la souris" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Bouton gauche de la souris" - msgid "Shift+Left mouse button" msgstr "Maj+Bouton gauche de la souris" @@ -8857,24 +8863,12 @@ msgstr "Plateau" msgid "Move: press to snap by 1mm" msgstr "Déplacer : appuyez pour aligner de 1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Molette de la souris" - msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Peinture couleur : ajustez le rayon du stylet" -msgid "⌥+Mouse wheel" -msgstr "⌥+Molette de la souris" - msgid "Support/Color Painting: adjust section position" msgstr "Support/Peinture couleur : ajuster la position de la section" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Molette de la souris" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Molette de la souris" - msgid "Gizmo" msgstr "Gizmo" @@ -9195,6 +9189,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Aucun objet ne peut être imprimé. Peut-être trop petit" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9447,11 +9446,10 @@ msgstr "" "organiques." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"L’utilisation de diamètres de buses et de filaments différents n’est pas " -"autorisée lorsque l’option « prime tower » est activée." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9461,10 +9459,9 @@ msgstr "" "des extrudeurs (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"La prévention des dépôts de boue n’est actuellement pas prise en charge " -"lorsque la tour principale est activée." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10987,6 +10984,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure Advance (Klipper) AKA Linear Advance (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11186,6 +11263,21 @@ msgstr "" "Le filament est refroidi en étant déplacé d’avant en arrière dans les tubes " "de refroidissement. Précisez le nombre souhaité de ces mouvements." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Vitesse du premier mouvement de refroidissement" @@ -12043,10 +12135,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profondeur d’emboîtement d’une région segmentée" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profondeur d’imbrication d’une région segmentée. Zéro désactive cette " -"fonction." msgid "Use beam interlocking" msgstr "" @@ -12466,9 +12560,6 @@ msgstr "" "de maintenir le temps de couche minimal ci-dessus, lorsque la fonction de " "ralentissement pour un meilleur refroidissement de la couche est activée." -msgid "Nozzle diameter" -msgstr "Diamètre de la buse" - msgid "Diameter of nozzle" msgstr "Diamètre de la buse" @@ -12575,6 +12666,11 @@ msgstr "" "peut réduire les rétractions pour les modèles complexes et économiser du " "temps d’impression, mais ralentit la découpe et la génération du G-code." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Format du nom de fichier" @@ -12628,6 +12724,9 @@ msgstr "" "utilisez une vitesse différente pour imprimer. Pour un surplomb de 100%% la " "vitesse du pont est utilisée." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12678,12 +12777,21 @@ msgstr "" "code comme premier argument, et ils peuvent accéder aux paramètres de " "configuration Orca Slicer en lisant les variables d’environnement." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Notes de l’mprimante" msgid "You can put your notes regarding the printer here." msgstr "Vous pouvez mettre vos notes concernant l’imprimante ici." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distance Z de contact du radeau" @@ -13268,6 +13376,12 @@ msgstr "" "La zone de remplissage inférieure à la valeur seuil est remplacée par un " "remplissage plein interne" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13336,6 +13450,31 @@ msgstr "Traditionnel" msgid "Temperature variation" msgstr "Variation de température" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "G-code de démarrage" @@ -14026,12 +14165,6 @@ msgstr "" "Angle au sommet du cône utilisé pour stabiliser la tour d’essuyage. Un angle " "plus grand signifie une base plus large." -msgid "Wipe tower purge lines spacing" -msgstr "Espacement des lignes de purge de la tour d’essuyage" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Espacement des lignes de purge sur la tour d’essuyage." - msgid "Maximum wipe tower print speed" msgstr "Vitesse maximale d’impression de la tour d’essuyage" @@ -14078,9 +14211,6 @@ msgstr "" "Pour les périmètres externes de la tour d’essuyage, la vitesse du périmètre " "interne est utilisée indépendamment de ce paramètre." -msgid "Wipe tower extruder" -msgstr "Extrudeur de tour d’essuyage" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -14138,6 +14268,30 @@ msgstr "Distance de pont maximale" msgid "Maximal distance between supports on sparse infill sections." msgstr "Distance maximale entre les supports sur les sections de remplissage." +msgid "Wipe tower purge lines spacing" +msgstr "Espacement des lignes de purge de la tour d’essuyage" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Espacement des lignes de purge sur la tour d’essuyage." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Compensation de trou X-Y" @@ -14496,6 +14650,14 @@ msgstr "" "L’amorçage supplémentaire de l’extrudeuse après la dérétraction est " "actuellement prévu." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Extrudeur actuel" @@ -14546,6 +14708,12 @@ msgstr "" "Vecteur de bools indiquant si un extrudeur donné est utilisé dans " "l’impression." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Volume par extrudeur" @@ -14713,6 +14881,14 @@ msgstr "Nom de l’imprimante physique" msgid "Name of the physical printer used for slicing." msgstr "Nom de l’imprimante physique utilisé pour la découpe." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Numéro de couche" @@ -17236,6 +17412,78 @@ msgstr "" "déformer, tels que l’ABS, une augmentation appropriée de la température du " "plateau chauffant peut réduire la probabilité de déformation." +#~ msgid "up to" +#~ msgstr "jusqu'à" + +#~ msgid "above" +#~ msgstr "au-dessus" + +#~ msgid "from" +#~ msgstr "de" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Changer la langue de l'application pendant que certains préréglages sont " +#~ "modifiés." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Maj+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Maj+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+n'importe quelle flèche" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Bouton gauche de la souris" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Bouton gauche de la souris" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+n'importe quelle flèche" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Bouton gauche de la souris" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Bouton gauche de la souris" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Molette de la souris" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Molette de la souris" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Molette de la souris" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Molette de la souris" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "L’utilisation de diamètres de buses et de filaments différents n’est pas " +#~ "autorisée lorsque l’option « prime tower » est activée." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "La prévention des dépôts de boue n’est actuellement pas prise en charge " +#~ "lorsque la tour principale est activée." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Profondeur d’imbrication d’une région segmentée. Zéro désactive cette " +#~ "fonction." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Extrudeur de tour d’essuyage" + #~ msgid "Current association: " #~ msgstr "Association actuelle : " diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index fd8ad4391f..c6abe9ecb4 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,9 +71,6 @@ msgstr "Okos kitöltési szög" msgid "On overhangs only" msgstr "Csak túlnyúlásokon" -msgid "Auto support threshold angle: " -msgstr "Automatikus támasz szögének határértéke: " - msgid "Circle" msgstr "Kör" @@ -93,6 +90,9 @@ msgstr "Csak a(z) „%1%“ által kijelölt felületeken történik festés" msgid "Highlight faces according to overhang angle." msgstr "Felületek kiemelése a túlnyúlási szögnek megfelelően." +msgid "Auto support threshold angle: " +msgstr "Automatikus támasz szögének határértéke: " + msgid "No auto support" msgstr "Nincs automatikus támasz" @@ -4082,15 +4082,6 @@ msgstr "Teljes idő" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "legfeljebb" - -msgid "above" -msgstr "felett" - -msgid "from" -msgstr "ettől" - msgid "Color Scheme" msgstr "Színséma" @@ -4154,12 +4145,12 @@ msgstr "Filamentcserék száma" msgid "Cost" msgstr "Költség" -msgid "Color change" -msgstr "Színváltás" - msgid "Print" msgstr "Nyomtatás" +msgid "Color change" +msgstr "Színváltás" + msgid "Printer" msgstr "Nyomtató" @@ -6045,6 +6036,14 @@ msgstr "Több részből álló objektumot észleltünk" msgid "The file does not contain any geometry data." msgstr "A fájl nem tartalmaz geometriai adatokat." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Az objektum túl nagy" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6052,9 +6051,6 @@ msgstr "" "Úgy tűnik, hogy az objektum túl nagy. Szeretnéd átméretezni, hogy " "illeszkedjen a nyomtatótér méretéhez?" -msgid "Object too large" -msgstr "Az objektum túl nagy" - msgid "Export STL file:" msgstr "STL fájl exportálása:" @@ -6422,9 +6418,6 @@ msgstr "Szeretnéd folytatni?" msgid "Language selection" msgstr "Nyelv kiválasztása" -msgid "Switching application language while some presets are modified." -msgstr "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak." - msgid "Changing application language" msgstr "Alkalmazás nyelvének megváltoztatása" @@ -6612,6 +6605,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "" @@ -7606,12 +7605,21 @@ msgstr "Filament a támaszhoz" msgid "Tree supports" msgstr "" -msgid "Skirt" -msgstr "Szoknya" +msgid "Multimaterial" +msgstr "" msgid "Prime tower" msgstr "Törlő torony" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Szoknya" + msgid "Special mode" msgstr "Speciális mód" @@ -7665,6 +7673,9 @@ msgstr "" "Az ajánlott fúvóka hőmérséklet-tartomány ehhez a filamenthez. A 0 azt " "jelenti, hogy nincs beállítva" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7775,9 +7786,6 @@ msgstr "Filament kezdő G-kód" msgid "Filament end G-code" msgstr "Filament befejező G-kód" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "Törlőtorony paraméterek" @@ -7868,12 +7876,30 @@ msgstr "Jerk limitek" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Fúvóka átmérője" + msgid "Wipe tower" msgstr "Törlőtorony" msgid "Single extruder multimaterial parameters" msgstr "Egyetlen extruder többanyagú paraméterei" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Rétegmagasság limitek" @@ -8358,11 +8384,8 @@ msgstr "Objektumok listája" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Beillesztés a vágólapról" @@ -8412,33 +8435,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Az oldalsáv összecsukása/kinyitása" -msgid "⌘+Any arrow" -msgstr "⌘+Bármilyen nyíl gomb" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Mozgás a kameratérben" -msgid "⌥+Left mouse button" -msgstr "⌥+Bal egérgomb" - msgid "Select a part" msgstr "Válassz egy tárgyat" -msgid "⌘+Left mouse button" -msgstr "⌘+Bal egérgomb" - msgid "Select multiple objects" msgstr "Több objektum kijelölése" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Bármelyik nyílgomb" - -msgid "Alt+Left mouse button" -msgstr "Alt+bal egérgomb" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Bal egérgomb" - msgid "Shift+Left mouse button" msgstr "Shift+Bal egérgomb" @@ -8541,24 +8549,12 @@ msgstr "Plater" msgid "Move: press to snap by 1mm" msgstr "Move: press to snap by 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Egérgörgő" - msgid "Support/Color Painting: adjust pen radius" msgstr "Támasz/Színfestés: toll méretének beállítása" -msgid "⌥+Mouse wheel" -msgstr "⌥+Egérgörgő" - msgid "Support/Color Painting: adjust section position" msgstr "Támasz/Színfestés: metszet pozíciójának beállítása" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Egérgörgő" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Egérgörgő" - msgid "Gizmo" msgstr "Gizmo" @@ -8876,6 +8872,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Objektum nem nyomtatható ki. Lehet, hogy túl kicsi." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9121,11 +9122,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "A változó rétegmagasság nem működik az organikus támaszokkal." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Nem használhatsz különböző fúvókaátmérőt és filamentátmérőt, ha a " -"törlőtorony engedélyezve van." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9135,9 +9135,9 @@ msgstr "" "(use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"A szivárgás elleni védelem nem működik, ha a törlőtorony engedélyezve van." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10389,6 +10389,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10568,6 +10648,21 @@ msgstr "" "A filament hűtése úgy történik, hogy oda-vissza mozgatják a hűtőcsőben. Adja " "meg a kívánt lépések számát." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Az első hűtési lépés sebessége" @@ -11303,10 +11398,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Szegmentált régió összekapcsolódási mélysége" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Szegmentált régió összekapcsolódási mélysége. A 0 érték letiltja ezt a " -"funkciót." msgid "Use beam interlocking" msgstr "" @@ -11663,9 +11760,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Fúvóka átmérője" - msgid "Diameter of nozzle" msgstr "Fúvóka átmérője" @@ -11765,6 +11859,11 @@ msgstr "" "komplex modelleknél, de egyúttal lassabbá teszi a szeletelést és a G-kód " "generálást" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Fájlnév formátum" @@ -11809,6 +11908,9 @@ msgstr "" "más sebességet használ. A 100%%-os túlnyúlás esetén az áthidaláshoz " "beállított sebességet használja." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11842,12 +11944,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Tutaj érintkezés Z távolság" @@ -12355,6 +12466,12 @@ msgstr "" "A küszöbérték alatti ritkás kitöltési terület belső szilárd kitöltéssel " "kerül leváltásra" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12419,6 +12536,31 @@ msgstr "Hagyományos" msgid "Temperature variation" msgstr "Hőmérséklet változás" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Kezdő G-kód" @@ -13049,12 +13191,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -13080,9 +13216,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13133,6 +13266,30 @@ msgstr "Maximális áthidalási távolság" msgid "Maximal distance between supports on sparse infill sections." msgstr "A támaszok közötti maximális távolság a ritkás kitöltésű részeken." +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y furatkompenzáció" @@ -13440,6 +13597,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13482,6 +13647,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13626,6 +13797,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -15939,6 +16118,73 @@ msgstr "" "Tudtad, hogy a vetemedésre hajlamos anyagok (például ABS) nyomtatásakor a " "tárgyasztal hőmérsékletének növelése csökkentheti a vetemedés valószínűségét?" +#~ msgid "up to" +#~ msgstr "legfeljebb" + +#~ msgid "above" +#~ msgstr "felett" + +#~ msgid "from" +#~ msgstr "ettől" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Bármilyen nyíl gomb" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Bal egérgomb" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Bal egérgomb" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Bármelyik nyílgomb" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+bal egérgomb" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Bal egérgomb" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Egérgörgő" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Egérgörgő" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Egérgörgő" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Egérgörgő" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Nem használhatsz különböző fúvókaátmérőt és filamentátmérőt, ha a " +#~ "törlőtorony engedélyezve van." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "A szivárgás elleni védelem nem működik, ha a törlőtorony engedélyezve van." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Szegmentált régió összekapcsolódási mélysége. A 0 érték letiltja ezt a " +#~ "funkciót." + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Kérjük, adj meg egy érvényes értéket (K 0-0,3)" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 5fe7273029..ec66aa6dd4 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "Angolo riempimento intelligente" msgid "On overhangs only" msgstr "Solo sulle sporgenze" -msgid "Auto support threshold angle: " -msgstr "Angolo di soglia per supporto automatico: " - msgid "Circle" msgstr "Cerchio" @@ -96,6 +93,9 @@ msgstr "Consente di pitturare solo sulle sfaccettature selezionate da: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Evidenziare le facce in base all'angolo di sporgenza." +msgid "Auto support threshold angle: " +msgstr "Angolo di soglia per supporto automatico: " + msgid "No auto support" msgstr "Nessun supporto automatico" @@ -4181,15 +4181,6 @@ msgstr "Tempo totale" msgid "Total cost" msgstr "Costo totale" -msgid "up to" -msgstr "fino a" - -msgid "above" -msgstr "sopra" - -msgid "from" -msgstr "da" - msgid "Color Scheme" msgstr "Schema Colore" @@ -4253,12 +4244,12 @@ msgstr "Tempi cambio filamento" msgid "Cost" msgstr "Costo" -msgid "Color change" -msgstr "Cambio colore" - msgid "Print" msgstr "Stampa" +msgid "Color change" +msgstr "Cambio colore" + msgid "Printer" msgstr "Stampante" @@ -6174,6 +6165,14 @@ msgstr "È stato rilevato un oggetto con più parti" msgid "The file does not contain any geometry data." msgstr "Il file non contiene dati geometrici." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Oggetto troppo grande" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6181,9 +6180,6 @@ msgstr "" "L'oggetto sembra troppo grande. Vuoi ridimensionarlo per adattarlo " "automaticamente al piatto di stampa?" -msgid "Object too large" -msgstr "Oggetto troppo grande" - msgid "Export STL file:" msgstr "Esporta file STL:" @@ -6562,9 +6558,6 @@ msgstr "Vuoi continuare?" msgid "Language selection" msgstr "Selezione lingua" -msgid "Switching application language while some presets are modified." -msgstr "Cambio lingua applicazione durante la modifica di alcuni preset." - msgid "Changing application language" msgstr "Modifica lingua applicazione" @@ -6749,6 +6742,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Rete" @@ -7759,12 +7758,21 @@ msgstr "Filamento per supporti" msgid "Tree supports" msgstr "Supporti ad albero" -msgid "Skirt" -msgstr "Skirt" +msgid "Multimaterial" +msgstr "Multimateriale" msgid "Prime tower" msgstr "Prime tower" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Skirt" + msgid "Special mode" msgstr "Modalità speciale" @@ -7818,6 +7826,9 @@ msgstr "" "Intervallo di temperatura del nozzle consigliato per questo filamento. 0 " "significa non impostato" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Temperatura della camera di stampa" @@ -7927,9 +7938,6 @@ msgstr "G-code Iniziale Filamento" msgid "Filament end G-code" msgstr "G-code Finale Filamento" -msgid "Multimaterial" -msgstr "Multimateriale" - msgid "Wipe tower parameters" msgstr "Parametri torre di pulitura" @@ -8019,12 +8027,30 @@ msgstr "Limitazione jerk" msgid "Single extruder multimaterial setup" msgstr "Configurazione multimateriale estrusore singolo" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Diametro Nozzle" + msgid "Wipe tower" msgstr "Torre di pulitura" msgid "Single extruder multimaterial parameters" msgstr "Parametri estrusore singolo materiale multiplo" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Limiti altezza layer" @@ -8529,11 +8555,8 @@ msgstr "Elenco oggetti" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importa geometrie da file STL/STEP/3MF/OBJ/AMF." -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Incolla dagli appunti" @@ -8585,33 +8608,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Riduci/Espandi barra laterale" -msgid "⌘+Any arrow" -msgstr "⌘+Freccia qualsiasi" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Movimento nello spazio della camera" -msgid "⌥+Left mouse button" -msgstr "⌥+Tasto sinistro mouse" - msgid "Select a part" msgstr "Seleziona parte" -msgid "⌘+Left mouse button" -msgstr "⌘+Tasto sinistro del mouse" - msgid "Select multiple objects" msgstr "Seleziona più oggetti" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+qualsiasi freccia" - -msgid "Alt+Left mouse button" -msgstr "Alt+tasto sinistro del mouse" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Tasto sinistro del mouse" - msgid "Shift+Left mouse button" msgstr "Shift+tasto sinistro mouse" @@ -8714,24 +8722,12 @@ msgstr "Piano" msgid "Move: press to snap by 1mm" msgstr "Sposta: premi per muovere di 1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Rotella mouse" - msgid "Support/Color Painting: adjust pen radius" msgstr "Supporto/Pittura a colori: regolare il raggio della penna" -msgid "⌥+Mouse wheel" -msgstr "⌥+Rotella mouse" - msgid "Support/Color Painting: adjust section position" msgstr "Supporto/Pittura a colori: regolare la posizione della sezione" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Rotellina del mouse" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Rotella del mouse" - msgid "Gizmo" msgstr "Gizmo" @@ -9049,6 +9045,11 @@ msgid "No object can be printed. Maybe too small" msgstr "" "Non è possibile stampare alcun oggetto. Potrebbe essere troppo piccolo." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9298,11 +9299,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Layer ad altezza variabile non è compatibile con i Supporti Organici." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Diametri degli ugelli diversi e diametri di filamento diversi non sono " -"consentiti quando la torre Prime è abilitata." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9312,10 +9312,9 @@ msgstr "" "relativo dell'estrusore (use_relative_e_distances = 1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"La prevenzione delle perdite (ooze prevention) attualmente non è supportata " -"quando è abilitata la torre di priming." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10816,6 +10815,86 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" "Anticipo di pressione (Klipper) AKA Fattore di avanzamento lineare (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11005,6 +11084,21 @@ msgstr "" "Il filamento è raffreddato venendo spostato avanti e indietro nei tubi di " "raffreddamento. Specificare il numero desiderato di questi movimenti." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Velocità del primo movimento di raffreddamento" @@ -11835,10 +11929,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profondità di incastro di una regione segmentata" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profondità di incastro di una regione segmentata. Zero disabilita questa " -"funzione." msgid "Use beam interlocking" msgstr "" @@ -12253,9 +12349,6 @@ msgstr "" "mantenere il tempo minimo dello strato sopra, quando è abilitato il " "rallentamento per un migliore raffreddamento dello strato." -msgid "Nozzle diameter" -msgstr "Diametro Nozzle" - msgid "Diameter of nozzle" msgstr "Diametro del nozzle" @@ -12360,6 +12453,11 @@ msgstr "" "ridurre i tempi di ritrazione per i modelli complessi e far risparmiare " "tempo di stampa, ma rende lo slicing e la generazione del G-code più lento." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Formato nome file" @@ -12412,6 +12510,9 @@ msgstr "" "utilizza velocità diverse per stampare. Per una sporgenza di 100%%, viene " "utilizzata la velocità del ponte." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12462,12 +12563,21 @@ msgstr "" "argomento, e potranno accedere alle impostazioni di configurazione di Orca " "Slicer leggendo le variabili di ambiente." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Note stampante" msgid "You can put your notes regarding the printer here." msgstr "È possibile inserire qui le note riguardanti la stampante." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distanza di contatto Z Raft" @@ -13030,6 +13140,12 @@ msgstr "" "L'area riempimento che è inferiore al valore di soglia viene sostituita da " "un riempimento solido interno." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13096,6 +13212,31 @@ msgstr "Tradizionale" msgid "Temperature variation" msgstr "Variazione di temperatura" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "G-code iniziale" @@ -13786,12 +13927,6 @@ msgstr "" "Angolo all'apice del cono utilizzato per stabilizzare la torre di pulitura. " "Un angolo maggiore significa una base più ampia." -msgid "Wipe tower purge lines spacing" -msgstr "Spaziatura delle linee di spurgo della torre di pulitura" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Spaziatura delle linee di spurgo sulla torre di pulitura." - msgid "Maximum wipe tower print speed" msgstr "" @@ -13817,9 +13952,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "Estrusore torre di pulitura" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13878,6 +14010,30 @@ msgstr "Distanza massima bridging" msgid "Maximal distance between supports on sparse infill sections." msgstr "Distanza massima tra supporti in sezioni a riempimento sparso." +msgid "Wipe tower purge lines spacing" +msgstr "Spaziatura delle linee di spurgo della torre di pulitura" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Spaziatura delle linee di spurgo sulla torre di pulitura." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Compensazione foro X-Y" @@ -14237,6 +14393,14 @@ msgstr "" "Attualmente è previsto un priming aggiuntivo dell'estrusore dopo la " "deretrazione." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Estrusore attuale" @@ -14287,6 +14451,12 @@ msgstr "" "Vettore di booleani che indica se un determinato estrusore viene utilizzato " "nella stampa." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Volume per estrusore" @@ -14449,6 +14619,14 @@ msgstr "Nome della stampante fisica" msgid "Name of the physical printer used for slicing." msgstr "Nome della stampante fisica utilizzata per lo slicing." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Numero del layer" @@ -16883,6 +17061,76 @@ msgstr "" "aumentare in modo appropriato la temperatura del piano riscaldato può " "ridurre la probabilità di deformazione." +#~ msgid "up to" +#~ msgstr "fino a" + +#~ msgid "above" +#~ msgstr "sopra" + +#~ msgid "from" +#~ msgstr "da" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Cambio lingua applicazione durante la modifica di alcuni preset." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Freccia qualsiasi" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Tasto sinistro mouse" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Tasto sinistro del mouse" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+qualsiasi freccia" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+tasto sinistro del mouse" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Tasto sinistro del mouse" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Rotella mouse" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Rotella mouse" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Rotellina del mouse" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Rotella del mouse" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Diametri degli ugelli diversi e diametri di filamento diversi non sono " +#~ "consentiti quando la torre Prime è abilitata." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "La prevenzione delle perdite (ooze prevention) attualmente non è " +#~ "supportata quando è abilitata la torre di priming." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Profondità di incastro di una regione segmentata. Zero disabilita questa " +#~ "funzione." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Estrusore torre di pulitura" + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Immettere un valore valido (K in 0~0.3)" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 2ef5610448..16b11846d9 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "自動充填角度" msgid "On overhangs only" msgstr "オーバーハングのみ" -msgid "Auto support threshold angle: " -msgstr "自動サポート角度閾値" - msgid "Circle" msgstr "円形" @@ -96,6 +93,9 @@ msgstr "%1%で選択した面だけをペイントする" msgid "Highlight faces according to overhang angle." msgstr "オーバーハングの角度によりハイライト" +msgid "Auto support threshold angle: " +msgstr "自動サポート角度閾値" + msgid "No auto support" msgstr "自動サポート無し" @@ -4023,15 +4023,6 @@ msgstr "総時間" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "最大" - -msgid "above" -msgstr "以上" - -msgid "from" -msgstr "from" - msgid "Color Scheme" msgstr "配色スキーム" @@ -4095,12 +4086,12 @@ msgstr "フィラメント交換回数" msgid "Cost" msgstr "コスト" -msgid "Color change" -msgstr "色変更" - msgid "Print" msgstr "造形する" +msgid "Color change" +msgstr "色変更" + msgid "Printer" msgstr "プリンター" @@ -5961,13 +5952,18 @@ msgid "The file does not contain any geometry data." msgstr "このファイルにはジオメトリデータが含まれていません。" msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "オブジェクトが大きすぎのようです、ベッドに合わせてスケールしますか?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" msgid "Object too large" msgstr "オブジェクトが大きすぎます" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "オブジェクトが大きすぎのようです、ベッドに合わせてスケールしますか?" + msgid "Export STL file:" msgstr "STLファイルをエクスポート:" @@ -6337,9 +6333,6 @@ msgstr "続行しますか?" msgid "Language selection" msgstr "言語選択" -msgid "Switching application language while some presets are modified." -msgstr "アプリケーション言語を切り替える時に、プリセットの変更があります" - msgid "Changing application language" msgstr "言語を変更" @@ -6523,6 +6516,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "ネットワーク (&N)" @@ -7474,12 +7473,21 @@ msgstr "サポート用フィラメント" msgid "Tree supports" msgstr "" -msgid "Skirt" -msgstr "スカート" +msgid "Multimaterial" +msgstr "" msgid "Prime tower" msgstr "プライムタワー" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "スカート" + msgid "Special mode" msgstr "特別モード" @@ -7526,6 +7534,9 @@ msgstr "推奨ノズル温度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "フィラメントの推奨ノズル温度、0は未設定との意味です" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7632,9 +7643,6 @@ msgstr "フィラメント開始G-code" msgid "Filament end G-code" msgstr "フィラメント終了G-code" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "ワイプタワーのパラメータ" @@ -7724,12 +7732,30 @@ msgstr "振動特性" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "ノズル直径" + msgid "Wipe tower" msgstr "ワイプタワー" msgid "Single extruder multimaterial parameters" msgstr "単一エクストルーダーのマルチマテリアルパラメーター" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "積層ピッチの制限" @@ -8204,11 +8230,8 @@ msgstr "オブジェクト一覧" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "貼り付け" @@ -8255,33 +8278,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "サイドバーを展開/隠す" -msgid "⌘+Any arrow" -msgstr "⌘+↑↓←→" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "オブジェクト移動" -msgid "⌥+Left mouse button" -msgstr "⌥+マウス左ボタン" - msgid "Select a part" msgstr "パーツを選択" -msgid "⌘+Left mouse button" -msgstr "⌘+マウス左ボタン" - msgid "Select multiple objects" msgstr "複数のオブジェクトを選択" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+↑↓←→" - -msgid "Alt+Left mouse button" -msgstr "Alt+マウス左ボタン" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+マウス左ボタン" - msgid "Shift+Left mouse button" msgstr "Shift + マウス左ボタン" @@ -8384,24 +8392,12 @@ msgstr "準備" msgid "Move: press to snap by 1mm" msgstr "1mm単位で移動" -msgid "⌘+Mouse wheel" -msgstr "⌘+マウスホイール" - msgid "Support/Color Painting: adjust pen radius" msgstr "サポート/色塗り: 半径のサイズ" -msgid "⌥+Mouse wheel" -msgstr "⌥+マウスホイール" - msgid "Support/Color Painting: adjust section position" msgstr "サポート/色塗り: 断面の位置" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+マウスホイール" - -msgid "Alt+Mouse wheel" -msgstr "Alt+マウスホイール" - msgid "Gizmo" msgstr "Gizmo" @@ -8702,6 +8698,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "造形できるオブジェクトがありません。" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -8930,11 +8931,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variable layer height is not supported with Organic supports." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -8944,9 +8944,9 @@ msgstr "" "addressing (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Ooze prevention is currently not supported with the prime tower enabled." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10164,6 +10164,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10336,6 +10416,21 @@ msgstr "" "フィラメントは、冷却チューブ内で上下に移動することにより冷却されます。 これら" "の上下移動の必要な回数を指定します。" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "冷却移動の最初の速度" @@ -11050,8 +11145,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Interlocking depth of a segmented region" -msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." +msgstr "" msgid "Use beam interlocking" msgstr "" @@ -11398,9 +11497,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "ノズル直径" - msgid "Diameter of nozzle" msgstr "ノズル直径" @@ -11493,6 +11589,11 @@ msgid "" msgstr "" "インフィル領域内の移動はリトラクションしません。造形時間を節約できます。" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "ファイル名形式" @@ -11536,6 +11637,9 @@ msgstr "" "この設定により、線幅に対するオーバーハングの割合を検出し、異なる速度で造形し" "ます。100%%のオーバーハングの場合、ブリッジの速度が使用されます。" +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11569,12 +11673,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "ラフト接触面Z間隔" @@ -12070,6 +12183,12 @@ msgstr "" "スパース インフィルの面積がこの値以下の場合、ソリッド インフィルに変換されま" "す" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12127,6 +12246,31 @@ msgstr "通常" msgid "Temperature variation" msgstr "軟化温度" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "スタートG-code" @@ -12740,12 +12884,6 @@ msgstr "" "ワイプタワーを安定させるために使用される円錐の頂点の角度。角度が大きいと底面" "が広くなります。" -msgid "Wipe tower purge lines spacing" -msgstr "ワイプタワーのパージラインの間隔" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "ワイプタワーのパージラインの間隔。" - msgid "Maximum wipe tower print speed" msgstr "" @@ -12771,9 +12909,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "ワイプタワーエクストルーダー" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12826,6 +12961,30 @@ msgstr "ブリッジ最大距離" msgid "Maximal distance between supports on sparse infill sections." msgstr "中抜きインフィルレイヤーの間隔の最大値。" +msgid "Wipe tower purge lines spacing" +msgstr "ワイプタワーのパージラインの間隔" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "ワイプタワーのパージラインの間隔。" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "ホール補正 X-Y" @@ -13129,6 +13288,14 @@ msgstr "" "現在、リトラクションからの復帰時のエクストルーダーの追加プライミングが計画さ" "れています。" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "現在のエクストルーダー" @@ -13177,6 +13344,12 @@ msgstr "エクストルーダーは使用されましたか?" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "エクストルーダーあたりの体積" @@ -13328,6 +13501,14 @@ msgstr "物理プリンター名" msgid "Name of the physical printer used for slicing." msgstr "スライスに使用される物理プリンターの名前。" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "レイヤーナンバー" @@ -15613,6 +15794,74 @@ msgstr "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping?" +#~ msgid "up to" +#~ msgstr "最大" + +#~ msgid "above" +#~ msgstr "以上" + +#~ msgid "from" +#~ msgstr "from" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "アプリケーション言語を切り替える時に、プリセットの変更があります" + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+↑↓←→" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+マウス左ボタン" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+マウス左ボタン" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+↑↓←→" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+マウス左ボタン" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+マウス左ボタン" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+マウスホイール" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+マウスホイール" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+マウスホイール" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+マウスホイール" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." + +#~ msgid "Wipe tower extruder" +#~ msgstr "ワイプタワーエクストルーダー" + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Please input a valid value (K in 0~0.3)" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 61fcb5eb5e..d9d2118ec3 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-30 10:20+0900\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-05-31 23:33+0900\n" "Last-Translator: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github." "com>\n" @@ -7460,8 +7460,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 닦기 타워\"를 추가하는 것이 좋" "습니다\n" @@ -11120,10 +11120,10 @@ msgstr "팬 최대 속도 레이어" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" " "의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 " @@ -12067,6 +12067,9 @@ msgstr "" "선 너비에 비례하여 돌출부 백분율을 감지하고 다른 속도를 사용하여 출력합니다. " "100%% 돌출부의 경우 브릿지 속도가 사용됩니다." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12111,12 +12114,21 @@ msgstr "" "대 경로를 첫 번째 값으로 전달하며 환경 변수를 읽어 Orca Slicer 구성 설정에 접" "근할 수 있습니다." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "프린터 메모" msgid "You can put your notes regarding the printer here." msgstr "여기에 프린터에 관한 메모를 넣을 수 있습니다." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "라프트 접점 Z 거리" @@ -12663,6 +12675,12 @@ msgid "" "internal solid infill" msgstr "임계값보다 작은 드문 채우기 영역은 꽉찬 내부 채우기로 대체됩니다" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -15139,8 +15157,8 @@ msgstr "" "다시 작성하시겠습니까?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -16895,8 +16913,8 @@ msgstr "" #~ msgstr "드문 레이어 없음(실험적)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 6831d65d50..a34760c9bc 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,9 +71,6 @@ msgstr "Slim vullen hoek" msgid "On overhangs only" msgstr "Alleen op overhangen" -msgid "Auto support threshold angle: " -msgstr "Maximale hoek automatische ondersteuning: " - msgid "Circle" msgstr "Cirkel" @@ -93,6 +90,9 @@ msgstr "Staat alleen schilderen toe op facetten geselecteerd met: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Gebieden markeren op basis van overhangende hoek." +msgid "Auto support threshold angle: " +msgstr "Maximale hoek automatische ondersteuning: " + msgid "No auto support" msgstr "Geen automatische ondersteuning" @@ -4112,15 +4112,6 @@ msgstr "Totale tijd" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "tot" - -msgid "above" -msgstr "Boven" - -msgid "from" -msgstr "Van" - msgid "Color Scheme" msgstr "Kleurschema" @@ -4184,12 +4175,12 @@ msgstr "Filamentwisseltijden" msgid "Cost" msgstr "Kosten" -msgid "Color change" -msgstr "Kleur veranderen" - msgid "Print" msgstr "Print" +msgid "Color change" +msgstr "Kleur veranderen" + msgid "Printer" msgstr "Printer" @@ -6098,6 +6089,14 @@ msgstr "Er is een object met meerdere onderdelen gedetecteerd" msgid "The file does not contain any geometry data." msgstr "Het bestand bevat geen geometriegegevens." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Object te groot" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6105,9 +6104,6 @@ msgstr "" "Uw object lijkt te groot. Wilt u het verkleinen zodat het automatisch op het " "printbed past?" -msgid "Object too large" -msgstr "Object te groot" - msgid "Export STL file:" msgstr "Exporteer STL bestand:" @@ -6478,11 +6474,6 @@ msgstr "Wilt u doorgaan?" msgid "Language selection" msgstr "Taal selectie" -msgid "Switching application language while some presets are modified." -msgstr "" -"De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn " -"aangepast." - msgid "Changing application language" msgstr "Taal van de applicatie wijzigen" @@ -6671,6 +6662,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Netwerk" @@ -7678,12 +7675,21 @@ msgstr "Support filament" msgid "Tree supports" msgstr "" -msgid "Skirt" -msgstr "Skirt" +msgid "Multimaterial" +msgstr "" msgid "Prime tower" msgstr "Prime toren" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Skirt" + msgid "Special mode" msgstr "Speciale modus" @@ -7737,6 +7743,9 @@ msgstr "" "De geadviseerde nozzle temperatuur voor dit filament. 0 betekend dat er geen " "voorgestelde waarde is " +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7848,9 +7857,6 @@ msgstr "Filament start G-code" msgid "Filament end G-code" msgstr "Filament einde G-code" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "Afveegblokparameters" @@ -7940,12 +7946,30 @@ msgstr "Jerk beperking" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Nozzle diameter" + msgid "Wipe tower" msgstr "Afveegblok" msgid "Single extruder multimaterial parameters" msgstr "Parameter voor multi-material met één extruder" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Limieten voor laaghoogte" @@ -8438,11 +8462,8 @@ msgstr "Object lijst" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Plakken vanuit klembord" @@ -8494,33 +8515,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "De menubalk in-/uitschuiven" -msgid "⌘+Any arrow" -msgstr "⌘+willekeurige pijl" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Beweging in cameragebied" -msgid "⌥+Left mouse button" -msgstr "⌥+Linker muisknop" - msgid "Select a part" msgstr "Selecteer een onderdeel" -msgid "⌘+Left mouse button" -msgstr "⌘+Linker muisknop" - msgid "Select multiple objects" msgstr "Selecteer meerdere objecten" -msgid "Ctrl+Any arrow" -msgstr "CTRL+willekeurige pijl" - -msgid "Alt+Left mouse button" -msgstr "Alt+Linker muisknop" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Linker muisknop" - msgid "Shift+Left mouse button" msgstr "Shift+Linker muisknop" @@ -8623,24 +8629,12 @@ msgstr "Plaat" msgid "Move: press to snap by 1mm" msgstr "Verplaatsen: druk om 1 mm te verplaatsen" -msgid "⌘+Mouse wheel" -msgstr "⌘+muiswiel" - msgid "Support/Color Painting: adjust pen radius" msgstr "Support/kleur intekenen: pas de pen diameter aan" -msgid "⌥+Mouse wheel" -msgstr "⌥+Muiswiel" - msgid "Support/Color Painting: adjust section position" msgstr "Support/kleur intekenen: pas de sectie positie aan" -msgid "Ctrl+Mouse wheel" -msgstr "CTRL+muiswiel" - -msgid "Alt+Mouse wheel" -msgstr "Alt+muiswiel" - msgid "Gizmo" msgstr "Gizmo" @@ -8957,6 +8951,11 @@ msgid "No object can be printed. Maybe too small" msgstr "" "Er kunnen geen objecten geprint worden. Het kan zijn dat ze te klein zijn." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9200,11 +9199,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variabele laaghoogte wordt niet ondersteund met organische steunen." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Verschillende mondstukdiameters en verschillende filamentdiameters zijn niet " -"toegestaan als de prime-toren is ingeschakeld." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9214,10 +9212,9 @@ msgstr "" "extruderadressering (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Ooze-preventie wordt momenteel niet ondersteund als de prime tower is " -"ingeschakeld." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10489,6 +10486,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10670,6 +10747,21 @@ msgstr "" "Het filament wordt gekoeld tijdens het terug en voorwaarts bewegen in de " "koelbuis. Specificeer het benodigd aantal bewegingen." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Snelheid voor de eerste koelbeweging" @@ -11409,9 +11501,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Insluitdiepte van een gesegmenteerde regio" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Insluitdiepte van een gesegmenteerd gebied. Nul schakelt deze functie uit." msgid "Use beam interlocking" msgstr "" @@ -11769,9 +11864,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Nozzle diameter" - msgid "Diameter of nozzle" msgstr "Diameter van de nozzle" @@ -11874,6 +11966,11 @@ msgstr "" "voor complexe modellen verkorten en printtijd besparen, maar het segmenteren " "en het genereren van G-codes langzamer maken." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Bestandsnaam formaat" @@ -11919,6 +12016,9 @@ msgstr "" "lijnbreedte te detecteren en gebruikt verschillende snelheden om af te " "drukken. Voor 100%% overhang wordt de brugsnelheid gebruikt." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11952,12 +12052,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Vlot (raft) contact Z afstand:" @@ -12466,6 +12575,12 @@ msgstr "" "Dunne opvullingen (infill) die kleiner zijn dan deze drempelwaarde worden " "vervangen door solide interne vulling (infill)." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12531,6 +12646,31 @@ msgstr "Traditioneel" msgid "Temperature variation" msgstr "Temperatuur variatie" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Start G-code" @@ -13166,12 +13306,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -13197,9 +13331,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13252,6 +13383,30 @@ msgstr "Maximale brugafstand" msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximale afstand tussen support op dunne vullingsdelen." +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y-gaten compensatie" @@ -13563,6 +13718,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13605,6 +13768,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13749,6 +13918,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -16074,6 +16251,74 @@ msgstr "" "kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het " "warmtebed de kans op kromtrekken kan verkleinen?" +#~ msgid "up to" +#~ msgstr "tot" + +#~ msgid "above" +#~ msgstr "Boven" + +#~ msgid "from" +#~ msgstr "Van" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn " +#~ "aangepast." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+willekeurige pijl" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Linker muisknop" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Linker muisknop" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "CTRL+willekeurige pijl" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Linker muisknop" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Linker muisknop" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+muiswiel" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Muiswiel" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "CTRL+muiswiel" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+muiswiel" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Verschillende mondstukdiameters en verschillende filamentdiameters zijn " +#~ "niet toegestaan als de prime-toren is ingeschakeld." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze-preventie wordt momenteel niet ondersteund als de prime tower is " +#~ "ingeschakeld." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Insluitdiepte van een gesegmenteerd gebied. Nul schakelt deze functie uit." + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Voer een geldige waarde in (K in 0~0.3)" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 41b75b0150..0c821ac093 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga \n" "Language-Team: \n" @@ -75,9 +75,6 @@ msgstr "Kąt inteligentnego wypełniania" msgid "On overhangs only" msgstr "Tylko na nawisach" -msgid "Auto support threshold angle: " -msgstr "Automatyczny kąt progowy podpory: " - msgid "Circle" msgstr "Koło" @@ -97,6 +94,9 @@ msgstr "Pozwala malować tylko na wybranych powierzchniach za pomocą: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Podświetl ściany zgodnie z kątem nawisu." +msgid "Auto support threshold angle: " +msgstr "Automatyczny kąt progowy podpory: " + msgid "No auto support" msgstr "Brak automatycznej podpory" @@ -4163,15 +4163,6 @@ msgstr "Czas całkowity" msgid "Total cost" msgstr "Koszt całkowity" -msgid "up to" -msgstr "do" - -msgid "above" -msgstr "powyżej" - -msgid "from" -msgstr "od" - msgid "Color Scheme" msgstr "Schemat kolorów" @@ -4235,12 +4226,12 @@ msgstr "Liczba zmian filamentu" msgid "Cost" msgstr "Koszt" -msgid "Color change" -msgstr "Zmiana koloru" - msgid "Print" msgstr "Drukuj" +msgid "Color change" +msgstr "Zmiana koloru" + msgid "Printer" msgstr "Drukarka" @@ -5395,7 +5386,7 @@ msgid "Lamp" msgstr "LED" msgid "Aux" -msgstr "Aux" +msgstr "Pomocn." msgid "Cham" msgstr "Komora" @@ -6168,6 +6159,16 @@ msgstr "Wykryto obiekt składający się z wielu części" msgid "The file does not contain any geometry data." msgstr "Plik nie zawiera żadnych danych geometrycznych." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" +"Twój obiekt wydaje się być zbyt duży. Zostanie on automatycznie zmniejszony, " +"aby pasował do powierzchni roboczej." + +msgid "Object too large" +msgstr "Obiekt jest zbyt duży" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6175,9 +6176,6 @@ msgstr "" "Importowany model przekracza wymiary przestrzeni roboczej. Czy chcesz go " "przeskalowanć do odpowiednich rozmiarów?" -msgid "Object too large" -msgstr "Obiekt jest zbyt duży" - msgid "Export STL file:" msgstr "Eksportuj plik STL:" @@ -6555,11 +6553,6 @@ msgstr "Czy chcesz kontynuować?" msgid "Language selection" msgstr "Wybór języka" -msgid "Switching application language while some presets are modified." -msgstr "" -"Zmiana języka aplikacji przy jednoczesnym istniejących zmodyfikowanych " -"ustawieniach." - msgid "Changing application language" msgstr "Zmiana języka aplikacji" @@ -6761,6 +6754,12 @@ msgstr "" "Dzięki tej opcji możesz wysyłać zadania do wielu urządzeń jednocześnie i " "zarządzać nimi." +msgid "Auto arrange plate after cloning" +msgstr "Automatyczne rozmieszczanie na platformie po sklonowaniu" + +msgid "Auto arrange plate after object cloning" +msgstr "Automatyczne rozmieszczenie obiektów na platformie po ich sklonowaniu" + msgid "Network" msgstr "Sieć" @@ -7737,7 +7736,7 @@ msgid "Bridge" msgstr "Mosty" msgid "Set speed for external and internal bridges" -msgstr "Ustaw szybkość dla zewnętrznych i wewnętrznych mostków" +msgstr "Ustaw szybkość dla zewnętrznych i wewnętrznych mostów" msgid "Travel speed" msgstr "Szybkość przemieszczania" @@ -7749,7 +7748,7 @@ msgid "Jerk(XY)" msgstr "Jerk (XY)" msgid "Raft" -msgstr "Raft" +msgstr "Tratwa (Raft)" msgid "Support filament" msgstr "Filament podpory" @@ -7757,12 +7756,21 @@ msgstr "Filament podpory" msgid "Tree supports" msgstr "Drzewo" -msgid "Skirt" -msgstr "Skirt" +msgid "Multimaterial" +msgstr "Multimateriał" msgid "Prime tower" msgstr "Wieża czyszcząca" +msgid "Filament for Features" +msgstr "Filament dla elementu druku" + +msgid "Ooze prevention" +msgstr "Zapobieganie wyciekom (Ooze)" + +msgid "Skirt" +msgstr "Skirt" + msgid "Special mode" msgstr "Tryby specjalne" @@ -7819,6 +7827,9 @@ msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" "Zalecany zakres temperatury dyszy dla tego filamentu. 0 oznacza brak ustawień" +msgid "Flow ratio and Pressure Advance" +msgstr "Współczynnik przepływu i Wzrost ciśnienia (PA)" + msgid "Print chamber temperature" msgstr "Temperatura komory druku" @@ -7928,9 +7939,6 @@ msgstr "Początkowy G-code filamentu" msgid "Filament end G-code" msgstr "Końcowy G-code filamentu" -msgid "Multimaterial" -msgstr "Multimateriał" - msgid "Wipe tower parameters" msgstr "Parametry wieży czyszczącej" @@ -8020,12 +8028,36 @@ msgstr "Ograniczenie Jerk" msgid "Single extruder multimaterial setup" msgstr "Konfiguracja pojedynczego extrudera wielomateriałowego" +msgid "Number of extruders of the printer." +msgstr "Liczba ekstruderów drukarki." + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" +"Wybrano tryb \"Pojedynczy ekstruder wielomateriałowy\". \n" +"Wszystkie ekstrudery muszą mieć tę samą średnicę dyszy. \n" +"Czy chcesz, aby średnica wszystkich dysz była taka sama jak średnica dyszy " +"pierwszego ekstrudera?" + +msgid "Nozzle diameter" +msgstr "Średnica dyszy" + msgid "Wipe tower" msgstr "Wieża czyszcząca" msgid "Single extruder multimaterial parameters" msgstr "Parametry pojedynczego extrudera wielomateriałowego" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" +"To jest drukarka wielomateriałowa z jednym ekstruderem. Średnice wszystkich " +"ekstruderów zostaną ustawione na nową wartość. Czy chcesz kontynuować?" + msgid "Layer height limits" msgstr "Ograniczenia wysokości warstwy" @@ -8539,11 +8571,8 @@ msgstr "Lista obiektów" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import danych geometrycznych z plików STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Wklej z schowka" @@ -8593,33 +8622,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Zwiń/Rozwiń pasek boczny" -msgid "⌘+Any arrow" -msgstr "⌘+Dowolna strzałka" +msgid "Any arrow" +msgstr "Dowolna strzałka" msgid "Movement in camera space" msgstr "Ruch w przestrzeni kamery" -msgid "⌥+Left mouse button" -msgstr "⌥+Lewy przycisk myszy" - msgid "Select a part" msgstr "Wybierz część" -msgid "⌘+Left mouse button" -msgstr "⌘+Lewy przycisk myszy" - msgid "Select multiple objects" msgstr "Wybierz wiele obiektów" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Dowolna strzałka" - -msgid "Alt+Left mouse button" -msgstr "Alt+Lewy przycisk myszy" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Lewy przycisk myszy" - msgid "Shift+Left mouse button" msgstr "Shift+Lewy przycisk myszy" @@ -8722,24 +8736,12 @@ msgstr "Płyta" msgid "Move: press to snap by 1mm" msgstr "Przesuń: naciśnij, aby przyciągnąć co 1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Kółko myszy" - msgid "Support/Color Painting: adjust pen radius" msgstr "Podpory/Kolorowanie: dostosuj promień pędzla" -msgid "⌥+Mouse wheel" -msgstr "⌥+Kółko myszy" - msgid "Support/Color Painting: adjust section position" msgstr "Podpory/Kolorowanie: dostosuj pozycję sekcji" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Kółko myszy" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Kółko myszy" - msgid "Gizmo" msgstr "Uchwyt" @@ -9051,6 +9053,13 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Żaden obiekt nie może być wydrukowany. Może jest za mały" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" +"Twój wydruk znajduje się bardzo blisko obszaru czyszczenia dyszy. Upewnij " +"się, że nie dojdzie do kolizji." + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9297,11 +9306,13 @@ msgstr "" "Zmienna wysokość warstwy nie jest dostępna w przypadku podpór organicznych." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Różne średnice dysz i różne średnice filamentów nie są dozwolone, gdy " -"włączona jest wieża czyszcząca." +"Różne średnice dysz i filamentu mogą nie działać poprawnie, gdy włączona " +"jest wieża czyszcząca. Jest to mocno eksperymentalna funkcja, więc zaleca " +"się ostrożność." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9311,10 +9322,11 @@ msgstr "" "extrudera (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Zapobieganie wyciekom nie jest obecnie wspierane, gdy włączona jest wieża " -"czyszcząca." +"Zapobieganie wyciekom ( ooze ) nie jest obecnie wspierane, gdy włączona jest " +"wieża czyszcząca." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9593,7 +9605,7 @@ msgstr "" "password@your-octopi-address/" msgid "Device UI" -msgstr "Interfejs użytkownika urządzenia" +msgstr "UI urządzenia" msgid "" "Specify the URL of your device user interface if it's not same as print_host" @@ -9602,7 +9614,7 @@ msgstr "" "jak print_host" msgid "API Key / Password" -msgstr "Klucz API / Hasło" +msgstr "Klucz API / hasło" msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " @@ -9648,7 +9660,7 @@ msgid "Names of presets related to the physical printer" msgstr "Nazwy profili odnoszących się do drukarki fizycznej" msgid "Authorization Type" -msgstr "Typ autoryzacji" +msgstr "Rodzaj autoryzacji" msgid "API key" msgstr "Klucz API" @@ -10386,14 +10398,13 @@ msgstr "" "\n" "Włączenie tej opcji spowoduje drukowanie wewnętrznej warstwy mostka nad " "nieco niewspieraną wewnętrzną strukturą wypełnienia. Poniższe opcje " -"kontrolują stopień filtrowania, czyli ilość tworzonych wewnętrznych " -"mostków.\n" +"kontrolują stopień filtrowania, czyli ilość tworzonych wewnętrznych mostów.\n" "\n" "Wyłączone - Wyłącza tę opcję. Jest to zachowanie domyślne i działa dobrze w " "większości przypadków.\n" "\n" "Ograniczone filtrowanie - Tworzy wewnętrzne mosty na mocno pochylonych " -"powierzchniach, unikając tworzenia niepotrzebnych wewnętrznych mostków. To " +"powierzchniach, unikając tworzenia niepotrzebnych wewnętrznych mostów. To " "działa dobrze dla większości trudnych modeli.\n" "\n" "Brak filtrowania - Tworzy wewnętrzne mosty na każdym potencjalnym " @@ -10811,8 +10822,138 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" -"Pressure advance (Klipper), znane również jako współczynnik przyspieszenia " -"liniowego (Marlin)." +"Pressure advance (Klipper), znane również jako Linear advance (Marlin)." + +msgid "Enable adaptive pressure advance (beta)" +msgstr "Włącz adaptacyjny wzrost ciśnienia (beta)" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" +"Wraz ze wzrostem prędkości druku zaobserwowano, że efektywna wartość PA " +"zazwyczaj maleje. Oznacza to, że pojedyncza wartość PA nie jest w " +"100% optymalna dla wszystkich elementów i zwykle stosowana jest wartość " +"kompromisowa, która nie powoduje zbyt dużego \"wypuklenia\" na elementach " +"drukowanych wolniej, a jednocześnie nie powoduje przerw na elementach " +"drukowanych szybciej.\n" +"\n" +"Ta funkcja ma na celu rozwiązanie tego ograniczenia poprzez modelowanie " +"reakcji ekstrudera w zależności od prędkości drukowania. Wewnętrznie " +"generuje dopasowany model, który może przewidzieć jakie będzie wymagane " +"ciśnienie dla dowolnej prędkości drukowania, który jest następnie " +"przekazywany do drukarki w zależności od bieżącej prędkości druku.\n" +"\n" +"Po włączeniu powyższa wartość PA jest nadpisywana. Zdecydowanie zaleca się " +"jednak przyjęcie rozsądnej wartości domyślnej, która będzie działać jako " +"rozwiązanie awaryjne w przypadku nieprawidłowych obliczeń dla modelu.\n" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "Adaptacyjny pomiar ciśnienia (beta)" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" +"0.033.96.1000\n" +"0.029.7.91.300\n" +"0.026.7.91.1000\n" +"\n" +"Jak kalibrować:\n" +"1. Przeprowadzić test wyprzedzenia ciśnienia dla co najmniej 3 prędkości na " +"wartość przyspieszenia. Zaleca się przeprowadzenie testu co najmniej dla " +"prędkości obwodów zewnętrznych, prędkości obwodów wewnętrznych i najszybszej " +"prędkości drukowania elementów w profilu (zwykle jest to rzadkie lub pełne " +"wypełnienie). Następnie uruchom je z tymi samymi prędkościami, aby uzyskać " +"najwolniejsze i najszybsze przyspieszenia druku i nie szybciej niż zalecane " +"maksymalne przyspieszenie określone przez moduł kształtujący wejściowy " +"klipper.\n" +"2. Zwróć uwagę na optymalną wartość PA dla każdej wolumetrycznej prędkości " +"przepływu i przyspieszenia. Możesz znaleźć numer przepływu, wybierając " +"przepływ z rozwijanego schematu kolorów i przesuwając poziomy suwak nad " +"liniami wzoru PA. Numer powinien być widoczny na dole strony. Idealna " +"wartość PA powinna maleć, im większy jest przepływ objętościowy. Jeśli tak " +"nie jest, potwierdź, że ekstruder działa poprawnie. Im wolniej i z mniejszym " +"przyspieszeniu drukujesz, tym jest większy zakres dopuszczalnych wartości " +"PA. Jeśli różnica nie jest widoczna, należy użyć wartości PA z szybszego " +"testu.\n" +"3. Wprowadź trójki wartości PA, przepływu i przyspieszenia w polu tekstowym " +"tutaj i zapisz swój profil filamentu.\n" +"\n" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "Włącz adaptacyjny wzrost ciśnienia dla nawisów (beta)" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" +"Włącz adaptacyjne PA zarówno dla nawisów, jak i gdy zmienia się przepływ w " +"obrębie tego samego elementu. Jest to opcja eksperymentalna, ponieważ jeśli " +"profil PA nie jest ustawiony dokładnie, spowoduje to problemy z " +"jednorodnością na zewnętrznych powierzchniach przed i po nawisach.\n" + +msgid "Pressure advance for bridges" +msgstr "Wzrost ciśnienia (PA) dla mostów" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" +"Wartość wzrostu ciśnienia dla mostów. Ustaw na 0, aby wyłączyć. \n" +"\n" +"Niższa wartość PA podczas drukowania mostów pomaga zredukować widoczność " +"lekkiego niedoboru materiału, który może wystąpić bezpośrednio po ich " +"wydruku. Jest to spowodowane spadkiem ciśnienia w dyszy podczas drukowania w " +"powietrzu, a niższy PA pomaga temu przeciwdziałać." msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " @@ -11019,6 +11160,25 @@ msgstr "" "Filament jest chłodzony poprzez poruszanie go tam i z powrotem w ruchach " "chłodzących. Określ pożądaną liczbę tych ruchów." +msgid "Stamping loading speed" +msgstr "Prędkość kształtowania podczas ładowania" + +msgid "Speed used for stamping." +msgstr "Prędkość używana do kształtowania." + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "Odległość kształtowania mierzona od środka rurki chłodzącej" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" +"Jeśli ustawisz wartość inną niż zero, filament jest przesuwany w kierunku " +"dyszy pomiędzy poszczególnymi ruchami chłodzenia (kształtowanie lub " +"stamping). Ta opcja konfiguruje czas trwania tego ruchu przed ponowną " +"retrakcją filamentu." + msgid "Speed of the first cooling move" msgstr "Prędkość pierwszego ruchu chłodzącego" @@ -11077,7 +11237,7 @@ msgstr "" "kodu T). Ten czas jest dodawany do szacowanego czasu druku." msgid "Enable ramming for multitool setups" -msgstr "Włącz wbijanie dla konfiguracji wielonarzędziowych" +msgstr "Włącz wyciskanie przy multi-tool" msgid "" "Perform ramming when using multitool printer (i.e. when the 'Single Extruder " @@ -11092,13 +11252,13 @@ msgstr "" "używana tylko wtedy, gdy wieża czyszcząca jest włączona." msgid "Multitool ramming volume" -msgstr "Objętość ramingu wieloinstrumentowego" +msgstr "Objętość wyciskania multi-tool" msgid "The volume to be rammed before the toolchange." msgstr "Objętość do wyciśnięcia przed zmianą narzędzia." msgid "Multitool ramming flow" -msgstr "Przepływ ramingu wieloinstrumentowego" +msgstr "Przepływ wyciskania multi-tool" msgid "Flow used for ramming the filament before the toolchange." msgstr "Przepływ używany do ramingu filamentu przed zmianą narzędzia." @@ -11195,8 +11355,9 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"Gęstość wewnętrznego wypełnienia, 100% przekształca całe rzadkie wypełnienie " -"w wypełnienie pełne, a użyty zostanie wzór wewnętrznego pełnego wypełnienia" +"Gęstość wewnętrznego rzadkiego wypełnienia, 100% przekształca całe rzadkie " +"wypełnienie w wypełnienie pełne, a użyty zostanie wzór wewnętrznego pełnego " +"wypełnienia" msgid "Sparse infill pattern" msgstr "Wzór wypełnienia" @@ -11760,8 +11921,8 @@ msgid "" msgstr "" "Włącz to, aby dodać komentarze do pliku G-Code, oznaczające ruchy druku, do " "jakiego obiektu należą. Jest to przydatne dla wtyczki Octoprint " -"CancelObject. Te ustawienia NIE są kompatybilne z konfiguracją Single " -"Extruder Multi Material i opcją Wipe into Object / Wipe into Infill." +"CancelObject. Te ustawienia NIE są kompatybilne z konfiguracją Pojedynczy " +"ekstruder Wielomateriałowy i opcją Wipe into Object / Wipe into Infill." msgid "Exclude objects" msgstr "Wyłącz obiekty" @@ -11793,7 +11954,8 @@ msgstr "" "warstwy." msgid "Filament to print internal sparse infill." -msgstr "Filament do druku wewnętrznego wypełnienia." +msgstr "" +"Ten filament będzie używany do druku rzadkiego wewnętrznego wypełnienia." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " @@ -11851,19 +12013,24 @@ msgstr "" "strukturze lub rozpuszczalnym materiale do drukowania podpór" msgid "Maximum width of a segmented region" -msgstr "Maksymalna szerokość segmentowanej strefy" +msgstr "Maksymalna szerokość segmentu" msgid "Maximum width of a segmented region. Zero disables this feature." -msgstr "" -"Maksymalna szerokość segmentowanej strefy. Wartość zero wyłącza tę funkcję." +msgstr "Maksymalna szerokość segmentu. Wartość zero wyłącza tę funkcję." msgid "Interlocking depth of a segmented region" msgstr "Głębokość zazębiania się podzielonego na segmenty obszaru" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Głębokość zazębiania się podzielonego na segmenty regionu. Wartość zero " -"wyłącza tę funkcję." +"Głębokość zazębiania się podzielonego na segmenty obszaru. Zostanie ona " +"zignorowana, jeśli \"mmu_segmented_region_max_width\" wynosi zero lub jeśli " +"\"mmu_segmented_region_interlocking_depth\" jest większa niż " +"\"mmu_segmented_region_max_width\". Wartość zero wyłącza tę funkcję." msgid "Use beam interlocking" msgstr "Użyj struktury zazębiającej" @@ -12291,9 +12458,6 @@ msgstr "" "czas warstwy powyżej, gdy włączona jest opcja zwalniania dla lepszego " "schładzania warstwy." -msgid "Nozzle diameter" -msgstr "Średnica dyszy" - msgid "Diameter of nozzle" msgstr "Średnica dyszy" @@ -12307,7 +12471,7 @@ msgstr "" "Tutaj możesz umieścić notatki, które zostaną dodane do nagłówka pliku G-code." msgid "Host Type" -msgstr "Typ hosta" +msgstr "Rodzaj serwera" msgid "" "Orca Slicer can upload G-code files to a printer host. This field must " @@ -12337,7 +12501,7 @@ msgstr "" "wewnątrz." msgid "High extruder current on filament swap" -msgstr "Wysoki prąd extrudera przy wymianie filamentu" +msgstr "Wyższy prąd extrudera przy zmianie filamentu" msgid "" "It may be beneficial to increase the extruder motor current during the " @@ -12391,6 +12555,13 @@ msgstr "" "liczbę retrakcji dla skomplikowanego modelu i zaoszczędzić czas druku, ale " "spowolnić krojenie i generowanie G-code" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" +"Opcja ta obniży temperaturę nieaktywnych ekstruderów, aby zapobiec " +"wyciekaniu filamentu." + msgid "Filename format" msgstr "Format nazwy pliku" @@ -12444,6 +12615,9 @@ msgstr "" "Określ procentowy udział nawisów w stosunku do szerokości ekstruzji i użyj " "różnych prędkości do druku. Dla 100%% nawisów, zostanie użyta prędkość mostu." +msgid "Filament to print walls" +msgstr "Ten filament będzie używany do drukowania ścian" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12494,12 +12668,21 @@ msgstr "" "code jako pierwszy argument, a także będą mogły uzyskać dostęp do ustawień " "konfiguracyjnych Orca Slicer, zytając zmienne środowiskowe." +msgid "Printer type" +msgstr "Typ drukarki" + +msgid "Type of the printer" +msgstr "Rodzaj drukarki" + msgid "Printer notes" msgstr "Notatki o drukarce" msgid "You can put your notes regarding the printer here." msgstr "Tutaj możesz umieścić notatki dotyczące drukarki." +msgid "Printer variant" +msgstr "Wariant drukarki" + msgid "Raft contact Z distance" msgstr "Odległość Z kontaktu z tratwą" @@ -12703,7 +12886,7 @@ msgid "Top and Bottom" msgstr "Na górnych i dolnych" msgid "Extra length on restart" -msgstr "Dodatkowa długość przed wznowieniem" +msgstr "Dodatkowa ilość dla powrotu" msgid "" "When the retraction is compensated after the travel move, the extruder will " @@ -13081,6 +13264,12 @@ msgstr "" "Obszar wypełnienia, który jest mniejszy od wartości progowej zostaje " "zastąpiony wewnętrznym, pełnym wypełnieniem" +msgid "Solid infill" +msgstr "Pełne wypełnienie" + +msgid "Filament to print solid infill" +msgstr "Ten filament będzie używany do drukowania pełnego wypełnienia" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13147,7 +13336,43 @@ msgid "Traditional" msgstr "Tradycyjny" msgid "Temperature variation" -msgstr "Wariacje temperatury" +msgstr "Zmiana temperatury" + +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" +"Różnica temperatur, która ma być zastosowana, gdy ekstruder nie jest " +"aktywny. Wartość nie będzie użyta, gdy \"temperatura w bezczynności\" w " +"ustawieniach filamentu jest wartość inną niż zero." + +msgid "Preheat time" +msgstr "Czas wstępnego podgrzewania" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" +"Aby skrócić czas oczekiwania po zmianie narzędzia, Orca może wstępnie " +"podgrzać następne narzędzie, gdy bieżące narzędzie jest nadal używane. To " +"ustawienie określa czas w sekundach do wstępnego podgrzania następnego " +"narzędzia. Orca wstawi polecenie M104, aby podgrzać narzędzie z " +"wyprzedzeniem." + +msgid "Preheat steps" +msgstr "Kroki wstępnego podgrzewania" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" +"Wprowadź wiele poleceń dotyczących podgrzewania (np. M104.1). Funkcja ta " +"działa tylko w drukarce Prusa XL. Dla pozostałych drukarek ustaw wartość na " +"1." msgid "Start G-code" msgstr "Początkowy G-code" @@ -13190,7 +13415,7 @@ msgid "Enable filament ramming" msgstr "Włącz szybką ekstruzję filamentu" msgid "No sparse layers (beta)" -msgstr "Brak warstw bez czyszczenia (beta)" +msgstr "Warstwy bez czyszczenia (beta)" msgid "" "If enabled, the wipe tower will not be printed on layers with no " @@ -13205,7 +13430,7 @@ msgstr "" "wydrukiem." msgid "Prime all printing extruders" -msgstr "Przygotuj wszystkie extrudery do drukowania" +msgstr "Wyczyść wszystkie używane ekstrudery" msgid "" "If enabled, all printing extruders will be primed at the front edge of the " @@ -13824,12 +14049,6 @@ msgstr "" "Kąt w wierzchołku stożka, który jest używany do stabilizacji wieży " "czyszczącej. Większy kąt oznacza szerszą podstawę." -msgid "Wipe tower purge lines spacing" -msgstr "Odległość między liniami na wieży oczyszczającej" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Rozmieszczenie linii czyszczenia na wieży czyszczącej." - msgid "Maximum wipe tower print speed" msgstr "Maksymalna prędkość drukowania wieży czyszczącej" @@ -13872,16 +14091,13 @@ msgstr "" "W przypadku zewnętrznych obwodów wieży czyszczącej prędkość jej obwodu " "wewnętrznego jest niezależna od tego ustawienia." -msgid "Wipe tower extruder" -msgstr "Ekstruder dla wieży czyszczącej" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." msgstr "" -"Extruder używany do drukowania obrysów wieży czyszczącej. Ustaw na 0, aby " -"użyć tego, który jest dostępny (preferowany jest ten, w którym załadowany " -"jest filament nierozpuszczalny)." +"Extruder używany do drukowania obrysów wieży czyszczącej. Ustaw na " +"\"Domyślny\", aby użyć tego, który jest dostępny (preferowany jest ten, w " +"którym załadowany jest filament nierozpuszczalny)." msgid "Purging volumes - load/unload volumes" msgstr "Objętości czyszczenia - objętości ładowania/rozładowania" @@ -13926,12 +14142,43 @@ msgstr "" "kolory filamentów mogą się wymieszać." msgid "Maximal bridging distance" -msgstr "Maksymalna odległość mostkowania" +msgstr "Maksymalna odległość mostów" msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Maksymalna odległość między podporami na rzadkich sekcjach wypełnienia." +msgid "Wipe tower purge lines spacing" +msgstr "Odległość między liniami na wieży oczyszczającej" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Rozmieszczenie linii czyszczenia na wieży czyszczącej." + +msgid "Extra flow for purging" +msgstr "Dodatkowy przepływ podczas czyszczenia" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" +"Dodatkowy przepływ stosowany w ekstruzjach na wieży czyszczącej. Powoduje " +"to, że linie czyszczące są grubsze lub cieńsze niż standardowo. Odstępy " +"regulowane są automatycznie." + +msgid "Idle temperature" +msgstr "Temperatura w bezczynności" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" +"Temperatura dyszy, gdy narzędzie nie jest aktualnie używane w konfiguracjach " +"wielonarzędziowych. Jest to używane tylko wtedy, gdy \"Zapobieganie " +"wyciekaniu\" jest aktywne w ustawieniach druku. Wartość zero wyłącza tę " +"funkcję." + msgid "X-Y hole compensation" msgstr "Kompensacja otworów X-Y" @@ -14282,6 +14529,16 @@ msgid "Currently planned extra extruder priming after deretraction." msgstr "" "Obecnie planowane dodatkowe czyszczenie ekstrudera po powrocie z retrakcji." +msgid "Absolute E position" +msgstr "Pozycja bezwzględna E" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" +"Bieżąca pozycja osi ekstrudera. Używany tylko z bezwzględnym adresowaniem " +"ekstrudera." + msgid "Current extruder" msgstr "Aktualny extruder" @@ -14331,6 +14588,14 @@ msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" "Wektory logiczne określające, czy dany ekstruder jest używany w wydruku" +msgid "Has single extruder MM priming" +msgstr "Umożliwia drukowanie MM z jednym ekstruderem" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" +"Czy w tym wydruku używane są dodatkowe obszary czyszczenia " +"wielomateriałowego?" + msgid "Volume per extruder" msgstr "Objętość na extruder" @@ -14493,6 +14758,16 @@ msgstr "Fizyczna nazwa drukarki" msgid "Name of the physical printer used for slicing." msgstr "Nazwa fizycznej drukarki używanej do przygotowywania pliku do druku." +msgid "Number of extruders" +msgstr "Liczba ekstruderów" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" +"Całkowita liczba ekstruderów, niezależnie od tego, czy są one używane w " +"bieżącym wydruku." + msgid "Layer number" msgstr "Numer warstwy" @@ -16941,6 +17216,62 @@ msgstr "" "takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może " "zmniejszyć prawdopodobieństwo odkształceń." +#~ msgid "up to" +#~ msgstr "do" + +#~ msgid "above" +#~ msgstr "powyżej" + +#~ msgid "from" +#~ msgstr "od" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Zmiana języka aplikacji przy jednoczesnym istniejących zmodyfikowanych " +#~ "ustawieniach." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Lewy przycisk myszy" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Lewy przycisk myszy" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Dowolna strzałka" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Lewy przycisk myszy" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Lewy przycisk myszy" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Kółko myszy" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Kółko myszy" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Kółko myszy" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Kółko myszy" + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Głębokość zazębiania się podzielonego na segmenty regionu. Wartość zero " +#~ "wyłącza tę funkcję." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Ekstruder dla wieży czyszczącej" + #~ msgid "Current association: " #~ msgstr "Aktualnie powiązano: " @@ -16984,83 +17315,6 @@ msgstr "" #~ "Rozmiar pliku przekracza limit przesyłania 100 MB. Proszę przesłać plik " #~ "za pomocą panelu." -#~ msgid "Enable adaptive pressure advance (beta)" -#~ msgstr "Włącz adaptacyjny wzrost ciśnienia (beta)" - -#~ msgid "" -#~ "With increasing print speeds, it has been observed that the effective PA " -#~ "value typically decreases. This means that a single PA value is not 100% " -#~ "optimal for all features and a compromise value is usually used, that " -#~ "does not cause too much bulging on slower features while also not causing " -#~ "gaps on faster features.\n" -#~ "\n" -#~ "This feature aims to address this limitation by modeling the response of " -#~ "your printer's extrusion system depending on the speed it is printing at. " -#~ "Internally it generates a fitted model that can extrapolate the needed " -#~ "pressure advance for any given print speed, which is then emmited to the " -#~ "printer depending on the current print speed.\n" -#~ "\n" -#~ "When enabled the pressure advance value above is overriden. However, a " -#~ "reasonable default value above isstrongly recomended to act as a fallback " -#~ "in case the model calculations fail." -#~ msgstr "" -#~ "Wraz ze wzrostem prędkości druku zaobserwowano, że efektywna wartość PA " -#~ "zazwyczaj maleje. Oznacza to, że pojedyncza wartość PA nie jest w 100% " -#~ "optymalna dla wszystkich elementów i zwykle stosowana jest wartość " -#~ "kompromisowa, która nie powoduje zbyt dużego \"wypuklenia\" na elementach " -#~ "drukowanych wolniej, a jednocześnie nie powoduje przerw na elementach " -#~ "drukowanych szybciej.\n" -#~ "\n" -#~ "Ta funkcja ma na celu rozwiązanie tego ograniczenia poprzez modelowanie " -#~ "reakcji ekstrudera w zależności od prędkości drukowania. Wewnętrznie " -#~ "generuje dopasowany model, który może przewidzieć jakie będzie wymagane " -#~ "ciśnienie dla dowolnej prędkości drukowania, który jest następnie " -#~ "przekazywany do drukarki w zależności od bieżącej prędkości druku.\n" -#~ "\n" -#~ "Po włączeniu powyższa wartość PA jest nadpisywana. Zdecydowanie zaleca " -#~ "się jednak przyjęcie rozsądnej wartości domyślnej, która będzie działać " -#~ "jako rozwiązanie awaryjne w przypadku nieprawidłowych obliczeń dla modelu." - -#~ msgid "Adaptive pressure advance measurements (beta)" -#~ msgstr "Adaptacyjny pomiar ciśnienia (beta)" - -#~ msgid "" -#~ "Add pairs of pressure advance values and the speed they were measured at, " -#~ "separated by a coma. One set of values per line. For example\n" -#~ "0.03,100\n" -#~ "0.027,150 etc.\n" -#~ "\n" -#~ "How to calibrate:\n" -#~ "1. Run the pressure advance test for at least 3 speeds per filament. It " -#~ "is recommended that the test is runfor at least the speed of the external " -#~ "perimeters, the speed of the internal perimeters and the fastest feature " -#~ "print speed in your profile (usually its the sparse or solid infill\n" -#~ "2. Take note of the optimal Pressure advance value for each speed. The PA " -#~ "ideal PA value should be decreasing the faster the speed is. If it is " -#~ "not, confirm that your extruder is functioning correctly3. Enter the " -#~ "pairs of PA values and Speeds in the text box here and save your filament " -#~ "profile" -#~ msgstr "" -#~ "Dodaj pary wartości przyspieszenia ciśnienia i prędkości, przy których " -#~ "zostały zmierzone, oddzielone przecinkiem. Jeden zestaw wartości na " -#~ "wiersz. Na przykład\n" -#~ "0.03,100\n" -#~ "0.027,150 itd.\n" -#~ "\n" -#~ "Jak skalibrować:\n" -#~ "1. Przeprowadź test PA dla co najmniej 3 prędkości na filament. Zaleca " -#~ "się przeprowadzenie testu PA co najmniej dla zewnętrznych obwodów, " -#~ "wewnętrznych obwodów i najszybszej prędkości drukowania cechy w profilu " -#~ "(zwykle jest to rzadkie lub pełne wypełnienie).\n" -#~ "2. Zanotuj optymalną wartość PA dla każdej prędkości. Idealna wartość PA " -#~ "powinna maleć wraz ze wzrostem prędkości. Jeśli tak nie jest, sprawdź, " -#~ "czy ekstruder działa prawidłowo. \n" -#~ "3.Wprowadź pary wartości PA i prędkości w polu tekstowym i zapisz profil " -#~ "filamentu." - -#~ msgid "Flow ratio and Pressure Advance" -#~ msgstr "Współczynnik przepływu i Wzrost ciśnienia (PA)" - #~ msgid "param_information" #~ msgstr "param_information" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index b888242785..42ecd5c780 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-06-01 21:51-0300\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" @@ -80,9 +80,6 @@ msgstr "" msgid "On overhangs only" msgstr "Apenas em 'overhangs'" -msgid "Auto support threshold angle: " -msgstr "Ângulo max. do suporte automático: " - msgid "Circle" msgstr "Círculo" @@ -102,6 +99,9 @@ msgstr "Permite pintura apenas em facetas selecionadas por: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Realçar faces conforme a inclinação." +msgid "Auto support threshold angle: " +msgstr "Ângulo max. do suporte automático: " + msgid "No auto support" msgstr "Sem suporte automático" @@ -4163,15 +4163,6 @@ msgstr "Tempo total" msgid "Total cost" msgstr "Custo total" -msgid "up to" -msgstr "até" - -msgid "above" -msgstr "acima" - -msgid "from" -msgstr "de" - msgid "Color Scheme" msgstr "Esquema de Cores" @@ -4235,12 +4226,12 @@ msgstr "Quantidade de trocas de filamento" msgid "Cost" msgstr "Custo" -msgid "Color change" -msgstr "Mudança de Cor" - msgid "Print" msgstr "Imprimir" +msgid "Color change" +msgstr "Mudança de Cor" + msgid "Printer" msgstr "Impressora" @@ -6166,6 +6157,14 @@ msgstr "Objeto com múltiplas peças foi detectado" msgid "The file does not contain any geometry data." msgstr "O arquivo não contém dados de geometria." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objeto muito grande" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6173,9 +6172,6 @@ msgstr "" "Seu objeto parece ser muito grande. Deseja dimensioná-lo para caber na mesa " "de aquecimento automaticamente?" -msgid "Object too large" -msgstr "Objeto muito grande" - msgid "Export STL file:" msgstr "Exportar arquivo STL:" @@ -6554,10 +6550,6 @@ msgstr "Você deseja continuar?" msgid "Language selection" msgstr "Seleção de Idioma" -msgid "Switching application language while some presets are modified." -msgstr "" -"A mudança do idioma do aplicativo enquanto alguns presets estão modificados." - msgid "Changing application language" msgstr "Alterando o idioma do aplicativo" @@ -6751,6 +6743,12 @@ msgstr "" "Com esta opção habilitada, você pode enviar uma tarefa para vários " "dispositivos ao mesmo tempo e gerenciar vários dispositivos." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Rede" @@ -7760,12 +7758,21 @@ msgstr "Filamento de suporte" msgid "Tree supports" msgstr "Suportes de árvore" -msgid "Skirt" -msgstr "Saia" +msgid "Multimaterial" +msgstr "Multimaterial" msgid "Prime tower" msgstr "Torre Prime" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Saia" + msgid "Special mode" msgstr "Modo especial" @@ -7818,6 +7825,9 @@ msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" "Faixa de temperatura recomendada para esta boquilha. 0 significa não definido" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Temperatura da câmara de impressão" @@ -7927,9 +7937,6 @@ msgstr "G-code de início do filamento" msgid "Filament end G-code" msgstr "G-code final do filamento" -msgid "Multimaterial" -msgstr "Multimaterial" - msgid "Wipe tower parameters" msgstr "Parâmetros da Torre Prime" @@ -8021,12 +8028,30 @@ msgstr "Limitação de Jerk" msgid "Single extruder multimaterial setup" msgstr "Configuração de múltiplos materiais com um único extrusor" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Diâmetro do bico" + msgid "Wipe tower" msgstr "Torre Prime" msgid "Single extruder multimaterial parameters" msgstr "Parâmetros de múltiplos materiais com um único extrusor" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Limites de altura da camada" @@ -8521,11 +8546,8 @@ msgstr "Lista de objetos" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importar dados de geometria de arquivos STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Colar da área de transferência" @@ -8575,33 +8597,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Recolher/Expandir a barra lateral" -msgid "⌘+Any arrow" -msgstr "⌘+Qualquer seta" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Movimento no espaço da câmera" -msgid "⌥+Left mouse button" -msgstr "Botão esquerdo do mouse ⌥+" - msgid "Select a part" msgstr "Selecionar uma peça" -msgid "⌘+Left mouse button" -msgstr "Botão esquerdo do mouse ⌘+" - msgid "Select multiple objects" msgstr "Selecionar vários objetos" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Qualquer seta" - -msgid "Alt+Left mouse button" -msgstr "Botão esquerdo do mouse Alt+" - -msgid "Ctrl+Left mouse button" -msgstr "Botão esquerdo do mouse Ctrl+" - msgid "Shift+Left mouse button" msgstr "Botão esquerdo do mouse Shift+" @@ -8704,24 +8711,12 @@ msgstr "Mesa" msgid "Move: press to snap by 1mm" msgstr "Mover: pressione para ajustar em 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Roda do mouse" - msgid "Support/Color Painting: adjust pen radius" msgstr "Suporte/Pintura em cores: ajustar o raio da caneta" -msgid "⌥+Mouse wheel" -msgstr "⌥+Roda do mouse" - msgid "Support/Color Painting: adjust section position" msgstr "Suporte/Pintura em cores: ajustar a posição da seção" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Roda do mouse" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Roda do mouse" - msgid "Gizmo" msgstr "Gizmo" @@ -9033,6 +9028,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Nenhum objeto pode ser impresso. Talvez seja muito pequeno" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9277,11 +9277,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "A altura de camada variável não é suportada com suportes orgânicos." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Diâmetros de bico diferentes e diâmetros de filamento diferentes não são " -"permitidos quando a Torre Prime está ativa." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9291,9 +9290,9 @@ msgstr "" "extrusora (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"A prevenção de vazamento atualmente não é suportada com a Torre Prime ativa." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10779,6 +10778,86 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" "Pressure advance(Klipper) também conhecido como Linear advance factor(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10968,6 +11047,21 @@ msgstr "" "O filamento é resfriado movendo-se para frente e para trás nos tubos de " "resfriamento. Especifique o número desejado desses movimentos." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Velocidade do primeiro movimento de resfriamento" @@ -11819,10 +11913,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profundidade de entrelaçamento de uma região segmentada" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profundidade de entrelaçamento de uma região segmentada. Zero desativa essa " -"funcionalidade." msgid "Use beam interlocking" msgstr "" @@ -12234,9 +12330,6 @@ msgstr "" "velocidade para tentar manter o tempo mínimo de camada acima, quando a " "desaceleração para um melhor resfriamento da camada estiver habilitada." -msgid "Nozzle diameter" -msgstr "Diâmetro do bico" - msgid "Diameter of nozzle" msgstr "Diâmetro do bico" @@ -12339,6 +12432,11 @@ msgstr "" "número de retratações para modelos complexos e economizar tempo de " "impressão, mas torna a geração de fatiamento e G-code mais lenta" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Formato do nome do arquivo" @@ -12388,6 +12486,9 @@ msgstr "" "e usa uma velocidade diferente de impressão. Para overhangs 100%%, a " "velocidade de ponte é usada." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12437,12 +12538,21 @@ msgstr "" "o arquivo G-code como primeiro argumento, e eles podem acessar as " "configurações do Orca Slicer lendo variáveis de ambiente." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Notas da impressora" msgid "You can put your notes regarding the printer here." msgstr "Você pode inserir suas observações sobre a impressora aqui." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distância (Z) de contato da Jangada" @@ -13013,6 +13123,12 @@ msgstr "" "A área de preenchimento não sólido que é menor que o valor de limiar é " "substituída por preenchimento sólido interno" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13079,6 +13195,31 @@ msgstr "Tradicional" msgid "Temperature variation" msgstr "Variação de temperatura" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Código de Início" @@ -13757,12 +13898,6 @@ msgstr "" "Ângulo no ápice do cone usado para estabilizar a Torre Prime. Um ângulo " "maior significa uma base mais larga." -msgid "Wipe tower purge lines spacing" -msgstr "Espaçamento das linhas de purga da Torre Prime" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Espaçamento das linhas de purga na Torre Prime." - msgid "Maximum wipe tower print speed" msgstr "Velocidade máxima de impressão da Torre Prime" @@ -13807,9 +13942,6 @@ msgstr "" "Para os perímetros externos da Torre Prime, a velocidade do perímetro " "interno é utilizada independentemente dessa configuração." -msgid "Wipe tower extruder" -msgstr "Extrusora da Torre Prime" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13866,6 +13998,30 @@ msgstr "Distância máxima de ponte" msgid "Maximal distance between supports on sparse infill sections." msgstr "Distância máxima entre suportes em seções de preenchimento não sólido." +msgid "Wipe tower purge lines spacing" +msgstr "Espaçamento das linhas de purga da Torre Prime" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Espaçamento das linhas de purga na Torre Prime." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Compensação XY de furos" @@ -14215,6 +14371,14 @@ msgstr "Desretração extra" msgid "Currently planned extra extruder priming after deretraction." msgstr "Priming de extrusora extra planejado atualmente após a desretração." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Extrusora atual" @@ -14264,6 +14428,12 @@ msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" "Vetor de booleanos indicando se uma dada extrusora é utilizada na impressão." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Volume por extrusora" @@ -14426,6 +14596,14 @@ msgstr "Nome da impressora física" msgid "Name of the physical printer used for slicing." msgstr "Nome da impressora física utilizada para fatiar." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Número da camada" @@ -16851,6 +17029,78 @@ msgstr "" "aumentar adequadamente a temperatura da mesa aquecida pode reduzir a " "probabilidade de empenamento?" +#~ msgid "up to" +#~ msgstr "até" + +#~ msgid "above" +#~ msgstr "acima" + +#~ msgid "from" +#~ msgstr "de" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "A mudança do idioma do aplicativo enquanto alguns presets estão " +#~ "modificados." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Qualquer seta" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "Botão esquerdo do mouse ⌥+" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "Botão esquerdo do mouse ⌘+" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Qualquer seta" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Botão esquerdo do mouse Alt+" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Botão esquerdo do mouse Ctrl+" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Roda do mouse" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Roda do mouse" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Roda do mouse" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Roda do mouse" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Diâmetros de bico diferentes e diâmetros de filamento diferentes não são " +#~ "permitidos quando a Torre Prime está ativa." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "A prevenção de vazamento atualmente não é suportada com a Torre Prime " +#~ "ativa." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Profundidade de entrelaçamento de uma região segmentada. Zero desativa " +#~ "essa funcionalidade." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Extrusora da Torre Prime" + #~ msgid "Current association: " #~ msgstr "Associação atual: " diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 2b50d3d9b1..04def26dcd 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.0.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-06-19 16:50+0700\n" "Last-Translator: \n" "Language-Team: andylg@yandex.ru\n" @@ -79,9 +79,6 @@ msgstr "Угол для умной заливки" msgid "On overhangs only" msgstr "Только на свесах" -msgid "Auto support threshold angle: " -msgstr "Пороговый угол автоподдержки: " - msgid "Circle" msgstr "Окружность" @@ -101,6 +98,9 @@ msgstr "Позволяет рисовать на выбранных гранях msgid "Highlight faces according to overhang angle." msgstr "Выделение граней по углу свеса." +msgid "Auto support threshold angle: " +msgstr "Пороговый угол автоподдержки: " + msgid "No auto support" msgstr "Откл. автоподдержку" @@ -4193,15 +4193,6 @@ msgstr "Общее время печати" msgid "Total cost" msgstr "Общая стоимость" -msgid "up to" -msgstr "до" - -msgid "above" -msgstr "после" - -msgid "from" -msgstr "с" - msgid "Color Scheme" msgstr "Цветовая схема" @@ -4265,12 +4256,12 @@ msgstr "Время смены прутка" msgid "Cost" msgstr "Стоимость" -msgid "Color change" -msgstr "Смена цвета" - msgid "Print" msgstr "Печать" +msgid "Color change" +msgstr "Смена цвета" + msgid "Printer" msgstr "Профиль принтера" @@ -6206,6 +6197,14 @@ msgstr "Обнаружена модель, состоящая из нескол msgid "The file does not contain any geometry data." msgstr "Файл не содержит никаких геометрических данных." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Модель слишком большая" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6214,9 +6213,6 @@ msgstr "" "Хотите автоматически уменьшить её масштаб, \n" "чтобы она уместилась на столе?" -msgid "Object too large" -msgstr "Модель слишком большая" - msgid "Export STL file:" msgstr "Экспорт в STL файл:" @@ -6590,9 +6586,6 @@ msgstr "Хотите продолжить?" msgid "Language selection" msgstr "Выбор языка" -msgid "Switching application language while some presets are modified." -msgstr "Смена языка приложения при изменении некоторых профилей." - msgid "Changing application language" msgstr "Изменение языка приложения" @@ -6803,6 +6796,12 @@ msgstr "" "Если включено, вы сможете управлять несколькими устройствами и отправлять " "задания на печать на несколько устройств одновременно." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Сеть" @@ -7819,12 +7818,21 @@ msgstr "Пруток для поддержки" msgid "Tree supports" msgstr "Древовидная поддержка" -msgid "Skirt" -msgstr "Юбка" +msgid "Multimaterial" +msgstr "Экструдер ММ" msgid "Prime tower" msgstr "Черновая башня" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Юбка" + msgid "Special mode" msgstr "Специальные режимы" @@ -7882,6 +7890,9 @@ msgstr "" "Рекомендуемый диапазон температуры сопла для данной пластиковой нити. 0 " "значит не задано." +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Температура в камере" @@ -7993,9 +8004,6 @@ msgstr "Стартовый G-код прутка" msgid "Filament end G-code" msgstr "Завершающий G-код прутка" -msgid "Multimaterial" -msgstr "Экструдер ММ" - msgid "Wipe tower parameters" msgstr "Параметры черновой башни" @@ -8087,12 +8095,30 @@ msgstr "Ограничение рывка" msgid "Single extruder multimaterial setup" msgstr "Мультиматериальный одиночный экструдер" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Диаметр сопла" + msgid "Wipe tower" msgstr "Черновая башня" msgid "Single extruder multimaterial parameters" msgstr "Параметры мультиматериального одиночного экструдера" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Ограничение высоты слоя" @@ -8617,11 +8643,8 @@ msgstr "Список моделей" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Импорт геометрических данных из STL/STEP/3MF/OBJ/AMF файлов" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Вставить из буфера обмена" @@ -8671,33 +8694,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Свернуть/Развернуть боковую панель" -msgid "⌘+Any arrow" -msgstr "⌘ + Любая стрелка" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Перемещение выбранного по отношению к камере" -msgid "⌥+Left mouse button" -msgstr "⌥ + Левая кнопка мыши" - msgid "Select a part" msgstr "Выбор части модели" -msgid "⌘+Left mouse button" -msgstr "⌘ + Левая кнопка мыши" - msgid "Select multiple objects" msgstr "Выбор нескольких моделей" -msgid "Ctrl+Any arrow" -msgstr "Ctrl + Любая стрелка" - -msgid "Alt+Left mouse button" -msgstr "Alt + Левая кнопка мыши" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl + Левая кнопка мыши" - msgid "Shift+Left mouse button" msgstr "Shift + Левая кнопка мыши" @@ -8800,24 +8808,12 @@ msgstr "Печатная пластина" msgid "Move: press to snap by 1mm" msgstr "Перемещение: Фиксация перемещения на 1 мм" -msgid "⌘+Mouse wheel" -msgstr "⌘ + Колесо мыши" - msgid "Support/Color Painting: adjust pen radius" msgstr "Рисование поддержки/Шва/Покраски: регулировка радиуса кисти" -msgid "⌥+Mouse wheel" -msgstr "⌥ + Колесо мыши" - msgid "Support/Color Painting: adjust section position" msgstr "Рисование поддержки/Шва/Покраски: регулировка положения сечения" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl + Колесо мыши" - -msgid "Alt+Mouse wheel" -msgstr "Alt + Колесо мыши" - msgid "Gizmo" msgstr "Гизмо" @@ -9130,6 +9126,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Печать моделей невозможна. Возможно, они слишком маленькие." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9383,11 +9384,10 @@ msgstr "" "Функция переменной высоты слоя не совместима органическими поддержками." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"При включении черновой башни не допускается использования разных диаметров " -"сопел и разных диаметров пластиковой нити." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9397,10 +9397,9 @@ msgstr "" "относительная адресация экструдера (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Предотвращение течи материала с помощью черновой башни в настоящее время не " -"поддерживается." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10892,6 +10891,86 @@ msgstr "" "Pressure advance (Прогнозирование давления) в прошивки Klipper, это одно и " "тоже что Linear advance в прошивке Marlin." +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11089,6 +11168,21 @@ msgstr "" "Пруток охлаждается в охлаждающих трубках путём перемещения назад и вперёд. " "Укажите желаемое количество таких движений." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Скорость первого охлаждающего движения" @@ -11939,10 +12033,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Глубина взаимосвязи сегментированной области" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Глубина взаимосвязи сегментированной области. Установите 0 для отключения " -"этой функции." msgid "Use beam interlocking" msgstr "" @@ -12355,9 +12451,6 @@ msgstr "" "сохранить минимальное время слоя, указанное выше, если включена опция " "«Замедлять печать для лучшего охлаждения слоёв»." -msgid "Nozzle diameter" -msgstr "Диаметр сопла" - msgid "Diameter of nozzle" msgstr "Диаметр сопла" @@ -12457,6 +12550,11 @@ msgstr "" "Это поможет снизить количество откатов при печати сложной модели и " "сэкономить время печати, но увеличит время нарезки и генерации G-кода." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Формат имени файла" @@ -12506,6 +12604,9 @@ msgstr "" "Определяет процент нависания относительно ширины линии и использует разную " "скорость печати. Для 100%%-го свеса используется скорость печати мостов." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12556,12 +12657,21 @@ msgstr "" "качестве первого аргумента, и они смогут получить доступ к настройкам " "конфигурации Orca Slicer, читая переменные окружения." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Примечания к принтеру" msgid "You can put your notes regarding the printer here." msgstr "Здесь вы можете написать свои замечания о текущем принтере." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Расстояние от подложки до модели по вертикали" @@ -13137,6 +13247,12 @@ msgstr "" "Область с разреженным заполнением, размер которого меньше этого порогового " "значения, заменяется сплошным заполнением." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13204,6 +13320,31 @@ msgstr "Обычный" msgid "Temperature variation" msgstr "Колебания температуры" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Стартовый G-код" @@ -13908,12 +14049,6 @@ msgstr "" "предотвращения опрокидывания черновой башни. Больший угол означает более " "широкое основание конуса." -msgid "Wipe tower purge lines spacing" -msgstr "Расстояние между линиями очистки черновой башни" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Расстояние между линиями очистки на черновой башне." - msgid "Maximum wipe tower print speed" msgstr "Максимальная скорость печати черновой башни" @@ -13950,9 +14085,6 @@ msgstr "" "скоростях и что образование соплей при смене инструмента хорошо " "контролируется." -msgid "Wipe tower extruder" -msgstr "Экструдер черновой башни" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -14007,6 +14139,30 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Максимальное расстояние между опорами на разряженных участках заполнения." +msgid "Wipe tower purge lines spacing" +msgstr "Расстояние между линиями очистки черновой башни" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Расстояние между линиями очистки на черновой башне." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Коррекция размеров отверстий по XY" @@ -14367,6 +14523,14 @@ msgstr "Доп. выдавливание" msgid "Currently planned extra extruder priming after deretraction." msgstr "Запланированная дополнительная предзарядка экструдера после подачи." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Текущий экструдер" @@ -14417,6 +14581,12 @@ msgstr "" "Вектор логических значений, указывающий, используется ли данный экструдер в " "печати." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Объём для каждого экструдера" @@ -14580,6 +14750,14 @@ msgstr "Имя физического принтера" msgid "Name of the physical printer used for slicing." msgstr "Имя физического принтера, используемого для нарезки." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Номер слоя" @@ -17020,6 +17198,76 @@ msgstr "" "ABS, повышение температуры подогреваемого стола может снизить эту " "вероятность?" +#~ msgid "up to" +#~ msgstr "до" + +#~ msgid "above" +#~ msgstr "после" + +#~ msgid "from" +#~ msgstr "с" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Смена языка приложения при изменении некоторых профилей." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘ + Любая стрелка" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥ + Левая кнопка мыши" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘ + Левая кнопка мыши" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl + Любая стрелка" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt + Левая кнопка мыши" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl + Левая кнопка мыши" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘ + Колесо мыши" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥ + Колесо мыши" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl + Колесо мыши" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt + Колесо мыши" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "При включении черновой башни не допускается использования разных " +#~ "диаметров сопел и разных диаметров пластиковой нити." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Предотвращение течи материала с помощью черновой башни в настоящее время " +#~ "не поддерживается." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Глубина взаимосвязи сегментированной области. Установите 0 для отключения " +#~ "этой функции." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Экструдер черновой башни" + #~ msgid "Associate prusaslicer://" #~ msgstr "Ассоциация c prusaslicer://" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 77b55c8879..ee52d153f3 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,9 +71,6 @@ msgstr "Smart fyllningsvinkel" msgid "On overhangs only" msgstr "Endast på överhäng" -msgid "Auto support threshold angle: " -msgstr "Automatisk support tröskelsvinkel: " - msgid "Circle" msgstr "Cirkel" @@ -93,6 +90,9 @@ msgstr "Tillåter målning endast på fasetter som valts av: ”%1%”" msgid "Highlight faces according to overhang angle." msgstr "Markera ytor enligt överhängs vinkeln." +msgid "Auto support threshold angle: " +msgstr "Automatisk support tröskelsvinkel: " + msgid "No auto support" msgstr "Ingen auto support" @@ -4053,15 +4053,6 @@ msgstr "Total tid" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "upp till" - -msgid "above" -msgstr "över" - -msgid "from" -msgstr "från" - msgid "Color Scheme" msgstr "Färgschema" @@ -4125,12 +4116,12 @@ msgstr "Filament bytes tider" msgid "Cost" msgstr "Kostnad" -msgid "Color change" -msgstr "Färg byte" - msgid "Print" msgstr "Skriv ut" +msgid "Color change" +msgstr "Färg byte" + msgid "Printer" msgstr "Skrivare" @@ -6011,6 +6002,14 @@ msgstr "Ett objekt med multipla delar har upptäckts" msgid "The file does not contain any geometry data." msgstr "Filen innehåller ingen geometrisk data." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objektet är för stort" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6018,9 +6017,6 @@ msgstr "" "Objektet verkar vara för stort, vill du skala ner det så att det passar " "byggplattan automatiskt?" -msgid "Object too large" -msgstr "Objektet är för stort" - msgid "Export STL file:" msgstr "Exportera STL-fil:" @@ -6385,9 +6381,6 @@ msgstr "Fortsätta?" msgid "Language selection" msgstr "Språkval" -msgid "Switching application language while some presets are modified." -msgstr "Byter språk medans inställningarna ändras." - msgid "Changing application language" msgstr "Byter språk" @@ -6569,6 +6562,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "" @@ -7557,12 +7556,21 @@ msgstr "Support filament" msgid "Tree supports" msgstr "" -msgid "Skirt" +msgid "Multimaterial" msgstr "" msgid "Prime tower" msgstr "Prime torn" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "" + msgid "Special mode" msgstr "Special läge" @@ -7616,6 +7624,9 @@ msgstr "" "Rekommenderat nozzel temperaturs område för detta filament. 0 betyder inte " "fastställt" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7724,9 +7735,6 @@ msgstr "Filament start G-kod" msgid "Filament end G-code" msgstr "Filament stop G-kod" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "" @@ -7816,12 +7824,30 @@ msgstr "Jerk begränsning" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Nozzel diameter" + msgid "Wipe tower" msgstr "" msgid "Single extruder multimaterial parameters" msgstr "" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Lagerhöjds begränsning" @@ -8300,11 +8326,8 @@ msgstr "Objektlista" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importera geometri data från STL/STEP/3MF/OBJ/AMF filer" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Skift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Klistra in ifrån urklipp" @@ -8353,33 +8376,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Dölj/Visa meny" -msgid "⌘+Any arrow" -msgstr "⌘+Valfri pil" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Rörelse i kamera område" -msgid "⌥+Left mouse button" -msgstr "⌥+Vänster musknapp" - msgid "Select a part" msgstr "Välj del" -msgid "⌘+Left mouse button" -msgstr "⌘+Vänster musknapp" - msgid "Select multiple objects" msgstr "Välj flera objekt" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Valfri pil" - -msgid "Alt+Left mouse button" -msgstr "Alt+Vänster musknapp" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+vänster musknapp" - msgid "Shift+Left mouse button" msgstr "Shift+Vänster musknapp" @@ -8482,24 +8490,12 @@ msgstr "Plätering/Förgyllning" msgid "Move: press to snap by 1mm" msgstr "Flytta: tryck för att låsa med 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Mushjul" - msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Färgläggning: justera penn radie" -msgid "⌥+Mouse wheel" -msgstr "⌥+Mushjul" - msgid "Support/Color Painting: adjust section position" msgstr "Support/Färgläggning:justera sektions positionen" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+mushjul" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Mushjul" - msgid "Gizmo" msgstr "Gizmo" @@ -8805,6 +8801,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Inget objekt kan skrivas ut. Det kan vara för litet" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9038,11 +9039,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variabel lagerhöjd stöds inte med organiska support." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Olika nozzel diametrar och olika filament diametrar är inte tillåtna när " -"prime tower är aktiverat." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9052,9 +9052,9 @@ msgstr "" "(use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Förebyggande av läckage stöds för närvarande inte med prime tower aktiverat." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10290,6 +10290,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10459,6 +10539,21 @@ msgid "" "Specify desired number of these moves." msgstr "" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "" @@ -11180,10 +11275,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Sammanhängande djup i en segmenterad region" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Sammankopplingsdjup för en segmenterad region. Noll inaktiverar denna " -"funktion." msgid "Use beam interlocking" msgstr "" @@ -11538,9 +11635,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Nozzel diameter" - msgid "Diameter of nozzle" msgstr "Diametern på nozzeln" @@ -11626,6 +11720,11 @@ msgstr "" "indragning för komplexa modeller och spara utskriftstid, men gör beredning " "och generering av G-kod långsammare." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Filnamns format" @@ -11670,6 +11769,9 @@ msgstr "" "hastigheter för att skriva ut. Vid 100%% överhäng, bridge/brygg hastighet " "användas." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11703,12 +11805,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Raft kontakt Z avstånd" @@ -12206,6 +12317,12 @@ msgstr "" "Sparsam ifyllnads ytor som är mindre än detta gränsvärde ersätts med inre " "solid ifyllnad" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12268,6 +12385,31 @@ msgstr "Traditionell" msgid "Temperature variation" msgstr "Temperatur variation" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Starta G-kod" @@ -12880,12 +13022,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -12911,9 +13047,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12964,6 +13097,30 @@ msgstr "" msgid "Maximal distance between supports on sparse infill sections." msgstr "" +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y håls kompensation" @@ -13270,6 +13427,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13312,6 +13477,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13456,6 +13627,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -15772,6 +15951,73 @@ msgstr "" "ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten " "för vridning." +#~ msgid "up to" +#~ msgstr "upp till" + +#~ msgid "above" +#~ msgstr "över" + +#~ msgid "from" +#~ msgstr "från" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Byter språk medans inställningarna ändras." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Skift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Valfri pil" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Vänster musknapp" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Vänster musknapp" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Valfri pil" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Vänster musknapp" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+vänster musknapp" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Mushjul" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Mushjul" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+mushjul" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Mushjul" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Olika nozzel diametrar och olika filament diametrar är inte tillåtna när " +#~ "prime tower är aktiverat." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Förebyggande av läckage stöds för närvarande inte med prime tower " +#~ "aktiverat." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Sammankopplingsdjup för en segmenterad region. Noll inaktiverar denna " +#~ "funktion." + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Ange ett giltigt värde (K i 0~0.3)" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 1810972152..1aec931ee7 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-07-11 00:22+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "Akıllı doldurma açısı" msgid "On overhangs only" msgstr "Yalnızca çıkıntılarda" -msgid "Auto support threshold angle: " -msgstr "Otomatik destek eşik açısı: " - msgid "Circle" msgstr "Daire" @@ -97,6 +94,9 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Yüzleri çıkıntı açısına göre vurgulayın." +msgid "Auto support threshold angle: " +msgstr "Otomatik destek eşik açısı: " + msgid "No auto support" msgstr "Otomatik destek yok" @@ -728,8 +728,8 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı tipi " -"seçmeyi deneyin." +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " +"tipi seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." @@ -1013,9 +1013,9 @@ msgid "" "Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " -"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz " -"gerekir." +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " +"uygulama seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini " +"belirtmeniz gerekir." msgid "No symbol" msgstr "Sembol yok" @@ -1467,8 +1467,8 @@ msgstr "Bilgi" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will not " -"be affected." +"Please note, application settings will be lost, but printer profiles will " +"not be affected." msgstr "" "OrcaSlicer konfigürasyon dosyası bozulmuş olabilir ve ayrıştırılamayabilir.\n" "OrcaSlicer, konfigürasyon dosyasını yeniden oluşturmayı denedi.\n" @@ -2091,8 +2091,8 @@ msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate cut " -"infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut infornation first." msgstr "" "Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" "Bundan sonra model tutarlılığı garanti edilemez.\n" @@ -2155,7 +2155,8 @@ msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." msgid "" "If first selected item is a part, the second one should be part in the same " "object." -msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." +msgstr "" +"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." msgid "The type of the last solid object part is not to be changed." msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." @@ -2512,14 +2513,16 @@ msgstr "" msgid "Arranging done." msgstr "Hizalama tamamlandı." -msgid "Arrange failed. Found some exceptions when processing object geometries." +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." msgstr "" "Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " "bulundu." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single bed:\n" +"Arrangement ignored the following objects which can't fit into a single " +"bed:\n" "%s" msgstr "" "Hizalama tek tablaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" @@ -2619,7 +2622,8 @@ msgstr "" "deneyin." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." +msgstr "" +"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." msgid "" "Failed to upload print file to FTP. Please check the network status and try " @@ -2675,8 +2679,8 @@ msgid "Importing SLA archive" msgstr "SLA arşivi içe aktarılıyor" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA printer " -"preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." msgstr "" "SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " "önce bazı SLA yazıcı ön ayarlarını etkinleştirin." @@ -2688,8 +2692,8 @@ msgid "Importing done." msgstr "İçe aktarma tamamlandı." msgid "" -"The imported SLA archive did not contain any presets. The current SLA presets " -"were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." msgstr "" "İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " "ayarları geri dönüş olarak kullanıldı." @@ -2746,8 +2750,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " -"açık kaynaklı bileşenleri kullanır" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " +"olan açık kaynaklı bileşenleri kullanır" #, c-format, boost-format msgid "About %s" @@ -2761,7 +2765,8 @@ msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " +"almaktadır." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "" @@ -2840,7 +2845,8 @@ msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" +msgstr "" +"Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" msgid "Other Color" msgstr "Diğer renk" @@ -2852,9 +2858,9 @@ msgid "Dynamic flow calibration" msgstr "Dinamik akış kalibrasyonu" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration results. " -"Please fill in the same values as the actual printing. They can be auto-" -"filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration " +"results. Please fill in the same values as the actual printing. They can be " +"auto-filled by selecting a filament preset." msgstr "" "Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " "etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " @@ -2989,7 +2995,8 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " +"edecektir." msgid "Group" msgstr "Grup" @@ -3027,8 +3034,8 @@ msgid "Insertion update" msgstr "Ekleme güncellemesi" msgid "" -"The AMS will automatically read the filament information when inserting a new " -"Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." msgstr "" "AMS, yeni bir Bambu Lab filamenti takıldığında filament bilgilerini otomatik " "olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." @@ -3051,16 +3058,17 @@ msgid "Power on update" msgstr "Güncellemeyi aç" msgid "" -"The AMS will automatically read the information of inserted filament on start-" -"up. It will take about 1 minute.The reading process will roll filament spools." +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." msgstr "" "AMS, başlangıçta takılan filamentin bilgilerini otomatik olarak okuyacaktır. " "Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." msgid "" -"The AMS will not automatically read information from inserted filament during " -"startup and will continue to use the information recorded before the last " -"shutdown." +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." msgstr "" "AMS, başlatma sırasında takılan filamentden bilgileri otomatik olarak okumaz " "ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." @@ -3074,8 +3082,8 @@ msgid "" "automatically." msgstr "" "AMS, filament bilgisi güncellendikten sonra Bambu filamentin kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " -"güncellenecektir." +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " +"olarak güncellenecektir." msgid "AMS filament backup" msgstr "AMS filament yedeklemesi" @@ -3107,8 +3115,8 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " -"kontrol edin, kontrol edip yeniden deneyin." +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " +"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " @@ -3196,8 +3204,8 @@ msgid "" "device. The corrupted output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Hedef cihazda " -"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı " -"deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." +"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz " +"kullanmayı deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." #, boost-format msgid "" @@ -3430,8 +3438,8 @@ msgid "Send to" msgstr "Gönderildi" msgid "" -"printers at the same time.(It depends on how many devices can undergo heating " -"at the same time.)" +"printers at the same time.(It depends on how many devices can undergo " +"heating at the same time.)" msgstr "" "aynı anda kaç yazıcının ısıtma işleminden geçebileceği, aynı anda " "ısıtılabilecek cihaz sayısına bağlıdır." @@ -3538,8 +3546,8 @@ msgid "" "The recommended minimum temperature is less than 190 degree or the " "recommended maximum temperature is greater than 300 degree.\n" msgstr "" -"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum sıcaklık " -"300 dereceden yüksektir.\n" +"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum " +"sıcaklık 300 dereceden yüksektir.\n" msgid "" "The recommended minimum temperature cannot be higher than the recommended " @@ -3576,13 +3584,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature,it " -"may result in material softening and clogging.The maximum safe temperature " -"for the material is %d" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" msgstr "" -"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, malzemenin " -"yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum güvenli " -"sıcaklık %d'dir" +"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, " +"malzemenin yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum " +"güvenli sıcaklık %d'dir" msgid "" "Too small layer height.\n" @@ -3636,16 +3644,16 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness is " -"set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness " +"is set to All. " msgstr "" -"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından " -"emin olunduğunda iyi çalışmaz. " +"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak " +"ayarlandığından emin olunduğunda iyi çalışmaz. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable alternate " -"extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable " +"alternate extra wall\n" "No - Dont use alternate extra wall" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi? \n" @@ -3722,7 +3730,8 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " +"etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" msgid "Auto bed leveling" @@ -3855,9 +3864,9 @@ msgid "Update failed." msgstr "Güncelleme başarısız." msgid "" -"The current chamber temperature or the target chamber temperature exceeds 45℃." -"In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is " -"not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." msgstr "" "Mevcut hazne sıcaklığı veya hedef hazne sıcaklığı 45 ° C'yi aşıyor Ekstruder " "tıkanmasını önlemek için düşük sıcaklıkta filament (PLA / PETG / TPU) " @@ -3884,7 +3893,8 @@ msgstr "" msgid "Failed to start printing job" msgstr "Yazdırma işi başlatılamadı" -msgid "This calibration does not support the currently selected nozzle diameter" +msgid "" +"This calibration does not support the currently selected nozzle diameter" msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir" msgid "Current flowrate cali param is invalid" @@ -3909,12 +3919,12 @@ msgid "" "Damp PVA will become flexible and get stuck inside AMS,please take care to " "dry it before use." msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " -"kurutmaya dikkat edin." +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " +"önce kurutmaya dikkat edin." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " -"please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." msgstr "" "CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " "kolaydır, lütfen dikkatli kullanın." @@ -4109,15 +4119,6 @@ msgstr "Toplam süre" msgid "Total cost" msgstr "Toplam tutar" -msgid "up to" -msgstr "kadar" - -msgid "above" -msgstr "üstünde" - -msgid "from" -msgstr "itibaren" - msgid "Color Scheme" msgstr "Renk Şeması" @@ -4181,12 +4182,12 @@ msgstr "Filament değişim süreleri" msgid "Cost" msgstr "Maliyet" -msgid "Color change" -msgstr "Renk değişimi" - msgid "Print" msgstr "Yazdır" +msgid "Color change" +msgstr "Renk değişimi" + msgid "Printer" msgstr "Yazıcı" @@ -4929,8 +4930,8 @@ msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing the " -"configs." +"Hint: Make sure you have added the corresponding printer before importing " +"the configs." msgstr "" "\n" "İpucu: Yapılandırmaları içe aktarmadan önce ilgili yazıcıyı eklediğinizden " @@ -4979,7 +4980,8 @@ msgid "Please confirm if the printer is connected." msgstr "Lütfen yazıcının bağlı olup olmadığını onaylayın." msgid "" -"The printer is currently busy downloading. Please try again after it finishes." +"The printer is currently busy downloading. Please try again after it " +"finishes." msgstr "" "Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." @@ -4990,7 +4992,8 @@ msgid "Problem occured. Please update the printer firmware and try again." msgstr "" "Sorun oluştu. Lütfen yazıcının ürün yazılımını güncelleyin ve tekrar deneyin." -msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "" +"LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" "Yalnızca LAN Canlı İzleme kapalı. Lütfen yazıcı ekranındaki canlı " "görüntülemeyi açın." @@ -5005,8 +5008,8 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Bağlantı Başarısız. Lütfen ağı kontrol edip tekrar deneyin" msgid "" -"Please check the network and try again, You can restart or update the printer " -"if the issue persists." +"Please check the network and try again, You can restart or update the " +"printer if the issue persists." msgstr "" "Lütfen ağı kontrol edip tekrar deneyin. Sorun devam ederse yazıcıyı yeniden " "başlatabilir veya güncelleyebilirsiniz." @@ -5149,7 +5152,8 @@ msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" "%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "" +"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" msgid "Delete files" msgstr "Dosyaları sil" @@ -5209,8 +5213,8 @@ msgid "" "Reconnecting the printer, the operation cannot be completed immediately, " "please try again later." msgstr "" -"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha sonra " -"tekrar deneyin." +"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha " +"sonra tekrar deneyin." msgid "File does not exist." msgstr "Dosya bulunmuyor." @@ -5293,8 +5297,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki derecelendirmenin " -"üzerine yazılacaktır)" +"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki " +"derecelendirmenin üzerine yazılacaktır)" msgid "Rate" msgstr "Derecelendir" @@ -5890,8 +5894,8 @@ msgstr "Peletler" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " -"bir yazıcı seçin." +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " +"sayfasında bir yazıcı seçin." msgid "Sync filaments with AMS" msgstr "Filamentleri AMS ile senkronize et" @@ -5904,7 +5908,8 @@ msgstr "" "ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync all?" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" msgstr "" "Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " "mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" @@ -5919,13 +5924,13 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." msgid "" -"There are some unknown filaments mapped to generic preset. Please update Orca " -"Slicer or restart Orca Slicer to check if there is an update to system " +"There are some unknown filaments mapped to generic preset. Please update " +"Orca Slicer or restart Orca Slicer to check if there is an update to system " "presets." msgstr "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " -"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " -"güncelleyin veya Orca Slicer'ı yeniden başlatın." +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " +"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " +"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5950,13 +5955,13 @@ msgid "Restore" msgstr "Geri Yükleme" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be clogged " -"when printing this filament in a closed enclosure. Please open the front door " -"and/or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be " +"clogged when printing this filament in a closed enclosure. Please open the " +"front door and/or remove the upper glass." msgstr "" -"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir muhafaza " -"içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/veya üst camı " -"çıkarın." +"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir " +"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/" +"veya üst camı çıkarın." msgid "" "The nozzle hardness required by the filament is higher than the default " @@ -6019,8 +6024,8 @@ msgstr "Lütfen bunları parametre sekmelerinde düzeltin" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-kodları " -"bulunmaktadır:" +"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-" +"kodları bulunmaktadır:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6097,6 +6102,14 @@ msgstr "Birden fazla parçaya sahip nesne algılandı" msgid "The file does not contain any geometry data." msgstr "Dosya herhangi bir geometri verisi içermiyor." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Nesne çok büyük" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6104,9 +6117,6 @@ msgstr "" "Nesneniz çok büyük görünüyor. Isı yatağına sığacak şekilde otomatik olarak " "küçültmek istiyor musunuz?" -msgid "Object too large" -msgstr "Nesne çok büyük" - msgid "Export STL file:" msgstr "STL dosyasını dışa aktar:" @@ -6254,8 +6264,8 @@ msgstr "" "dosyayı indirin ve manuel olarak içe aktarın." msgid "" -"Importing to Orca Slicer failed. Please download the file and manually import " -"it." +"Importing to Orca Slicer failed. Please download the file and manually " +"import it." msgstr "" "Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel " "olarak İçe aktarın." @@ -6343,15 +6353,15 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed on " -"the printer." +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." msgstr "" "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " "görüntülenebiliyor." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will " -"be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -6465,8 +6475,8 @@ msgstr "" #, c-format, boost-format msgid "" "Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature to " -"non zero." +"still want to do this printing, please set this filament's bed temperature " +"to non zero." msgstr "" "Plaka% d: %s'nin %s(%s) filamentinı yazdırmak için kullanılması önerilmez. " "Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamentin yatak " @@ -6481,9 +6491,6 @@ msgstr "Devam etmek istiyor musun?" msgid "Language selection" msgstr "Dil seçimi" -msgid "Switching application language while some presets are modified." -msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." - msgid "Changing application language" msgstr "Dil değiştiriliyor" @@ -6569,8 +6576,8 @@ msgstr "Yalnızca bir OrcaSlicer örneğine izin ver" msgid "" "On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. In " -"such case this settings will allow only one instance." +"it is allowed to run multiple instances of same app from the command line. " +"In such case this settings will allow only one instance." msgstr "" "OSX’te her zaman varsayılan olarak çalışan tek bir uygulama örneği vardır. " "Ancak aynı uygulamanın birden fazla örneğinin komut satırından " @@ -6578,8 +6585,9 @@ msgstr "" "örneğe izin verecektir." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the same " -"OrcaSlicer is already running, that instance will be reactivated instead." +"If this is enabled, when starting OrcaSlicer and another instance of the " +"same OrcaSlicer is already running, that instance will be reactivated " +"instead." msgstr "" "Bu etkinleştirilirse, OrcaSlicer başlatıldığında ve aynı OrcaSlicer’ın başka " "bir örneği zaten çalışıyorken, bunun yerine bu örnek yeniden " @@ -6671,15 +6679,22 @@ msgstr "" "hatırlayacak ve otomatik olarak değiştirecektir." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." +msgstr "" +"Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." msgid "" -"With this option enabled, you can send a task to multiple devices at the same " -"time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the " +"same time and manage multiple devices." msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Ağ" @@ -6749,8 +6764,8 @@ msgstr "Otomatik yedekleme" msgid "" "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " -"aralıklarla yedekleyin." +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " +"düzenli aralıklarla yedekleyin." msgid "every" msgstr "her" @@ -7107,7 +7122,8 @@ msgid "Error code" msgstr "Hata kodu" msgid "No login account, only printers in LAN mode are displayed" -msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" +msgstr "" +"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" msgid "Connecting to server" msgstr "Sunucuya baglanıyor" @@ -7175,7 +7191,8 @@ msgstr "" "desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS slot." +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." msgstr "" "Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " "destekler." @@ -7236,8 +7253,8 @@ msgstr "" msgid "" "There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to start " -"printing." +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." msgstr "" "AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " "filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " @@ -7269,7 +7286,8 @@ msgstr "" "hasarına neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." +msgstr "" +"Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -7420,11 +7438,11 @@ msgid "" "successes and failures of the vast number of prints by our users. We are " "training %s to be smarter by feeding them the real-world data. If you are " "willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will not " -"collect any Personal Data by which an individual can be identified directly " -"or indirectly, including without limitation names, addresses, payment " -"information, or phone numbers. By enabling this service, you agree to these " -"terms and the statement about Privacy Policy." +"logs, which may include information described in Privacy Policy. We will " +"not collect any Personal Data by which an individual can be identified " +"directly or indirectly, including without limitation names, addresses, " +"payment information, or phone numbers. By enabling this service, you agree " +"to these terms and the statement about Privacy Policy." msgstr "" "3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " "düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " @@ -7475,16 +7493,16 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the model " -"without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" msgstr "" "Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " "kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " "misiniz?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the model " -"without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Do you want to enable prime tower?" msgstr "" "Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " "olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " @@ -7513,11 +7531,11 @@ msgstr "" msgid "" "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or using " -"support materials on interface." +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " -"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " +"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " "malzemeleri kullanılması." msgid "" @@ -7556,8 +7574,8 @@ msgid "" "height limits ,this may cause printing quality issues." msgstr "" "Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği " -"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden " -"olabilir." +"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına " +"neden olabilir." msgid "Adjust to the set range automatically? \n" msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı? \n" @@ -7571,8 +7589,8 @@ msgstr "Atla" msgid "" "Experimental feature: Retracting and cutting off the filament at a greater " "distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other printing " -"complications." +"reduce flush, it may also elevate the risk of nozzle clogs or other " +"printing complications." msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek " "için filamanı daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli " @@ -7594,8 +7612,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive\"-" -">\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -7644,8 +7662,8 @@ msgid "" "the overhang degree range and wall speed is used" msgstr "" "Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " -"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " +"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" msgid "Bridge" msgstr "Köprü" @@ -7671,12 +7689,21 @@ msgstr "Destek Filamenti" msgid "Tree supports" msgstr "Ağaç destekler" -msgid "Skirt" -msgstr "Etek" +msgid "Multimaterial" +msgstr "Çoklu Malzeme" msgid "Prime tower" msgstr "Prime Kulesi" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Etek" + msgid "Special mode" msgstr "Özel Mod" @@ -7729,6 +7756,9 @@ msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" "Bu filamentin önerilen Nozul sıcaklığı aralığı. 0 ayar yok anlamına gelir" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Baskı Odası Sıcaklığı" @@ -7745,11 +7775,11 @@ msgid "Cool plate" msgstr "Soğuk plaka" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does " -"not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " -"üzerine yazdırmayı desteklemediği anlamına gelir" +"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool " +"Plate üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Engineering plate" msgstr "Mühendislik plakası" @@ -7837,9 +7867,6 @@ msgstr "Filament Başlangıç G Kodu" msgid "Filament end G-code" msgstr "Filament Bitiş G Kodu" -msgid "Multimaterial" -msgstr "Çoklu Malzeme" - msgid "Wipe tower parameters" msgstr "Silme Kulesi Parametreleri" @@ -7929,12 +7956,30 @@ msgstr "Sarsıntı Sınırlaması" msgid "Single extruder multimaterial setup" msgstr "Tek Ekstruder Çoklu Malzeme Kurulumu" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Nozul çapı" + msgid "Wipe tower" msgstr "Silme Kulesi" msgid "Single extruder multimaterial parameters" msgstr "Tek Ekstruder Çoklu Malzeme Parametreleri" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Katman Yüksekliği Sınırları" @@ -8078,16 +8123,16 @@ msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyo #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it contains " -"the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it contains " -"the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" @@ -8121,8 +8166,8 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri yeni " -"projeye aktarmayı seçebilirsiniz." +"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri " +"yeni projeye aktarmayı seçebilirsiniz." msgid "Extruders count" msgstr "Ekstruder sayısı" @@ -8146,19 +8191,19 @@ msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close this " -"dialog." +"Note: New modified presets will be selected in settings tabs after close " +"this dialog." msgstr "" "Seçilen seçenekleri sol ön ayardan sağa aktarın.\n" -"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde değiştirilen " -"yeni ön ayarlar seçilecektir." +"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde " +"değiştirilen yeni ön ayarlar seçilecektir." msgid "Transfer values from left to right" msgstr "Değerleri soldan sağa aktarın" msgid "" -"If enabled, this dialog can be used for transfer selected values from left to " -"right preset." +"If enabled, this dialog can be used for transfer selected values from left " +"to right preset." msgstr "" "Etkinleştirilirse, bu iletişim kutusu seçilen değerleri soldan sağa ön ayara " "aktarmak için kullanılabilir." @@ -8299,11 +8344,11 @@ msgstr "Sıkıştırma özelleştirme" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the unloaded " -"filament so it does not prevent insertion of the new filament and can itself " -"be reinserted later. This phase is important and different materials can " -"require different extrusion speeds to get the good shape. For this reason, " -"the extrusion rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the " +"unloaded filament so it does not prevent insertion of the new filament and " +"can itself be reinserted later. This phase is important and different " +"materials can require different extrusion speeds to get the good shape. For " +"this reason, the extrusion rates during ramming are adjustable.\n" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." @@ -8388,15 +8433,15 @@ msgstr "" "‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes to " -"re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes " +"to re-register it. You will be promoted twice" msgstr "" "BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden " "kaydetmek için Evet’e basın." msgid "" -"Missing BambuSource component registered for media playing! Please re-install " -"BambuStutio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-" +"install BambuStutio or seek after-sales help." msgstr "" "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen BambuStutio’yu " "yeniden yükleyin veya satış sonrası yardım isteyin." @@ -8409,9 +8454,9 @@ msgstr "" "çalışmayabilir! Düzeltmek için Evet’e basın." msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to play " -"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav " -"packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to " +"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" +"libav packages, then restart Orca Slicer?)" msgstr "" "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec " "bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav " @@ -8441,11 +8486,8 @@ msgstr "Nesne listesi" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "STL/STEP/3MF/OBJ/AMF dosyalarından geometri verilerini içe aktarın" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Panodan yapıştır" @@ -8495,33 +8537,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Kenar çubuğunu daralt/genişlet" -msgid "⌘+Any arrow" -msgstr "⌘+Herhangi bir ok" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Kamera alanında hareket" -msgid "⌥+Left mouse button" -msgstr "⌥+Sol fare düğmesi" - msgid "Select a part" msgstr "Parça seçin" -msgid "⌘+Left mouse button" -msgstr "⌘+Sol fare düğmesi" - msgid "Select multiple objects" msgstr "Birden fazla nesne seç" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Herhangi bir yön tuşu" - -msgid "Alt+Left mouse button" -msgstr "Alt+Sol fare düğmesi" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Sol fare düğmesi" - msgid "Shift+Left mouse button" msgstr "Shift+Sol fare düğmesi" @@ -8624,24 +8651,12 @@ msgstr "Plakacı" msgid "Move: press to snap by 1mm" msgstr "Hareket Ettir: 1 mm kadar yaslamak için basın" -msgid "⌘+Mouse wheel" -msgstr "⌘+Fare tekerleği" - msgid "Support/Color Painting: adjust pen radius" msgstr "Destek/Renkli Boyama: kalem yarıçapını ayarlayın" -msgid "⌥+Mouse wheel" -msgstr "⌥+Fare tekerleği" - msgid "Support/Color Painting: adjust section position" msgstr "Destek/Renkli Boyama: bölüm konumunu ayarlayın" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Fare tekerleği" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Fare tekerleği" - msgid "Gizmo" msgstr "Gizmo" @@ -8706,8 +8721,8 @@ msgstr "Ağ eklentisi güncellemesi" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek için " -"Tamam'a tıklayın." +"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " +"için Tamam'a tıklayın." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -8764,7 +8779,8 @@ msgstr "Nozulu Onaylayın ve Güncelleyin" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN Bağlantısı Başarısız (Yazdırma dosyası gönderiliyor)" -msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgid "" +"Step 1, please confirm Orca Slicer and your printer are in the same LAN." msgstr "" "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu doğrulayın." @@ -8833,8 +8849,8 @@ msgid "Updating successful" msgstr "Güncelleme başarılı" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not turn " -"off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not " +"turn off the power while the printer is updating." msgstr "" "Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " "Yazıcı güncellenirken gücü kapatmayın." @@ -8853,9 +8869,10 @@ msgid "" "printing. Do you want to update now? You can also update later on printer or " "update next time starting Orca." msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " -"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " -"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " +"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " +"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " +"güncelleyebilirsiniz." msgid "Extension Board" msgstr "Uzatma Kartı" @@ -8951,6 +8968,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Hiçbir nesne yazdırılamaz. Belki çok küçük" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9007,8 +9029,8 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " -"extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" msgstr "" "Flow::with_spacing()'e sağlanan geçersiz boşluk, kat yüksekliğinizi ve " "ekstrüzyon genişliğinizi kontrol edin" @@ -9141,8 +9163,8 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged during " -"printing" +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" msgstr "" "Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " "takdirde baskı sırasında ekstruder ve nozul tıkanabilir veya hasar görebilir" @@ -9161,8 +9183,8 @@ msgid "" "Please select \"By object\" print sequence to print multiple objects in " "spiral vase mode." msgstr "" -"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " -"göre\" yazdırma sırasını seçin." +"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye göre" +"\" yazdırma sırasını seçin." msgid "" "The spiral vase mode does not work when an object contains more than one " @@ -9175,8 +9197,8 @@ msgstr "%1% nesnesi maksimum yapı hacmi yüksekliğini aşıyor." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds the " -"maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." msgstr "" "%1% nesnesinin kendisi yapı hacmine uysa da, son katmanı maksimum yapı hacmi " "yüksekliğini aşıyor." @@ -9192,11 +9214,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " -"çaplarına izin verilmez." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9205,8 +9226,10 @@ msgstr "" "Temizleme Kulesi şu anda yalnızca ilgili ekstruder adreslemesiyle " "desteklenmektedir (use_relative_e_distances=1)." -msgid "Ooze prevention is currently not supported with the prime tower enabled." -msgstr "Sızıntı önleme şu anda ana kule etkinken desteklenmemektedir." +msgid "" +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." +msgstr "" msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9222,8 +9245,8 @@ msgid "" "The prime tower is not supported when adaptive layer height is on. It " "requires that all objects have the same layer height." msgstr "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " -"aynı katman yüksekliğine sahip olmasını gerektirir." +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " +"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" @@ -9231,11 +9254,12 @@ msgstr "" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " +"gerektirir" msgid "" -"The prime tower requires that all objects are printed over the same number of " -"raft layers" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" msgstr "" "Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " "gerektirir" @@ -9248,8 +9272,8 @@ msgstr "" "gerektirir." msgid "" -"The prime tower is only supported if all objects have the same variable layer " -"height" +"The prime tower is only supported if all objects have the same variable " +"layer height" msgstr "" "Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " "olması durumunda desteklenir" @@ -9263,7 +9287,8 @@ msgstr "Çok büyük çizgi genişliği" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " +"olmalıdır." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9276,8 +9301,8 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " -"daha küçük olamaz." +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " +"katından daha küçük olamaz." msgid "" "Organic support branch diameter must not be smaller than support tree tip " @@ -9294,20 +9319,20 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozul çapını aşamaz" msgid "" -"Relative extruder addressing requires resetting the extruder position at each " -"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"Relative extruder addressing requires resetting the extruder position at " +"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " -"her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " -"\"G92 E0\" ekleyin." +"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " +"için her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. " +"Layer_gcode'a \"G92 E0\" ekleyin." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " -"uyumsuzdu." +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " +"adreslemeyle uyumsuzdu." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " @@ -9346,8 +9371,8 @@ msgid "" "(machine_max_acceleration_extruding).\n" "Orca will automatically cap the acceleration speed to ensure it doesn't " "surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your printer's " -"configuration to get higher speeds." +"You can adjust the machine_max_acceleration_extruding value in your " +"printer's configuration to get higher speeds." msgstr "" "Hızlanma ayarı yazıcının maksimum hızlanmasını aşıyor " "(machine_max_acceleration_extruding).\n" @@ -9408,7 +9433,8 @@ msgid "Elephant foot compensation" msgstr "Fil ayağı telafi oranı" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot effect" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" msgstr "" "Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" @@ -9467,15 +9493,15 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the hostname, IP address or URL of the printer host instance. Print " "host behind HAProxy with basic auth enabled can be accessed by putting the " -"user name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " -"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " -"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " -"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" -"octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " +"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " +"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " +"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" +"username:password@your-octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -9483,7 +9509,8 @@ msgstr "Cihaz kullanıcı arayüzü" msgid "" "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " +"belirtin" msgid "API Key / Password" msgstr "API Anahtarı / Şifre" @@ -9492,8 +9519,9 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " +"içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9503,8 +9531,8 @@ msgstr "HTTPS CA Dosyası" msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository is " -"used." +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." msgstr "" "HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " "dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " @@ -9555,10 +9583,10 @@ msgid "" "either as an absolute value or as percentage (for example 50%) of a direct " "travel path. Zero to disable" msgstr "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " -"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " -"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " -"Devre dışı bırakmak için sıfır" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " +"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " +"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " +"belirtilebilir. Devre dışı bırakmak için sıfır" msgid "mm or %" msgstr "mm veya %" @@ -9567,8 +9595,8 @@ msgid "Other layers" msgstr "Diğer katmanlar" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9577,22 +9605,22 @@ msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " "Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9674,11 +9702,11 @@ msgid "" "The number of bottom solid layers is increased when slicing if the thickness " "calculated by bottom shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by bottom " -"shell layers" +"is disabled and thickness of bottom shell is absolutely determained by " +"bottom shell layers" msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " -"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " +"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -9692,7 +9720,8 @@ msgid "" "\n" "Options:\n" "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +"only\n" "3. Nowhere: Disables gap fill\n" msgstr "" "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak minimum " @@ -9718,19 +9747,19 @@ msgid "Force cooling for overhang and bridge" msgstr "Çıkıntı ve köprüler için soğutmayı zorla" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and bridge " -"to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and " +"bridge to get better cooling" msgstr "" -"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma fanı " -"hızını optimize etmek amacıyla bu seçeneği etkinleştirin" +"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma " +"fanı hızını optimize etmek amacıyla bu seçeneği etkinleştirin" msgid "Fan speed for overhang" msgstr "Çıkıntılar için fan hızı" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang wall " -"which has large overhang degree. Forcing cooling for overhang and bridge can " -"get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang " +"wall which has large overhang degree. Forcing cooling for overhang and " +"bridge can get better quality for these part" msgstr "" "Çıkıntı derecesi büyük olan köprü veya çıkıntılı duvara baskı yaparken parça " "soğutma fanını bu hızda olmaya zorlayın. Çıkıntı ve köprü için soğutmayı " @@ -9742,9 +9771,9 @@ msgstr "Çıkıntı soğutması" #, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width of " -"the line without support from lower layer. 0% means forcing cooling for all " -"outer wall no matter how much overhang degree" +"exceeds this value. Expressed as percentage which indicides how much width " +"of the line without support from lower layer. 0% means forcing cooling for " +"all outer wall no matter how much overhang degree" msgstr "" "Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " "belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " @@ -9778,8 +9807,8 @@ msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " "material for bridge, to improve sag" msgstr "" -"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu değeri " -"biraz azaltın (örneğin 0,9)" +"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu " +"değeri biraz azaltın (örneğin 0,9)" msgid "Internal bridge flow ratio" msgstr "İç köprü akış oranı" @@ -9847,11 +9876,11 @@ msgid "" "on the next layer, like letters. Set this setting to 0 to remove these " "artifacts." msgstr "" -"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa " -"layer genişliği bu değerin altında olan bir üst katman olarak " +"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından " +"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak " "değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir " -"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya a " -"% çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" +"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya " +"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" "Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince " "özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları " "kaldırmak için bu ayarı 0 olarak ayarlayın." @@ -9883,9 +9912,9 @@ msgid "Overhang reversal" msgstr "Çıkıntıyı tersine çevir" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse direction " -"on odd layers. This alternating pattern can drastically improve steep " -"overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse " +"direction on odd layers. This alternating pattern can drastically improve " +"steep overhangs.\n" "\n" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." @@ -9907,7 +9936,8 @@ msgid "" "alternating directions. This should reduce part warping while also " "maintaining external wall quality. This feature can be very useful for warp " "prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over supports.\n" +"Silk PLA. It can also help reduce warping on floating regions over " +"supports.\n" "\n" "For this setting to be the most effective, it is recomended to set the " "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -9939,7 +9969,8 @@ msgstr "" "Bu seçenek, havşa delikleri için köprüler oluşturarak bunların desteksiz " "yazdırılmasına olanak tanır. Mevcut modlar şunları içerir:\n" "1. Yok: Köprü oluşturulmaz.\n" -"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı köprülenecek.\n" +"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı " +"köprülenecek.\n" "3. Feda Katman: Tam bir feda köprü katmanı oluşturulur." msgid "Partially bridged" @@ -10059,8 +10090,8 @@ msgid "Brim ear detection radius" msgstr "Kenar kulak algılama yarıçapı" msgid "" -"The geometry will be decimated before dectecting sharp angles. This parameter " -"indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This " +"parameter indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" "Keskin açılar tespit edilmeden önce geometrinin büyük bir kısmı yok " @@ -10109,10 +10140,10 @@ msgid "" "that layer can be cooled for longer time. This can improve the cooling " "quality for needle and small details" msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " -"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu " -"seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne " -"ve küçük detaylar için soğutma kalitesini artırabilir" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " +"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " +"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " +"iğne ve küçük detaylar için soğutma kalitesini artırabilir" msgid "Normal printing" msgstr "Normal baskı" @@ -10121,7 +10152,8 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " +"ivmesi" msgid "mm/s²" msgstr "mm/s²" @@ -10165,8 +10197,8 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " -"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " +"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" msgid "Don't support bridges" msgstr "Köprülerde destek olmasın" @@ -10207,8 +10239,8 @@ msgid "Don't filter out small internal bridges (beta)" msgstr "Küçük iç köprüleri filtrelemeyin (deneysel)" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted or " -"curved models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted " +"or curved models.\n" "\n" "By default, small internal bridges are filtered out and the internal solid " "infill is printed directly over the sparse infill. This works well in most " @@ -10223,16 +10255,16 @@ msgid "" "unsupported internal solid infill. The options below control the amount of " "filtering, i.e. the amount of internal bridges created.\n" "\n" -"Disabled - Disables this option. This is the default behaviour and works well " -"in most cases.\n" +"Disabled - Disables this option. This is the default behaviour and works " +"well in most cases.\n" "\n" "Limited filtering - Creates internal bridges on heavily slanted surfaces, " -"while avoiding creating uncessesary interal bridges. This works well for most " -"difficult models.\n" +"while avoiding creating uncessesary interal bridges. This works well for " +"most difficult models.\n" "\n" -"No filtering - Creates internal bridges on every potential internal overhang. " -"This option is useful for heavily slanted top surface models. However, in " -"most cases it creates too many unecessary bridges." +"No filtering - Creates internal bridges on every potential internal " +"overhang. This option is useful for heavily slanted top surface models. " +"However, in most cases it creates too many unecessary bridges." msgstr "" "Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki " "yastıklamanın azaltılmasına yardımcı olabilir.\n" @@ -10384,8 +10416,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " -"iç duvar hızından daha yavaş olması kullanılır." +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " +"için iç duvar hızından daha yavaş olması kullanılır." msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" @@ -10414,8 +10446,8 @@ msgstr "Duvar baskı sırası" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls can " -"adhere to a neighouring perimeter while printing. However, this option " +"Use Inner/Outer for best overhangs. This is because the overhanging walls " +"can adhere to a neighouring perimeter while printing. However, this option " "results in slightly reduced surface quality as the external perimeter is " "deformed by being squashed to the internal perimeter.\n" "\n" @@ -10446,14 +10478,14 @@ msgstr "" "kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış " "duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı " "düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış " -"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için " -"en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı " -"önerilir. \n" +"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması " +"için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine " +"karşı önerilir. \n" "\n" "İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk " "avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir " -"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z dikişleri " -"daha az tutarlı görünecektir.\n" +"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z " +"dikişleri daha az tutarlı görünecektir.\n" "\n" " " @@ -10475,9 +10507,9 @@ msgid "" "\n" "Printing infill first may help with extreme overhangs as the walls have the " "neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse external " -"surface finish. It can also cause the infill to shine through the external " -"surfaces of the part." +"the printed walls where it is attached to them, resulting in a worse " +"external surface finish. It can also cause the infill to shine through the " +"external surfaces of the part." msgstr "" "Duvar/dolgu sırası. Onay kutusu işaretlenmediğinde duvarlar önce yazdırılır, " "bu çoğu durumda en iyi şekilde çalışır.\n" @@ -10495,8 +10527,8 @@ msgid "" "The direction which the wall loops are extruded when looking down from the " "top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on odd " -"is enabled. Set this to any option other than Auto will force the wall " +"By default all walls are extruded in counter-clockwise, unless Reverse on " +"odd is enabled. Set this to any option other than Auto will force the wall " "direction regardless of the Reverse on odd.\n" "\n" "This option will be disabled if sprial vase mode is enabled." @@ -10504,8 +10536,8 @@ msgstr "" "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı yön.\n" "\n" "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak tüm " -"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında herhangi " -"bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " +"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " +"herhangi bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " "zorlayacaktır.\n" "\n" "Spiral vazo modu etkinse bu seçenek devre dışı bırakılacaktır." @@ -10533,8 +10565,8 @@ msgid "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " -"için kullanılır." +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " +"önlemek için kullanılır." msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " @@ -10557,19 +10589,20 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " -"these min/max points. This information can usually be obtained from your " -"printer manufacturer. The default setting is (-99999, -99999), which means " -"there are no limits, thus allowing probing across the entire bed." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (-99999, -99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob XY " -"ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " -"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " -"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " -"(-99999, -99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına " -"gelir, dolayısıyla yatağın tamamında problamaya izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob " +"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve " +"maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " +"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " +"edinilebilir. Varsayılan ayar (-99999, -99999) şeklindedir; bu, herhangi bir " +"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " +"izin verilir." msgid "Bed mesh max" msgstr "Maksimum yatak ağı" @@ -10579,19 +10612,20 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " -"these min/max points. This information can usually be obtained from your " -"printer manufacturer. The default setting is (99999, 99999), which means " -"there are no limits, thus allowing probing across the entire bed." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (99999, 99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. Probun " -"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " -"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " -"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " -"(99999, 99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına gelir, " -"dolayısıyla yatağın tamamında problamaya izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. " +"Probun XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob " +"noktasının yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum " +"ve maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " +"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " +"edinilebilir. Varsayılan ayar (99999, 99999) şeklindedir; bu, herhangi bir " +"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " +"izin verilir." msgid "Probe point distance" msgstr "Prob noktası mesafesi" @@ -10608,8 +10642,8 @@ msgid "Mesh margin" msgstr "Yatak ağı boşluğu" msgid "" -"This option determines the additional distance by which the adaptive bed mesh " -"area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed " +"mesh area should be expanded in the XY directions." msgstr "" "Bu seçenek, uyarlanabilir yatak ağ alanının XY yönlerinde genişletilmesi " "gereken ek mesafeyi belirler." @@ -10629,9 +10663,9 @@ msgstr "Akış oranı" msgid "" "The material may have volumetric change after switching between molten state " "and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 and " -"1.05. Maybe you can tune this value to get nice flat surface when there has " -"slight overflow or underflow" +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow" msgstr "" "Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " "değişime sahip olabilir. Bu ayar, bu filamentin gcode'daki tüm ekstrüzyon " @@ -10652,9 +10686,89 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Basınç avansı (Klipper) Doğrusal ilerleme faktörü (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, it " -"will be computed over the nozzle diameter." +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + +msgid "" +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." msgstr "" "Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " "olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır." @@ -10663,8 +10777,8 @@ msgid "Keep fan always on" msgstr "Fanı her zaman açık tut" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run at " -"least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run " +"at least at minimum speed to reduce the frequency of starting and stoping" msgstr "" "Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " "ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " @@ -10796,11 +10910,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " -"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " +"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " "Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " -"bıraktığınızdan emin olun." +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " +"boşluk bıraktığınızdan emin olun." msgid "Loading speed" msgstr "Yükleme hızı" @@ -10851,8 +10965,23 @@ msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves." msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " -"sayısını belirtin." +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " +"Bu sayısını belirtin." + +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" msgid "Speed of the first cooling move" msgstr "İlk soğutma hareketi hızı" @@ -10866,9 +10995,9 @@ msgstr "Silme kulesi üzerinde minimum boşaltım" msgid "" "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, " -"Orca Slicer will always prime this amount of material into the wipe tower to " -"produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial " +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " @@ -10885,12 +11014,13 @@ msgstr "Soğutma hareketleri bu hıza doğru giderek hızlanır." msgid "" "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." +"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." msgstr "" "Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " -"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme süresi. " -"Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine eklenir." +"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " +"süresi. Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine " +"eklenir." msgid "Ramming parameters" msgstr "Sıkıştırma parametreleri" @@ -10904,8 +11034,8 @@ msgstr "" msgid "" "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." +"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." msgstr "" "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " "sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " @@ -10953,7 +11083,8 @@ msgstr "Filament malzeme türü" msgid "Soluble material" msgstr "Çözünür malzeme" -msgid "Soluble material is commonly used to print support and support interface" +msgid "" +"Soluble material is commonly used to print support and support interface" msgstr "" "Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -10961,7 +11092,8 @@ msgstr "" msgid "Support material" msgstr "Destek malzemesi" -msgid "Support material is commonly used to print support and support interface" +msgid "" +"Support material is commonly used to print support and support interface" msgstr "" "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11009,8 +11141,8 @@ msgid "Solid infill direction" msgstr "Katı dolgu yönü" msgid "" -"Angle for solid infill pattern, which controls the start or main direction of " -"line" +"Angle for solid infill pattern, which controls the start or main direction " +"of line" msgstr "" "Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" @@ -11028,8 +11160,8 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya dönüştürür " -"ve iç katı dolgu modeli kullanılacaktır" +"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya " +"dönüştürür ve iç katı dolgu modeli kullanılacaktır" msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -11077,22 +11209,23 @@ msgid "" "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. Orca Slicer 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. \n" +"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. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " -"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " -"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " -"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " +"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " +"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " +"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " "sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " -"parametreyi sıfıra ayarlayın." +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " +"bu parametreyi sıfıra ayarlayın." msgid "0 (no open anchors)" msgstr "0 (açık bağlantı yok)" @@ -11107,22 +11240,23 @@ msgid "" "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. Orca Slicer 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. \n" +"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. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " -"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " -"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " -"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır " -"ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " -"parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " -"0 ile aynı sonucu oluşturmalıdır." +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " +"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " +"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " +"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " +"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " +"ancak bu parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " +"ve 0 ile aynı sonucu oluşturmalıdır." msgid "0 (Simple connect)" msgstr "0 (Basit bağlantı)" @@ -11140,8 +11274,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " -"yüzey kalitesini iyileştirebilir" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " +"üst yüzey kalitesini iyileştirebilir" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" @@ -11151,8 +11285,8 @@ msgid "" "Acceleration of bridges. If the value is expressed as a percentage (e.g. " "50%), it will be calculated based on the outer wall acceleration." msgstr "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " -"duvar ivmesine göre hesaplanacaktır." +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " +"dış duvar ivmesine göre hesaplanacaktır." msgid "mm/s² or %" msgstr "mm/s² veya %" @@ -11189,7 +11323,8 @@ msgid "accel_to_decel" msgstr "Accel_to_decel" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" "Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" @@ -11222,11 +11357,9 @@ msgid "Initial layer height" msgstr "Başlangıç katman yüksekliği" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly can " -"improve build plate adhension" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhesion" msgstr "" -"İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " -"plakasının yapışmasını iyileştirebilir" msgid "Speed of initial layer except the solid infill part" msgstr "Katı dolgu kısmı dışındaki ilk katmanın hızı" @@ -11264,16 +11397,16 @@ msgstr "Maksimum fan hızı" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " -"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden düşükse " -"göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers\" + 1 " -"katmanında izin verilen maksimum hızda çalışacaktır." +"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " +"düşükse göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers" +"\" + 1 katmanında izin verilen maksimum hızda çalışacaktır." msgid "layer" msgstr "katman" @@ -11369,11 +11502,11 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " "tolerance is same as the resolution. \n" "\n" -"Note: For klipper machines, this option is recomended to be disabled. Klipper " -"does not benefit from arc commands as these are split again into line " -"segments by the firmware. This results in a reduction in surface quality as " -"line segments are converted to arcs by the slicer and then back to line " -"segments by the firmware." +"Note: For klipper machines, this option is recomended to be disabled. " +"Klipper does not benefit from arc commands as these are split again into " +"line segments by the firmware. This results in a reduction in surface " +"quality as line segments are converted to arcs by the slicer and then back " +"to line segments by the firmware." msgstr "" "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " "etkinleştirin. Montaj toleransı çözünürlükle aynıdır. \n" @@ -11410,8 +11543,8 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " -"basılabileceğini belirler" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " +"filamentin basılabileceğini belirler" msgid "Undefine" msgstr "Tanımsız" @@ -11463,8 +11596,8 @@ msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "Yatak şekline göre [0,1] aralığında en iyi otomatik düzenleme konumu." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code command: " -"M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code " +"command: M106 P2 S(0-255)." msgstr "" "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin. G-code " "komut: M106 P2 S(0-255)." @@ -11507,8 +11640,8 @@ msgid "" msgstr "" "Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " "maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " -"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " +"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." msgid "Time cost" @@ -11554,7 +11687,8 @@ msgid "Pellet Modded Printer" msgstr "Pelet Modlu Yazıcı" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" +msgstr "" +"Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" msgid "Support multi bed types" msgstr "Çoklu tabla" @@ -11568,20 +11702,21 @@ msgstr "Nesneleri etiketle" msgid "" "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." +"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." msgstr "" "G-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " "yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " -"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu " -"ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." +"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " +"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." msgid "Exclude objects" msgstr "Nesneleri hariç tut" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" +msgstr "" +"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" msgid "Verbose G-code" msgstr "Ayrıntılı G kodu" @@ -11621,10 +11756,10 @@ msgstr "Dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. The " -"percentage value is relative to line width of sparse infill. Set this value " -"to ~10-15% to minimize potential over extrusion and accumulation of material " -"resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill. Set this " +"value to ~10-15% to minimize potential over extrusion and accumulation of " +"material resulting in rough top surfaces." msgstr "" "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe " "genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı " @@ -11637,8 +11772,8 @@ msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" "Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill meets " -"the walls. A value of 25-30% is a good starting point, minimising the " +"bonding and to minimize the appearance of pinholes where the top infill " +"meets the walls. A value of 25-30% is a good starting point, minimising the " "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" @@ -11656,12 +11791,12 @@ msgstr "Arayüz kabukları" msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual soluble " -"support material" +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" msgstr "" "Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " -"baskıları için kullanışlıdır" +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " +"ekstruder baskıları için kullanışlıdır" msgid "Maximum width of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği" @@ -11674,10 +11809,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu özelliği " -"devre dışı bırakır." msgid "Use beam interlocking" msgstr "Işın kilitlemeyi kullanın" @@ -11721,7 +11858,8 @@ msgid "" "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" "Hücrelerde ölçülen, birbirine kenetlenen yapıyı oluşturmak için filamentler " -"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden olur." +"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden " +"olur." msgid "Interlocking boundary avoidance" msgstr "Birbirine kenetlenen sınırdan kaçınma" @@ -11822,8 +11960,8 @@ msgstr "" "G kodu tadı Klipper olarak ayarlandığında bu seçenek göz ardı edilecektir." msgid "" -"This G-code will be used as a code for the pause print. User can insert pause " -"G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" msgstr "" "Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " "Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" @@ -11954,8 +12092,8 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Seyahat için maksimum ivme (M204 T), yalnızca Marlin 2 için geçerlidir" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This is " -"the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" msgstr "" "Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " "Bu, parça soğutma fanının maksimum hız sınırlamasıdır" @@ -11975,8 +12113,8 @@ msgid "Extrusion rate smoothing" msgstr "Ekstrüzyon hızını yumuşatma" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when the " -"printer transitions from printing a high flow (high speed/larger width) " +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" @@ -11987,11 +12125,12 @@ msgid "" "A value of 0 disables the feature. \n" "\n" "For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some marginal " -"benefit in certain cases where feature speeds vary greatly. For example, when " -"there are aggressive slowdowns due to overhangs. In these cases a high value " -"of around 300-350mm3/s2 is recommended as this allows for just enough " -"smoothing to assist pressure advance achieve a smoother flow transition.\n" +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" "\n" "For slower printers without pressure advance, the value should be set much " "lower. A value of 10-15mm3/s2 is a good starting point for direct drive " @@ -12013,13 +12152,13 @@ msgstr "" "\n" "0 değeri özelliği devre dışı bırakır. \n" "\n" -"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab veya " -"Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik hızlarının " -"büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda sağlayabilir. " -"Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. Bu durumlarda " -"300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, basınç " -"ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı olmak için " -"yeterli yumuşatmaya izin verir.\n" +"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab " +"veya Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik " +"hızlarının büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda " +"sağlayabilir. Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. " +"Bu durumlarda 300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, " +"basınç ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı " +"olmak için yeterli yumuşatmaya izin verir.\n" "\n" "Basınç avansı olmayan daha yavaş yazıcılar için değer çok daha düşük " "ayarlanmalıdır. Doğrudan tahrikli ekstruderler için 10-15mm3/s2 ve Bowden " @@ -12093,9 +12232,6 @@ msgstr "" "minimum katman süresini korumaya çalışmak için yazıcının yavaşlayacağı " "minimum yazdırma hızı." -msgid "Nozzle diameter" -msgstr "Nozul çapı" - msgid "Diameter of nozzle" msgstr "Nozul çapı" @@ -12116,8 +12252,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field must " "contain the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -12158,8 +12294,8 @@ msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." msgstr "" -"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " -"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." +"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan " +"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." msgid "Extra loading distance" msgstr "Ekstra yükleme mesafesi" @@ -12186,14 +12322,19 @@ msgstr "Dolguda geri çekmeyi azalt" msgid "" "Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex model " -"and save printing time, but make slicing and G-code generating slower" +"oozing can't been seen. This can reduce times of retraction for complex " +"model and save printing time, but make slicing and G-code generating slower" msgstr "" "Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " "görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " "azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi " "ve G kodu oluşturmayı yavaşlatır" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Dosya adı formatı" @@ -12224,11 +12365,11 @@ msgid "Make overhangs printable - Hole area" msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" msgid "" -"Maximum area of a hole in the base of the model before it's filled by conical " -"material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by " +"conical material.A value of 0 will fill all the holes in the model base." msgstr "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " -"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " +"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." msgid "mm²" msgstr "mm²" @@ -12238,11 +12379,14 @@ msgstr "Çıkıntılı duvarı algıla" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different speed " -"to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." +msgstr "" +"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için " +"farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." + +msgid "Filament to print walls" msgstr "" -"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " -"hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -12264,8 +12408,8 @@ msgid "" "This setting adds an extra wall to every other layer. This way the infill " "gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option needs " -"to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option " +"needs to be disabled. \n" "\n" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." @@ -12286,10 +12430,17 @@ msgid "" "argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " -"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " -"Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " -"değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına erişebilirler." +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " +"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " +"ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " +"ve ortam değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına " +"erişebilirler." + +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" msgid "Printer notes" msgstr "Yazıcı notları" @@ -12297,11 +12448,15 @@ msgstr "Yazıcı notları" msgid "You can put your notes regarding the printer here." msgstr "Yazıcı ile ilgili notlarınızı buraya yazabilirsiniz." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" +msgstr "" +"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" msgid "Raft expansion" msgstr "Raft genişletme" @@ -12330,8 +12485,8 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " -"sarmayı önlemek için bu işlevi kullanın" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " +"yazdırırken sarmayı önlemek için bu işlevi kullanın" msgid "" "G-code path is genereated after simplifing the contour of model to avoid too " @@ -12346,7 +12501,8 @@ msgid "Travel distance threshold" msgstr "Seyahat mesafesi" msgid "" -"Only trigger retraction when the travel distance is longer than this threshold" +"Only trigger retraction when the travel distance is longer than this " +"threshold" msgstr "" "Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " "tetikleyin" @@ -12354,7 +12510,8 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Temizleme işlemi öncesi geri çekme miktarı" -msgid "The length of fast retraction before wipe, relative to retraction length" +msgid "" +"The length of fast retraction before wipe, relative to retraction length" msgstr "" "Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" @@ -12445,8 +12602,8 @@ msgid "Traveling angle" msgstr "" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in " -"Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " +"in Normal Lift" msgstr "" msgid "Only lift Z above" @@ -12579,13 +12736,13 @@ msgid "Seam gap" msgstr "Dikiş boşluğu" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, the " -"loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the current " -"extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, " +"the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the " +"current extruder diameter. The default value for this parameter is 10%." msgstr "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " -"uğrar ve belirli bir miktarda kısaltılır.\n" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " +"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" "Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " "belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." @@ -12594,8 +12751,8 @@ msgstr "Atkı birleşim dikişi (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için atkı " -"birleşimini kullanın." +"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için " +"atkı birleşimini kullanın." msgid "Conditional scarf joint" msgstr "Koşullu atkı birleşimi" @@ -12613,9 +12770,9 @@ msgstr "Koşullu açı eşiği" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " "seam.\n" -"If the maximum angle within the perimeter loop exceeds this value (indicating " -"the absence of sharp corners), a scarf joint seam will be used. The default " -"value is 155°." +"If the maximum angle within the perimeter loop exceeds this value " +"(indicating the absence of sharp corners), a scarf joint seam will be used. " +"The default value is 155°." msgstr "" "Bu seçenek, koşullu bir atkı eklem dikişi uygulamak için eşik açısını " "ayarlar.\n" @@ -12630,8 +12787,8 @@ msgstr "Koşullu çıkıntı eşiği" msgid "" "This option determines the overhang threshold for the application of scarf " "joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set at " -"40% of the external wall's width. Due to performance considerations, the " +"threshold, scarf joint seams will be applied. The default threshold is set " +"at 40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" "Bu seçenek, atkı bağlantı dikişlerinin uygulanması için sarkma eşiğini " @@ -12645,22 +12802,22 @@ msgstr "Atkı birleşim hızı" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also advisable " -"to enable 'Extrusion rate smoothing' if the set speed varies significantly " -"from the speed of the outer or inner walls. If the speed specified here is " -"higher than the speed of the outer or inner walls, the printer will default " -"to the slower of the two speeds. When specified as a percentage (e.g., 80%), " -"the speed is calculated based on the respective outer or inner wall speed. " -"The default value is set to 100%." +"print scarf joints at a slow speed (less than 100 mm/s). It's also " +"advisable to enable 'Extrusion rate smoothing' if the set speed varies " +"significantly from the speed of the outer or inner walls. If the speed " +"specified here is higher than the speed of the outer or inner walls, the " +"printer will default to the slower of the two speeds. When specified as a " +"percentage (e.g., 80%), the speed is calculated based on the respective " +"outer or inner wall speed. The default value is set to 100%." msgstr "" "Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı " "bağlantılarının yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye " "edilir. Ayarlanan hızın dış veya iç duvarların hızından önemli ölçüde farklı " -"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi de " -"tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından daha " -"yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı seçecektir. " -"Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç duvar hızına " -"göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." +"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi " +"de tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından " +"daha yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı " +"seçecektir. Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç " +"duvar hızına göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." msgid "Scarf joint flow ratio" msgstr "Atkı birleşimi akış oranı" @@ -12674,8 +12831,8 @@ msgstr "Atkı başlangıç ​​yüksekliği" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the current " -"layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the " +"current layer height. The default value for this parameter is 0." msgstr "" "Atkı başlangıç yüksekliği.\n" "Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi " @@ -12694,8 +12851,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan devre " -"dışı bırakır." +"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan " +"devre dışı bırakır." msgid "Scarf steps" msgstr "Atkı kademesi" @@ -12736,15 +12893,15 @@ msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" msgid "" -"To minimise visibility of potential overextrusion at the start of an external " -"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print " -"order, the deretraction is performed slightly on the inside from the start of " -"the external perimeter. That way any potential over extrusion is hidden from " -"the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " -"order as in these modes it is more likely an external perimeter is printed " -"immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." msgstr "" "Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " "başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek için, " @@ -12753,8 +12910,8 @@ msgstr "" "yüzeyden gizlenir. \n" "\n" "Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " -"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen ardından " -"bir dış çevrenin yazdırılması daha olasıdır." +"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen " +"ardından bir dış çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" @@ -12820,7 +12977,8 @@ msgid "Skirt loops" msgstr "Etek sayısı" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" +msgstr "" +"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" msgid "Skirt speed" msgstr "Etek hızı" @@ -12864,9 +13022,15 @@ msgstr "" "Eşik değerinden küçük olan seyrek dolgu alanı, yerini iç katı dolguya " "bırakmıştır" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" -"Line width of internal solid infill. If expressed as a %, it will be computed " -"over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" "İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -12880,8 +13044,8 @@ msgid "" "generated model has no seam" msgstr "" "Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " -"modelde dikiş yok." +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " +"son modelde dikiş yok." msgid "Smooth Spiral" msgstr "Pürüzsüz spiral" @@ -12906,11 +13070,12 @@ msgstr "" msgid "" "If smooth or traditional mode is selected, a timelapse video will be " "generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a timelapse " -"video when printing completes. If smooth mode is selected, the toolhead will " -"move to the excess chute after each layer is printed and then take a " -"snapshot. Since the melt filament may leak from the nozzle during the process " -"of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." +"with the chamber camera. All of these snapshots are composed into a " +"timelapse video when printing completes. If smooth mode is selected, the " +"toolhead will move to the excess chute after each layer is printed and then " +"take a snapshot. Since the melt filament may leak from the nozzle during the " +"process of taking a snapshot, prime tower is required for smooth mode to " +"wipe nozzle." msgstr "" "Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " "oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " @@ -12927,6 +13092,31 @@ msgstr "Geleneksel" msgid "Temperature variation" msgstr "Sıcaklık değişimi" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Başlangıç G Kodu" @@ -12971,9 +13161,10 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" msgid "" -"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." +"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." msgstr "" "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " "yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini " @@ -12998,16 +13189,16 @@ msgid "" "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " -"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " +"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " "düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." msgid "Slicing Mode" msgstr "Dilimleme modu" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close " -"all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." msgstr "" "3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " "tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." @@ -13031,9 +13222,10 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" "Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya " -"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, " -"endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm uzakta " -"bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)." +"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: " +"örneğin, endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm " +"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu " +"düzeltin)." msgid "Enable support" msgstr "Desteği etkinleştir" @@ -13087,7 +13279,8 @@ msgid "" "Only create support for critical regions including sharp tail, cantilever, " "etc." msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " +"oluşturun." msgid "Remove small overhangs" msgstr "Küçük çıkıntıları kaldır" @@ -13124,7 +13317,8 @@ msgstr "Taban için arayüz filamentini azaltın" msgid "" "Avoid using support interface filament to print support base if possible." msgstr "" -"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan kaçının" +"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan " +"kaçının" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -13199,8 +13393,8 @@ msgstr "Arayüz deseni" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support interface " -"is Concentric" +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" msgstr "" "Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " "model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " @@ -13229,11 +13423,12 @@ msgid "" "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" "For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid style " -"will create similar structure to normal support under large flat overhangs." +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara içine " -"projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " +"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara " +"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " "zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki " "izleri azaltır.\n" "Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde " @@ -13282,8 +13477,8 @@ msgid "Tree support branch angle" msgstr "Ağaç desteği dal açısı" msgid "" -"This setting determines the maximum overhang angle that t he branches of tree " -"support allowed to make.If the angle is increased, the branches can be " +"This setting determines the maximum overhang angle that t he branches of " +"tree support allowed to make.If the angle is increased, the branches can be " "printed more horizontally, allowing them to reach farther." msgstr "" "Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " @@ -13315,10 +13510,11 @@ msgstr "Dal Yoğunluğu" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of the " -"branches. A higher value results in better overhangs but the supports are " -"harder to remove, thus it is recommended to enable top support interfaces " -"instead of a high branch density value if dense interfaces are needed." +"Adjusts the density of the support structure used to generate the tips of " +"the branches. A higher value results in better overhangs but the supports " +"are harder to remove, thus it is recommended to enable top support " +"interfaces instead of a high branch density value if dense interfaces are " +"needed." msgstr "" "Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " "ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " @@ -13330,8 +13526,8 @@ msgid "Adaptive layer height" msgstr "Uyarlanabilir katman yüksekliği" msgid "" -"Enabling this option means the height of tree support layer except the first " -"will be automatically calculated " +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " msgstr "" "Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " "yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " @@ -13386,8 +13582,8 @@ msgstr "Çift duvarlı dal çapı" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" "Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no double " -"walls." +"printed with double walls for stability. Set this value to zero for no " +"double walls." msgstr "" "Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " @@ -13417,8 +13613,8 @@ msgid "" "added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" -"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 komutu " -"eklenecek \"machine_start_gcode\"\n" +"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 " +"komutu eklenecek \"machine_start_gcode\"\n" "G-code komut: M141/M191 S(0-255)" msgid "Chamber temperature" @@ -13496,11 +13692,11 @@ msgid "" "The number of top solid layers is increased when slicing if the thickness " "calculated by top shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top shell " -"layers" +"is disabled and thickness of top shell is absolutely determained by top " +"shell layers" msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " -"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " +"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -13523,11 +13719,12 @@ msgid "Wipe Distance" msgstr "Temizleme mesafesi" msgid "" -"Discribe how long the nozzle will move along the last path when retracting. \n" +"Discribe how long the nozzle will move along the last path when " +"retracting. \n" "\n" "Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed to " -"retract the remaining filament. \n" +"extruder/filament retraction settings are, a retraction move may be needed " +"to retract the remaining filament. \n" "\n" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." @@ -13535,9 +13732,9 @@ msgstr "" "Geri çekilirken nozulun son yol boyunca ne kadar süre hareket edeceğini " "açıklayın. \n" "\n" -"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme ayarlarının " -"ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı geri çekmek için " -"bir geri çekme hareketine ihtiyaç duyulabilir. \n" +"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme " +"ayarlarının ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı " +"geri çekmek için bir geri çekme hareketine ihtiyaç duyulabilir. \n" "\n" "Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, " "silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi " @@ -13587,14 +13784,8 @@ msgid "" "Angle at the apex of the cone that is used to stabilize the wipe tower. " "Larger angle means wider base." msgstr "" -"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " -"Daha büyük açı daha geniş taban anlamına gelir." - -msgid "Wipe tower purge lines spacing" -msgstr "Silme kulesi temizleme hatları aralığı" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Silme kulesindeki boşaltma hatlarının aralığı." +"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki " +"açı. Daha büyük açı daha geniş taban anlamına gelir." msgid "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" @@ -13640,9 +13831,6 @@ msgstr "" "Silme kulesi dış çevreleri için bu ayardan bağımsız olarak iç çevre hızı " "kullanılır." -msgid "Wipe tower extruder" -msgstr "Silme kulesi ekstruderi" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13659,8 +13847,8 @@ msgid "" "volumes below." msgstr "" "Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " -"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " -"oluşturulmasını basitleştirmek için kullanılır." +"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " +"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -13684,13 +13872,13 @@ msgstr "" msgid "" "This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed as " -"a result. It will not take effect, unless the prime tower is enabled." +"filament and decrease the print time. Colours of the objects will be mixed " +"as a result. It will not take effect, unless the prime tower is enabled." msgstr "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " -"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " -"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " -"etkili olmayacaktır." +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " +"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " +"etkinleştirilmediği sürece etkili olmayacaktır." msgid "Maximal bridging distance" msgstr "Maksimum köprüleme mesafesi" @@ -13699,8 +13887,32 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " "filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " -"sürece etkili olmayacaktır." +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " +"etkinleştirilmediği sürece etkili olmayacaktır." + +msgid "Wipe tower purge lines spacing" +msgstr "Silme kulesi temizleme hatları aralığı" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Silme kulesindeki boşaltma hatlarının aralığı." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" msgid "X-Y hole compensation" msgstr "X-Y delik dengeleme" @@ -13725,8 +13937,8 @@ msgid "" "assembling issue" msgstr "" "Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " -"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " +"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " "kullanılır" msgid "Convert holes to polyholes" @@ -13750,14 +13962,14 @@ msgstr "Çokgen delik tespiti marjı" msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" "As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to broaden " -"the detection.\n" +"be on the circle circumference. This setting allows you some leway to " +"broaden the detection.\n" "In mm or in % of the radius." msgstr "" "Bir noktanın dairenin tahmini yarıçapına göre maksimum sapması.\n" "Silindirler genellikle farklı boyutlarda üçgenler olarak ihraç edildiğinden, " -"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz için " -"size biraz alan sağlar.\n" +"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz " +"için size biraz alan sağlar.\n" "inc mm cinsinden veya yarıçapın %'si cinsinden." msgid "Polyhole twist" @@ -13780,8 +13992,8 @@ msgid "Format of G-code thumbnails" msgstr "G kodu küçük resimlerinin formatı" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI " -"for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " +"QOI for low memory firmware" msgstr "" "G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut " "için JPG, düşük bellekli donanım yazılımı için QOI" @@ -13802,11 +14014,11 @@ msgstr "" msgid "" "Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with variable " -"extrusion width" +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " -"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " +"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " "ekstrüzyon genişliğine sahip duvarlar üretir" msgid "Classic" @@ -13833,19 +14045,20 @@ msgstr "Duvar geçiş filtresi oranı" msgid "" "Prevent transitioning back and forth between one extra wall and one less. " "This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall 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. It's expressed as a percentage over " -"nozzle diameter" +"wall width - margin, 2 * Minimum wall 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. It's expressed as a " +"percentage over nozzle diameter" msgstr "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " -"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " +"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " "genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " "aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " "ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " -"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon " -"sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade edilir" +"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " +"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " +"edilir" msgid "Wall transitioning threshold angle" msgstr "Duvar geçiş açısı" @@ -13857,11 +14070,11 @@ msgid "" "this setting reduces the number and length of these center walls, but may " "leave gaps or overextrude" msgstr "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " -"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " -"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " -"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " -"boşluklara veya aşırı çıkıntıya neden olabilir" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " +"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " +"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " +"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " +"ancak boşluklara veya aşırı çıkıntıya neden olabilir" msgid "Wall distribution count" msgstr "Duvar dağılım sayısı" @@ -13877,9 +14090,9 @@ msgid "Minimum feature size" msgstr "Minimum özellik boyutu" msgid "" -"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 wall width. It's expressed as a " +"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 wall width. It's expressed as a " "percentage over nozzle diameter" msgstr "" "İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " @@ -13896,27 +14109,28 @@ msgid "" "\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent " "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a top-" -"surface. 'One wall threshold' is only visibile if this setting is set above " -"the default value of 0.5, or if single-wall top surfaces is enabled." +"Advanced settings below to adjust the sensitivity of what is considered a " +"top-surface. 'One wall threshold' is only visibile if this setting is set " +"above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını " "önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha " "uzun duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu " -"değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini " -"ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. " -"'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine " -"ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " +"bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " +"hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " +"eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan " +"0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " +"etkinleştirildiğinde görünür." msgid "First layer minimum wall width" msgstr "İlk katman minimum duvar genişliği" msgid "" -"The minimum wall width that should be used for the first layer is recommended " -"to be set to the same size as the nozzle. This adjustment is expected to " -"enhance adhesion." +"The minimum wall width that should be used for the first layer is " +"recommended to be set to the same size as the nozzle. This adjustment is " +"expected to enhance adhesion." msgstr "" "İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " "aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " @@ -13941,8 +14155,8 @@ msgstr "Dar iç katı dolguyu tespit et" msgid "" "This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. Otherwise, " -"rectilinear pattern is used defaultly." +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used defaultly." msgstr "" "Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " "Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " @@ -13988,7 +14202,8 @@ msgstr "Yönlendirme Seçenekleri" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "" -"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-otomatik" +"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-" +"otomatik" msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafında derece cinsinden dönüş açısı." @@ -14033,13 +14248,13 @@ msgstr "" "ettiğini bilmesi için bu değişkene yazması gerekir." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom G-" -"code moves the extruder axis, it should write to this variable so PrusaSlicer " -"deretracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom " +"G-code moves the extruder axis, it should write to this variable so " +"PrusaSlicer deretracts correctly when it gets control back." msgstr "" "Özel G kodu bloğunun başlangıcındaki geri çekilme durumu. Özel G kodu " -"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında doğru " -"şekilde geri çekme yapması için bu değişkene yazması gerekir." +"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında " +"doğru şekilde geri çekme yapması için bu değişkene yazması gerekir." msgid "Extra deretraction" msgstr "Ekstra deretraksiyon" @@ -14048,6 +14263,14 @@ msgid "Currently planned extra extruder priming after deretraction." msgstr "" "Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Mevcut ekstruder" @@ -14097,6 +14320,12 @@ msgstr "" "Belirli bir ekstruderin baskıda kullanılıp kullanılmadığını belirten bool " "vektörü." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Ekstruder başına hacim" @@ -14124,18 +14353,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. Filament " -"Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." +"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. " +"Filament Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." msgid "Total weight" msgstr "Toplam ağırlık" msgid "" -"Total weight of the print. Calculated from filament_density value in Filament " -"Settings." +"Total weight of the print. Calculated from filament_density value in " +"Filament Settings." msgstr "" -"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu değerinden " -"hesaplanır." +"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu " +"değerinden hesaplanır." msgid "Total layer count" msgstr "Toplam katman sayısı" @@ -14184,8 +14413,8 @@ msgstr "" "cinsindendir." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values in " -"mm." +"The vector has two elements: x and y dimension of the bounding box. Values " +"in mm." msgstr "" "Vektörün iki öğesi vardır: sınırlayıcı kutunun x ve y boyutu. Değerler mm " "cinsindendir." @@ -14197,8 +14426,8 @@ msgid "" "Vector of points of the first layer convex hull. Each element has the " "following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" -"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu formata " -"sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." +"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu " +"formata sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." msgid "Bottom-left corner of first layer bounding box" msgstr "İlk katman sınırlayıcı kutusunun sol alt köşesi" @@ -14261,6 +14490,14 @@ msgstr "Fiziksel yazıcı adı" msgid "Name of the physical printer used for slicing." msgstr "Dilimleme için kullanılan fiziksel yazıcının adı." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Katman numarası" @@ -14394,7 +14631,8 @@ msgstr "Sağlanan dosya boş olduğundan okunamadı" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " +"olmalıdır." msgid "Canceled" msgstr "İptal edildi" @@ -14516,7 +14754,8 @@ msgstr "yeni ön ayar oluşturma başarısız oldu." msgid "" "Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " +"misiniz?" msgid "No Printer Connected!" msgstr "Yazıcı Bağlı Değil!" @@ -14531,16 +14770,16 @@ msgid "The input value size must be 3." msgstr "Giriş değeri boyutu 3 olmalıdır." msgid "" -"This machine type can only hold 16 history results per nozzle. You can delete " -"the existing historical results and then start calibration. Or you can " -"continue the calibration, but you cannot create new calibration historical " -"results. \n" +"This machine type can only hold 16 history results per nozzle. You can " +"delete the existing historical results and then start calibration. Or you " +"can continue the calibration, but you cannot create new calibration " +"historical results. \n" "Do you still want to continue the calibration?" msgstr "" "Bu makine tipi, püskürtme ucu başına yalnızca 16 geçmiş sonucu tutabilir. " -"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona başlayabilirsiniz. " -"Veya kalibrasyona devam edebilirsiniz ancak yeni kalibrasyon geçmişi " -"sonuçları oluşturamazsınız.\n" +"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona " +"başlayabilirsiniz. Veya kalibrasyona devam edebilirsiniz ancak yeni " +"kalibrasyon geçmişi sonuçları oluşturamazsınız.\n" "Hala kalibrasyona devam etmek istiyor musunuz?" msgid "Connecting to printer..." @@ -14554,9 +14793,9 @@ msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. Only " -"one of the results with the same name is saved. Are you sure you want to " -"override the historical result?" +"There is already a historical calibration result with the same name: %s. " +"Only one of the results with the same name is saved. Are you sure you want " +"to override the historical result?" msgstr "" "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " @@ -14567,8 +14806,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. Bu " -"sonuç kaydedilmeyecek." +"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. " +"Bu sonuç kaydedilmeyecek." msgid "Internal Error" msgstr "İç hata" @@ -14587,10 +14826,10 @@ msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" msgid "" "We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future use. " -"You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the filament " -"is damp;\n" +"fully automated and the result will be saved into the printer for future " +"use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the " +"filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" "3. If the max volumetric speed or print temperature is changed in the " "filament setting." @@ -14612,10 +14851,10 @@ msgid "" "\n" "Usually the calibration is unnecessary. When you start a single color/" "material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the filament " -"before the print; When you start a multi color/material print, the printer " -"will use the default compensation parameter for the filament during every " -"filament switch which will have a good result in most cases.\n" +"print start menu, the printer will follow the old way, calibrate the " +"filament before the print; When you start a multi color/material print, the " +"printer will use the default compensation parameter for the filament during " +"every filament switch which will have a good result in most cases.\n" "\n" "Please note that there are a few cases that can make the calibration results " "unreliable, such as insufficient adhesion on the build plate. Improving " @@ -14631,9 +14870,9 @@ msgstr "" "Genellikle kalibrasyon gereksizdir. Baskı başlatma menüsünde \"akış " "dinamikleri kalibrasyonu\" seçeneği işaretliyken tek renkli/malzemeli bir " "baskı başlattığınızda, yazıcı eski yolu izleyecek, baskıdan önce filamenti " -"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı her " -"filament değişimi sırasında filament için varsayılan telafi parametresini " -"kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" +"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı " +"her filament değişimi sırasında filament için varsayılan telafi " +"parametresini kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" "\n" "Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını " "güvenilmez hale getirebilecek birkaç durum olduğunu lütfen unutmayın. " @@ -14683,10 +14922,10 @@ msgstr "" msgid "" "Flow Rate Calibration measures the ratio of expected to actual extrusion " "volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular filament, " -"you usually won't need to perform a Flow Rate Calibration unless you still " -"see the listed defects after you have done other calibrations. For more " -"details, please check out the wiki article." +"filaments as they were pre-calibrated and fine-tuned. For a regular " +"filament, you usually won't need to perform a Flow Rate Calibration unless " +"you still see the listed defects after you have done other calibrations. For " +"more details, please check out the wiki article." msgstr "" "Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " "hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " @@ -14701,12 +14940,13 @@ msgid "" "directly measuring the calibration patterns. However, please be advised that " "the efficacy and accuracy of this method may be compromised with specific " "types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not be " -"suitable for this calibration and can produce less-than-desirable results.\n" +"transparent, sparkling-particled, or have a high-reflective finish may not " +"be suitable for this calibration and can produce less-than-desirable " +"results.\n" "\n" -"The calibration results may vary between each calibration or filament. We are " -"still improving the accuracy and compatibility of this calibration through " -"firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We " +"are still improving the accuracy and compatibility of this calibration " +"through firmware updates over time.\n" "\n" "Caution: Flow Rate Calibration is an advanced process, to be attempted only " "by those who fully understand its purpose and implications. Incorrect usage " @@ -14717,8 +14957,8 @@ msgstr "" "kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " "etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " "girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " -"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " +"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" "\n" "Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " "gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " @@ -14727,8 +14967,8 @@ msgstr "" "Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " "anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " "kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " -"emin olun." +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " +"anladığınızdan emin olun." msgid "When you need Max Volumetric Speed Calibration" msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" @@ -14750,15 +14990,15 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The failed " -"test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." msgstr "" "Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " "deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in the " -"Name" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" msgid "Failed" @@ -15347,8 +15587,8 @@ msgid "" "name. Do you want to continue?" msgstr "" "Oluşturduğunuz %s Filament adı zaten mevcut.\n" -"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla görüntülenecektir. " -"Devam etmek istiyor musun?" +"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla " +"görüntülenecektir. Devam etmek istiyor musun?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Aşağıdaki gibi bazı mevcut ön ayarlar oluşturulamadı:\n" @@ -15361,8 +15601,8 @@ msgstr "" "Yeniden yazmak ister misin?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ön ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -15464,15 +15704,15 @@ msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" msgstr "" -"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen yazıcının " -"satıcısını ve modelini seçin" +"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen " +"yazıcının satıcısını ve modelini seçin" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. Lütfen " -"oluşturmadan önce kontrol edin." +"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. " +"Lütfen oluşturmadan önce kontrol edin." msgid "The custom printer or model is not inputed, place input." msgstr "Özel yazıcı veya model girilmedi lütfen giriş yapın." @@ -15489,7 +15729,8 @@ msgstr "" "Oluşturduğunuz yazıcı ön ayarının zaten aynı ada sahip bir ön ayarı var. " "Üzerine yazmak istiyor musunuz?\n" "\tEvet: Aynı adı taşıyan yazıcı ön ayarının üzerine yazın; aynı ön ayar adı " -"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön ayar \n" +"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön " +"ayar \n" "adı olmayan filament ve işlem ön ayarları rezerve edilecektir.\n" "\tİptal: Ön ayar oluşturmayın, oluşturma arayüzüne dönün." @@ -15535,7 +15776,8 @@ msgstr "" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." +msgstr "" +"Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." msgid "Create Printer Successful" msgstr "Yazıcı Oluşturma Başarılı" @@ -15618,8 +15860,8 @@ msgstr "Dışa aktarma başarılı" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to clear " -"it and rebuild it.\n" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" "If not, a time suffix will be added, and you can modify the name after " "creation." msgstr "" @@ -15658,8 +15900,8 @@ msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve " -"seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." +"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek " +"ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" @@ -15667,13 +15909,13 @@ msgid "" "exported as a zip." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" -"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön " -"ayarları zip olarak dışa aktarılacaktır." +"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti " +"ön ayarları zip olarak dışa aktarılacaktır." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported " -"as a zip." +"and all user process presets in each printer name you select will be " +"exported as a zip." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak " @@ -15697,8 +15939,8 @@ msgid "Filament presets under this filament" msgstr "Bu filamentin altındaki filament ön ayarları" msgid "" -"Note: If the only preset under this filament is deleted, the filament will be " -"deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." msgstr "" "Not: Bu filamentin altındaki tek ön ayar silinirse, diyalogdan çıkıldıktan " "sonra filament silinecektir." @@ -15816,7 +16058,8 @@ msgstr "Aygıt sekmesinde yazdırma ana bilgisayarı web arayüzünü görüntü msgid "Replace the BambuLab's device tab with print host webui" msgstr "" -"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle değiştirin" +"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle " +"değiştirin" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -15836,8 +16079,8 @@ msgid "" "On this system, %s uses HTTPS certificates from the system Certificate Store " "or Keychain." msgstr "" -"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan HTTPS " -"sertifikalarını kullanıyor." +"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " +"HTTPS sertifikalarını kullanıyor." msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " @@ -15987,30 +16230,31 @@ msgstr "" "Hata: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines and " -"high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines " +"and high printing quality. It is suitable for most general printing cases." msgstr "" "Küçük bir katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir katman " "çizgileri ve yüksek baskı kalitesi sağlar. Çoğu genel yazdırma durumu için " "uygundur." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " -"acceleration, and the sparse infill pattern is Gyroid. So, it results in much " -"higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " +"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " +"much higher printing quality, but a much longer printing time." msgstr "" "0,2 mm’lik nozülün varsayılan profiliyle karşılaştırıldığında daha düşük hız " -"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha yüksek " -"baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." +"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha " +"yüksek baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde " +"edilir." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a slightly " "bigger layer height, and results in almost negligible layer lines, and " "slightly shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " -"daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir düzeyde " -"katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"biraz daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir " +"düzeyde katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " @@ -16048,8 +16292,8 @@ msgid "" "shorter printing time." msgstr "" "Varsayılan 0,2 mm püskürtme ucu profiliyle karşılaştırıldığında, daha küçük " -"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek baskı " -"kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." +"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek " +"baskı kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -16100,12 +16344,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing quality, " -"but longer printing time." +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " -"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " +"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16143,7 +16387,8 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing time." +"height, and results in almost negligible layer lines and longer printing " +"time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " "katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde " @@ -16178,8 +16423,8 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower printing " -"quality, but shorter printing time in some printing cases." +"height, and results in much more apparent layer lines and much lower " +"printing quality, but shorter printing time in some printing cases." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok daha belirgin katman çizgileri " @@ -16198,16 +16443,16 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing quality, " -"but longer printing time." +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " -"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " +"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" -"It has a very big layer height, and results in very apparent layer lines, low " -"printing quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, " +"low printing quality and general printing time." msgstr "" "Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman " "çizgilerine, düşük baskı kalitesine ve genel yazdırma süresine neden olur." @@ -16219,8 +16464,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve " -"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma durumlarında " -"daha kısa yazdırma süresi sağlar." +"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " +"durumlarında daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -16229,8 +16474,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, çok " "daha büyük bir katman yüksekliğine sahiptir ve son derece belirgin katman " -"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " -"durumlarında çok daha kısa yazdırma süresi sağlar." +"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı " +"yazdırma durumlarında çok daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -16238,10 +16483,10 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" -"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " -"daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine de " -"görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, ancak " -"bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." +"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"biraz daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine " +"de görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, " +"ancak bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " @@ -16313,7 +16558,8 @@ msgid "" msgstr "" "Sandviç modu\n" "Modelinizde çok dik çıkıntılar yoksa hassasiyeti ve katman tutarlılığını " -"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor muydunuz?" +"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor " +"muydunuz?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -16375,14 +16621,14 @@ msgid "" "3D scene operations." msgstr "" "Klavye kısayolları nasıl kullanılır?\n" -"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri sunduğunu " -"biliyor muydunuz?" +"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " +"sunduğunu biliyor muydunuz?" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve the " -"surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" msgstr "" "Tersine çevir\n" "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " @@ -16405,8 +16651,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " -"düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " +"modeli düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -16539,9 +16785,9 @@ msgstr "" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking prints? " -"Depending on the material, you can improve the overall finish of the printed " -"model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." msgstr "" "Akış hızı için ince ayar\n" "Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " @@ -16575,8 +16821,8 @@ msgstr "" msgid "" "Support painting\n" "Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the model " -"that actually need it." +"makes it easy to place the support material only on the sections of the " +"model that actually need it." msgstr "" "Destek boyama\n" "Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " @@ -16681,6 +16927,81 @@ msgstr "" "sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını " "azaltabileceğini biliyor muydunuz?" +#~ msgid "up to" +#~ msgstr "kadar" + +#~ msgid "above" +#~ msgstr "üstünde" + +#~ msgid "from" +#~ msgstr "itibaren" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Herhangi bir ok" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Sol fare düğmesi" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Sol fare düğmesi" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Herhangi bir yön tuşu" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Sol fare düğmesi" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Sol fare düğmesi" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Fare tekerleği" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Fare tekerleği" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Fare tekerleği" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Fare tekerleği" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " +#~ "çaplarına izin verilmez." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "Sızıntı önleme şu anda ana kule etkinken desteklenmemektedir." + +#~ msgid "" +#~ "Height of initial layer. Making initial layer height to be thick slightly " +#~ "can improve build plate adhension" +#~ msgstr "" +#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, " +#~ "baskı plakasının yapışmasını iyileştirebilir" + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu " +#~ "özelliği devre dışı bırakır." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Silme kulesi ekstruderi" + #~ msgid "Current association: " #~ msgstr "Mevcut dernek:" @@ -16751,11 +17072,12 @@ msgstr "" #~ "the print start menu, the printer will follow the old way, calibrate the " #~ "filament before the print; When you start a multi color/material print, " #~ "the printer will use the default compensation parameter for the filament " -#~ "during every filament switch which will have a good result in most cases.\n" +#~ "during every filament switch which will have a good result in most " +#~ "cases.\n" #~ "\n" #~ "Please note there are a few cases that will make the calibration result " -#~ "not reliable: using a texture plate to do the calibration; the build plate " -#~ "does not have good adhesion (please wash the build plate or apply " +#~ "not reliable: using a texture plate to do the calibration; the build " +#~ "plate does not have good adhesion (please wash the build plate or apply " #~ "gluestick!) ...You can find more from our wiki.\n" #~ "\n" #~ "The calibration results have about 10 percent jitter in our test, which " @@ -16766,11 +17088,12 @@ msgstr "" #~ "bulabilirsiniz.\n" #~ "\n" #~ "Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " -#~ "başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamenti " -#~ "kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı " -#~ "her filament değişiminde filament için varsayılan dengeleme parametresini " -#~ "kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" +#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme " +#~ "baskısını başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan " +#~ "önce filamenti kalibre edecektir; Çok renkli/malzeme baskısını " +#~ "başlattığınızda, yazıcı her filament değişiminde filament için varsayılan " +#~ "dengeleme parametresini kullanacaktır ve bu çoğu durumda iyi bir sonuç " +#~ "verecektir.\n" #~ "\n" #~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum " #~ "olduğunu lütfen unutmayın: kalibrasyonu yapmak için doku plakası " @@ -16778,14 +17101,14 @@ msgstr "" #~ "yıkayın veya yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden " #~ "bulabilirsiniz.\n" #~ "\n" -#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " -#~ "ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim " +#~ "var ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " #~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel " #~ "nedeni araştırıyoruz." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure you " -#~ "want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure " +#~ "you want to overrides the other results?" #~ msgstr "" #~ "Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " #~ "geçersiz kılmak istediğinizden emin misiniz?" @@ -16793,11 +17116,11 @@ msgstr "" #, c-format, boost-format #~ msgid "" #~ "There is already a historical calibration result with the same name: %s. " -#~ "Only one of the results with the same name is saved. Are you sure you want " -#~ "to overrides the historical result?" +#~ "Only one of the results with the same name is saved. Are you sure you " +#~ "want to overrides the historical result?" #~ msgstr "" -#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " -#~ "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada " +#~ "sahip sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " #~ "istediğinizden emin misiniz?" #~ msgid "Please find the cornor with perfect degree of extrusion" @@ -16820,11 +17143,11 @@ msgstr "" #~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " #~ "first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have the " -#~ "neighbouring infill to adhere to. However, the infill will slighly push " -#~ "out the printed walls where it is attached to them, resulting in a worse " -#~ "external surface finish. It can also cause the infill to shine through the " -#~ "external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have " +#~ "the neighbouring infill to adhere to. However, the infill will slighly " +#~ "push out the printed walls where it is attached to them, resulting in a " +#~ "worse external surface finish. It can also cause the infill to shine " +#~ "through the external surfaces of the part." #~ msgstr "" #~ "Duvar/dolgu sırası. Onay kutusunun işareti kaldırıldığında ilk olarak " #~ "duvarlar yazdırılır ve bu çoğu durumda en iyi sonucu verir.\n" @@ -16839,9 +17162,9 @@ msgstr "" #~ msgstr "V" #~ msgid "" -#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " -#~ "by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci " -#~ "and the RepRap community" +#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from " +#~ "PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro " +#~ "Ranellucci and the RepRap community" #~ msgstr "" #~ "Orca Slicer, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " #~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve " @@ -16912,15 +17235,16 @@ msgstr "" #~ "değer) korumak ister misiniz?" #~ msgid "" -#~ "You have previously modified your settings and are about to overwrite them " -#~ "with new ones." +#~ "You have previously modified your settings and are about to overwrite " +#~ "them with new ones." #~ msgstr "" -#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini yazmak " -#~ "üzeresiniz." +#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini " +#~ "yazmak üzeresiniz." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset settings?" +#~ "Do you want to keep your current modified settings, or use preset " +#~ "settings?" #~ msgstr "" #~ "\n" #~ "Geçerli değiştirilen ayarlarınızı korumak mı yoksa önceden ayarlanmış " @@ -16940,8 +17264,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " -#~ "ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." +#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası " +#~ "seçin ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." #~ msgid "MC" #~ msgstr "MC" @@ -16981,8 +17305,8 @@ msgstr "" #~ "The 3mf file version is in Beta and it is newer than the current Bambu " #~ "Studio version." #~ msgstr "" -#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden daha " -#~ "yenidir." +#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden " +#~ "daha yenidir." #~ msgid "If you would like to try Bambu Studio Beta, you may click to" #~ msgstr "Bambu Studio Beta’yı denemek isterseniz tıklayabilirsiniz." @@ -17009,9 +17333,9 @@ msgstr "" #~ "Green means that AMS humidity is normal, orange represent humidity is " #~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " -#~ "ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o " -#~ "kadar iyidir.)" +#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, " +#~ "kırmızı ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar " +#~ "düşükse o kadar iyidir.)" #~ msgid "Desiccant status" #~ msgstr "Kurutucu durumu" @@ -17021,14 +17345,14 @@ msgstr "" #~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" #~ "İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " -#~ "kadar iyidir.)" +#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa " +#~ "o kadar iyidir.)" #~ msgid "" #~ "Note: When the lid is open or the desiccant pack is changed, it can take " #~ "hours or a night to absorb the moisture. Low temperatures also slow down " -#~ "the process. During this time, the indicator may not represent the chamber " -#~ "accurately." +#~ "the process. During this time, the indicator may not represent the " +#~ "chamber accurately." #~ msgstr "" #~ "Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " #~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. " @@ -17126,14 +17450,14 @@ msgstr "" #~ msgid "" #~ "Please go to filament setting to edit your presets if you need.\n" #~ "Please note that nozzle temperature, hot bed temperature, and maximum " -#~ "volumetric speed have a significant impact on printing quality. Please set " -#~ "them carefully." +#~ "volumetric speed have a significant impact on printing quality. Please " +#~ "set them carefully." #~ msgstr "" -#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " -#~ "gidin.\n" +#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament " +#~ "ayarına gidin.\n" #~ "Lütfen püskürtme ucu sıcaklığının, sıcak yatak sıcaklığının ve maksimum " -#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip olduğunu " -#~ "unutmayın. Lütfen bunları dikkatlice ayarlayın." +#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip " +#~ "olduğunu unutmayın. Lütfen bunları dikkatlice ayarlayın." #~ msgid "Studio Version:" #~ msgstr "Stüdyo Sürümü:" @@ -17178,8 +17502,8 @@ msgstr "" #~ msgstr "Depolama Yüklemesini Test Etme" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/" -#~ "machine_max_speed_y).\n" +#~ "The speed setting exceeds the printer's maximum speed " +#~ "(machine_max_speed_x/machine_max_speed_y).\n" #~ "Orca will automatically cap the print speed to ensure it doesn't surpass " #~ "the printer's capabilities.\n" #~ "You can adjust the maximum speed setting in your printer's configuration " @@ -17187,8 +17511,8 @@ msgstr "" #~ msgstr "" #~ "Hız ayarı yazıcının maksimum hızını aşıyor (machine_max_speed_x/" #~ "machine_max_speed_y).\n" -#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma hızını " -#~ "otomatik olarak sınırlayacaktır.\n" +#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma " +#~ "hızını otomatik olarak sınırlayacaktır.\n" #~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki " #~ "maksimum hız ayarını yapabilirsiniz." @@ -17214,8 +17538,8 @@ msgstr "" #~ "Add solid infill near sloping surfaces to guarantee the vertical shell " #~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " -#~ "dolgu ekleyin (üst + alt katı katmanlar)" +#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına " +#~ "katı dolgu ekleyin (üst + alt katı katmanlar)" #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Duvarlardaki katı dolguyu daha da azaltın (deneysel)" @@ -17269,19 +17593,19 @@ msgstr "" #~ "are not specified explicitly." #~ msgstr "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma " -#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament " -#~ "için minimum yazdırma hızı." +#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde " +#~ "filament için minimum yazdırma hızı." #~ msgid "No sparse layers (EXPERIMENTAL)" #~ msgstr "Seyrek katman yok (DENEYSEL)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgid "The Config can not be loaded." @@ -17296,8 +17620,8 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " -#~ "extruders work better with this option unckecked (absolute extrusion " +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " #~ "mode). Wipe tower is only compatible with relative mode. It is always " #~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" @@ -17427,8 +17751,8 @@ msgstr "" #~ "Bir Parçayı Çıkar\n" #~ "Negatif parça değiştiriciyi kullanarak bir ağı diğerinden " #~ "çıkarabileceğinizi biliyor muydunuz? Bu şekilde örneğin doğrudan Orca " -#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler oluşturabilirsiniz. " -#~ "Daha fazlasını belgelerde okuyun." +#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler " +#~ "oluşturabilirsiniz. Daha fazlasını belgelerde okuyun." #~ msgid "Filling bed " #~ msgstr "Yatak doldurma " @@ -17444,7 +17768,8 @@ msgstr "" #~ msgstr "" #~ "Doğrusal desene geçilsin mi?\n" #~ "Evet - otomatik olarak doğrusal desene geçin\n" -#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" +#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere " +#~ "sıfırlayın" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." #~ msgstr "" @@ -17685,8 +18010,8 @@ msgstr "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " -#~ "yükle" +#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/" +#~ "yazıcıayarlarını yükle" #~ msgid "Output directory" #~ msgstr "Çıkış dizini" @@ -17733,8 +18058,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " -#~ "olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." +#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması " +#~ "mümkün olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." #~ msgid "Online Models" #~ msgstr "Çevrimiçi Modeller" @@ -17748,8 +18073,8 @@ msgstr "" #~ msgid "" #~ "There are currently no identical spare consumables available, and " #~ "automatic replenishment is currently not possible. \n" -#~ "(Currently supporting automatic supply of consumables with the same brand, " -#~ "material type, and color)" +#~ "(Currently supporting automatic supply of consumables with the same " +#~ "brand, material type, and color)" #~ msgstr "" #~ "Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " #~ "anda mümkün değildir.\n" @@ -17781,7 +18106,8 @@ msgstr "" #~ "daha sıcak olamaz" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" +#~ msgstr "" +#~ "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" #~ msgid "" #~ "This option is enabled if machine support controlling chamber temperature" @@ -17809,7 +18135,8 @@ msgstr "" #~ "katmanları etkilemez" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." +#~ msgstr "" +#~ "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." #~ msgid "The model has too many empty layers." #~ msgstr "Modelde çok fazla boş katman var." @@ -17827,8 +18154,9 @@ msgstr "" #~ "Bed temperature when high temperature plate is installed. Value 0 means " #~ "the filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " -#~ "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " +#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " +#~ "gelir" #~ msgid "" #~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" @@ -17848,7 +18176,8 @@ msgstr "" #~ msgstr "" #~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " #~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " -#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " +#~ "azaltır.\n" #~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " #~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " #~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 6d2ef2fed3..1c0db33441 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-06-30 23:05+0300\n" "Last-Translator: \n" "Language-Team: \n" @@ -80,9 +80,6 @@ msgstr "Розумний кут заповнення" msgid "On overhangs only" msgstr "Лише на звисах" -msgid "Auto support threshold angle: " -msgstr "Пороговий кут автоматичної підтримки: " - msgid "Circle" msgstr "Коло" @@ -102,6 +99,9 @@ msgstr "Малювання лише на вибраних гранях: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Виділити межі з відповідним кутом виступу." +msgid "Auto support threshold angle: " +msgstr "Пороговий кут автоматичної підтримки: " + msgid "No auto support" msgstr "Немає автоматичної підтримки" @@ -4151,15 +4151,6 @@ msgstr "Загальний час" msgid "Total cost" msgstr "Загальна вартість" -msgid "up to" -msgstr "аж до" - -msgid "above" -msgstr "вище" - -msgid "from" -msgstr "від" - msgid "Color Scheme" msgstr "Колірна схема" @@ -4223,12 +4214,12 @@ msgstr "Час зміни філаменту" msgid "Cost" msgstr "Витрата" -msgid "Color change" -msgstr "Зміна кольору" - msgid "Print" msgstr "Друк" +msgid "Color change" +msgstr "Зміна кольору" + msgid "Printer" msgstr "Принтер" @@ -6160,6 +6151,14 @@ msgstr "Виявлено об'єкт, що складається з кільк msgid "The file does not contain any geometry data." msgstr "Файл не містить геометричних даних." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Об'єкт занадто великий" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6168,9 +6167,6 @@ msgstr "" "відповідав розміру?\n" "підігрів столу автоматично?" -msgid "Object too large" -msgstr "Об'єкт занадто великий" - msgid "Export STL file:" msgstr "Експорт файлу STL:" @@ -6547,9 +6543,6 @@ msgstr "Ви хочете продовжувати?" msgid "Language selection" msgstr "Вибір мови" -msgid "Switching application language while some presets are modified." -msgstr "Переключення мови програми при зміні деяких пресетів." - msgid "Changing application language" msgstr "Зміна мови програми" @@ -6751,6 +6744,12 @@ msgstr "" "З цією опцією ввімкненою, ви можете відправляти завдання на кілька пристроїв " "одночасно та керувати декількома пристроями." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Мережа" @@ -7747,12 +7746,21 @@ msgstr "Філамент підтримки" msgid "Tree supports" msgstr "Органічні підтримки" -msgid "Skirt" -msgstr "Плінтус" +msgid "Multimaterial" +msgstr "Мультиматеріал" msgid "Prime tower" msgstr "Вежа Очищення" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Плінтус" + msgid "Special mode" msgstr "Спеціальний режим" @@ -7807,6 +7815,9 @@ msgstr "" "Рекомендований діапазон температур сопла для цього філаменту. 0 означає " "відсутність установки" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Температура в камері друку" @@ -7917,9 +7928,6 @@ msgstr "G-код початку філаменту" msgid "Filament end G-code" msgstr "G-код кінця філаменту" -msgid "Multimaterial" -msgstr "Мультиматеріал" - msgid "Wipe tower parameters" msgstr "Параметри вежі витирання" @@ -8009,12 +8017,30 @@ msgstr "Обмеження ривка" msgid "Single extruder multimaterial setup" msgstr "Установка для роботи з декількома матеріалами на одному екструдері" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "Діаметр сопла" + msgid "Wipe tower" msgstr "Вежа витирання" msgid "Single extruder multimaterial parameters" msgstr "Параметри екструдеру в багато-екструдерному принтері" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "Обмеження висоти шару" @@ -8528,11 +8554,8 @@ msgstr "Список об'єктів" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Імпорт геометричних даних із файлів STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Вставити з буфера обміну" @@ -8582,33 +8605,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Згорнути/розгорнути бічну панель" -msgid "⌘+Any arrow" -msgstr "⌘+будь-яка стрілка" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Рух у просторі камери" -msgid "⌥+Left mouse button" -msgstr "⌥+Ліва кнопка миші" - msgid "Select a part" msgstr "Виберіть частину" -msgid "⌘+Left mouse button" -msgstr "⌘+Ліва кнопка миші" - msgid "Select multiple objects" msgstr "Вибрати кілька об'єктів" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+будь-яка стрілка" - -msgid "Alt+Left mouse button" -msgstr "Alt+Ліва кнопка миші" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Ліва кнопка миші" - msgid "Shift+Left mouse button" msgstr "Shift+Ліва кнопка миші" @@ -8711,24 +8719,12 @@ msgstr "Тарілка" msgid "Move: press to snap by 1mm" msgstr "Переміщення: натисніть для переміщення на 1 мм" -msgid "⌘+Mouse wheel" -msgstr "⌘+Колесо миші" - msgid "Support/Color Painting: adjust pen radius" msgstr "Підтримка/Колірне малювання: регулювання радіуса пера" -msgid "⌥+Mouse wheel" -msgstr "⌥+Колесо миші" - msgid "Support/Color Painting: adjust section position" msgstr "Підтримка/кольорове фарбування: регулювання положення секцій" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Колесо миші" - -msgid "Alt+Mouse wheel" -msgstr "Alt+колесо миші" - msgid "Gizmo" msgstr "Gizmo" @@ -9038,6 +9034,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Жодний об'єкт не може бути надрукований. Можливо, занадто маленький" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9283,11 +9284,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Змінна висота шару не підтримується з органічними підтримками." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Використання різних діаметрів насадок та різних діаметрів філаментів не " -"допускається, коли увімкнено вежу підготовки." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9297,10 +9297,9 @@ msgstr "" "адресації екструдера (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Запобігання витіканню з увімкненою вежею підготовки в даний момент не " -"підтримується." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10759,6 +10758,86 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" "Підвищення тиску (Klipper) AKA Коефіцієнт лінійного просування (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10949,6 +11028,21 @@ msgstr "" "Філамент охолоджується шляхом переміщення вперед-назад у охолоджувальних " "трубках. Вкажіть бажану кількість цих рухів." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Швидкість першого охолоджуючого руху" @@ -11784,9 +11878,12 @@ msgstr "Максимальна ширина сегментованої обла msgid "Interlocking depth of a segmented region" msgstr "Глибина взаємного взаємодії сегментованої області" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Глибина взаємного взаємодії сегментованої області. Нуль вимикає цю функцію." msgid "Use beam interlocking" msgstr "" @@ -12197,9 +12294,6 @@ msgstr "" "зберегти мінімальний час проходження шару, вказаний вище, коли ввімкнено " "сповільнення для кращого охолодження шару." -msgid "Nozzle diameter" -msgstr "Діаметр сопла" - msgid "Diameter of nozzle" msgstr "Діаметр сопла" @@ -12298,6 +12392,11 @@ msgstr "" "витікання не буде помітно. Це може зменшити час втягування складної моделі " "та заощадити час друку, але уповільнить нарізку та генерацію G-коду" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Формат імені файлу" @@ -12347,6 +12446,9 @@ msgstr "" "Визначте відсоток звису щодо ширини лінії та використовуйте для друку іншу " "швидкість. Для 100%% -ного звису використовується швидкість моста." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12397,12 +12499,21 @@ msgstr "" "аргумент, і вони можуть отримати доступ до налаштувань Orca Slicer " "конфігурації шляхом читання змінних середовища." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Нотатки для принтера" msgid "You can put your notes regarding the printer here." msgstr "Ви можете залишити свої примітки щодо принтера тут." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Відстань контакту плоту Z" @@ -12973,6 +13084,12 @@ msgstr "" "Площа заповнення, яка менша за порогове значення, замінюється внутрішнім " "суцільним заповненням" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13039,6 +13156,31 @@ msgstr "Традиційний" msgid "Temperature variation" msgstr "Зміна температури" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Стартовий G-code" @@ -13707,12 +13849,6 @@ msgstr "" "Кут на вершині конуса, який використовується для стабілізації очисної вежі. " "Чим більший кут, тим ширша основа." -msgid "Wipe tower purge lines spacing" -msgstr "Протерти відстань між лініями продувки башти" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Відстань між лініями продувки на протиральній башті." - msgid "Maximum wipe tower print speed" msgstr "Максимальна швидкість друку протиральної башти" @@ -13758,9 +13894,6 @@ msgstr "" "Для зовнішніх периметрів вежі витирання використовується швидкість " "внутрішнього периметра незалежно від цього параметра." -msgid "Wipe tower extruder" -msgstr "Очисна башта екструдера" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13817,6 +13950,30 @@ msgstr "Максимальна мостова відстань" msgid "Maximal distance between supports on sparse infill sections." msgstr "Максимальна відстань між підтримками на рідкісних ділянках заповнення." +msgid "Wipe tower purge lines spacing" +msgstr "Протерти відстань між лініями продувки башти" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Відстань між лініями продувки на протиральній башті." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Компенсація отвору XY" @@ -14155,6 +14312,14 @@ msgstr "Додаткове втягування" msgid "Currently planned extra extruder priming after deretraction." msgstr "В даний час планується додаткове ґрунтування екструдера після накату." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Поточний екструдер" @@ -14204,6 +14369,12 @@ msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" "Вектор bool, що вказує на те, чи використовується даний екструдер у друці." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Об'єм на один екструдер" @@ -14361,6 +14532,14 @@ msgstr "Ім'я фізичного принтера" msgid "Name of the physical printer used for slicing." msgstr "Назва фізичного принтера, який використовується для нарізки." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Номер шару" @@ -16800,6 +16979,76 @@ msgstr "" "ABS, відповідне підвищення температури гарячого ліжка може зменшити " "ймовірність деформації." +#~ msgid "up to" +#~ msgstr "аж до" + +#~ msgid "above" +#~ msgstr "вище" + +#~ msgid "from" +#~ msgstr "від" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Переключення мови програми при зміні деяких пресетів." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+будь-яка стрілка" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Ліва кнопка миші" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Ліва кнопка миші" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+будь-яка стрілка" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Ліва кнопка миші" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Ліва кнопка миші" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Колесо миші" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Колесо миші" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Колесо миші" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+колесо миші" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Використання різних діаметрів насадок та різних діаметрів філаментів не " +#~ "допускається, коли увімкнено вежу підготовки." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Запобігання витіканню з увімкненою вежею підготовки в даний момент не " +#~ "підтримується." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Глибина взаємного взаємодії сегментованої області. Нуль вимикає цю " +#~ "функцію." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Очисна башта екструдера" + #~ msgid "Current association: " #~ msgstr "Поточна асоціація: " diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 066f6c30d6..604c6c6d7c 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-07-28 07:12+0000\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -77,9 +77,6 @@ msgstr "智能填充角度" msgid "On overhangs only" msgstr "仅对悬空区生效" -msgid "Auto support threshold angle: " -msgstr "自动支撑角度阈值:" - msgid "Circle" msgstr "圆" @@ -99,6 +96,9 @@ msgstr "绘制仅对由%1%选中的面片生效" msgid "Highlight faces according to overhang angle." msgstr "根据当前设置的悬空角度来高亮片面。" +msgid "Auto support threshold angle: " +msgstr "自动支撑角度阈值:" + msgid "No auto support" msgstr "无自动支撑" @@ -1703,8 +1703,8 @@ msgid "" "No - Do not change these settings for me" msgstr "" "该模型顶面具有文字浮雕。\n" -"为了获得最佳效果,我们推荐您将“单层墙阈值”设置为 0 " -"以使“仅首层单层墙”效果最佳。\n" +"为了获得最佳效果,我们推荐您将“单层墙阈值”设置为 0 以使“仅首层单层墙”效果最" +"佳。\n" "\n" "自动调整这些设置?\n" "是 - 自动调整这些设置\n" @@ -3969,15 +3969,6 @@ msgstr "总时间" msgid "Total cost" msgstr "总成本" -msgid "up to" -msgstr "达到" - -msgid "above" -msgstr "高于" - -msgid "from" -msgstr "从" - msgid "Color Scheme" msgstr "颜色方案" @@ -4041,12 +4032,12 @@ msgstr "换料次数" msgid "Cost" msgstr "成本" -msgid "Color change" -msgstr "颜色更换" - msgid "Print" msgstr "打印" +msgid "Color change" +msgstr "颜色更换" + msgid "Printer" msgstr "打印机" @@ -5876,13 +5867,18 @@ msgid "The file does not contain any geometry data." msgstr "此文件不包含任何几何数据。" msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "对象看起来太大,希望将对象自动缩小以适应热床吗?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" msgid "Object too large" msgstr "对象太大" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "对象看起来太大,希望将对象自动缩小以适应热床吗?" + msgid "Export STL file:" msgstr "导出 STL 文件:" @@ -6238,9 +6234,6 @@ msgstr "是否继续?" msgid "Language selection" msgstr "语言选择" -msgid "Switching application language while some presets are modified." -msgstr "在切换应用语言之前发现某些参数预设有更改。" - msgid "Changing application language" msgstr "正在为应用程序切换语言" @@ -6301,8 +6294,9 @@ msgstr "局域网模式" msgid "" "This stops the transmission of data to Bambu's cloud services. Users who " "don't use BBL machines or use LAN mode only can safely turn on this function." -msgstr "停止向拓竹科技服务器发送数据。如果您不使用Bambu " -"Lab的打印机或仅使用局域网模式,则可以安全地启用此功能。" +msgstr "" +"停止向拓竹科技服务器发送数据。如果您不使用Bambu Lab的打印机或仅使用局域网模" +"式,则可以安全地启用此功能。" msgid "Enable network plugin" msgstr "启用网络插件" @@ -6334,8 +6328,9 @@ msgid "" "If this is enabled, when starting OrcaSlicer and another instance of the " "same OrcaSlicer is already running, that instance will be reactivated " "instead." -msgstr "如果启用,当您在已经启动一个 OrcaSlicer 实例时再次启动 OrcaSlicer ," -"将会激活您已经启动的 OrcaSlicer 实例。" +msgstr "" +"如果启用,当您在已经启动一个 OrcaSlicer 实例时再次启动 OrcaSlicer ,将会激活" +"您已经启动的 OrcaSlicer 实例。" msgid "Home" msgstr "首页" @@ -6422,6 +6417,12 @@ msgid "" "same time and manage multiple devices." msgstr "启用此选项后,您可以同时向多个设备发送任务并管理多个设备。" +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "网络" @@ -7351,12 +7352,21 @@ msgstr "支撑耗材" msgid "Tree supports" msgstr "树状支撑" -msgid "Skirt" -msgstr "裙边" +msgid "Multimaterial" +msgstr "材料" msgid "Prime tower" msgstr "擦拭塔" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "裙边" + msgid "Special mode" msgstr "特殊模式" @@ -7403,6 +7413,9 @@ msgstr "建议喷嘴温度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "该材料的建议喷嘴温度范围。0表示未设置" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "打印仓温度" @@ -7500,9 +7513,6 @@ msgstr "耗材丝起始G-code" msgid "Filament end G-code" msgstr "耗材丝结束G-code" -msgid "Multimaterial" -msgstr "材料" - msgid "Wipe tower parameters" msgstr "色塔参数" @@ -7592,12 +7602,30 @@ msgstr "抖动限制" msgid "Single extruder multimaterial setup" msgstr "设置单挤出机多材料" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "喷嘴直径" + msgid "Wipe tower" msgstr "色塔" msgid "Single extruder multimaterial parameters" msgstr "单挤出机多材料参数" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "层高限制" @@ -8071,10 +8099,7 @@ msgstr "对象列表" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "从STL/STEP/3MF/OBJ/AMF文件中导入几何数据" -msgid "⌘+Shift+G" -msgstr "" - -msgid "Ctrl+Shift+G" +msgid "Shift+G" msgstr "" msgid "Paste from clipboard" @@ -8124,33 +8149,18 @@ msgstr "" msgid "Collapse/Expand the sidebar" msgstr "收起/展开 侧边栏" -msgid "⌘+Any arrow" -msgstr "⌘+方向键" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "沿相机视角移动对象" -msgid "⌥+Left mouse button" -msgstr "⌥+鼠标左键" - msgid "Select a part" msgstr "选择单个零件" -msgid "⌘+Left mouse button" -msgstr "⌘+鼠标左键" - msgid "Select multiple objects" msgstr "选择多个对象" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+方向键" - -msgid "Alt+Left mouse button" -msgstr "Alt+鼠标左键" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+鼠标左键" - msgid "Shift+Left mouse button" msgstr "Shift+鼠标左键" @@ -8253,24 +8263,12 @@ msgstr "准备" msgid "Move: press to snap by 1mm" msgstr "移动:以1mm为步进移动" -msgid "⌘+Mouse wheel" -msgstr "⌘+鼠标滚轮" - msgid "Support/Color Painting: adjust pen radius" msgstr "支撑/颜色绘制:调节画笔半径" -msgid "⌥+Mouse wheel" -msgstr "⌥+鼠标滚轮" - msgid "Support/Color Painting: adjust section position" msgstr "支撑/色彩绘制:调节剖面位置" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+鼠标滚轮" - -msgid "Alt+Mouse wheel" -msgstr "Alt+鼠标滚轮" - msgid "Gizmo" msgstr "" @@ -8564,6 +8562,11 @@ msgstr "部分模型在这些高度可能过薄,或者模型存在面片错误 msgid "No object can be printed. Maybe too small" msgstr "没有可打印的对象。可能是因为尺寸过小。" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -8788,9 +8791,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Organic支撑不支持可变层高。" msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." -msgstr "启用擦拭塔时,不允许使用不同的喷嘴直径和不同的材料直径。" +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." +msgstr "" msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -8800,8 +8804,9 @@ msgstr "" "塔。" msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." -msgstr "当启用擦拭塔时,目前不支持防滴功能。" +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." +msgstr "" msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10072,6 +10077,86 @@ msgstr "启用压力提前,一旦启用会覆盖自动检测的结果" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "压力提前(Klipper)或者线性提前(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10244,6 +10329,21 @@ msgid "" "Specify desired number of these moves." msgstr "耗材丝通过在喉管中来回移动来冷却。指定所需的移动次数。" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "第一次冷却移动的速度" @@ -10972,8 +11072,12 @@ msgstr "分段区域的最大宽度。将其设置为零会禁用此功能。" msgid "Interlocking depth of a segmented region" msgstr "分割区域的交错深度" -msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "分割区域的交错深度。0 则禁用此功能。" +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." +msgstr "" msgid "Use beam interlocking" msgstr "" @@ -11338,11 +11442,9 @@ msgid "" "The minimum printing speed that the printer will slow down to to attempt to " "maintain the minimum layer time above, when slow down for better layer " "cooling is enabled." -msgstr "在您启用“降低打印速度 " -"以得到更好的冷却”选项时最小的打印速度,以尝试保持上方设置的最小层时间。" - -msgid "Nozzle diameter" -msgstr "喷嘴直径" +msgstr "" +"在您启用“降低打印速度 以得到更好的冷却”选项时最小的打印速度,以尝试保持上方设" +"置的最小层时间。" msgid "Diameter of nozzle" msgstr "喷嘴直径" @@ -11430,6 +11532,11 @@ msgstr "" "当空驶完全在填充区域内时不触发回抽。这意味着即使漏料也是不可见的。对于复杂模" "型,该设置能够减少回抽次数以及打印时长,但是会造成G-code生成变慢" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "文件名格式" @@ -11476,6 +11583,9 @@ msgid "" msgstr "" "检测悬空相对于线宽的百分比,并应用不同的速度打印。100%%的悬空将使用桥接速度。" +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11515,10 +11625,15 @@ msgid "" "argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" -"如果您希望使用自定义脚本来处理输出的 " -"G-code,只需要在此列出这些脚本的绝对路径,使用分号来分割多个脚本。" -"脚本执行的第一个参数将会被设置为 G-code 文件的绝对路径," -"并支持脚本通过全局变量来读取 Orca Slicer 的设置。" +"如果您希望使用自定义脚本来处理输出的 G-code,只需要在此列出这些脚本的绝对路" +"径,使用分号来分割多个脚本。脚本执行的第一个参数将会被设置为 G-code 文件的绝" +"对路径,并支持脚本通过全局变量来读取 Orca Slicer 的设置。" + +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" msgid "Printer notes" msgstr "打印机注释" @@ -11526,6 +11641,9 @@ msgstr "打印机注释" msgid "You can put your notes regarding the printer here." msgstr "你可以把你关于打印机的注释放在这里。" +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "筏层Z间距" @@ -12022,6 +12140,12 @@ msgid "" "internal solid infill" msgstr "小于这个阈值的稀疏填充区域将会被内部实心填充替代。" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12079,6 +12203,31 @@ msgstr "传统模式" msgid "Temperature variation" msgstr "软化温度" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "起始G-code" @@ -12104,10 +12253,9 @@ msgid "" "printing, where we use M600/PAUSE to trigger the manual filament change " "action." msgstr "" -"启用该选项可以在打印开始时省略自定义更换耗材丝的 " -"G-code。整个打印过程中的工具头指令(如 " -"T0)将会被跳过。这对于手动多材料打印十分有用,其将会使用 M600/PAUSE " -"指令来使您可以进行手动对耗材丝进行更换。" +"启用该选项可以在打印开始时省略自定义更换耗材丝的 G-code。整个打印过程中的工具" +"头指令(如 T0)将会被跳过。这对于手动多材料打印十分有用,其将会使用 M600/" +"PAUSE 指令来使您可以进行手动对耗材丝进行更换。" msgid "Purge in prime tower" msgstr "冲刷进擦拭塔" @@ -12533,8 +12681,8 @@ msgid "" "added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" -"启用该选项以控制打印仓温度,这将会在\"machine_start_gcode" -"\"之前添加一个M191命令。\n" +"启用该选项以控制打印仓温度,这将会在\"machine_start_gcode\"之前添加一个M191命" +"令。\n" "G-code命令:M141/M191 S(0-255)" msgid "Chamber temperature" @@ -12688,12 +12836,6 @@ msgid "" "Larger angle means wider base." msgstr "塔锥体顶角的角度,用于稳定擦拭塔。角度越大,底座越宽。" -msgid "Wipe tower purge lines spacing" -msgstr "擦拭塔冲刷线间距" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "擦拭塔上冲刷线的间距" - msgid "Maximum wipe tower print speed" msgstr "擦拭塔最大打印速度" @@ -12732,9 +12874,6 @@ msgstr "" "\n" "对于擦拭塔外墙,无论此设置如何,都使用内墙速度。" -msgid "Wipe tower extruder" -msgstr "擦拭塔挤出机" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12785,6 +12924,30 @@ msgstr "最大桥接距离" msgid "Maximal distance between supports on sparse infill sections." msgstr "稀疏填充剖面上支撑之间的最大距离。" +msgid "Wipe tower purge lines spacing" +msgstr "擦拭塔冲刷线间距" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "擦拭塔上冲刷线的间距" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y 孔洞尺寸补偿" @@ -13088,6 +13251,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13130,6 +13301,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13274,6 +13451,14 @@ msgstr "物理打印机名称" msgid "Name of the physical printer used for slicing." msgstr "用于切片的物理打印机的名称。" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "层编号" @@ -15510,6 +15695,64 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "up to" +#~ msgstr "达到" + +#~ msgid "above" +#~ msgstr "高于" + +#~ msgid "from" +#~ msgstr "从" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "在切换应用语言之前发现某些参数预设有更改。" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+方向键" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+鼠标左键" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+鼠标左键" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+方向键" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+鼠标左键" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+鼠标左键" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+鼠标滚轮" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+鼠标滚轮" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+鼠标滚轮" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+鼠标滚轮" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "启用擦拭塔时,不允许使用不同的喷嘴直径和不同的材料直径。" + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "当启用擦拭塔时,目前不支持防滴功能。" + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "分割区域的交错深度。0 则禁用此功能。" + +#~ msgid "Wipe tower extruder" +#~ msgstr "擦拭塔挤出机" + #~ msgid "V" #~ msgstr "V" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 9fd73bb224..4ff1c7b512 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2023-11-06 14:37+0800\n" "Last-Translator: ablegods \n" "Language-Team: \n" @@ -85,9 +85,6 @@ msgstr "智慧填充角度" msgid "On overhangs only" msgstr "僅對懸空區生效" -msgid "Auto support threshold angle: " -msgstr "自動支撐角度臨界值:" - #, fuzzy msgid "Circle" msgstr "圓形" @@ -110,6 +107,9 @@ msgstr "僅允許在由以下條件選擇的平面上進行繪製:%1%" msgid "Highlight faces according to overhang angle." msgstr "根據懸空角度突出顯示面。" +msgid "Auto support threshold angle: " +msgstr "自動支撐角度臨界值:" + msgid "No auto support" msgstr "無自動支撐" @@ -4094,15 +4094,6 @@ msgstr "總時間" msgid "Total cost" msgstr "總成本" -msgid "up to" -msgstr "達到" - -msgid "above" -msgstr "高於" - -msgid "from" -msgstr "從" - msgid "Color Scheme" msgstr "顏色方案" @@ -4170,12 +4161,12 @@ msgstr "更換線材次數" msgid "Cost" msgstr "成本" -msgid "Color change" -msgstr "顏色更換" - msgid "Print" msgstr "列印" +msgid "Color change" +msgstr "顏色更換" + #, fuzzy msgid "Printer" msgstr "列印設備" @@ -6076,13 +6067,18 @@ msgid "The file does not contain any geometry data." msgstr "此檔案不包含任何幾何數據。" msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "物件看起來太大,希望將物件自動縮小以適應列印板嗎?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" msgid "Object too large" msgstr "物件太大" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "物件看起來太大,希望將物件自動縮小以適應列印板嗎?" + msgid "Export STL file:" msgstr "匯出 STL 檔案:" @@ -6447,9 +6443,6 @@ msgstr "是否繼續?" msgid "Language selection" msgstr "語言選擇" -msgid "Switching application language while some presets are modified." -msgstr "在切換應用語言之前發現某些參數預設有更改。" - msgid "Changing application language" msgstr "正在為應用程式切換語言" @@ -6628,6 +6621,12 @@ msgid "" "same time and manage multiple devices." msgstr "" +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "網路" @@ -7617,12 +7616,21 @@ msgstr "支撐線材" msgid "Tree supports" msgstr "樹狀支撐" -msgid "Skirt" -msgstr "側裙" +msgid "Multimaterial" +msgstr "多線材" msgid "Prime tower" msgstr "擦拭塔" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "側裙" + msgid "Special mode" msgstr "特殊模式" @@ -7672,6 +7680,9 @@ msgstr "建議噴嘴溫度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "該線材的建議噴嘴溫度範圍。0 表示未設定" +msgid "Flow ratio and Pressure Advance" +msgstr "" + #, fuzzy msgid "Print chamber temperature" msgstr "列印設備內部溫度" @@ -7786,9 +7797,6 @@ msgstr "線材起始 G-code" msgid "Filament end G-code" msgstr "線材結束 G-code" -msgid "Multimaterial" -msgstr "多線材" - msgid "Wipe tower parameters" msgstr "色塔參數" @@ -7885,12 +7893,30 @@ msgstr "抖動限制" msgid "Single extruder multimaterial setup" msgstr "單擠出機多線材設定" +msgid "Number of extruders of the printer." +msgstr "" + +msgid "" +"Single Extruder Multi Material is selected, \n" +"and all extruders must have the same diameter.\n" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" +msgstr "" + +msgid "Nozzle diameter" +msgstr "噴嘴直徑" + msgid "Wipe tower" msgstr "色塔" msgid "Single extruder multimaterial parameters" msgstr "單擠出機多線材參數" +msgid "" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" +msgstr "" + msgid "Layer height limits" msgstr "層高限制" @@ -8373,10 +8399,7 @@ msgstr "物件清單" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "從 STL/STEP/3MF/OBJ/AMF 檔案中匯入幾何數據" -msgid "⌘+Shift+G" -msgstr "" - -msgid "Ctrl+Shift+G" +msgid "Shift+G" msgstr "" msgid "Paste from clipboard" @@ -8430,35 +8453,20 @@ msgstr "" msgid "Collapse/Expand the sidebar" msgstr "摺疊/展開 側邊欄" -msgid "⌘+Any arrow" -msgstr "⌘+方向鍵" +msgid "Any arrow" +msgstr "" #, fuzzy msgid "Movement in camera space" msgstr "沿相機視角移動物件" -msgid "⌥+Left mouse button" -msgstr "⌥+滑鼠左鍵" - msgid "Select a part" msgstr "選擇單一零件" -msgid "⌘+Left mouse button" -msgstr "⌘+滑鼠左鍵" - #, fuzzy msgid "Select multiple objects" msgstr "選擇多個物件" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+方向鍵" - -msgid "Alt+Left mouse button" -msgstr "Alt+滑鼠左鍵" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+滑鼠左鍵" - msgid "Shift+Left mouse button" msgstr "Shift+滑鼠左鍵" @@ -8568,24 +8576,12 @@ msgstr "準備" msgid "Move: press to snap by 1mm" msgstr "移動:以 1mm 為單位步進移動" -msgid "⌘+Mouse wheel" -msgstr "⌘+滑鼠滾輪" - msgid "Support/Color Painting: adjust pen radius" msgstr "支撐/顏色繪製:調整筆刷半徑" -msgid "⌥+Mouse wheel" -msgstr "⌥+滑鼠滾輪" - msgid "Support/Color Painting: adjust section position" msgstr "支撐/色彩繪製:調整剖面位置" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+滑鼠滾輪" - -msgid "Alt+Mouse wheel" -msgstr "Alt+滑鼠滾輪" - msgid "Gizmo" msgstr "" @@ -8890,6 +8886,11 @@ msgstr "部分模型在這些高度可能過薄,或者模型存在缺陷" msgid "No object can be printed. Maybe too small" msgstr "沒有可列印的物件。可能是因為尺寸過小。" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + #, fuzzy msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9117,8 +9118,9 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "有機樹支撐不支持可變層高。" msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" msgid "" @@ -9127,7 +9129,8 @@ msgid "" msgstr "擦拭塔目前僅支援相對擠出機定址 (use_relative_e_distances=1)。" msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" msgid "" @@ -10391,6 +10394,86 @@ msgstr "啟用壓力提前,一旦啟用會覆蓋自動校準的結果" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "壓力提前(Klipper)或者線性提前(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + #, fuzzy msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " @@ -10566,6 +10649,21 @@ msgid "" "Specify desired number of these moves." msgstr "藉由在喉管中來回移動以冷卻線材。指定移動所需的次數。" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "第一次冷卻移動的速度" @@ -11318,7 +11416,11 @@ msgstr "分隔區域的最大寬度。零表示禁用此功能。" msgid "Interlocking depth of a segmented region" msgstr "" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" msgid "Use beam interlocking" @@ -11690,9 +11792,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "噴嘴直徑" - msgid "Diameter of nozzle" msgstr "噴嘴直徑" @@ -11781,6 +11880,11 @@ msgstr "" "當空駛完全在填充區域內時不觸發回抽。這意味著即使漏料也是不可見的。對於複雜模" "型,該設定能夠減少回抽次數以及列印時長,但是會造成 G-code 產生變慢" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "檔案名稱格式" @@ -11831,6 +11935,9 @@ msgstr "" "偵測懸空相對於線寬的百分比,並應用不同的速度列印。100%% 的懸空將使用橋接速" "度。" +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11867,12 +11974,21 @@ msgstr "" "分號分隔多個腳本。 腳本將傳遞 G-code 檔案的絕對路徑作為第一個參數,並且它們可" "以透過讀取環境變數來讀取 Orca Slicer 設定。" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "列印設備備註" msgid "You can put your notes regarding the printer here." msgstr "可以將列印設備的備註填寫在此處" +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "筏層Z間距" @@ -12339,6 +12455,12 @@ msgid "" "internal solid infill" msgstr "小於這個臨界值的稀疏填充區域將會被內部實心填充替代。" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12393,6 +12515,31 @@ msgstr "傳統模式" msgid "Temperature variation" msgstr "軟化溫度" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "起始 G-code" @@ -13004,12 +13151,6 @@ msgid "" "Larger angle means wider base." msgstr "圓錐體頂點處的角度,用於穩定擦拭塔。 更大的角度意味著更寬的底座。" -msgid "Wipe tower purge lines spacing" -msgstr "擦拭塔線距" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "擦拭塔上的線距。" - msgid "Maximum wipe tower print speed" msgstr "" @@ -13035,9 +13176,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "擦拭塔擠出機" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13092,6 +13230,30 @@ msgstr "最大橋接距離" msgid "Maximal distance between supports on sparse infill sections." msgstr "稀疏填充截面上的支撐之間的最大距離。" +msgid "Wipe tower purge lines spacing" +msgstr "擦拭塔線距" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "擦拭塔上的線距。" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y 孔洞尺寸補償" @@ -13395,6 +13557,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13437,6 +13607,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13581,6 +13757,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -15743,6 +15927,51 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "up to" +#~ msgstr "達到" + +#~ msgid "above" +#~ msgstr "高於" + +#~ msgid "from" +#~ msgstr "從" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "在切換應用語言之前發現某些參數預設有更改。" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+方向鍵" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+滑鼠左鍵" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+滑鼠左鍵" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+方向鍵" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+滑鼠左鍵" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+滑鼠左鍵" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+滑鼠滾輪" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+滑鼠滾輪" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+滑鼠滾輪" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+滑鼠滾輪" + +#~ msgid "Wipe tower extruder" +#~ msgstr "擦拭塔擠出機" + #, fuzzy #~ msgid "Printer local connection failed, please try again." #~ msgstr "列印設備區域網路連接失敗,請重試。" diff --git a/resources/web/data/text.js b/resources/web/data/text.js index 7d24296084..056a7b85f1 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -1304,6 +1304,9 @@ var LangText = { t113: "Możesz zmienić swój wybór w preferencjach w dowolnym momencie.", orca1: "Edytuj informacje o projekcie", orca2: "brak informacji o modelu", + orca3: "Tryb «Niewidzialny»", + orca4: "To wyłączy przesyłanie danych do usług chmurowych Bambu. Użytkownicy, którzy nie korzystają z maszyn BBL lub używają tylko trybu LAN, mogą bez obaw włączyć tę opcję.", + orca5: "Włącz tryb «Niewidzialny»", }, pt_BR: { t1: "Bem-vindo ao Orca Slicer", From d3df0c1b2952c471d95b1e576296bf2a031c093d Mon Sep 17 00:00:00 2001 From: Dima Buzdyk <46728448+buzzhuzz@users.noreply.github.com> Date: Sun, 4 Aug 2024 07:05:59 +0600 Subject: [PATCH 098/151] fix gizmo bar wobbling (#6230) * fix gizmo bar wobbling Gizmo bar is wobbling at specific application window width range. This comes from a bar scaling calculations method: - new scale calculated for already scaled bar - scale stored as application settings loosing precision Rework gizmo bar resizing code to remove feedback: - calculate scale factor based on unscaled bar size * rework gizmo bar scaling Unify scaling implementation across platforms (MacOS, Win, Linux). Now all platform scale bar setting icon size. Toolbar scale is used for high-DPI displays scaling only. * Add comments, reorganize changes to minimize diff --- src/slic3r/GUI/GLCanvas3D.cpp | 48 +++++++++++++++-------------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index bf791cdec6..0eca58fe58 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -7400,37 +7400,21 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() return; } - float scale = wxGetApp().toolbar_icon_scale(); Size cnv_size = get_canvas_size(); - //BBS: GUI refactor: GLToolbar - int size_i = int(GLToolbar::Default_Icons_Size * scale); - // force even size - if (size_i % 2 != 0) - size_i -= 1; - float size = size_i; - - // Set current size for all top toolbars. It will be used for next calculations -#if ENABLE_RETINA_GL - const float sc = m_retina_helper->get_scale_factor() * scale; - //BBS: GUI refactor: GLToolbar + // Orca: Toolbar scale is a constant value which depends on display resolution and OS. + // Icon size is the only variable we change to scale the toolbars. + const float sc = get_scale(); m_main_toolbar.set_scale(sc); m_assemble_view_toolbar.set_scale(sc); m_separator_toolbar.set_scale(sc); - collapse_toolbar.set_scale(sc / 2.0); - size *= m_retina_helper->get_scale_factor(); + collapse_toolbar.set_scale(sc); auto* m_notification = wxGetApp().plater()->get_notification_manager(); m_notification->set_scale(sc); m_gizmos.set_overlay_scale(sc); -#else - //BBS: GUI refactor: GLToolbar - m_main_toolbar.set_icons_size(size); - m_assemble_view_toolbar.set_icons_size(size); - m_separator_toolbar.set_icons_size(size); - collapse_toolbar.set_icons_size(size / 2.0); - m_gizmos.set_overlay_icon_size(size); -#endif // ENABLE_RETINA_GL + + float size = m_main_toolbar.get_icons_size(); //BBS: GUI refactor: GLToolbar #if BBS_TOOLBAR_ON_TOP @@ -7467,11 +7451,21 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() // set minimum scale as a auto scale for the toolbars float new_scale = std::min(new_h_scale, new_v_scale); -#if ENABLE_RETINA_GL - new_scale /= m_retina_helper->get_scale_factor(); -#endif - if (fabs(new_scale - scale) > 0.01) // scale is changed by 1% and more - wxGetApp().set_auto_toolbar_icon_scale(new_scale); + new_scale = std::min(new_scale, 1.f); + + //BBS: GUI refactor: GLToolbar + int size_i = int(GLToolbar::Default_Icons_Size * new_scale); + // Orca: force even size + if (size_i % 2 != 0) + size_i -= 1; + size = size_i; + + // Orca: set toolbar icon size regardless of platform + m_main_toolbar.set_icons_size(size); + m_assemble_view_toolbar.set_icons_size(size); + m_separator_toolbar.set_icons_size(size); + collapse_toolbar.set_icons_size(size / 2.0); + m_gizmos.set_overlay_icon_size(size); } void GLCanvas3D::_render_overlays() From 29e80afc06567ab8ae5955de3dac045224aec0a5 Mon Sep 17 00:00:00 2001 From: Dima Buzdyk <46728448+buzzhuzz@users.noreply.github.com> Date: Sun, 4 Aug 2024 08:48:24 +0600 Subject: [PATCH 099/151] Fix -Wsubobject-linkage warning (#6243) * Fix -Wsubobject-linkage warning Having tk::spline header-only implementation included from SmallAreaInfillFlowCompensator.hpp makes SmallAreaInfillFlowCompensator::flowModel have separate (albeit the same) implementation in each translation unit. In order to fix this issue, SmallAreaInfillFlowCompensator::flowModel converted to opaque 'pimpl' * spline: remove anonymous namespace Remove outer anonymous namespace from splice.h to make forward declaration for tk::spline possible. --- .../GCode/SmallAreaInfillFlowCompensator.cpp | 4 ++++ .../GCode/SmallAreaInfillFlowCompensator.hpp | 19 +++++-------------- src/spline/spline.h | 7 ------- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp index d52b02237d..e472b20794 100644 --- a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp +++ b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp @@ -15,6 +15,7 @@ #include "../PrintConfig.hpp" #include "SmallAreaInfillFlowCompensator.hpp" +#include "spline/spline.h" #include namespace Slic3r { @@ -79,6 +80,9 @@ SmallAreaInfillFlowCompensator::SmallAreaInfillFlowCompensator(const Slic3r::GCo BOOST_LOG_TRIVIAL(error) << "Error parsing small area infill compensation model: " << e.what(); } } + +SmallAreaInfillFlowCompensator::~SmallAreaInfillFlowCompensator() = default; + double SmallAreaInfillFlowCompensator::flow_comp_model(const double line_length) { if(flowModel == nullptr) diff --git a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp index e25c88522e..1bfa5149f7 100644 --- a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp +++ b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp @@ -4,25 +4,20 @@ #include "../libslic3r.h" #include "../PrintConfig.hpp" #include "../ExtrusionEntity.hpp" -#include "spline/spline.h" #include -namespace Slic3r { +namespace tk { +class spline; +} // namespace tk -#ifndef _WIN32 -// Currently on Linux/macOS, this class spits out large amounts of subobject linkage -// warnings because of the flowModel field. tk::spline is in an anonymous namespace which -// causes this issue. Until the issue can be solved, this is a temporary solution. -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsubobject-linkage" -#endif +namespace Slic3r { class SmallAreaInfillFlowCompensator { public: SmallAreaInfillFlowCompensator() = delete; explicit SmallAreaInfillFlowCompensator(const Slic3r::GCodeConfig& config); - ~SmallAreaInfillFlowCompensator() = default; + ~SmallAreaInfillFlowCompensator(); double modify_flow(const double line_length, const double dE, const ExtrusionRole role); @@ -39,10 +34,6 @@ private: double max_modified_length() { return eLengths.back(); } }; -#ifndef _WIN32 -#pragma GCC diagnostic pop -#endif - } // namespace Slic3r #endif /* slic3r_GCode_SmallAreaInfillFlowCompensator_hpp_ */ diff --git a/src/spline/spline.h b/src/spline/spline.h index c8f08418fb..4b1ddd6134 100644 --- a/src/spline/spline.h +++ b/src/spline/spline.h @@ -46,11 +46,6 @@ #pragma GCC diagnostic ignored "-Wunused-function" #endif -// unnamed namespace only because the implementation is in this -// header file and we don't want to export symbols to the obj files -namespace -{ - namespace tk { @@ -942,8 +937,6 @@ std::vector solve_cubic(double a, double b, double c, double d, } // namespace tk -} // namespace - #if !defined(_MSC_VER) #pragma GCC diagnostic pop #endif From e790d2142eb24192128769ed4f9378db8d4bdf3e Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 4 Aug 2024 10:52:11 +0800 Subject: [PATCH 100/151] Bump version to 2.2.0-dev --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index ac86c2d666..3b614bdfc0 100644 --- a/version.inc +++ b/version.inc @@ -10,7 +10,7 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "0") endif() -set(SoftFever_VERSION "2.1.1") +set(SoftFever_VERSION "2.2.0-dev") string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" SoftFever_VERSION_MATCH ${SoftFever_VERSION}) set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1}) From 00d17bf3870d0449f7f0b79f7f4fd576bc5c3b06 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 4 Aug 2024 12:37:26 +0800 Subject: [PATCH 101/151] Properly find used extruders when infill/wall_filament is set (#6335) --- src/libslic3r/Print.cpp | 7 ++- src/libslic3r/PrintObject.cpp | 9 ++-- src/slic3r/GUI/PartPlate.cpp | 97 ++++++++++++++++++++++++++++------- 3 files changed, 88 insertions(+), 25 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index b663f48976..702214eca5 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -382,12 +382,12 @@ std::vector Print::object_extruders() const { std::vector extruders; extruders.reserve(m_print_regions.size() * m_objects.size() * 3); - // BBS -#if 0 + + //Orca: Collect extruders from all regions. for (const PrintObject *object : m_objects) for (const PrintRegion ®ion : object->all_regions()) region.collect_object_printing_extruders(*this, extruders); -#else + for (const PrintObject* object : m_objects) { const ModelObject* mo = object->model_object(); for (const ModelVolume* mv : mo->volumes) { @@ -410,7 +410,6 @@ std::vector Print::object_extruders() const } } } -#endif sort_remove_duplicates(extruders); return extruders; } diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 0efc1a5421..30b267c151 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -139,6 +139,9 @@ PrintBase::ApplyStatus PrintObject::set_instances(PrintInstances &&instances) std::vector> PrintObject::all_regions() const { std::vector> out; + if(!m_shared_regions) + return out; + out.reserve(m_shared_regions->all_regions.size()); for (const std::unique_ptr ®ion : m_shared_regions->all_regions) out.emplace_back(*region.get()); @@ -3010,10 +3013,11 @@ std::vector PrintObject::object_extruders() const { std::vector extruders; extruders.reserve(this->all_regions().size() * 3); -#if 0 + + //Orca: Collect extruders from all regions. for (const PrintRegion ®ion : this->all_regions()) region.collect_object_printing_extruders(*this->print(), extruders); -#else + const ModelObject* mo = this->model_object(); for (const ModelVolume* mv : mo->volumes) { std::vector volume_extruders = mv->get_extruders(); @@ -3022,7 +3026,6 @@ std::vector PrintObject::object_extruders() const extruders.push_back(extruder - 1); } } -#endif sort_remove_duplicates(extruders); return extruders; } diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 99ec73a42a..1bc2b55adf 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1359,6 +1359,9 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const const DynamicPrintConfig& glb_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; int glb_support_intf_extr = glb_config.opt_int("support_interface_filament"); int glb_support_extr = glb_config.opt_int("support_filament"); + int glb_wall_extr = glb_config.opt_int("wall_filament"); + int glb_sparse_infill_extr = glb_config.opt_int("sparse_infill_filament"); + int glb_solid_infill_extr = glb_config.opt_int("solid_infill_filament"); bool glb_support = glb_config.opt_bool("enable_support"); glb_support |= glb_config.opt_int("raft_layers") > 0; @@ -1392,26 +1395,53 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const else obj_support = glb_support; - if (!obj_support) - continue; + if (obj_support) { + int obj_support_intf_extr = 0; + const ConfigOption* support_intf_extr_opt = mo->config.option("support_interface_filament"); + if (support_intf_extr_opt != nullptr) + obj_support_intf_extr = support_intf_extr_opt->getInt(); + if (obj_support_intf_extr != 0) + plate_extruders.push_back(obj_support_intf_extr); + else if (glb_support_intf_extr != 0) + plate_extruders.push_back(glb_support_intf_extr); - int obj_support_intf_extr = 0; - const ConfigOption* support_intf_extr_opt = mo->config.option("support_interface_filament"); - if (support_intf_extr_opt != nullptr) - obj_support_intf_extr = support_intf_extr_opt->getInt(); - if (obj_support_intf_extr != 0) - plate_extruders.push_back(obj_support_intf_extr); - else if (glb_support_intf_extr != 0) - plate_extruders.push_back(glb_support_intf_extr); + int obj_support_extr = 0; + const ConfigOption* support_extr_opt = mo->config.option("support_filament"); + if (support_extr_opt != nullptr) + obj_support_extr = support_extr_opt->getInt(); + if (obj_support_extr != 0) + plate_extruders.push_back(obj_support_extr); + else if (glb_support_extr != 0) + plate_extruders.push_back(glb_support_extr); + } + + int obj_wall_extr = 1; + const ConfigOption* wall_opt = mo->config.option("wall_filament"); + if (wall_opt != nullptr) + obj_wall_extr = wall_opt->getInt(); + if (obj_wall_extr != 1) + plate_extruders.push_back(obj_wall_extr); + else if (glb_wall_extr != 1) + plate_extruders.push_back(glb_wall_extr); + + int obj_sparse_infill_extr = 1; + const ConfigOption* sparse_infill_opt = mo->config.option("sparse_infill_filament"); + if (sparse_infill_opt != nullptr) + obj_sparse_infill_extr = sparse_infill_opt->getInt(); + if (obj_sparse_infill_extr != 1) + plate_extruders.push_back(obj_sparse_infill_extr); + else if (glb_sparse_infill_extr != 1) + plate_extruders.push_back(glb_sparse_infill_extr); + + int obj_solid_infill_extr = 1; + const ConfigOption* solid_infill_opt = mo->config.option("solid_infill_filament"); + if (solid_infill_opt != nullptr) + obj_solid_infill_extr = solid_infill_opt->getInt(); + if (obj_solid_infill_extr != 1) + plate_extruders.push_back(obj_solid_infill_extr); + else if (glb_solid_infill_extr != 1) + plate_extruders.push_back(glb_solid_infill_extr); - int obj_support_extr = 0; - const ConfigOption* support_extr_opt = mo->config.option("support_filament"); - if (support_extr_opt != nullptr) - obj_support_extr = support_extr_opt->getInt(); - if (obj_support_extr != 0) - plate_extruders.push_back(obj_support_extr); - else if (glb_support_extr != 0) - plate_extruders.push_back(glb_support_extr); } if (conside_custom_gcode) { @@ -1441,6 +1471,10 @@ std::vector PartPlate::get_extruders_under_cli(bool conside_custom_gcode, D // if 3mf file int glb_support_intf_extr = full_config.opt_int("support_interface_filament"); int glb_support_extr = full_config.opt_int("support_filament"); + int glb_wall_extr = full_config.opt_int("wall_filament"); + int glb_sparse_infill_extr = full_config.opt_int("sparse_infill_filament"); + int glb_solid_infill_extr = full_config.opt_int("solid_infill_filament"); + bool glb_support = full_config.opt_bool("enable_support"); glb_support |= full_config.opt_int("raft_layers") > 0; @@ -1502,6 +1536,33 @@ std::vector PartPlate::get_extruders_under_cli(bool conside_custom_gcode, D plate_extruders.push_back(obj_support_extr); else if (glb_support_extr != 0) plate_extruders.push_back(glb_support_extr); + + int obj_wall_extr = 1; + const ConfigOption* wall_opt = object->config.option("wall_filament"); + if (wall_opt != nullptr) + obj_wall_extr = wall_opt->getInt(); + if (obj_wall_extr != 1) + plate_extruders.push_back(obj_wall_extr); + else if (glb_wall_extr != 1) + plate_extruders.push_back(glb_wall_extr); + + int obj_sparse_infill_extr = 1; + const ConfigOption* sparse_infill_opt = object->config.option("sparse_infill_filament"); + if (sparse_infill_opt != nullptr) + obj_sparse_infill_extr = sparse_infill_opt->getInt(); + if (obj_sparse_infill_extr != 1) + plate_extruders.push_back(obj_sparse_infill_extr); + else if (glb_sparse_infill_extr != 1) + plate_extruders.push_back(glb_sparse_infill_extr); + + int obj_solid_infill_extr = 1; + const ConfigOption* solid_infill_opt = object->config.option("solid_infill_filament"); + if (solid_infill_opt != nullptr) + obj_solid_infill_extr = solid_infill_opt->getInt(); + if (obj_solid_infill_extr != 1) + plate_extruders.push_back(obj_solid_infill_extr); + else if (glb_solid_infill_extr != 1) + plate_extruders.push_back(glb_solid_infill_extr); } } From 604e9bba6fffd2a8cf7b722a15c2bc3272ccb33f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 4 Aug 2024 19:25:41 +0800 Subject: [PATCH 102/151] Revert "fix gizmo bar wobbling (#6230)" This reverts commit 9ff0e9335fed236bdf71acbaf05cc384e7f18146. --- src/slic3r/GUI/GLCanvas3D.cpp | 48 ++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 0eca58fe58..bf791cdec6 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -7400,21 +7400,37 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() return; } + float scale = wxGetApp().toolbar_icon_scale(); Size cnv_size = get_canvas_size(); - // Orca: Toolbar scale is a constant value which depends on display resolution and OS. - // Icon size is the only variable we change to scale the toolbars. - const float sc = get_scale(); + //BBS: GUI refactor: GLToolbar + int size_i = int(GLToolbar::Default_Icons_Size * scale); + // force even size + if (size_i % 2 != 0) + size_i -= 1; + float size = size_i; + + // Set current size for all top toolbars. It will be used for next calculations +#if ENABLE_RETINA_GL + const float sc = m_retina_helper->get_scale_factor() * scale; + //BBS: GUI refactor: GLToolbar m_main_toolbar.set_scale(sc); m_assemble_view_toolbar.set_scale(sc); m_separator_toolbar.set_scale(sc); - collapse_toolbar.set_scale(sc); + collapse_toolbar.set_scale(sc / 2.0); + size *= m_retina_helper->get_scale_factor(); auto* m_notification = wxGetApp().plater()->get_notification_manager(); m_notification->set_scale(sc); m_gizmos.set_overlay_scale(sc); - - float size = m_main_toolbar.get_icons_size(); +#else + //BBS: GUI refactor: GLToolbar + m_main_toolbar.set_icons_size(size); + m_assemble_view_toolbar.set_icons_size(size); + m_separator_toolbar.set_icons_size(size); + collapse_toolbar.set_icons_size(size / 2.0); + m_gizmos.set_overlay_icon_size(size); +#endif // ENABLE_RETINA_GL //BBS: GUI refactor: GLToolbar #if BBS_TOOLBAR_ON_TOP @@ -7451,21 +7467,11 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() // set minimum scale as a auto scale for the toolbars float new_scale = std::min(new_h_scale, new_v_scale); - new_scale = std::min(new_scale, 1.f); - - //BBS: GUI refactor: GLToolbar - int size_i = int(GLToolbar::Default_Icons_Size * new_scale); - // Orca: force even size - if (size_i % 2 != 0) - size_i -= 1; - size = size_i; - - // Orca: set toolbar icon size regardless of platform - m_main_toolbar.set_icons_size(size); - m_assemble_view_toolbar.set_icons_size(size); - m_separator_toolbar.set_icons_size(size); - collapse_toolbar.set_icons_size(size / 2.0); - m_gizmos.set_overlay_icon_size(size); +#if ENABLE_RETINA_GL + new_scale /= m_retina_helper->get_scale_factor(); +#endif + if (fabs(new_scale - scale) > 0.01) // scale is changed by 1% and more + wxGetApp().set_auto_toolbar_icon_scale(new_scale); } void GLCanvas3D::_render_overlays() From d9b4123bdfe10de2a57e9168af9bcc0cfa60791f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 4 Aug 2024 20:06:02 +0800 Subject: [PATCH 103/151] workaround fix for flicking top bars --- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index bf791cdec6..f7789d681b 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -7470,7 +7470,7 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() #if ENABLE_RETINA_GL new_scale /= m_retina_helper->get_scale_factor(); #endif - if (fabs(new_scale - scale) > 0.01) // scale is changed by 1% and more + if (fabs(new_scale - scale) > 0.05) // scale is changed by 5% and more wxGetApp().set_auto_toolbar_icon_scale(new_scale); } From e68b5feebe67e3dacbbd87038486bc5ab068fcf5 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Tue, 6 Aug 2024 17:27:08 +0300 Subject: [PATCH 104/151] Fix z hop performed after retraction in PA pattern calibration. Fix z hop config value not used (#6245) * Fix z hop performed after retraction in PA pattern calibration. Fix zhop config value not used * Updated gathering of z hop value method for consistency --- src/libslic3r/calib.cpp | 35 +++++++++++++++++------------------ src/libslic3r/calib.hpp | 2 +- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index 141a2203cc..a00c8dd904 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -18,13 +18,19 @@ float CalibPressureAdvance::find_optimal_PA_speed(const DynamicPrintConfig &conf return std::floor(pa_speed); } -std::string CalibPressureAdvance::move_to(Vec2d pt, GCodeWriter &writer, std::string comment) +std::string CalibPressureAdvance::move_to(Vec2d pt, GCodeWriter &writer, std::string comment, double z, double layer_height) { std::stringstream gcode; - gcode << writer.retract(); - gcode << writer.travel_to_xy(pt, comment); - gcode << writer.unretract(); + gcode << writer.retract(); // retract before z move or move + if(z > EPSILON && layer_height >= 0){ + gcode << writer.travel_to_z(z, "z-hop"); // Perform z hop + gcode << writer.travel_to_xy(pt, comment); // Travel with z move + gcode << writer.travel_to_z(layer_height, "undo z-hop"); // Undo z hop + }else { + gcode << writer.travel_to_xy(pt, comment); + } + gcode << writer.unretract(); // unretract after z move is complete m_last_pos = Vec3d(pt.x(), pt.y(), 0); @@ -565,10 +571,11 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi std::vector gcode_items; const int num_patterns = get_num_patterns(); // "cache" for use in loops + const double zhop_config_value = m_config.option("z_hop")->get_at(0); // draw pressure advance pattern for (int i = 0; i < m_num_layers; ++i) { const double layer_height = height_first_layer() + height_z_offset() + (i * height_layer()); - const double zhop_height = layer_height + height_layer(); + const double zhop_height = layer_height + zhop_config_value; if (i > 0) { gcode << "; end pressure advance pattern for layer\n"; @@ -619,9 +626,7 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi double initial_x = to_x; double initial_y = to_y; - gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); - gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to pattern start"); - gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); + gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to pattern start",zhop_height,layer_height); for (int j = 0; j < num_patterns; ++j) { // increment pressure advance @@ -646,22 +651,16 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi if (k != wall_count() - 1) { // perimeters not done yet. move to next perimeter to_x += line_spacing_angle(); - gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); - gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to start next pattern wall"); - gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); + gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to start next pattern wall", zhop_height, layer_height); // Call move to command with XY as well as z hop and layer height to invoke and undo z lift } else if (j != num_patterns - 1) { // patterns not done yet. move to next pattern to_x += m_pattern_spacing + line_width(); - gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); - gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to next pattern"); - gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); + gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to next pattern", zhop_height, layer_height); // Call move to command with XY as well as z hop and layer height to invoke and undo z lift } else if (i != m_num_layers - 1) { // layers not done yet. move back to start to_x = initial_x; - gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); - gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move back to start position"); - gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); - gcode << m_writer.reset_e(); // reset extruder before printing placeholder cube to avoid + gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move back to start position", zhop_height, layer_height); // Call move to command with XY as well as z hop and layer height to invoke and undo z lift + gcode << m_writer.reset_e(); // reset extruder before printing placeholder cube to avoid over extrusion } else { // everything done } diff --git a/src/libslic3r/calib.hpp b/src/libslic3r/calib.hpp index af5bbb81d5..e612c58026 100644 --- a/src/libslic3r/calib.hpp +++ b/src/libslic3r/calib.hpp @@ -151,7 +151,7 @@ protected: void delta_scale_bed_ext(BoundingBoxf &bed_ext) const { bed_ext.scale(1.0f / 1.41421f); } - std::string move_to(Vec2d pt, GCodeWriter &writer, std::string comment = std::string()); + std::string move_to(Vec2d pt, GCodeWriter &writer, std::string comment = std::string(), double z = 0, double layer_height = -1); double e_per_mm(double line_width, double layer_height, float nozzle_diameter, float filament_diameter, float print_flow_ratio) const; double speed_adjust(int speed) const { return speed * 60; }; From 1db01a9b7606aee781bb50636d8b47154f9bbc96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olcay=20=C3=96REN?= <33813227+olcayoren@users.noreply.github.com> Date: Tue, 6 Aug 2024 17:27:32 +0300 Subject: [PATCH 105/151] Update TURKISH translations (#6337) * Update OrcaSlicer_tr.po - TURKISH translation update * Update TURKISH translations * Update TURKISH translations * Update TURKISH translations --- localization/i18n/tr/OrcaSlicer_tr.po | 1890 +++++++++++++------------ 1 file changed, 957 insertions(+), 933 deletions(-) diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 1aec931ee7..37922c257d 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-03 18:54+0200\n" -"PO-Revision-Date: 2024-07-11 00:22+0300\n" +"PO-Revision-Date: 2024-08-04 11:24+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: \n" "Language: tr\n" @@ -728,8 +728,8 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " -"tipi seçmeyi deneyin." +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı tipi " +"seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." @@ -1013,9 +1013,9 @@ msgid "" "Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " -"uygulama seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini " -"belirtmeniz gerekir." +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " +"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz " +"gerekir." msgid "No symbol" msgstr "Sembol yok" @@ -1467,8 +1467,8 @@ msgstr "Bilgi" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will " -"not be affected." +"Please note, application settings will be lost, but printer profiles will not " +"be affected." msgstr "" "OrcaSlicer konfigürasyon dosyası bozulmuş olabilir ve ayrıştırılamayabilir.\n" "OrcaSlicer, konfigürasyon dosyasını yeniden oluşturmayı denedi.\n" @@ -2091,8 +2091,8 @@ msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut " +"infornation first." msgstr "" "Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" "Bundan sonra model tutarlılığı garanti edilemez.\n" @@ -2155,8 +2155,7 @@ msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." msgid "" "If first selected item is a part, the second one should be part in the same " "object." -msgstr "" -"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." +msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." msgid "The type of the last solid object part is not to be changed." msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." @@ -2513,16 +2512,14 @@ msgstr "" msgid "Arranging done." msgstr "Hizalama tamamlandı." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" "Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " "bulundu." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" "Hizalama tek tablaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" @@ -2622,8 +2619,7 @@ msgstr "" "deneyin." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "" -"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." +msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." msgid "" "Failed to upload print file to FTP. Please check the network status and try " @@ -2679,8 +2675,8 @@ msgid "Importing SLA archive" msgstr "SLA arşivi içe aktarılıyor" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer " +"preset first before importing that SLA archive." msgstr "" "SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " "önce bazı SLA yazıcı ön ayarlarını etkinleştirin." @@ -2692,8 +2688,8 @@ msgid "Importing done." msgstr "İçe aktarma tamamlandı." msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets " +"were used as fallback." msgstr "" "İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " "ayarları geri dönüş olarak kullanıldı." @@ -2750,8 +2746,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " -"olan açık kaynaklı bileşenleri kullanır" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " +"açık kaynaklı bileşenleri kullanır" #, c-format, boost-format msgid "About %s" @@ -2765,8 +2761,7 @@ msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " -"almaktadır." +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "" @@ -2845,8 +2840,7 @@ msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "" -"Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" +msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" msgid "Other Color" msgstr "Diğer renk" @@ -2858,9 +2852,9 @@ msgid "Dynamic flow calibration" msgstr "Dinamik akış kalibrasyonu" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration results. " +"Please fill in the same values as the actual printing. They can be auto-" +"filled by selecting a filament preset." msgstr "" "Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " "etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " @@ -2995,8 +2989,7 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " -"edecektir." +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." msgid "Group" msgstr "Grup" @@ -3034,8 +3027,8 @@ msgid "Insertion update" msgstr "Ekleme güncellemesi" msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a new " +"Bambu Lab filament. This takes about 20 seconds." msgstr "" "AMS, yeni bir Bambu Lab filamenti takıldığında filament bilgilerini otomatik " "olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." @@ -3058,17 +3051,16 @@ msgid "Power on update" msgstr "Güncellemeyi aç" msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." +"The AMS will automatically read the information of inserted filament on start-" +"up. It will take about 1 minute.The reading process will roll filament spools." msgstr "" "AMS, başlangıçta takılan filamentin bilgilerini otomatik olarak okuyacaktır. " "Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." +"The AMS will not automatically read information from inserted filament during " +"startup and will continue to use the information recorded before the last " +"shutdown." msgstr "" "AMS, başlatma sırasında takılan filamentden bilgileri otomatik olarak okumaz " "ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." @@ -3082,8 +3074,8 @@ msgid "" "automatically." msgstr "" "AMS, filament bilgisi güncellendikten sonra Bambu filamentin kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " -"olarak güncellenecektir." +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " +"güncellenecektir." msgid "AMS filament backup" msgstr "AMS filament yedeklemesi" @@ -3115,8 +3107,8 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " -"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " +"kontrol edin, kontrol edip yeniden deneyin." msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " @@ -3204,8 +3196,8 @@ msgid "" "device. The corrupted output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Hedef cihazda " -"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz " -"kullanmayı deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." +"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı " +"deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." #, boost-format msgid "" @@ -3438,8 +3430,8 @@ msgid "Send to" msgstr "Gönderildi" msgid "" -"printers at the same time.(It depends on how many devices can undergo " -"heating at the same time.)" +"printers at the same time.(It depends on how many devices can undergo heating " +"at the same time.)" msgstr "" "aynı anda kaç yazıcının ısıtma işleminden geçebileceği, aynı anda " "ısıtılabilecek cihaz sayısına bağlıdır." @@ -3546,8 +3538,8 @@ msgid "" "The recommended minimum temperature is less than 190 degree or the " "recommended maximum temperature is greater than 300 degree.\n" msgstr "" -"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum " -"sıcaklık 300 dereceden yüksektir.\n" +"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum sıcaklık " +"300 dereceden yüksektir.\n" msgid "" "The recommended minimum temperature cannot be higher than the recommended " @@ -3584,13 +3576,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature," -"it may result in material softening and clogging.The maximum safe " -"temperature for the material is %d" +"Current chamber temperature is higher than the material's safe temperature,it " +"may result in material softening and clogging.The maximum safe temperature " +"for the material is %d" msgstr "" -"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, " -"malzemenin yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum " -"güvenli sıcaklık %d'dir" +"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, malzemenin " +"yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum güvenli " +"sıcaklık %d'dir" msgid "" "Too small layer height.\n" @@ -3644,16 +3636,16 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness " -"is set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness is " +"set to All. " msgstr "" -"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak " -"ayarlandığından emin olunduğunda iyi çalışmaz. " +"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından " +"emin olunduğunda iyi çalışmaz. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable " -"alternate extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable alternate " +"extra wall\n" "No - Dont use alternate extra wall" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi? \n" @@ -3730,8 +3722,7 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " -"etkinleştirin\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" msgid "Auto bed leveling" @@ -3864,9 +3855,9 @@ msgid "Update failed." msgstr "Güncelleme başarısız." msgid "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" -"TPU) is not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds 45℃." +"In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is " +"not allowed to be loaded." msgstr "" "Mevcut hazne sıcaklığı veya hedef hazne sıcaklığı 45 ° C'yi aşıyor Ekstruder " "tıkanmasını önlemek için düşük sıcaklıkta filament (PLA / PETG / TPU) " @@ -3893,8 +3884,7 @@ msgstr "" msgid "Failed to start printing job" msgstr "Yazdırma işi başlatılamadı" -msgid "" -"This calibration does not support the currently selected nozzle diameter" +msgid "This calibration does not support the currently selected nozzle diameter" msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir" msgid "Current flowrate cali param is invalid" @@ -3919,12 +3909,12 @@ msgid "" "Damp PVA will become flexible and get stuck inside AMS,please take care to " "dry it before use." msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " -"önce kurutmaya dikkat edin." +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " +"kurutmaya dikkat edin." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " +"please use with caution." msgstr "" "CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " "kolaydır, lütfen dikkatli kullanın." @@ -4930,8 +4920,8 @@ msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing " -"the configs." +"Hint: Make sure you have added the corresponding printer before importing the " +"configs." msgstr "" "\n" "İpucu: Yapılandırmaları içe aktarmadan önce ilgili yazıcıyı eklediğinizden " @@ -4980,8 +4970,7 @@ msgid "Please confirm if the printer is connected." msgstr "Lütfen yazıcının bağlı olup olmadığını onaylayın." msgid "" -"The printer is currently busy downloading. Please try again after it " -"finishes." +"The printer is currently busy downloading. Please try again after it finishes." msgstr "" "Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." @@ -4992,8 +4981,7 @@ msgid "Problem occured. Please update the printer firmware and try again." msgstr "" "Sorun oluştu. Lütfen yazıcının ürün yazılımını güncelleyin ve tekrar deneyin." -msgid "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" "Yalnızca LAN Canlı İzleme kapalı. Lütfen yazıcı ekranındaki canlı " "görüntülemeyi açın." @@ -5008,8 +4996,8 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Bağlantı Başarısız. Lütfen ağı kontrol edip tekrar deneyin" msgid "" -"Please check the network and try again, You can restart or update the " -"printer if the issue persists." +"Please check the network and try again, You can restart or update the printer " +"if the issue persists." msgstr "" "Lütfen ağı kontrol edip tekrar deneyin. Sorun devam ederse yazıcıyı yeniden " "başlatabilir veya güncelleyebilirsiniz." @@ -5152,8 +5140,7 @@ msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" "%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "" -"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" msgid "Delete files" msgstr "Dosyaları sil" @@ -5213,8 +5200,8 @@ msgid "" "Reconnecting the printer, the operation cannot be completed immediately, " "please try again later." msgstr "" -"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha " -"sonra tekrar deneyin." +"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha sonra " +"tekrar deneyin." msgid "File does not exist." msgstr "Dosya bulunmuyor." @@ -5297,8 +5284,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki " -"derecelendirmenin üzerine yazılacaktır)" +"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki derecelendirmenin " +"üzerine yazılacaktır)" msgid "Rate" msgstr "Derecelendir" @@ -5894,8 +5881,8 @@ msgstr "Peletler" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " -"sayfasında bir yazıcı seçin." +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " +"bir yazıcı seçin." msgid "Sync filaments with AMS" msgstr "Filamentleri AMS ile senkronize et" @@ -5908,8 +5895,7 @@ msgstr "" "ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" +"Already did a synchronization, do you want to sync only changes or resync all?" msgstr "" "Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " "mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" @@ -5924,13 +5910,13 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"There are some unknown filaments mapped to generic preset. Please update Orca " +"Slicer or restart Orca Slicer to check if there is an update to system " "presets." msgstr "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " -"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " -"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " +"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " +"güncelleyin veya Orca Slicer'ı yeniden başlatın." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5955,13 +5941,13 @@ msgid "Restore" msgstr "Geri Yükleme" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be " -"clogged when printing this filament in a closed enclosure. Please open the " -"front door and/or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be clogged " +"when printing this filament in a closed enclosure. Please open the front door " +"and/or remove the upper glass." msgstr "" -"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir " -"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/" -"veya üst camı çıkarın." +"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir muhafaza " +"içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/veya üst camı " +"çıkarın." msgid "" "The nozzle hardness required by the filament is higher than the default " @@ -6024,8 +6010,8 @@ msgstr "Lütfen bunları parametre sekmelerinde düzeltin" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-" -"kodları bulunmaktadır:" +"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-kodları " +"bulunmaktadır:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6106,6 +6092,8 @@ msgid "" "Your object appears to be too large. It will be scaled down to fit the heat " "bed automatically." msgstr "" +"Nesneniz çok büyük görünüyor. Plakaya otomatik olarak uyacak şekilde " +"küçültülecektir." msgid "Object too large" msgstr "Nesne çok büyük" @@ -6114,7 +6102,7 @@ msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" msgstr "" -"Nesneniz çok büyük görünüyor. Isı yatağına sığacak şekilde otomatik olarak " +"Nesneniz çok büyük görünüyor. Plakaya sığacak şekilde otomatik olarak " "küçültmek istiyor musunuz?" msgid "Export STL file:" @@ -6264,8 +6252,8 @@ msgstr "" "dosyayı indirin ve manuel olarak içe aktarın." msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." +"Importing to Orca Slicer failed. Please download the file and manually import " +"it." msgstr "" "Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel " "olarak İçe aktarın." @@ -6353,15 +6341,15 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." +"The file %s has been sent to the printer's storage space and can be viewed on " +"the printer." msgstr "" "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " "görüntülenebiliyor." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts will " +"be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -6475,8 +6463,8 @@ msgstr "" #, c-format, boost-format msgid "" "Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." +"still want to do this printing, please set this filament's bed temperature to " +"non zero." msgstr "" "Plaka% d: %s'nin %s(%s) filamentinı yazdırmak için kullanılması önerilmez. " "Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamentin yatak " @@ -6576,8 +6564,8 @@ msgstr "Yalnızca bir OrcaSlicer örneğine izin ver" msgid "" "On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. " -"In such case this settings will allow only one instance." +"it is allowed to run multiple instances of same app from the command line. In " +"such case this settings will allow only one instance." msgstr "" "OSX’te her zaman varsayılan olarak çalışan tek bir uygulama örneği vardır. " "Ancak aynı uygulamanın birden fazla örneğinin komut satırından " @@ -6585,9 +6573,8 @@ msgstr "" "örneğe izin verecektir." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the " -"same OrcaSlicer is already running, that instance will be reactivated " -"instead." +"If this is enabled, when starting OrcaSlicer and another instance of the same " +"OrcaSlicer is already running, that instance will be reactivated instead." msgstr "" "Bu etkinleştirilirse, OrcaSlicer başlatıldığında ve aynı OrcaSlicer’ın başka " "bir örneği zaten çalışıyorken, bunun yerine bu örnek yeniden " @@ -6679,21 +6666,20 @@ msgstr "" "hatırlayacak ve otomatik olarak değiştirecektir." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "" -"Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." +msgstr "Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." msgid "" -"With this option enabled, you can send a task to multiple devices at the " -"same time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the same " +"time and manage multiple devices." msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "Klonlamadan sonra plakayı otomatik düzenle" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Nesne klonlamadan sonra plakayı otomatik düzenleme" msgid "Network" msgstr "Ağ" @@ -6764,8 +6750,8 @@ msgstr "Otomatik yedekleme" msgid "" "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " -"düzenli aralıklarla yedekleyin." +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " +"aralıklarla yedekleyin." msgid "every" msgstr "her" @@ -7122,8 +7108,7 @@ msgid "Error code" msgstr "Hata kodu" msgid "No login account, only printers in LAN mode are displayed" -msgstr "" -"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" +msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" msgid "Connecting to server" msgstr "Sunucuya baglanıyor" @@ -7191,8 +7176,7 @@ msgstr "" "desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." +"The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" "Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " "destekler." @@ -7253,8 +7237,8 @@ msgstr "" msgid "" "There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." +"they are the required filaments. If they are okay, press \"Confirm\" to start " +"printing." msgstr "" "AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " "filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " @@ -7286,8 +7270,7 @@ msgstr "" "hasarına neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "" -"Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." +msgstr "Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -7438,11 +7421,11 @@ msgid "" "successes and failures of the vast number of prints by our users. We are " "training %s to be smarter by feeding them the real-world data. If you are " "willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +"logs, which may include information described in Privacy Policy. We will not " +"collect any Personal Data by which an individual can be identified directly " +"or indirectly, including without limitation names, addresses, payment " +"information, or phone numbers. By enabling this service, you agree to these " +"terms and the statement about Privacy Policy." msgstr "" "3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " "düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " @@ -7493,16 +7476,16 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the model " +"without prime tower. Are you sure you want to disable prime tower?" msgstr "" "Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " "kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " "misiniz?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the model " +"without prime tower. Do you want to enable prime tower?" msgstr "" "Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " "olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " @@ -7531,11 +7514,11 @@ msgstr "" msgid "" "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." +"settings: at least 2 interface layers, at least 0.1mm top z distance or using " +"support materials on interface." msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " -"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " +"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " "malzemeleri kullanılması." msgid "" @@ -7574,8 +7557,8 @@ msgid "" "height limits ,this may cause printing quality issues." msgstr "" "Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği " -"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına " -"neden olabilir." +"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden " +"olabilir." msgid "Adjust to the set range automatically? \n" msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı? \n" @@ -7589,8 +7572,8 @@ msgstr "Atla" msgid "" "Experimental feature: Retracting and cutting off the filament at a greater " "distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other " -"printing complications." +"reduce flush, it may also elevate the risk of nozzle clogs or other printing " +"complications." msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek " "için filamanı daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli " @@ -7612,8 +7595,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive\"-" +">\"Timelapse Wipe Tower\"." msgstr "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -7662,8 +7645,8 @@ msgid "" "the overhang degree range and wall speed is used" msgstr "" "Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " -"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " +"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" msgid "Bridge" msgstr "Köprü" @@ -7696,10 +7679,10 @@ msgid "Prime tower" msgstr "Prime Kulesi" msgid "Filament for Features" -msgstr "" +msgstr "Özellikler İçin Filament" msgid "Ooze prevention" -msgstr "" +msgstr "Sızıntı önleme" msgid "Skirt" msgstr "Etek" @@ -7757,7 +7740,7 @@ msgstr "" "Bu filamentin önerilen Nozul sıcaklığı aralığı. 0 ayar yok anlamına gelir" msgid "Flow ratio and Pressure Advance" -msgstr "" +msgstr "Akış Oranı Ve Basınç İlerlemesi" msgid "Print chamber temperature" msgstr "Baskı Odası Sıcaklığı" @@ -7775,11 +7758,11 @@ msgid "Cool plate" msgstr "Soğuk plaka" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does " +"not support to print on the Cool Plate" msgstr "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool " -"Plate üzerine yazdırmayı desteklemediği anlamına gelir" +"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " +"üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Engineering plate" msgstr "Mühendislik plakası" @@ -7850,7 +7833,7 @@ msgstr "" "maksimum olacaktır" msgid "Auxiliary part cooling fan" -msgstr "Yardımcı parça soğutma fanı" +msgstr "Yardımcı Parça Soğutma Fanı" msgid "Exhaust fan" msgstr "Egzos Fanı" @@ -7957,14 +7940,18 @@ msgid "Single extruder multimaterial setup" msgstr "Tek Ekstruder Çoklu Malzeme Kurulumu" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Yazıcının ekstruder sayısı." msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder " -"nozzle diameter value?" +"Do you want to change the diameter for all extruders to first extruder nozzle " +"diameter value?" msgstr "" +"Tek Ekstruder Çoklu Malzeme seçilir, \n" +"ve tüm ekstrüderlerin aynı çapa sahip olması gerekir.\n" +"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek ister " +"misiniz?" msgid "Nozzle diameter" msgstr "Nozul çapı" @@ -7979,6 +7966,8 @@ msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" +"Bu tek ekstruderli çok malzemeli bir yazıcıdır, tüm ekstruderlerin çapları " +"yeni değere ayarlanacaktır. Devam etmek istiyor musunuz?" msgid "Layer height limits" msgstr "Katman Yüksekliği Sınırları" @@ -8123,16 +8112,16 @@ msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyo #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it contains " +"the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it contains " +"the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" @@ -8166,8 +8155,8 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri " -"yeni projeye aktarmayı seçebilirsiniz." +"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri yeni " +"projeye aktarmayı seçebilirsiniz." msgid "Extruders count" msgstr "Ekstruder sayısı" @@ -8191,19 +8180,19 @@ msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close " -"this dialog." +"Note: New modified presets will be selected in settings tabs after close this " +"dialog." msgstr "" "Seçilen seçenekleri sol ön ayardan sağa aktarın.\n" -"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde " -"değiştirilen yeni ön ayarlar seçilecektir." +"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde değiştirilen " +"yeni ön ayarlar seçilecektir." msgid "Transfer values from left to right" msgstr "Değerleri soldan sağa aktarın" msgid "" -"If enabled, this dialog can be used for transfer selected values from left " -"to right preset." +"If enabled, this dialog can be used for transfer selected values from left to " +"right preset." msgstr "" "Etkinleştirilirse, bu iletişim kutusu seçilen değerleri soldan sağa ön ayara " "aktarmak için kullanılabilir." @@ -8344,11 +8333,11 @@ msgstr "Sıkıştırma özelleştirme" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the unloaded " +"filament so it does not prevent insertion of the new filament and can itself " +"be reinserted later. This phase is important and different materials can " +"require different extrusion speeds to get the good shape. For this reason, " +"the extrusion rates during ramming are adjustable.\n" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." @@ -8433,15 +8422,15 @@ msgstr "" "‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes " -"to re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes to " +"re-register it. You will be promoted twice" msgstr "" "BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden " "kaydetmek için Evet’e basın." msgid "" -"Missing BambuSource component registered for media playing! Please re-" -"install BambuStutio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-install " +"BambuStutio or seek after-sales help." msgstr "" "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen BambuStutio’yu " "yeniden yükleyin veya satış sonrası yardım isteyin." @@ -8454,9 +8443,9 @@ msgstr "" "çalışmayabilir! Düzeltmek için Evet’e basın." msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to " -"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" -"libav packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to play " +"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav " +"packages, then restart Orca Slicer?)" msgstr "" "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec " "bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav " @@ -8487,7 +8476,7 @@ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "STL/STEP/3MF/OBJ/AMF dosyalarından geometri verilerini içe aktarın" msgid "Shift+G" -msgstr "" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Panodan yapıştır" @@ -8538,7 +8527,7 @@ msgid "Collapse/Expand the sidebar" msgstr "Kenar çubuğunu daralt/genişlet" msgid "Any arrow" -msgstr "" +msgstr "Herhangi bir ok" msgid "Movement in camera space" msgstr "Kamera alanında hareket" @@ -8721,8 +8710,8 @@ msgstr "Ağ eklentisi güncellemesi" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " -"için Tamam'a tıklayın." +"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek için " +"Tamam'a tıklayın." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -8779,8 +8768,7 @@ msgstr "Nozulu Onaylayın ve Güncelleyin" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN Bağlantısı Başarısız (Yazdırma dosyası gönderiliyor)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." msgstr "" "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu doğrulayın." @@ -8849,8 +8837,8 @@ msgid "Updating successful" msgstr "Güncelleme başarılı" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not turn " +"off the power while the printer is updating." msgstr "" "Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " "Yazıcı güncellenirken gücü kapatmayın." @@ -8869,10 +8857,9 @@ msgid "" "printing. Do you want to update now? You can also update later on printer or " "update next time starting Orca." msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " -"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " -"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " -"güncelleyebilirsiniz." +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " +"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " +"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." msgid "Extension Board" msgstr "Uzatma Kartı" @@ -8972,6 +8959,7 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"Baskınız hazırlama bölgelerine çok yakın. Çarpışma olmadığından emin olun." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9029,8 +9017,8 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " +"extrusion width" msgstr "" "Flow::with_spacing()'e sağlanan geçersiz boşluk, kat yüksekliğinizi ve " "ekstrüzyon genişliğinizi kontrol edin" @@ -9163,8 +9151,8 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" +"together. Otherwise, the extruder and nozzle may be blocked or damaged during " +"printing" msgstr "" "Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " "takdirde baskı sırasında ekstruder ve nozul tıkanabilir veya hasar görebilir" @@ -9183,8 +9171,8 @@ msgid "" "Please select \"By object\" print sequence to print multiple objects in " "spiral vase mode." msgstr "" -"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye göre" -"\" yazdırma sırasını seçin." +"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " +"göre\" yazdırma sırasını seçin." msgid "" "The spiral vase mode does not work when an object contains more than one " @@ -9197,8 +9185,8 @@ msgstr "%1% nesnesi maksimum yapı hacmi yüksekliğini aşıyor." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds the " +"maximum build volume height." msgstr "" "%1% nesnesinin kendisi yapı hacmine uysa da, son katmanı maksimum yapı hacmi " "yüksekliğini aşıyor." @@ -9214,10 +9202,13 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." msgid "" -"Different nozzle diameters and different filament diameters may not work " -"well when the prime tower is enabled. It's very experimental, so please " -"proceed with caution." +"Different nozzle diameters and different filament diameters may not work well " +"when the prime tower is enabled. It's very experimental, so please proceed " +"with caution." msgstr "" +"Farklı püskürtme ucu çapları ve farklı filaman çapları, ana kule " +"etkinleştirildiğinde iyi çalışmayabilir. Oldukça deneysel olduğundan lütfen " +"dikkatli ilerleyin." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9230,6 +9221,8 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" +"Sızıntı önleme yalnızca ‘tek ekstruder çoklu malzeme’ kapalıyken silme " +"kulesiyle desteklenir." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9245,8 +9238,8 @@ msgid "" "The prime tower is not supported when adaptive layer height is on. It " "requires that all objects have the same layer height." msgstr "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " -"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " +"aynı katman yüksekliğine sahip olmasını gerektirir." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" @@ -9254,12 +9247,11 @@ msgstr "" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " -"gerektirir" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" +"The prime tower requires that all objects are printed over the same number of " +"raft layers" msgstr "" "Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " "gerektirir" @@ -9272,8 +9264,8 @@ msgstr "" "gerektirir." msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +"The prime tower is only supported if all objects have the same variable layer " +"height" msgstr "" "Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " "olması durumunda desteklenir" @@ -9287,8 +9279,7 @@ msgstr "Çok büyük çizgi genişliği" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " -"olmalıdır." +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9301,8 +9292,8 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " -"katından daha küçük olamaz." +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " +"daha küçük olamaz." msgid "" "Organic support branch diameter must not be smaller than support tree tip " @@ -9319,20 +9310,20 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozul çapını aşamaz" msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"Relative extruder addressing requires resetting the extruder position at each " +"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " -"için her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. " -"Layer_gcode'a \"G92 E0\" ekleyin." +"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " +"her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " +"\"G92 E0\" ekleyin." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " -"adreslemeyle uyumsuzdu." +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " +"uyumsuzdu." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " @@ -9371,8 +9362,8 @@ msgid "" "(machine_max_acceleration_extruding).\n" "Orca will automatically cap the acceleration speed to ensure it doesn't " "surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your " -"printer's configuration to get higher speeds." +"You can adjust the machine_max_acceleration_extruding value in your printer's " +"configuration to get higher speeds." msgstr "" "Hızlanma ayarı yazıcının maksimum hızlanmasını aşıyor " "(machine_max_acceleration_extruding).\n" @@ -9433,8 +9424,7 @@ msgid "Elephant foot compensation" msgstr "Fil ayağı telafi oranı" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +"Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "" "Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" @@ -9493,15 +9483,15 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the hostname, IP address or URL of the printer host instance. Print " "host behind HAProxy with basic auth enabled can be accessed by putting the " -"user name and password into the URL in the following format: https://" -"username:password@your-octopi-address/" +"user name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " -"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " -"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " -"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" -"username:password@your-octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " +"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " +"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " +"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" +"octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -9509,8 +9499,7 @@ msgstr "Cihaz kullanıcı arayüzü" msgid "" "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " -"belirtin" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" msgid "API Key / Password" msgstr "API Anahtarı / Şifre" @@ -9519,9 +9508,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " -"içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9531,8 +9519,8 @@ msgstr "HTTPS CA Dosyası" msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." +"in crt/pem format. If left blank, the default OS CA certificate repository is " +"used." msgstr "" "HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " "dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " @@ -9583,10 +9571,10 @@ msgid "" "either as an absolute value or as percentage (for example 50%) of a direct " "travel path. Zero to disable" msgstr "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " -"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " -"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " -"belirtilebilir. Devre dışı bırakmak için sıfır" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " +"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " +"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " +"Devre dışı bırakmak için sıfır" msgid "mm or %" msgstr "mm veya %" @@ -9595,8 +9583,8 @@ msgid "Other layers" msgstr "Diğer katmanlar" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9605,22 +9593,22 @@ msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Engineering Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " "Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the High Temp Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Textured PEI Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9702,11 +9690,11 @@ msgid "" "The number of bottom solid layers is increased when slicing if the thickness " "calculated by bottom shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" +"is disabled and thickness of bottom shell is absolutely determained by bottom " +"shell layers" msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -9720,8 +9708,7 @@ msgid "" "\n" "Options:\n" "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" "3. Nowhere: Disables gap fill\n" msgstr "" "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak minimum " @@ -9747,19 +9734,19 @@ msgid "Force cooling for overhang and bridge" msgstr "Çıkıntı ve köprüler için soğutmayı zorla" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and bridge " +"to get better cooling" msgstr "" -"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma " -"fanı hızını optimize etmek amacıyla bu seçeneği etkinleştirin" +"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma fanı " +"hızını optimize etmek amacıyla bu seçeneği etkinleştirin" msgid "Fan speed for overhang" msgstr "Çıkıntılar için fan hızı" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang wall " +"which has large overhang degree. Forcing cooling for overhang and bridge can " +"get better quality for these part" msgstr "" "Çıkıntı derecesi büyük olan köprü veya çıkıntılı duvara baskı yaparken parça " "soğutma fanını bu hızda olmaya zorlayın. Çıkıntı ve köprü için soğutmayı " @@ -9771,9 +9758,9 @@ msgstr "Çıkıntı soğutması" #, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" +"exceeds this value. Expressed as percentage which indicides how much width of " +"the line without support from lower layer. 0% means forcing cooling for all " +"outer wall no matter how much overhang degree" msgstr "" "Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " "belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " @@ -9807,8 +9794,8 @@ msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " "material for bridge, to improve sag" msgstr "" -"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu " -"değeri biraz azaltın (örneğin 0,9)" +"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu değeri " +"biraz azaltın (örneğin 0,9)" msgid "Internal bridge flow ratio" msgstr "İç köprü akış oranı" @@ -9876,11 +9863,11 @@ msgid "" "on the next layer, like letters. Set this setting to 0 to remove these " "artifacts." msgstr "" -"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından " -"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak " +"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa " +"layer genişliği bu değerin altında olan bir üst katman olarak " "değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir " -"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya " -"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" +"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya a " +"% çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" "Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince " "özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları " "kaldırmak için bu ayarı 0 olarak ayarlayın." @@ -9912,9 +9899,9 @@ msgid "Overhang reversal" msgstr "Çıkıntıyı tersine çevir" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on odd layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction " +"on odd layers. This alternating pattern can drastically improve steep " +"overhangs.\n" "\n" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." @@ -9936,8 +9923,7 @@ msgid "" "alternating directions. This should reduce part warping while also " "maintaining external wall quality. This feature can be very useful for warp " "prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over " -"supports.\n" +"Silk PLA. It can also help reduce warping on floating regions over supports.\n" "\n" "For this setting to be the most effective, it is recomended to set the " "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -9969,8 +9955,7 @@ msgstr "" "Bu seçenek, havşa delikleri için köprüler oluşturarak bunların desteksiz " "yazdırılmasına olanak tanır. Mevcut modlar şunları içerir:\n" "1. Yok: Köprü oluşturulmaz.\n" -"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı " -"köprülenecek.\n" +"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı köprülenecek.\n" "3. Feda Katman: Tam bir feda köprü katmanı oluşturulur." msgid "Partially bridged" @@ -10090,8 +10075,8 @@ msgid "Brim ear detection radius" msgstr "Kenar kulak algılama yarıçapı" msgid "" -"The geometry will be decimated before dectecting sharp angles. This " -"parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This parameter " +"indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" "Keskin açılar tespit edilmeden önce geometrinin büyük bir kısmı yok " @@ -10140,10 +10125,10 @@ msgid "" "that layer can be cooled for longer time. This can improve the cooling " "quality for needle and small details" msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " -"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " -"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " -"iğne ve küçük detaylar için soğutma kalitesini artırabilir" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " +"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu " +"seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne " +"ve küçük detaylar için soğutma kalitesini artırabilir" msgid "Normal printing" msgstr "Normal baskı" @@ -10152,8 +10137,7 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " -"ivmesi" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" msgid "mm/s²" msgstr "mm/s²" @@ -10197,8 +10181,8 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " -"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " +"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" msgid "Don't support bridges" msgstr "Köprülerde destek olmasın" @@ -10239,8 +10223,8 @@ msgid "Don't filter out small internal bridges (beta)" msgstr "Küçük iç köprüleri filtrelemeyin (deneysel)" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted " -"or curved models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted or " +"curved models.\n" "\n" "By default, small internal bridges are filtered out and the internal solid " "infill is printed directly over the sparse infill. This works well in most " @@ -10255,16 +10239,16 @@ msgid "" "unsupported internal solid infill. The options below control the amount of " "filtering, i.e. the amount of internal bridges created.\n" "\n" -"Disabled - Disables this option. This is the default behaviour and works " -"well in most cases.\n" +"Disabled - Disables this option. This is the default behaviour and works well " +"in most cases.\n" "\n" "Limited filtering - Creates internal bridges on heavily slanted surfaces, " -"while avoiding creating uncessesary interal bridges. This works well for " -"most difficult models.\n" +"while avoiding creating uncessesary interal bridges. This works well for most " +"difficult models.\n" "\n" -"No filtering - Creates internal bridges on every potential internal " -"overhang. This option is useful for heavily slanted top surface models. " -"However, in most cases it creates too many unecessary bridges." +"No filtering - Creates internal bridges on every potential internal overhang. " +"This option is useful for heavily slanted top surface models. However, in " +"most cases it creates too many unecessary bridges." msgstr "" "Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki " "yastıklamanın azaltılmasına yardımcı olabilir.\n" @@ -10416,8 +10400,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " -"için iç duvar hızından daha yavaş olması kullanılır." +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " +"iç duvar hızından daha yavaş olması kullanılır." msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" @@ -10446,8 +10430,8 @@ msgstr "Duvar baskı sırası" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighouring perimeter while printing. However, this option " +"Use Inner/Outer for best overhangs. This is because the overhanging walls can " +"adhere to a neighouring perimeter while printing. However, this option " "results in slightly reduced surface quality as the external perimeter is " "deformed by being squashed to the internal perimeter.\n" "\n" @@ -10478,14 +10462,14 @@ msgstr "" "kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış " "duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı " "düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış " -"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması " -"için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine " -"karşı önerilir. \n" +"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için " +"en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı " +"önerilir. \n" "\n" "İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk " "avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir " -"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z " -"dikişleri daha az tutarlı görünecektir.\n" +"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z dikişleri " +"daha az tutarlı görünecektir.\n" "\n" " " @@ -10507,9 +10491,9 @@ msgid "" "\n" "Printing infill first may help with extreme overhangs as the walls have the " "neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"the printed walls where it is attached to them, resulting in a worse external " +"surface finish. It can also cause the infill to shine through the external " +"surfaces of the part." msgstr "" "Duvar/dolgu sırası. Onay kutusu işaretlenmediğinde duvarlar önce yazdırılır, " "bu çoğu durumda en iyi şekilde çalışır.\n" @@ -10527,8 +10511,8 @@ msgid "" "The direction which the wall loops are extruded when looking down from the " "top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on " -"odd is enabled. Set this to any option other than Auto will force the wall " +"By default all walls are extruded in counter-clockwise, unless Reverse on odd " +"is enabled. Set this to any option other than Auto will force the wall " "direction regardless of the Reverse on odd.\n" "\n" "This option will be disabled if sprial vase mode is enabled." @@ -10536,8 +10520,8 @@ msgstr "" "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı yön.\n" "\n" "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak tüm " -"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " -"herhangi bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " +"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında herhangi " +"bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " "zorlayacaktır.\n" "\n" "Spiral vazo modu etkinse bu seçenek devre dışı bırakılacaktır." @@ -10565,8 +10549,8 @@ msgid "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " -"önlemek için kullanılır." +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " +"için kullanılır." msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " @@ -10589,20 +10573,19 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (-99999, -99999), which " -"means there are no limits, thus allowing probing across the entire bed." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " +"these min/max points. This information can usually be obtained from your " +"printer manufacturer. The default setting is (-99999, -99999), which means " +"there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob " -"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve " -"maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (-99999, -99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob XY " +"ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(-99999, -99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına " +"gelir, dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Bed mesh max" msgstr "Maksimum yatak ağı" @@ -10612,20 +10595,19 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (99999, 99999), which " -"means there are no limits, thus allowing probing across the entire bed." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " +"these min/max points. This information can usually be obtained from your " +"printer manufacturer. The default setting is (99999, 99999), which means " +"there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. " -"Probun XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob " -"noktasının yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum " -"ve maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (99999, 99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. Probun " +"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(99999, 99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına gelir, " +"dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Probe point distance" msgstr "Prob noktası mesafesi" @@ -10642,8 +10624,8 @@ msgid "Mesh margin" msgstr "Yatak ağı boşluğu" msgid "" -"This option determines the additional distance by which the adaptive bed " -"mesh area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed mesh " +"area should be expanded in the XY directions." msgstr "" "Bu seçenek, uyarlanabilir yatak ağ alanının XY yönlerinde genişletilmesi " "gereken ek mesafeyi belirler." @@ -10663,9 +10645,9 @@ msgstr "Akış oranı" msgid "" "The material may have volumetric change after switching between molten state " "and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow" +"filament in gcode proportionally. Recommended value range is between 0.95 and " +"1.05. Maybe you can tune this value to get nice flat surface when there has " +"slight overflow or underflow" msgstr "" "Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " "değişime sahip olabilir. Bu ayar, bu filamentin gcode'daki tüm ekstrüzyon " @@ -10687,9 +10669,8 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Basınç avansı (Klipper) Doğrusal ilerleme faktörü (Marlin)" msgid "Enable adaptive pressure advance (beta)" -msgstr "" +msgstr "Uyarlanabilir basınç ilerlemesini etkinleştir (beta)" -#, c-format, boost-format msgid "" "With increasing print speeds (and hence increasing volumetric flow through " "the nozzle) and increasing accelerations, it has been observed that the " @@ -10698,21 +10679,38 @@ msgid "" "used that does not cause too much bulging on features with lower flow speed " "and accelerations while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of " -"your printer's extrusion system depending on the volumetric flow speed and " +"This feature aims to address this limitation by modeling the response of your " +"printer's extrusion system depending on the volumetric flow speed and " "acceleration it is printing at. Internally, it generates a fitted model that " "can extrapolate the needed pressure advance for any given volumetric flow " -"speed and acceleration, which is then emmited to the printer depending on " -"the current print conditions.\n" +"speed and acceleration, which is then emmited to the printer depending on the " +"current print conditions.\n" "\n" "When enabled, the pressure advance value above is overriden. However, a " "reasonable default value above is strongly recomended to act as a fallback " "and for when tool changing.\n" "\n" msgstr "" +"Baskı hızlarının artmasıyla (ve dolayısıyla püskürtme ucunda hacimsel akışın " +"artmasıyla) ve hızlanmaların artmasıyla, etkin basınç değerinin tipik olarak " +"azaldığı gözlemlenmiştir. Bu, tek bir basınç değerinin tüm özellikler için " +"her zaman %100 optimal olmadığı ve genellikle daha düşük akış hızına ve " +"ivmeye sahip özelliklerde çok fazla çıkıntıya neden olmayan ve aynı zamanda " +"daha hızlı özelliklerde boşluklara neden olmayan bir uzlaşma değerinin " +"kullanıldığı anlamına gelir.\n" +"\n" +"Bu özellik, yazıcınızın ekstrüzyon sisteminin tepkisini hacimsel akış hızına " +"ve baskı yaptığı ivmeye bağlı olarak modelleyerek bu sınırlamayı gidermeyi " +"amaçlamaktadır. Dahili olarak, herhangi bir hacimsel akış hızı ve ivme için " +"gerekli basınç ilerlemesini tahmin edebilen uygun bir model oluşturur ve bu " +"daha sonra mevcut yazdırma koşullarına bağlı olarak yazıcıya gönderilir.\n" +"\n" +"Etkinleştirildiğinde yukarıdaki basınç ilerleme değeri geçersiz kılınır. " +"Bununla birlikte, yukarıdaki makul bir varsayılan değerin, bir geri dönüş " +"olarak ve takım değişimi sırasında kullanılması önemle tavsiye edilir.\n" msgid "Adaptive pressure advance measurements (beta)" -msgstr "" +msgstr "Uyarlanabilir basınç ilerleme ölçümleri (beta)" msgid "" "Add sets of pressure advance (PA) values, the volumetric flow speeds and " @@ -10727,48 +10725,85 @@ msgid "" "1. Run the pressure advance test for at least 3 speeds per acceleration " "value. It is recommended that the test is run for at least the speed of the " "external perimeters, the speed of the internal perimeters and the fastest " -"feature print speed in your profile (usually its the sparse or solid " -"infill). Then run them for the same speeds for the slowest and fastest print " +"feature print speed in your profile (usually its the sparse or solid infill). " +"Then run them for the same speeds for the slowest and fastest print " "accelerations,and no faster than the recommended maximum acceleration as " "given by the klipper input shaper.\n" "2. Take note of the optimal PA value for each volumetric flow speed and " "acceleration. You can find the flow number by selecting flow from the color " "scheme drop down and move the horizontal slider over the PA pattern lines. " "The number should be visible at the bottom of the page. The ideal PA value " -"should be decreasing the higher the volumetric flow is. If it is not, " -"confirm that your extruder is functioning correctly.The slower and with less " +"should be decreasing the higher the volumetric flow is. If it is not, confirm " +"that your extruder is functioning correctly.The slower and with less " "acceleration you print, the larger the range of acceptable PA values. If no " "difference is visible, use the PA value from the faster test.3. Enter the " "triplets of PA values, Flow and Accelerations in the text box here and save " "your filament profile\n" "\n" msgstr "" +"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını ve " +"ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " +"kümesi. Örneğin\n" +"0.04,3.96,3000\n" +"0,033,3,96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"Nasıl kalibre edilir:\n" +"1. Hızlanma değeri başına en az 3 hız için basınç ilerleme testini " +"çalıştırın. Testin en azından dış çevrelerin hızı, iç çevrelerin hızı ve " +"profilinizdeki en hızlı özellik yazdırma hızı (genellikle seyrek veya katı " +"dolgudur) için çalıştırılması önerilir. Daha sonra bunları, en yavaş ve en " +"hızlı yazdırma hızlanmaları için aynı hızlarda çalıştırın ve klipper giriş " +"şekillendirici tarafından verilen önerilen maksimum hızlanmadan daha hızlı " +"değil.\n" +"2. Her hacimsel akış hızı ve ivme için en uygun PA değerini not edin. Renk " +"şeması açılır menüsünden akışı seçerek ve yatay kaydırıcıyı PA desen " +"çizgileri üzerinde hareket ettirerek akış numarasını bulabilirsiniz. Numara " +"sayfanın altında görünmelidir. İdeal PA değeri hacimsel akış ne kadar yüksek " +"olursa o kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde " +"çalıştığını doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, " +"kabul edilebilir PA değerleri aralığı o kadar geniş olur. Hiçbir fark " +"görünmüyorsa, daha hızlı olan testteki PA değerini kullanın.3. Buradaki metin " +"kutusuna PA değerleri, Akış ve Hızlanma üçlüsünü girin ve filament " +"profilinizi kaydedin\n" msgid "Enable adaptive pressure advance for overhangs (beta)" -msgstr "" +msgstr "Çıkıntılar için uyarlanabilir basınç ilerlemesini etkinleştirin (beta)" msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the " -"same feature. This is an experimental option, as if the PA profile is not " -"set accurately, it will cause uniformity issues on the external surfaces " -"before and after overhangs.\n" +"Enable adaptive PA for overhangs as well as when flow changes within the same " +"feature. This is an experimental option, as if the PA profile is not set " +"accurately, it will cause uniformity issues on the external surfaces before " +"and after overhangs.\n" msgstr "" +"Aynı özellik içinde akış değiştiğinde ve çıkıntılar için uyarlanabilir PA’yı " +"etkinleştirin. Bu deneysel bir seçenektir, sanki basınç profili doğru " +"ayarlanmazsa, çıkma öncesi ve sonrası dış yüzeylerde yeknesaklık sorunlarına " +"neden olacaktır.\n" msgid "Pressure advance for bridges" -msgstr "" +msgstr "Köprüler için basınç ilerlemesi" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of " -"slight under extrusion immediately after bridges. This is caused by the " -"pressure drop in the nozzle when printing in the air and a lower PA helps " -"counteract this." +" A lower PA value when printing bridges helps reduce the appearance of slight " +"under extrusion immediately after bridges. This is caused by the pressure " +"drop in the nozzle when printing in the air and a lower PA helps counteract " +"this." msgstr "" +"Köprüler için basınç ilerleme değeri. Devre dışı bırakmak için 0’a " +"ayarlayın. \n" +"\n" +" Köprüleri yazdırırken daha düşük bir basınç değeri, köprülerden hemen sonra " +"hafif ekstrüzyon görünümünün azaltılmasına yardımcı olur. Bunun nedeni, " +"havada yazdırma sırasında nozuldaki basınç düşüşüdür ve daha düşük bir " +"basınç, bunu önlemeye yardımcı olur." msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, it " +"will be computed over the nozzle diameter." msgstr "" "Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " "olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır." @@ -10777,8 +10812,8 @@ msgid "Keep fan always on" msgstr "Fanı her zaman açık tut" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run at " +"least at minimum speed to reduce the frequency of starting and stoping" msgstr "" "Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " "ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " @@ -10910,11 +10945,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " -"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " +"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " "Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " -"boşluk bıraktığınızdan emin olun." +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " +"bıraktığınızdan emin olun." msgid "Loading speed" msgstr "Yükleme hızı" @@ -10965,23 +11000,27 @@ msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves." msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " -"Bu sayısını belirtin." +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " +"sayısını belirtin." msgid "Stamping loading speed" -msgstr "" +msgstr "Damgalama yükleme hızı" msgid "Speed used for stamping." -msgstr "" +msgstr "Damgalama için kullanılan hız." msgid "Stamping distance measured from the center of the cooling tube" -msgstr "" +msgstr "Soğutma tüpünün merkezinden ölçülen damgalama mesafesi" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " -"individual cooling moves (\"stamping\"). This option configures how long " -"this movement should be before the filament is retracted again." +"individual cooling moves (\"stamping\"). This option configures how long this " +"movement should be before the filament is retracted again." msgstr "" +"Sıfırdan farklı bir değere ayarlanırsa filaman bireysel soğutma hareketleri " +"arasında (“damgalama”) nüzule doğru hareket ettirilir. Bu seçenek, filamanın " +"tekrar geri çekilmesinden önce bu hareketin ne kadar sürmesi gerektiğini " +"yapılandırır." msgid "Speed of the first cooling move" msgstr "İlk soğutma hareketi hızı" @@ -10995,9 +11034,9 @@ msgstr "Silme kulesi üzerinde minimum boşaltım" msgid "" "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, Orca Slicer will always prime this amount of material into the wipe " -"tower to produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial object, " +"Orca Slicer will always prime this amount of material into the wipe tower to " +"produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " @@ -11014,13 +11053,12 @@ msgstr "Soğutma hareketleri bu hıza doğru giderek hızlanır." msgid "" "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." +"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." msgstr "" "Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " -"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " -"süresi. Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine " -"eklenir." +"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme süresi. " +"Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine eklenir." msgid "Ramming parameters" msgstr "Sıkıştırma parametreleri" @@ -11034,8 +11072,8 @@ msgstr "" msgid "" "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." +"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." msgstr "" "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " "sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " @@ -11083,8 +11121,7 @@ msgstr "Filament malzeme türü" msgid "Soluble material" msgstr "Çözünür malzeme" -msgid "" -"Soluble material is commonly used to print support and support interface" +msgid "Soluble material is commonly used to print support and support interface" msgstr "" "Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11092,8 +11129,7 @@ msgstr "" msgid "Support material" msgstr "Destek malzemesi" -msgid "" -"Support material is commonly used to print support and support interface" +msgid "Support material is commonly used to print support and support interface" msgstr "" "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11141,8 +11177,8 @@ msgid "Solid infill direction" msgstr "Katı dolgu yönü" msgid "" -"Angle for solid infill pattern, which controls the start or main direction " -"of line" +"Angle for solid infill pattern, which controls the start or main direction of " +"line" msgstr "" "Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" @@ -11160,8 +11196,8 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya " -"dönüştürür ve iç katı dolgu modeli kullanılacaktır" +"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya dönüştürür " +"ve iç katı dolgu modeli kullanılacaktır" msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -11209,23 +11245,22 @@ msgid "" "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. Orca Slicer 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. \n" +"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. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " -"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " +"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " "sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " -"bu parametreyi sıfıra ayarlayın." +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " +"parametreyi sıfıra ayarlayın." msgid "0 (no open anchors)" msgstr "0 (açık bağlantı yok)" @@ -11240,23 +11275,22 @@ msgid "" "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. Orca Slicer 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. \n" +"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. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " -"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " -"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " -"ancak bu parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " -"ve 0 ile aynı sonucu oluşturmalıdır." +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " +"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır " +"ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " +"parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " +"0 ile aynı sonucu oluşturmalıdır." msgid "0 (Simple connect)" msgstr "0 (Basit bağlantı)" @@ -11274,8 +11308,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " -"üst yüzey kalitesini iyileştirebilir" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " +"yüzey kalitesini iyileştirebilir" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" @@ -11285,8 +11319,8 @@ msgid "" "Acceleration of bridges. If the value is expressed as a percentage (e.g. " "50%), it will be calculated based on the outer wall acceleration." msgstr "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " -"dış duvar ivmesine göre hesaplanacaktır." +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " +"duvar ivmesine göre hesaplanacaktır." msgid "mm/s² or %" msgstr "mm/s² veya %" @@ -11323,8 +11357,7 @@ msgid "accel_to_decel" msgstr "Accel_to_decel" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" "Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" @@ -11357,9 +11390,11 @@ msgid "Initial layer height" msgstr "Başlangıç katman yüksekliği" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly can " +"improve build plate adhesion" msgstr "" +"İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " +"plakasının yapışmasını iyileştirebilir" msgid "Speed of initial layer except the solid infill part" msgstr "Katı dolgu kısmı dışındaki ilk katmanın hızı" @@ -11397,16 +11432,16 @@ msgstr "Maksimum fan hızı" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " -"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " -"düşükse göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers" -"\" + 1 katmanında izin verilen maksimum hızda çalışacaktır." +"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden düşükse " +"göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers\" + 1 " +"katmanında izin verilen maksimum hızda çalışacaktır." msgid "layer" msgstr "katman" @@ -11502,11 +11537,11 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " "tolerance is same as the resolution. \n" "\n" -"Note: For klipper machines, this option is recomended to be disabled. " -"Klipper does not benefit from arc commands as these are split again into " -"line segments by the firmware. This results in a reduction in surface " -"quality as line segments are converted to arcs by the slicer and then back " -"to line segments by the firmware." +"Note: For klipper machines, this option is recomended to be disabled. Klipper " +"does not benefit from arc commands as these are split again into line " +"segments by the firmware. This results in a reduction in surface quality as " +"line segments are converted to arcs by the slicer and then back to line " +"segments by the firmware." msgstr "" "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " "etkinleştirin. Montaj toleransı çözünürlükle aynıdır. \n" @@ -11543,8 +11578,8 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " -"filamentin basılabileceğini belirler" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " +"basılabileceğini belirler" msgid "Undefine" msgstr "Tanımsız" @@ -11596,8 +11631,8 @@ msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "Yatak şekline göre [0,1] aralığında en iyi otomatik düzenleme konumu." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code command: " +"M106 P2 S(0-255)." msgstr "" "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin. G-code " "komut: M106 P2 S(0-255)." @@ -11640,8 +11675,8 @@ msgid "" msgstr "" "Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " "maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " -"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " +"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." msgid "Time cost" @@ -11687,8 +11722,7 @@ msgid "Pellet Modded Printer" msgstr "Pelet Modlu Yazıcı" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "" -"Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" +msgstr "Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" msgid "Support multi bed types" msgstr "Çoklu tabla" @@ -11702,21 +11736,20 @@ msgstr "Nesneleri etiketle" msgid "" "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." +"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." msgstr "" "G-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " "yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " -"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " -"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." +"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu " +"ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." msgid "Exclude objects" msgstr "Nesneleri hariç tut" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" -"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" +msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" msgid "Verbose G-code" msgstr "Ayrıntılı G kodu" @@ -11756,10 +11789,10 @@ msgstr "Dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill. Set this " -"value to ~10-15% to minimize potential over extrusion and accumulation of " -"material resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. The " +"percentage value is relative to line width of sparse infill. Set this value " +"to ~10-15% to minimize potential over extrusion and accumulation of material " +"resulting in rough top surfaces." msgstr "" "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe " "genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı " @@ -11772,8 +11805,8 @@ msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" "Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill " -"meets the walls. A value of 25-30% is a good starting point, minimising the " +"bonding and to minimize the appearance of pinholes where the top infill meets " +"the walls. A value of 25-30% is a good starting point, minimising the " "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" @@ -11791,12 +11824,12 @@ msgstr "Arayüz kabukları" msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Useful for multi-extruder prints with translucent materials or manual soluble " +"support material" msgstr "" "Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " -"ekstruder baskıları için kullanışlıdır" +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " +"baskıları için kullanışlıdır" msgid "Maximum width of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği" @@ -11815,6 +11848,10 @@ msgid "" "\"mmu_segmented_region_interlocking_depth\"is bigger then " "\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" +"Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. " +"“mmu_segmented_region_max_width” sıfırsa veya " +"“mmu_segmented_region_interlocking_length”, “mmu_segmented_region_max_width” " +"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı bırakır." msgid "Use beam interlocking" msgstr "Işın kilitlemeyi kullanın" @@ -11858,8 +11895,7 @@ msgid "" "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" "Hücrelerde ölçülen, birbirine kenetlenen yapıyı oluşturmak için filamentler " -"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden " -"olur." +"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden olur." msgid "Interlocking boundary avoidance" msgstr "Birbirine kenetlenen sınırdan kaçınma" @@ -11960,8 +11996,8 @@ msgstr "" "G kodu tadı Klipper olarak ayarlandığında bu seçenek göz ardı edilecektir." msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert pause " +"G-code in gcode viewer" msgstr "" "Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " "Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" @@ -12092,8 +12128,8 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Seyahat için maksimum ivme (M204 T), yalnızca Marlin 2 için geçerlidir" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This is " +"the maximum speed limitation of part cooling fan" msgstr "" "Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " "Bu, parça soğutma fanının maksimum hız sınırlamasıdır" @@ -12113,8 +12149,8 @@ msgid "Extrusion rate smoothing" msgstr "Ekstrüzyon hızını yumuşatma" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " +"This parameter smooths out sudden extrusion rate changes that happen when the " +"printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" @@ -12125,12 +12161,11 @@ msgid "" "A value of 0 disables the feature. \n" "\n" "For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some " -"marginal benefit in certain cases where feature speeds vary greatly. For " -"example, when there are aggressive slowdowns due to overhangs. In these " -"cases a high value of around 300-350mm3/s2 is recommended as this allows for " -"just enough smoothing to assist pressure advance achieve a smoother flow " -"transition.\n" +"Voron) this value is usually not needed. However it can provide some marginal " +"benefit in certain cases where feature speeds vary greatly. For example, when " +"there are aggressive slowdowns due to overhangs. In these cases a high value " +"of around 300-350mm3/s2 is recommended as this allows for just enough " +"smoothing to assist pressure advance achieve a smoother flow transition.\n" "\n" "For slower printers without pressure advance, the value should be set much " "lower. A value of 10-15mm3/s2 is a good starting point for direct drive " @@ -12152,13 +12187,13 @@ msgstr "" "\n" "0 değeri özelliği devre dışı bırakır. \n" "\n" -"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab " -"veya Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik " -"hızlarının büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda " -"sağlayabilir. Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. " -"Bu durumlarda 300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, " -"basınç ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı " -"olmak için yeterli yumuşatmaya izin verir.\n" +"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab veya " +"Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik hızlarının " +"büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda sağlayabilir. " +"Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. Bu durumlarda " +"300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, basınç " +"ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı olmak için " +"yeterli yumuşatmaya izin verir.\n" "\n" "Basınç avansı olmayan daha yavaş yazıcılar için değer çok daha düşük " "ayarlanmalıdır. Doğrudan tahrikli ekstruderler için 10-15mm3/s2 ve Bowden " @@ -12252,8 +12287,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field must " "contain the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -12294,8 +12329,8 @@ msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." msgstr "" -"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan " -"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." +"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " +"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." msgid "Extra loading distance" msgstr "Ekstra yükleme mesafesi" @@ -12322,8 +12357,8 @@ msgstr "Dolguda geri çekmeyi azalt" msgid "" "Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex " -"model and save printing time, but make slicing and G-code generating slower" +"oozing can't been seen. This can reduce times of retraction for complex model " +"and save printing time, but make slicing and G-code generating slower" msgstr "" "Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " "görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " @@ -12334,6 +12369,8 @@ msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing." msgstr "" +"Bu seçenek sızıntıyı önlemek için aktif olmayan ekstrüderlerin sıcaklığını " +"düşürecektir." msgid "Filename format" msgstr "Dosya adı formatı" @@ -12365,11 +12402,11 @@ msgid "Make overhangs printable - Hole area" msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by conical " +"material.A value of 0 will fill all the holes in the model base." msgstr "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " -"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " +"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." msgid "mm²" msgstr "mm²" @@ -12379,14 +12416,14 @@ msgstr "Çıkıntılı duvarı algıla" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different speed " +"to print. For 100%% overhang, bridge speed is used." msgstr "" -"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için " -"farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." +"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " +"hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." msgid "Filament to print walls" -msgstr "" +msgstr "Duvarları yazdırmak için filament" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -12408,8 +12445,8 @@ msgid "" "This setting adds an extra wall to every other layer. This way the infill " "gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option " -"needs to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option needs " +"to be disabled. \n" "\n" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." @@ -12430,17 +12467,16 @@ msgid "" "argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " -"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " -"ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " -"ve ortam değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına " -"erişebilirler." +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " +"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " +"Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " +"değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına erişebilirler." msgid "Printer type" -msgstr "" +msgstr "Yazıcı türü" msgid "Type of the printer" -msgstr "" +msgstr "Yazıcı türü" msgid "Printer notes" msgstr "Yazıcı notları" @@ -12449,14 +12485,13 @@ msgid "You can put your notes regarding the printer here." msgstr "Yazıcı ile ilgili notlarınızı buraya yazabilirsiniz." msgid "Printer variant" -msgstr "" +msgstr "Yazıcı çeşidi" msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "" -"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" +msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" msgid "Raft expansion" msgstr "Raft genişletme" @@ -12485,8 +12520,8 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " -"yazdırırken sarmayı önlemek için bu işlevi kullanın" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " +"sarmayı önlemek için bu işlevi kullanın" msgid "" "G-code path is genereated after simplifing the contour of model to avoid too " @@ -12501,8 +12536,7 @@ msgid "Travel distance threshold" msgstr "Seyahat mesafesi" msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +"Only trigger retraction when the travel distance is longer than this threshold" msgstr "" "Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " "tetikleyin" @@ -12510,8 +12544,7 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Temizleme işlemi öncesi geri çekme miktarı" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" +msgid "The length of fast retraction before wipe, relative to retraction length" msgstr "" "Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" @@ -12599,12 +12632,14 @@ msgid "Spiral" msgstr "Spiral" msgid "Traveling angle" -msgstr "" +msgstr "Seyahat açısı" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " -"in Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in " +"Normal Lift" msgstr "" +"Eğim ve Spiral Z atlama tipi için ilerleme açısı. 90°’ye ayarlamak normal " +"kaldırmayla sonuçlanır" msgid "Only lift Z above" msgstr "Z'yi sadece şu değerin üstündeki durumlarda kaldır" @@ -12736,13 +12771,13 @@ msgid "Seam gap" msgstr "Dikiş boşluğu" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the " +"loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current " +"extruder diameter. The default value for this parameter is 10%." msgstr "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " -"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " +"uğrar ve belirli bir miktarda kısaltılır.\n" "Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " "belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." @@ -12751,8 +12786,8 @@ msgstr "Atkı birleşim dikişi (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için " -"atkı birleşimini kullanın." +"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için atkı " +"birleşimini kullanın." msgid "Conditional scarf joint" msgstr "Koşullu atkı birleşimi" @@ -12770,9 +12805,9 @@ msgstr "Koşullu açı eşiği" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " "seam.\n" -"If the maximum angle within the perimeter loop exceeds this value " -"(indicating the absence of sharp corners), a scarf joint seam will be used. " -"The default value is 155°." +"If the maximum angle within the perimeter loop exceeds this value (indicating " +"the absence of sharp corners), a scarf joint seam will be used. The default " +"value is 155°." msgstr "" "Bu seçenek, koşullu bir atkı eklem dikişi uygulamak için eşik açısını " "ayarlar.\n" @@ -12787,8 +12822,8 @@ msgstr "Koşullu çıkıntı eşiği" msgid "" "This option determines the overhang threshold for the application of scarf " "joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set " -"at 40% of the external wall's width. Due to performance considerations, the " +"threshold, scarf joint seams will be applied. The default threshold is set at " +"40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" "Bu seçenek, atkı bağlantı dikişlerinin uygulanması için sarkma eşiğini " @@ -12802,22 +12837,22 @@ msgstr "Atkı birleşim hızı" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also " -"advisable to enable 'Extrusion rate smoothing' if the set speed varies " -"significantly from the speed of the outer or inner walls. If the speed " -"specified here is higher than the speed of the outer or inner walls, the " -"printer will default to the slower of the two speeds. When specified as a " -"percentage (e.g., 80%), the speed is calculated based on the respective " -"outer or inner wall speed. The default value is set to 100%." +"print scarf joints at a slow speed (less than 100 mm/s). It's also advisable " +"to enable 'Extrusion rate smoothing' if the set speed varies significantly " +"from the speed of the outer or inner walls. If the speed specified here is " +"higher than the speed of the outer or inner walls, the printer will default " +"to the slower of the two speeds. When specified as a percentage (e.g., 80%), " +"the speed is calculated based on the respective outer or inner wall speed. " +"The default value is set to 100%." msgstr "" "Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı " "bağlantılarının yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye " "edilir. Ayarlanan hızın dış veya iç duvarların hızından önemli ölçüde farklı " -"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi " -"de tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından " -"daha yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı " -"seçecektir. Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç " -"duvar hızına göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." +"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi de " +"tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından daha " +"yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı seçecektir. " +"Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç duvar hızına " +"göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." msgid "Scarf joint flow ratio" msgstr "Atkı birleşimi akış oranı" @@ -12831,8 +12866,8 @@ msgstr "Atkı başlangıç ​​yüksekliği" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the current " +"layer height. The default value for this parameter is 0." msgstr "" "Atkı başlangıç yüksekliği.\n" "Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi " @@ -12851,8 +12886,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan " -"devre dışı bırakır." +"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan devre " +"dışı bırakır." msgid "Scarf steps" msgstr "Atkı kademesi" @@ -12893,15 +12928,15 @@ msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" msgid "" -"To minimise visibility of potential overextrusion at the start of an " -"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order, the deretraction is performed slightly on the inside from the " -"start of the external perimeter. That way any potential over extrusion is " -"hidden from the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an external " +"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order, the deretraction is performed slightly on the inside from the start of " +"the external perimeter. That way any potential over extrusion is hidden from " +"the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order as in these modes it is more likely an external perimeter is " -"printed immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order as in these modes it is more likely an external perimeter is printed " +"immediately after a deretraction move." msgstr "" "Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " "başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek için, " @@ -12910,8 +12945,8 @@ msgstr "" "yüzeyden gizlenir. \n" "\n" "Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " -"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen " -"ardından bir dış çevrenin yazdırılması daha olasıdır." +"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen ardından " +"bir dış çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" @@ -12977,8 +13012,7 @@ msgid "Skirt loops" msgstr "Etek sayısı" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "" -"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" +msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" msgid "Skirt speed" msgstr "Etek hızı" @@ -13023,14 +13057,14 @@ msgstr "" "bırakmıştır" msgid "Solid infill" -msgstr "" +msgstr "Katı dolgu" msgid "Filament to print solid infill" -msgstr "" +msgstr "Katı dolguyu yazdırmak için filament" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" "İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -13044,8 +13078,8 @@ msgid "" "generated model has no seam" msgstr "" "Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " -"son modelde dikiş yok." +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " +"modelde dikiş yok." msgid "Smooth Spiral" msgstr "Pürüzsüz spiral" @@ -13070,12 +13104,11 @@ msgstr "" msgid "" "If smooth or traditional mode is selected, a timelapse video will be " "generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a " -"timelapse video when printing completes. If smooth mode is selected, the " -"toolhead will move to the excess chute after each layer is printed and then " -"take a snapshot. Since the melt filament may leak from the nozzle during the " -"process of taking a snapshot, prime tower is required for smooth mode to " -"wipe nozzle." +"with the chamber camera. All of these snapshots are composed into a timelapse " +"video when printing completes. If smooth mode is selected, the toolhead will " +"move to the excess chute after each layer is printed and then take a " +"snapshot. Since the melt filament may leak from the nozzle during the process " +"of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." msgstr "" "Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " "oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " @@ -13098,9 +13131,12 @@ msgid "" "value is not used when 'idle_temperature' in filament settings is set to non " "zero value." msgstr "" +"Ekstruder aktif olmadığında uygulanacak sıcaklık farkı. Filament ayarlarında " +"‘rölanti sıcaklığı’ sıfır olmayan bir değere ayarlandığında bu değer " +"kullanılmaz." msgid "Preheat time" -msgstr "" +msgstr "Ön ısıtma süresi" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13108,14 +13144,20 @@ msgid "" "seconds to preheat the next tool. Orca will insert a M104 command to preheat " "the tool in advance." msgstr "" +"Takım değişiminden sonra bekleme süresini azaltmak için Orca, mevcut takım " +"hala kullanımdayken bir sonraki takıma ön ısıtma yapabilir. Bu ayar, bir " +"sonraki takımın ön ısıtılması için gereken süreyi saniye cinsinden belirtir. " +"Orca, aleti önceden ısıtmak için bir M104 komutu ekleyecektir." msgid "Preheat steps" -msgstr "" +msgstr "Ön ısıtma adımları" msgid "" "Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " "other printers, please set it to 1." msgstr "" +"Birden fazla ön ısıtma komutu ekleyin (örn. M104.1). Yalnızca Prusa XL için " +"kullanışlıdır. Diğer yazıcılar için lütfen 1’e ayarlayın." msgid "Start G-code" msgstr "Başlangıç G Kodu" @@ -13161,10 +13203,9 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" msgid "" -"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." +"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." msgstr "" "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " "yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini " @@ -13189,16 +13230,16 @@ msgid "" "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " -"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " +"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " "düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." msgid "Slicing Mode" msgstr "Dilimleme modu" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close " +"all holes in the model." msgstr "" "3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " "tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." @@ -13222,10 +13263,9 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" "Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya " -"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: " -"örneğin, endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm " -"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu " -"düzeltin)." +"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, " +"endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm uzakta " +"bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)." msgid "Enable support" msgstr "Desteği etkinleştir" @@ -13279,8 +13319,7 @@ msgid "" "Only create support for critical regions including sharp tail, cantilever, " "etc." msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " -"oluşturun." +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." msgid "Remove small overhangs" msgstr "Küçük çıkıntıları kaldır" @@ -13317,8 +13356,7 @@ msgstr "Taban için arayüz filamentini azaltın" msgid "" "Avoid using support interface filament to print support base if possible." msgstr "" -"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan " -"kaçının" +"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan kaçının" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -13393,8 +13431,8 @@ msgstr "Arayüz deseni" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"interface is Rectilinear, while default pattern for soluble support interface " +"is Concentric" msgstr "" "Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " "model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " @@ -13423,12 +13461,11 @@ msgid "" "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" "For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid " -"style will create similar structure to normal support under large flat " -"overhangs." +"aggressively and save a lot of material (default organic), while hybrid style " +"will create similar structure to normal support under large flat overhangs." msgstr "" -"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara " -"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " +"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara içine " +"projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " "zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki " "izleri azaltır.\n" "Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde " @@ -13477,8 +13514,8 @@ msgid "Tree support branch angle" msgstr "Ağaç desteği dal açısı" msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " +"This setting determines the maximum overhang angle that t he branches of tree " +"support allowed to make.If the angle is increased, the branches can be " "printed more horizontally, allowing them to reach farther." msgstr "" "Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " @@ -13510,11 +13547,10 @@ msgstr "Dal Yoğunluğu" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." +"Adjusts the density of the support structure used to generate the tips of the " +"branches. A higher value results in better overhangs but the supports are " +"harder to remove, thus it is recommended to enable top support interfaces " +"instead of a high branch density value if dense interfaces are needed." msgstr "" "Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " "ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " @@ -13526,8 +13562,8 @@ msgid "Adaptive layer height" msgstr "Uyarlanabilir katman yüksekliği" msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " +"Enabling this option means the height of tree support layer except the first " +"will be automatically calculated " msgstr "" "Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " "yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " @@ -13582,8 +13618,8 @@ msgstr "Çift duvarlı dal çapı" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" "Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." +"printed with double walls for stability. Set this value to zero for no double " +"walls." msgstr "" "Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " @@ -13613,8 +13649,8 @@ msgid "" "added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" -"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 " -"komutu eklenecek \"machine_start_gcode\"\n" +"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 komutu " +"eklenecek \"machine_start_gcode\"\n" "G-code komut: M141/M191 S(0-255)" msgid "Chamber temperature" @@ -13692,11 +13728,11 @@ msgid "" "The number of top solid layers is increased when slicing if the thickness " "calculated by top shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" +"is disabled and thickness of top shell is absolutely determained by top shell " +"layers" msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -13719,12 +13755,11 @@ msgid "Wipe Distance" msgstr "Temizleme mesafesi" msgid "" -"Discribe how long the nozzle will move along the last path when " -"retracting. \n" +"Discribe how long the nozzle will move along the last path when retracting. \n" "\n" "Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"extruder/filament retraction settings are, a retraction move may be needed to " +"retract the remaining filament. \n" "\n" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." @@ -13732,9 +13767,9 @@ msgstr "" "Geri çekilirken nozulun son yol boyunca ne kadar süre hareket edeceğini " "açıklayın. \n" "\n" -"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme " -"ayarlarının ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı " -"geri çekmek için bir geri çekme hareketine ihtiyaç duyulabilir. \n" +"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme ayarlarının " +"ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı geri çekmek için " +"bir geri çekme hareketine ihtiyaç duyulabilir. \n" "\n" "Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, " "silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi " @@ -13784,8 +13819,8 @@ msgid "" "Angle at the apex of the cone that is used to stabilize the wipe tower. " "Larger angle means wider base." msgstr "" -"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki " -"açı. Daha büyük açı daha geniş taban anlamına gelir." +"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " +"Daha büyük açı daha geniş taban anlamına gelir." msgid "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" @@ -13847,8 +13882,8 @@ msgid "" "volumes below." msgstr "" "Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " -"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " -"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." +"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " +"oluşturulmasını basitleştirmek için kullanılır." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -13872,13 +13907,13 @@ msgstr "" msgid "" "This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." +"filament and decrease the print time. Colours of the objects will be mixed as " +"a result. It will not take effect, unless the prime tower is enabled." msgstr "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " -"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " +"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " +"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " +"etkili olmayacaktır." msgid "Maximal bridging distance" msgstr "Maksimum köprüleme mesafesi" @@ -13887,8 +13922,8 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " "filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " +"sürece etkili olmayacaktır." msgid "Wipe tower purge lines spacing" msgstr "Silme kulesi temizleme hatları aralığı" @@ -13897,22 +13932,28 @@ msgid "Spacing of purge lines on the wipe tower." msgstr "Silme kulesindeki boşaltma hatlarının aralığı." msgid "Extra flow for purging" -msgstr "" +msgstr "Temizleme için ekstra akış" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " -"purging lines thicker or narrower than they normally would be. The spacing " -"is adjusted automatically." +"purging lines thicker or narrower than they normally would be. The spacing is " +"adjusted automatically." msgstr "" +"Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, " +"temizleme hatlarının normalde olduğundan daha kalın veya daha dar olmasına " +"neden olur. Aralık otomatik olarak ayarlanır." msgid "Idle temperature" -msgstr "" +msgstr "Boşta sıcaklık" msgid "" "Nozzle temperature when the tool is currently not used in multi-tool setups." "This is only used when 'Ooze prevention' is active in Print Settings. Set to " "0 to disable." msgstr "" +"Alet şu anda çoklu alet kurulumlarında kullanılmadığında püskürtme ucu " +"sıcaklığı. Bu yalnızca Yazdırma Ayarlarında ‘Sızıntı önleme’ etkin olduğunda " +"kullanılır. Devre dışı bırakmak için 0’a ayarlayın." msgid "X-Y hole compensation" msgstr "X-Y delik dengeleme" @@ -13937,8 +13978,8 @@ msgid "" "assembling issue" msgstr "" "Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " -"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " +"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " "kullanılır" msgid "Convert holes to polyholes" @@ -13962,14 +14003,14 @@ msgstr "Çokgen delik tespiti marjı" msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" "As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to " -"broaden the detection.\n" +"be on the circle circumference. This setting allows you some leway to broaden " +"the detection.\n" "In mm or in % of the radius." msgstr "" "Bir noktanın dairenin tahmini yarıçapına göre maksimum sapması.\n" "Silindirler genellikle farklı boyutlarda üçgenler olarak ihraç edildiğinden, " -"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz " -"için size biraz alan sağlar.\n" +"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz için " +"size biraz alan sağlar.\n" "inc mm cinsinden veya yarıçapın %'si cinsinden." msgid "Polyhole twist" @@ -13992,8 +14033,8 @@ msgid "Format of G-code thumbnails" msgstr "G kodu küçük resimlerinin formatı" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI " +"for low memory firmware" msgstr "" "G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut " "için JPG, düşük bellekli donanım yazılımı için QOI" @@ -14014,11 +14055,11 @@ msgstr "" msgid "" "Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" +"very thin areas is used gap-fill. Arachne engine produces walls with variable " +"extrusion width" msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " -"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " +"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " "ekstrüzyon genişliğine sahip duvarlar üretir" msgid "Classic" @@ -14045,20 +14086,19 @@ msgstr "Duvar geçiş filtresi oranı" msgid "" "Prevent transitioning back and forth between one extra wall and one less. " "This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall 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. It's expressed as a " -"percentage over nozzle diameter" +"wall width - margin, 2 * Minimum wall 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. It's expressed as a percentage over " +"nozzle diameter" msgstr "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " -"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " +"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " "genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " "aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " "ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " -"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " -"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " -"edilir" +"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon " +"sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade edilir" msgid "Wall transitioning threshold angle" msgstr "Duvar geçiş açısı" @@ -14070,11 +14110,11 @@ msgid "" "this setting reduces the number and length of these center walls, but may " "leave gaps or overextrude" msgstr "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " -"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " -"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " -"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " -"ancak boşluklara veya aşırı çıkıntıya neden olabilir" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " +"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " +"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " +"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " +"boşluklara veya aşırı çıkıntıya neden olabilir" msgid "Wall distribution count" msgstr "Duvar dağılım sayısı" @@ -14090,9 +14130,9 @@ msgid "Minimum feature size" msgstr "Minimum özellik boyutu" msgid "" -"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 wall width. It's expressed as a " +"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 wall width. It's expressed as a " "percentage over nozzle diameter" msgstr "" "İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " @@ -14109,28 +14149,27 @@ msgid "" "\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent " "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a " -"top-surface. 'One wall threshold' is only visibile if this setting is set " -"above the default value of 0.5, or if single-wall top surfaces is enabled." +"Advanced settings below to adjust the sensitivity of what is considered a top-" +"surface. 'One wall threshold' is only visibile if this setting is set above " +"the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını " "önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha " "uzun duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " -"bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " -"hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " -"eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan " -"0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " -"etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu " +"değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini " +"ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. " +"'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine " +"ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." msgid "First layer minimum wall width" msgstr "İlk katman minimum duvar genişliği" msgid "" -"The minimum wall width that should be used for the first layer is " -"recommended to be set to the same size as the nozzle. This adjustment is " -"expected to enhance adhesion." +"The minimum wall width that should be used for the first layer is recommended " +"to be set to the same size as the nozzle. This adjustment is expected to " +"enhance adhesion." msgstr "" "İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " "aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " @@ -14155,8 +14194,8 @@ msgstr "Dar iç katı dolguyu tespit et" msgid "" "This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." +"concentric pattern will be used for the area to speed printing up. Otherwise, " +"rectilinear pattern is used defaultly." msgstr "" "Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " "Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " @@ -14202,8 +14241,7 @@ msgstr "Yönlendirme Seçenekleri" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "" -"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-" -"otomatik" +"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-otomatik" msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafında derece cinsinden dönüş açısı." @@ -14248,13 +14286,13 @@ msgstr "" "ettiğini bilmesi için bu değişkene yazması gerekir." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom " -"G-code moves the extruder axis, it should write to this variable so " -"PrusaSlicer deretracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom G-" +"code moves the extruder axis, it should write to this variable so PrusaSlicer " +"deretracts correctly when it gets control back." msgstr "" "Özel G kodu bloğunun başlangıcındaki geri çekilme durumu. Özel G kodu " -"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında " -"doğru şekilde geri çekme yapması için bu değişkene yazması gerekir." +"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında doğru " +"şekilde geri çekme yapması için bu değişkene yazması gerekir." msgid "Extra deretraction" msgstr "Ekstra deretraksiyon" @@ -14264,12 +14302,14 @@ msgstr "" "Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." msgid "Absolute E position" -msgstr "" +msgstr "Mutlak E konumu" msgid "" "Current position of the extruder axis. Only used with absolute extruder " "addressing." msgstr "" +"Ekstruder ekseninin mevcut konumu. Yalnızca mutlak ekstruder adreslemeyle " +"kullanılır." msgid "Current extruder" msgstr "Mevcut ekstruder" @@ -14321,10 +14361,10 @@ msgstr "" "vektörü." msgid "Has single extruder MM priming" -msgstr "" +msgstr "Tek ekstruder MM astarına sahiptir" msgid "Are the extra multi-material priming regions used in this print?" -msgstr "" +msgstr "Bu baskıda ekstra çok malzemeli astarlama bölgeleri kullanılıyor mu?" msgid "Volume per extruder" msgstr "Ekstruder başına hacim" @@ -14353,18 +14393,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. " -"Filament Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." +"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. Filament " +"Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." msgid "Total weight" msgstr "Toplam ağırlık" msgid "" -"Total weight of the print. Calculated from filament_density value in " -"Filament Settings." +"Total weight of the print. Calculated from filament_density value in Filament " +"Settings." msgstr "" -"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu " -"değerinden hesaplanır." +"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu değerinden " +"hesaplanır." msgid "Total layer count" msgstr "Toplam katman sayısı" @@ -14413,8 +14453,8 @@ msgstr "" "cinsindendir." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values " -"in mm." +"The vector has two elements: x and y dimension of the bounding box. Values in " +"mm." msgstr "" "Vektörün iki öğesi vardır: sınırlayıcı kutunun x ve y boyutu. Değerler mm " "cinsindendir." @@ -14426,8 +14466,8 @@ msgid "" "Vector of points of the first layer convex hull. Each element has the " "following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" -"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu " -"formata sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." +"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu formata " +"sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." msgid "Bottom-left corner of first layer bounding box" msgstr "İlk katman sınırlayıcı kutusunun sol alt köşesi" @@ -14491,12 +14531,14 @@ msgid "Name of the physical printer used for slicing." msgstr "Dilimleme için kullanılan fiziksel yazıcının adı." msgid "Number of extruders" -msgstr "" +msgstr "Ekstruder sayısı" msgid "" -"Total number of extruders, regardless of whether they are used in the " -"current print." +"Total number of extruders, regardless of whether they are used in the current " +"print." msgstr "" +"Geçerli baskıda kullanılıp kullanılmadığına bakılmaksızın ekstrüderlerin " +"toplam sayısı." msgid "Layer number" msgstr "Katman numarası" @@ -14631,8 +14673,7 @@ msgstr "Sağlanan dosya boş olduğundan okunamadı" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " -"olmalıdır." +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." msgid "Canceled" msgstr "İptal edildi" @@ -14754,8 +14795,7 @@ msgstr "yeni ön ayar oluşturma başarısız oldu." msgid "" "Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " -"misiniz?" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" msgid "No Printer Connected!" msgstr "Yazıcı Bağlı Değil!" @@ -14770,16 +14810,16 @@ msgid "The input value size must be 3." msgstr "Giriş değeri boyutu 3 olmalıdır." msgid "" -"This machine type can only hold 16 history results per nozzle. You can " -"delete the existing historical results and then start calibration. Or you " -"can continue the calibration, but you cannot create new calibration " -"historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can delete " +"the existing historical results and then start calibration. Or you can " +"continue the calibration, but you cannot create new calibration historical " +"results. \n" "Do you still want to continue the calibration?" msgstr "" "Bu makine tipi, püskürtme ucu başına yalnızca 16 geçmiş sonucu tutabilir. " -"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona " -"başlayabilirsiniz. Veya kalibrasyona devam edebilirsiniz ancak yeni " -"kalibrasyon geçmişi sonuçları oluşturamazsınız.\n" +"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona başlayabilirsiniz. " +"Veya kalibrasyona devam edebilirsiniz ancak yeni kalibrasyon geçmişi " +"sonuçları oluşturamazsınız.\n" "Hala kalibrasyona devam etmek istiyor musunuz?" msgid "Connecting to printer..." @@ -14793,9 +14833,9 @@ msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to override the historical result?" +"There is already a historical calibration result with the same name: %s. Only " +"one of the results with the same name is saved. Are you sure you want to " +"override the historical result?" msgstr "" "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " @@ -14806,8 +14846,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. " -"Bu sonuç kaydedilmeyecek." +"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. Bu " +"sonuç kaydedilmeyecek." msgid "Internal Error" msgstr "İç hata" @@ -14826,10 +14866,10 @@ msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" msgid "" "We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"fully automated and the result will be saved into the printer for future use. " +"You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament " +"is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" "3. If the max volumetric speed or print temperature is changed in the " "filament setting." @@ -14851,10 +14891,10 @@ msgid "" "\n" "Usually the calibration is unnecessary. When you start a single color/" "material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"print start menu, the printer will follow the old way, calibrate the filament " +"before the print; When you start a multi color/material print, the printer " +"will use the default compensation parameter for the filament during every " +"filament switch which will have a good result in most cases.\n" "\n" "Please note that there are a few cases that can make the calibration results " "unreliable, such as insufficient adhesion on the build plate. Improving " @@ -14870,9 +14910,9 @@ msgstr "" "Genellikle kalibrasyon gereksizdir. Baskı başlatma menüsünde \"akış " "dinamikleri kalibrasyonu\" seçeneği işaretliyken tek renkli/malzemeli bir " "baskı başlattığınızda, yazıcı eski yolu izleyecek, baskıdan önce filamenti " -"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı " -"her filament değişimi sırasında filament için varsayılan telafi " -"parametresini kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" +"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı her " +"filament değişimi sırasında filament için varsayılan telafi parametresini " +"kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" "\n" "Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını " "güvenilmez hale getirebilecek birkaç durum olduğunu lütfen unutmayın. " @@ -14922,10 +14962,10 @@ msgstr "" msgid "" "Flow Rate Calibration measures the ratio of expected to actual extrusion " "volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." +"filaments as they were pre-calibrated and fine-tuned. For a regular filament, " +"you usually won't need to perform a Flow Rate Calibration unless you still " +"see the listed defects after you have done other calibrations. For more " +"details, please check out the wiki article." msgstr "" "Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " "hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " @@ -14940,13 +14980,12 @@ msgid "" "directly measuring the calibration patterns. However, please be advised that " "the efficacy and accuracy of this method may be compromised with specific " "types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"transparent, sparkling-particled, or have a high-reflective finish may not be " +"suitable for this calibration and can produce less-than-desirable results.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We are " +"still improving the accuracy and compatibility of this calibration through " +"firmware updates over time.\n" "\n" "Caution: Flow Rate Calibration is an advanced process, to be attempted only " "by those who fully understand its purpose and implications. Incorrect usage " @@ -14957,8 +14996,8 @@ msgstr "" "kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " "etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " "girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " -"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " +"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" "\n" "Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " "gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " @@ -14967,8 +15006,8 @@ msgstr "" "Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " "anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " "kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " -"anladığınızdan emin olun." +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " +"emin olun." msgid "When you need Max Volumetric Speed Calibration" msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" @@ -14990,15 +15029,15 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The failed " +"test result would be dropped." msgstr "" "Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " "deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" +"*We recommend you to add brand, materia, type, and even humidity level in the " +"Name" msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" msgid "Failed" @@ -15587,8 +15626,8 @@ msgid "" "name. Do you want to continue?" msgstr "" "Oluşturduğunuz %s Filament adı zaten mevcut.\n" -"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla " -"görüntülenecektir. Devam etmek istiyor musun?" +"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla görüntülenecektir. " +"Devam etmek istiyor musun?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Aşağıdaki gibi bazı mevcut ön ayarlar oluşturulamadı:\n" @@ -15601,8 +15640,8 @@ msgstr "" "Yeniden yazmak ister misin?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ön ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -15704,15 +15743,15 @@ msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" msgstr "" -"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen " -"yazıcının satıcısını ve modelini seçin" +"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen yazıcının " +"satıcısını ve modelini seçin" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. " -"Lütfen oluşturmadan önce kontrol edin." +"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. Lütfen " +"oluşturmadan önce kontrol edin." msgid "The custom printer or model is not inputed, place input." msgstr "Özel yazıcı veya model girilmedi lütfen giriş yapın." @@ -15729,8 +15768,7 @@ msgstr "" "Oluşturduğunuz yazıcı ön ayarının zaten aynı ada sahip bir ön ayarı var. " "Üzerine yazmak istiyor musunuz?\n" "\tEvet: Aynı adı taşıyan yazıcı ön ayarının üzerine yazın; aynı ön ayar adı " -"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön " -"ayar \n" +"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön ayar \n" "adı olmayan filament ve işlem ön ayarları rezerve edilecektir.\n" "\tİptal: Ön ayar oluşturmayın, oluşturma arayüzüne dönün." @@ -15776,8 +15814,7 @@ msgstr "" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" -"Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." +msgstr "Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." msgid "Create Printer Successful" msgstr "Yazıcı Oluşturma Başarılı" @@ -15860,8 +15897,8 @@ msgstr "Dışa aktarma başarılı" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" +"The '%s' folder already exists in the current directory. Do you want to clear " +"it and rebuild it.\n" "If not, a time suffix will be added, and you can modify the name after " "creation." msgstr "" @@ -15900,8 +15937,8 @@ msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek " -"ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." +"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve " +"seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" @@ -15909,13 +15946,13 @@ msgid "" "exported as a zip." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" -"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti " -"ön ayarları zip olarak dışa aktarılacaktır." +"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön " +"ayarları zip olarak dışa aktarılacaktır." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be " -"exported as a zip." +"and all user process presets in each printer name you select will be exported " +"as a zip." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak " @@ -15939,8 +15976,8 @@ msgid "Filament presets under this filament" msgstr "Bu filamentin altındaki filament ön ayarları" msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will be " +"deleted after exiting the dialog." msgstr "" "Not: Bu filamentin altındaki tek ön ayar silinirse, diyalogdan çıkıldıktan " "sonra filament silinecektir." @@ -16058,8 +16095,7 @@ msgstr "Aygıt sekmesinde yazdırma ana bilgisayarı web arayüzünü görüntü msgid "Replace the BambuLab's device tab with print host webui" msgstr "" -"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle " -"değiştirin" +"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle değiştirin" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -16079,8 +16115,8 @@ msgid "" "On this system, %s uses HTTPS certificates from the system Certificate Store " "or Keychain." msgstr "" -"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " -"HTTPS sertifikalarını kullanıyor." +"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan HTTPS " +"sertifikalarını kullanıyor." msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " @@ -16230,31 +16266,30 @@ msgstr "" "Hata: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines " -"and high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines and " +"high printing quality. It is suitable for most general printing cases." msgstr "" "Küçük bir katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir katman " "çizgileri ve yüksek baskı kalitesi sağlar. Çoğu genel yazdırma durumu için " "uygundur." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " -"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " -"much higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " +"acceleration, and the sparse infill pattern is Gyroid. So, it results in much " +"higher printing quality, but a much longer printing time." msgstr "" "0,2 mm’lik nozülün varsayılan profiliyle karşılaştırıldığında daha düşük hız " -"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha " -"yüksek baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde " -"edilir." +"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha yüksek " +"baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a slightly " "bigger layer height, and results in almost negligible layer lines, and " "slightly shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir " -"düzeyde katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir düzeyde " +"katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " @@ -16292,8 +16327,8 @@ msgid "" "shorter printing time." msgstr "" "Varsayılan 0,2 mm püskürtme ucu profiliyle karşılaştırıldığında, daha küçük " -"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek " -"baskı kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." +"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek baskı " +"kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -16344,12 +16379,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16387,8 +16422,7 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing " -"time." +"height, and results in almost negligible layer lines and longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " "katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde " @@ -16423,8 +16457,8 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower " -"printing quality, but shorter printing time in some printing cases." +"height, and results in much more apparent layer lines and much lower printing " +"quality, but shorter printing time in some printing cases." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok daha belirgin katman çizgileri " @@ -16443,16 +16477,16 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" -"It has a very big layer height, and results in very apparent layer lines, " -"low printing quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, low " +"printing quality and general printing time." msgstr "" "Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman " "çizgilerine, düşük baskı kalitesine ve genel yazdırma süresine neden olur." @@ -16464,8 +16498,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve " -"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " -"durumlarında daha kısa yazdırma süresi sağlar." +"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma durumlarında " +"daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -16474,8 +16508,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, çok " "daha büyük bir katman yüksekliğine sahiptir ve son derece belirgin katman " -"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı " -"yazdırma durumlarında çok daha kısa yazdırma süresi sağlar." +"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " +"durumlarında çok daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -16483,10 +16517,10 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" -"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine " -"de görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, " -"ancak bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." +"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine de " +"görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, ancak " +"bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " @@ -16558,8 +16592,7 @@ msgid "" msgstr "" "Sandviç modu\n" "Modelinizde çok dik çıkıntılar yoksa hassasiyeti ve katman tutarlılığını " -"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor " -"muydunuz?" +"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -16621,14 +16654,14 @@ msgid "" "3D scene operations." msgstr "" "Klavye kısayolları nasıl kullanılır?\n" -"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " -"sunduğunu biliyor muydunuz?" +"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri sunduğunu " +"biliyor muydunuz?" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve the " +"surface quality of your overhangs?" msgstr "" "Tersine çevir\n" "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " @@ -16651,8 +16684,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " -"modeli düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " +"düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -16785,9 +16818,9 @@ msgstr "" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking prints? " +"Depending on the material, you can improve the overall finish of the printed " +"model by doing some fine-tuning." msgstr "" "Akış hızı için ince ayar\n" "Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " @@ -16821,8 +16854,8 @@ msgstr "" msgid "" "Support painting\n" "Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." +"makes it easy to place the support material only on the sections of the model " +"that actually need it." msgstr "" "Destek boyama\n" "Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " @@ -16976,8 +17009,8 @@ msgstr "" #~ msgstr "Alt+Fare tekerleği" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." +#~ "Different nozzle diameters and different filament diameters is not allowed " +#~ "when prime tower is enabled." #~ msgstr "" #~ "Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " #~ "çaplarına izin verilmez." @@ -16990,11 +17023,10 @@ msgstr "" #~ "Height of initial layer. Making initial layer height to be thick slightly " #~ "can improve build plate adhension" #~ msgstr "" -#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, " -#~ "baskı plakasının yapışmasını iyileştirebilir" +#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " +#~ "plakasının yapışmasını iyileştirebilir" -#~ msgid "" -#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." #~ msgstr "" #~ "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu " #~ "özelliği devre dışı bırakır." @@ -17072,12 +17104,11 @@ msgstr "" #~ "the print start menu, the printer will follow the old way, calibrate the " #~ "filament before the print; When you start a multi color/material print, " #~ "the printer will use the default compensation parameter for the filament " -#~ "during every filament switch which will have a good result in most " -#~ "cases.\n" +#~ "during every filament switch which will have a good result in most cases.\n" #~ "\n" #~ "Please note there are a few cases that will make the calibration result " -#~ "not reliable: using a texture plate to do the calibration; the build " -#~ "plate does not have good adhesion (please wash the build plate or apply " +#~ "not reliable: using a texture plate to do the calibration; the build plate " +#~ "does not have good adhesion (please wash the build plate or apply " #~ "gluestick!) ...You can find more from our wiki.\n" #~ "\n" #~ "The calibration results have about 10 percent jitter in our test, which " @@ -17088,12 +17119,11 @@ msgstr "" #~ "bulabilirsiniz.\n" #~ "\n" #~ "Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme " -#~ "baskısını başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan " -#~ "önce filamenti kalibre edecektir; Çok renkli/malzeme baskısını " -#~ "başlattığınızda, yazıcı her filament değişiminde filament için varsayılan " -#~ "dengeleme parametresini kullanacaktır ve bu çoğu durumda iyi bir sonuç " -#~ "verecektir.\n" +#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " +#~ "başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamenti " +#~ "kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı " +#~ "her filament değişiminde filament için varsayılan dengeleme parametresini " +#~ "kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" #~ "\n" #~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum " #~ "olduğunu lütfen unutmayın: kalibrasyonu yapmak için doku plakası " @@ -17101,14 +17131,14 @@ msgstr "" #~ "yıkayın veya yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden " #~ "bulabilirsiniz.\n" #~ "\n" -#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim " -#~ "var ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " +#~ "ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " #~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel " #~ "nedeni araştırıyoruz." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure " -#~ "you want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure you " +#~ "want to overrides the other results?" #~ msgstr "" #~ "Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " #~ "geçersiz kılmak istediğinizden emin misiniz?" @@ -17116,11 +17146,11 @@ msgstr "" #, c-format, boost-format #~ msgid "" #~ "There is already a historical calibration result with the same name: %s. " -#~ "Only one of the results with the same name is saved. Are you sure you " -#~ "want to overrides the historical result?" +#~ "Only one of the results with the same name is saved. Are you sure you want " +#~ "to overrides the historical result?" #~ msgstr "" -#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada " -#~ "sahip sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " +#~ "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " #~ "istediğinizden emin misiniz?" #~ msgid "Please find the cornor with perfect degree of extrusion" @@ -17143,11 +17173,11 @@ msgstr "" #~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " #~ "first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have " -#~ "the neighbouring infill to adhere to. However, the infill will slighly " -#~ "push out the printed walls where it is attached to them, resulting in a " -#~ "worse external surface finish. It can also cause the infill to shine " -#~ "through the external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have the " +#~ "neighbouring infill to adhere to. However, the infill will slighly push " +#~ "out the printed walls where it is attached to them, resulting in a worse " +#~ "external surface finish. It can also cause the infill to shine through the " +#~ "external surfaces of the part." #~ msgstr "" #~ "Duvar/dolgu sırası. Onay kutusunun işareti kaldırıldığında ilk olarak " #~ "duvarlar yazdırılır ve bu çoğu durumda en iyi sonucu verir.\n" @@ -17162,9 +17192,9 @@ msgstr "" #~ msgstr "V" #~ msgid "" -#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from " -#~ "PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro " -#~ "Ranellucci and the RepRap community" +#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " +#~ "by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci " +#~ "and the RepRap community" #~ msgstr "" #~ "Orca Slicer, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " #~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve " @@ -17235,16 +17265,15 @@ msgstr "" #~ "değer) korumak ister misiniz?" #~ msgid "" -#~ "You have previously modified your settings and are about to overwrite " -#~ "them with new ones." +#~ "You have previously modified your settings and are about to overwrite them " +#~ "with new ones." #~ msgstr "" -#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini " -#~ "yazmak üzeresiniz." +#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini yazmak " +#~ "üzeresiniz." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset " -#~ "settings?" +#~ "Do you want to keep your current modified settings, or use preset settings?" #~ msgstr "" #~ "\n" #~ "Geçerli değiştirilen ayarlarınızı korumak mı yoksa önceden ayarlanmış " @@ -17264,8 +17293,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası " -#~ "seçin ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." +#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " +#~ "ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." #~ msgid "MC" #~ msgstr "MC" @@ -17305,8 +17334,8 @@ msgstr "" #~ "The 3mf file version is in Beta and it is newer than the current Bambu " #~ "Studio version." #~ msgstr "" -#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden " -#~ "daha yenidir." +#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden daha " +#~ "yenidir." #~ msgid "If you would like to try Bambu Studio Beta, you may click to" #~ msgstr "Bambu Studio Beta’yı denemek isterseniz tıklayabilirsiniz." @@ -17333,9 +17362,9 @@ msgstr "" #~ "Green means that AMS humidity is normal, orange represent humidity is " #~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, " -#~ "kırmızı ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar " -#~ "düşükse o kadar iyidir.)" +#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " +#~ "ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o " +#~ "kadar iyidir.)" #~ msgid "Desiccant status" #~ msgstr "Kurutucu durumu" @@ -17345,14 +17374,14 @@ msgstr "" #~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" #~ "İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa " -#~ "o kadar iyidir.)" +#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " +#~ "kadar iyidir.)" #~ msgid "" #~ "Note: When the lid is open or the desiccant pack is changed, it can take " #~ "hours or a night to absorb the moisture. Low temperatures also slow down " -#~ "the process. During this time, the indicator may not represent the " -#~ "chamber accurately." +#~ "the process. During this time, the indicator may not represent the chamber " +#~ "accurately." #~ msgstr "" #~ "Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " #~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. " @@ -17450,14 +17479,14 @@ msgstr "" #~ msgid "" #~ "Please go to filament setting to edit your presets if you need.\n" #~ "Please note that nozzle temperature, hot bed temperature, and maximum " -#~ "volumetric speed have a significant impact on printing quality. Please " -#~ "set them carefully." +#~ "volumetric speed have a significant impact on printing quality. Please set " +#~ "them carefully." #~ msgstr "" -#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament " -#~ "ayarına gidin.\n" +#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " +#~ "gidin.\n" #~ "Lütfen püskürtme ucu sıcaklığının, sıcak yatak sıcaklığının ve maksimum " -#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip " -#~ "olduğunu unutmayın. Lütfen bunları dikkatlice ayarlayın." +#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip olduğunu " +#~ "unutmayın. Lütfen bunları dikkatlice ayarlayın." #~ msgid "Studio Version:" #~ msgstr "Stüdyo Sürümü:" @@ -17502,8 +17531,8 @@ msgstr "" #~ msgstr "Depolama Yüklemesini Test Etme" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed " -#~ "(machine_max_speed_x/machine_max_speed_y).\n" +#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/" +#~ "machine_max_speed_y).\n" #~ "Orca will automatically cap the print speed to ensure it doesn't surpass " #~ "the printer's capabilities.\n" #~ "You can adjust the maximum speed setting in your printer's configuration " @@ -17511,8 +17540,8 @@ msgstr "" #~ msgstr "" #~ "Hız ayarı yazıcının maksimum hızını aşıyor (machine_max_speed_x/" #~ "machine_max_speed_y).\n" -#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma " -#~ "hızını otomatik olarak sınırlayacaktır.\n" +#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma hızını " +#~ "otomatik olarak sınırlayacaktır.\n" #~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki " #~ "maksimum hız ayarını yapabilirsiniz." @@ -17538,8 +17567,8 @@ msgstr "" #~ "Add solid infill near sloping surfaces to guarantee the vertical shell " #~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına " -#~ "katı dolgu ekleyin (üst + alt katı katmanlar)" +#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " +#~ "dolgu ekleyin (üst + alt katı katmanlar)" #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Duvarlardaki katı dolguyu daha da azaltın (deneysel)" @@ -17593,19 +17622,19 @@ msgstr "" #~ "are not specified explicitly." #~ msgstr "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma " -#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde " -#~ "filament için minimum yazdırma hızı." +#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament " +#~ "için minimum yazdırma hızı." #~ msgid "No sparse layers (EXPERIMENTAL)" #~ msgstr "Seyrek katman yok (DENEYSEL)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgid "The Config can not be loaded." @@ -17620,8 +17649,8 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option." -#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " +#~ "extruders work better with this option unckecked (absolute extrusion " #~ "mode). Wipe tower is only compatible with relative mode. It is always " #~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" @@ -17751,8 +17780,8 @@ msgstr "" #~ "Bir Parçayı Çıkar\n" #~ "Negatif parça değiştiriciyi kullanarak bir ağı diğerinden " #~ "çıkarabileceğinizi biliyor muydunuz? Bu şekilde örneğin doğrudan Orca " -#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler " -#~ "oluşturabilirsiniz. Daha fazlasını belgelerde okuyun." +#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler oluşturabilirsiniz. " +#~ "Daha fazlasını belgelerde okuyun." #~ msgid "Filling bed " #~ msgstr "Yatak doldurma " @@ -17768,8 +17797,7 @@ msgstr "" #~ msgstr "" #~ "Doğrusal desene geçilsin mi?\n" #~ "Evet - otomatik olarak doğrusal desene geçin\n" -#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere " -#~ "sıfırlayın" +#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." #~ msgstr "" @@ -18010,8 +18038,8 @@ msgstr "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/" -#~ "yazıcıayarlarını yükle" +#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " +#~ "yükle" #~ msgid "Output directory" #~ msgstr "Çıkış dizini" @@ -18058,8 +18086,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması " -#~ "mümkün olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." +#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " +#~ "olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." #~ msgid "Online Models" #~ msgstr "Çevrimiçi Modeller" @@ -18073,8 +18101,8 @@ msgstr "" #~ msgid "" #~ "There are currently no identical spare consumables available, and " #~ "automatic replenishment is currently not possible. \n" -#~ "(Currently supporting automatic supply of consumables with the same " -#~ "brand, material type, and color)" +#~ "(Currently supporting automatic supply of consumables with the same brand, " +#~ "material type, and color)" #~ msgstr "" #~ "Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " #~ "anda mümkün değildir.\n" @@ -18106,8 +18134,7 @@ msgstr "" #~ "daha sıcak olamaz" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "" -#~ "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" +#~ msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" #~ msgid "" #~ "This option is enabled if machine support controlling chamber temperature" @@ -18135,8 +18162,7 @@ msgstr "" #~ "katmanları etkilemez" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "" -#~ "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." +#~ msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." #~ msgid "The model has too many empty layers." #~ msgstr "Modelde çok fazla boş katman var." @@ -18154,9 +18180,8 @@ msgstr "" #~ "Bed temperature when high temperature plate is installed. Value 0 means " #~ "the filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " -#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " -#~ "gelir" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " +#~ "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" #~ msgid "" #~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" @@ -18176,8 +18201,7 @@ msgstr "" #~ msgstr "" #~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " #~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " -#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " -#~ "azaltır.\n" +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" #~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " #~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " #~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " From 86cf6a55d35cd2368df474b246a90a7a915205e7 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Tue, 6 Aug 2024 18:18:28 +0300 Subject: [PATCH 106/151] Drop object on the plate (#6166) Co-authored-by: SoftFever --- src/slic3r/GUI/GLCanvas3D.cpp | 8 ++++++++ src/slic3r/GUI/GLCanvas3D.hpp | 1 + src/slic3r/GUI/GUI_Factories.cpp | 20 ++++++++++++++++++++ src/slic3r/GUI/GUI_Factories.hpp | 1 + src/slic3r/GUI/GUI_Preview.cpp | 6 ++++++ src/slic3r/GUI/GUI_Preview.hpp | 1 + src/slic3r/GUI/Plater.cpp | 7 +++++++ src/slic3r/GUI/Plater.hpp | 1 + src/slic3r/GUI/Selection.cpp | 6 ++++++ src/slic3r/GUI/Selection.hpp | 1 + 10 files changed, 52 insertions(+) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index f7789d681b..b334bdf67e 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4875,6 +4875,14 @@ void GLCanvas3D::do_center() m_selection.center(); } +void GLCanvas3D::do_drop() +{ + if (m_model == nullptr) + return; + + m_selection.drop(); +} + void GLCanvas3D::do_center_plate(const int plate_idx) { if (m_model == nullptr) return; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index ad4d21cf3a..023e95a976 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -978,6 +978,7 @@ public: void do_rotate(const std::string& snapshot_type); void do_scale(const std::string& snapshot_type); void do_center(); + void do_drop(); void do_center_plate(const int plate_idx); void do_mirror(const std::string& snapshot_type); diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 334705618e..4ac0af51e4 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -1314,6 +1314,8 @@ void MenuFactory::create_extra_object_menu() append_menu_item_merge_parts_to_single_part(&m_object_menu); // Object Center append_menu_item_center(&m_object_menu); + // Object Drop + append_menu_item_drop(&m_object_menu); // Object Split wxMenu* split_menu = new wxMenu(); if (!split_menu) @@ -1436,6 +1438,7 @@ void MenuFactory::create_bbl_part_menu() append_menu_item_fix_through_netfabb(menu); append_menu_item_simplify(menu); append_menu_item_center(menu); + append_menu_item_drop(menu); append_menu_items_mirror(menu); wxMenu* split_menu = new wxMenu(); if (!split_menu) @@ -1675,6 +1678,7 @@ wxMenu* MenuFactory::multi_selection_menu() index++; } append_menu_item_center(menu); + append_menu_item_drop(menu); append_menu_item_fix_through_netfabb(menu); //append_menu_item_simplify(menu); append_menu_item_delete(menu); @@ -1691,6 +1695,7 @@ wxMenu* MenuFactory::multi_selection_menu() } else { append_menu_item_center(menu); + append_menu_item_drop(menu); append_menu_item_fix_through_netfabb(menu); //append_menu_item_simplify(menu); append_menu_item_delete(menu); @@ -1819,6 +1824,21 @@ void MenuFactory::append_menu_item_center(wxMenu* menu) }, m_parent); } +void MenuFactory::append_menu_item_drop(wxMenu* menu) +{ + append_menu_item(menu, wxID_ANY, _L("Drop") , "", + [this](wxCommandEvent&) { + plater()->drop_selection(); + }, "", nullptr, + []() { + if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) + return false; + else { + return (plater()->get_view3D_canvas3D()->get_selection().get_bounding_box().min.z() != 0); + } //disable if model is on the bed / not in View3D + }, m_parent); +} + void MenuFactory::append_menu_item_per_object_process(wxMenu* menu) { const std::vector names = { _L("Edit Process Settings"), _L("Edit Process Settings") }; diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index f0e503c450..7c73e0facf 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -157,6 +157,7 @@ private: void append_menu_item_clone(wxMenu* menu); void append_menu_item_simplify(wxMenu* menu); void append_menu_item_center(wxMenu* menu); + void append_menu_item_drop(wxMenu* menu); void append_menu_item_per_object_process(wxMenu* menu); void append_menu_item_per_object_settings(wxMenu* menu); void append_menu_item_change_filament(wxMenu* menu); diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 13e67556e6..f87f277ac8 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -157,6 +157,12 @@ void View3D::center_selected() m_canvas->do_center(); } +void View3D::drop_selected() +{ + if (m_canvas != nullptr) + m_canvas->do_drop(); +} + void View3D::center_selected_plate(const int plate_idx) { if (m_canvas != nullptr) m_canvas->do_center_plate(plate_idx); diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index 7d6a332bc0..0478cc9818 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -66,6 +66,7 @@ public: void exit_gizmo(); void delete_selected(); void center_selected(); + void drop_selected(); void center_selected_plate(const int plate_idx); void mirror_selection(Axis axis); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 7de59dee2a..450bf768f2 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2436,6 +2436,7 @@ struct Plater::priv void delete_all_objects_from_model(); void reset(bool apply_presets_change = false); void center_selection(); + void drop_selection(); void mirror(Axis axis); void split_object(); void split_volume(); @@ -5022,6 +5023,11 @@ void Plater::priv::center_selection() view3D->center_selected(); } +void Plater::priv::drop_selection() +{ + view3D->drop_selected(); +} + void Plater::priv::mirror(Axis axis) { view3D->mirror_selection(axis); @@ -13239,6 +13245,7 @@ void Plater::suppress_background_process(const bool stop_background_process) } void Plater::center_selection() { p->center_selection(); } +void Plater::drop_selection() { p->drop_selection(); } void Plater::mirror(Axis axis) { p->mirror(axis); } void Plater::split_object() { p->split_object(); } void Plater::split_volume() { p->split_volume(); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 52f0706e89..5e5c88e7e6 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -529,6 +529,7 @@ public: //BBS: add clone logic void clone_selection(); void center_selection(); + void drop_selection(); void search(bool plater_is_active, Preset::Type type, wxWindow *tag, TextInput *etag, wxWindow *stag); void mirror(Axis axis); void split_object(); diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index baf0773ce7..9d42a624c6 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -490,6 +490,12 @@ void Selection::center() return; } +void Selection::drop() +{ + this->move_to_center(Vec3d(0, 0, -this->get_bounding_box().min.z())); + wxGetApp().plater()->get_view3D_canvas3D()->do_move(L("Move Object")); +} + void Selection::center_plate(const int plate_idx) { PartPlate* plate = wxGetApp().plater()->get_partplate_list().get_plate(plate_idx); diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 52b1a81851..8fc0f8bc66 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -230,6 +230,7 @@ public: void remove_curr_plate(); void clone(int numbers = 1); void center(); + void drop(); void center_plate(const int plate_idx); void set_printable(bool printable); From 2be740c03ca5b1b50a28b91255702e6479e56111 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Wed, 7 Aug 2024 17:41:09 +0300 Subject: [PATCH 107/151] Jerk - per axis maximum limit (#6252) * Jerk - per axis maximum limit * Fixing Klipper and refactoring * Remove unused variables --- src/libslic3r/GCodeWriter.cpp | 39 ++++++++++++++++++++++++----------- src/libslic3r/GCodeWriter.hpp | 5 +++-- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index f60d81a95a..ad3ad640c0 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -34,8 +34,10 @@ void GCodeWriter::apply_print_config(const PrintConfig &print_config) std::round((use_mach_limits && supports_separate_travel_acceleration(print_config.gcode_flavor.value)) ? print_config.machine_max_acceleration_travel.values.front() : 0)); - m_max_jerk = std::lrint( - use_mach_limits ? std::min(print_config.machine_max_jerk_x.values.front(), print_config.machine_max_jerk_y.values.front()) : 0); + if (use_mach_limits) { + m_max_jerk_x = std::lrint(print_config.machine_max_jerk_x.values.front()); + m_max_jerk_y = std::lrint(print_config.machine_max_jerk_y.values.front()); + }; m_max_jerk_z = print_config.machine_max_jerk_z.values.front(); m_max_jerk_e = print_config.machine_max_jerk_e.values.front(); } @@ -230,20 +232,31 @@ std::string GCodeWriter::set_acceleration_internal(Acceleration type, unsigned i std::string GCodeWriter::set_jerk_xy(double jerk) { - // Clamp the jerk to the allowed maximum. - if (m_max_jerk > 0 && jerk > m_max_jerk) - jerk = m_max_jerk; - if (jerk < 0.01 || is_approx(jerk, m_last_jerk)) return std::string(); m_last_jerk = jerk; - + std::ostringstream gcode; - if(FLAVOR_IS(gcfKlipper)) + if (FLAVOR_IS(gcfKlipper)) { + // Clamp the jerk to the allowed maximum. + if (m_max_jerk_x > 0 && jerk > m_max_jerk_x) + jerk = m_max_jerk_x; + if (m_max_jerk_y > 0 && jerk > m_max_jerk_y) + jerk = m_max_jerk_y; + gcode << "SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=" << jerk; - else - gcode << "M205 X" << jerk << " Y" << jerk; + } else { + double jerk_x = jerk; + double jerk_y = jerk; + // Clamp the axis jerk to the allowed maximum. + if (m_max_jerk_x > 0 && jerk > m_max_jerk_x) + jerk_x = m_max_jerk_x; + if (m_max_jerk_y > 0 && jerk > m_max_jerk_y) + jerk_y = m_max_jerk_y; + + gcode << "M205 X" << jerk_x << " Y" << jerk_y; + } if (m_is_bbl_printers) gcode << std::setprecision(2) << " Z" << m_max_jerk_z << " E" << m_max_jerk_e; @@ -277,8 +290,10 @@ std::string GCodeWriter::set_accel_and_jerk(unsigned int acceleration, double je is_empty = false; } // Clamp the jerk to the allowed maximum. - if (m_max_jerk > 0 && jerk > m_max_jerk) - jerk = m_max_jerk; + if (m_max_jerk_x > 0 && jerk > m_max_jerk_x) + jerk = m_max_jerk_x; + if (m_max_jerk_y > 0 && jerk > m_max_jerk_y) + jerk = m_max_jerk_y; if (jerk > 0.01 && !is_approx(jerk, m_last_jerk)) { gcode << " SQUARE_CORNER_VELOCITY=" << jerk; diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index ccdd460fe0..28569e909d 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -20,7 +20,7 @@ public: multiple_extruders(false), m_extruder(nullptr), m_single_extruder_multi_material(false), m_last_acceleration(0), m_max_acceleration(0),m_last_travel_acceleration(0), m_max_travel_acceleration(0), - m_last_jerk(0), m_max_jerk(0), + m_last_jerk(0), m_max_jerk_x(0), m_max_jerk_y(0), m_last_bed_temperature(0), m_last_bed_temperature_reached(true), m_lifted(0), m_to_lift(0), @@ -130,7 +130,8 @@ public: // Limit for setting the acceleration, to respect the machine limits set for the Marlin firmware. // If set to zero, the limit is not in action. unsigned int m_max_acceleration; - double m_max_jerk; + double m_max_jerk_x; + double m_max_jerk_y; double m_last_jerk; double m_max_jerk_z; double m_max_jerk_e; From 83c9ce878a5554c684940fc8a880d8c08385f537 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 9 Aug 2024 21:11:17 +0800 Subject: [PATCH 108/151] Feature/misc fixes of toolchanger (#6396) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use more readable data types for storing triangle splitting information. * fix build errors * SPE-2063: Determine correctly which extruders are used when the object is painted by the multi-material painting gizmo. During the serialization of TriangleSelector and also during reading serialized painting data from 3MF, we cache all used states in the painted triangle mesh. Based on this information, we can quickly determine which extruders are used and which don't. * Fixed an bug that filament list was not updated properly --------- Co-authored-by: Lukáš Hejl --- src/libslic3r/Model.cpp | 29 +++++----- src/libslic3r/Model.hpp | 40 +++----------- src/libslic3r/PrintApply.cpp | 19 +++++-- src/libslic3r/TriangleSelector.cpp | 88 +++++++++++++++++++++--------- src/libslic3r/TriangleSelector.hpp | 87 +++++++++++++++++++++++++++-- src/slic3r/GUI/Plater.cpp | 22 +++++--- src/slic3r/GUI/Plater.hpp | 1 + 7 files changed, 198 insertions(+), 88 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 96136db395..ad63a21ee6 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -3293,7 +3293,7 @@ bool FacetsAnnotation::has_facets(const ModelVolume& mv, EnforcerBlockerType typ bool FacetsAnnotation::set(const TriangleSelector& selector) { - std::pair>, std::vector> sel_map = selector.serialize(); + TriangleSelector::TriangleSplittingData sel_map = selector.serialize(); if (sel_map != m_data) { m_data = std::move(sel_map); this->touch(); @@ -3304,8 +3304,8 @@ bool FacetsAnnotation::set(const TriangleSelector& selector) void FacetsAnnotation::reset() { - m_data.first.clear(); - m_data.second.clear(); + m_data.triangles_to_split.clear(); + m_data.bitstream.clear(); this->touch(); } @@ -3316,15 +3316,15 @@ std::string FacetsAnnotation::get_triangle_as_string(int triangle_idx) const { std::string out; - auto triangle_it = std::lower_bound(m_data.first.begin(), m_data.first.end(), triangle_idx, [](const std::pair &l, const int r) { return l.first < r; }); - if (triangle_it != m_data.first.end() && triangle_it->first == triangle_idx) { - int offset = triangle_it->second; - int end = ++ triangle_it == m_data.first.end() ? int(m_data.second.size()) : triangle_it->second; + auto triangle_it = std::lower_bound(m_data.triangles_to_split.begin(), m_data.triangles_to_split.end(), triangle_idx, [](const TriangleSelector::TriangleBitStreamMapping &l, const int r) { return l.triangle_idx < r; }); + if (triangle_it != m_data.triangles_to_split.end() && triangle_it->triangle_idx == triangle_idx) { + int offset = triangle_it->bitstream_start_idx; + int end = ++ triangle_it == m_data.triangles_to_split.end() ? int(m_data.bitstream.size()) : triangle_it->bitstream_start_idx; while (offset < end) { int next_code = 0; for (int i=3; i>=0; --i) { next_code = next_code << 1; - next_code |= int(m_data.second[offset + i]); + next_code |= int(m_data.bitstream[offset + i]); } offset += 4; @@ -3341,9 +3341,10 @@ std::string FacetsAnnotation::get_triangle_as_string(int triangle_idx) const void FacetsAnnotation::set_triangle_from_string(int triangle_id, const std::string& str) { assert(! str.empty()); - assert(m_data.first.empty() || m_data.first.back().first < triangle_id); - m_data.first.emplace_back(triangle_id, int(m_data.second.size())); + assert(m_data.triangles_to_split.empty() || m_data.triangles_to_split.back().triangle_idx < triangle_id); + m_data.triangles_to_split.emplace_back(triangle_id, int(m_data.bitstream.size())); + const size_t bitstream_start_idx = m_data.bitstream.size(); for (auto it = str.crbegin(); it != str.crend(); ++it) { const char ch = *it; int dec = 0; @@ -3355,14 +3356,16 @@ void FacetsAnnotation::set_triangle_from_string(int triangle_id, const std::stri assert(false); // Convert to binary and append into code. - for (int i=0; i<4; ++i) - m_data.second.insert(m_data.second.end(), bool(dec & (1 << i))); + for (int i = 0; i < 4; ++i) + m_data.bitstream.insert(m_data.bitstream.end(), bool(dec & (1 << i))); } + + m_data.update_used_states(bitstream_start_idx); } bool FacetsAnnotation::equals(const FacetsAnnotation &other) const { - const std::pair>, std::vector>& data = other.get_data(); + const auto& data = other.get_data(); return (m_data == data); } diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 927ab47f9b..9fc315778f 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -16,6 +16,7 @@ #include "enum_bitmask.hpp" #include "TextConfiguration.hpp" #include "EmbossShape.hpp" +#include "TriangleSelector.hpp" //BBS: add bbs 3mf #include "Format/bbs_3mf.hpp" @@ -704,31 +705,6 @@ private: void update_min_max_z(); }; -enum class EnforcerBlockerType : int8_t { - // Maximum is 3. The value is serialized in TriangleSelector into 2 bits. - NONE = 0, - ENFORCER = 1, - BLOCKER = 2, - // Maximum is 15. The value is serialized in TriangleSelector into 6 bits using a 2 bit prefix code. - Extruder1 = ENFORCER, - Extruder2 = BLOCKER, - Extruder3, - Extruder4, - Extruder5, - Extruder6, - Extruder7, - Extruder8, - Extruder9, - Extruder10, - Extruder11, - Extruder12, - Extruder13, - Extruder14, - Extruder15, - Extruder16, - ExtruderMax = Extruder16 -}; - enum class ConversionType : int { CONV_TO_INCH, CONV_FROM_INCH, @@ -745,9 +721,9 @@ enum class En3mfType : int { class FacetsAnnotation final : public ObjectWithTimestamp { public: // Assign the content if the timestamp differs, don't assign an ObjectID. - void assign(const FacetsAnnotation& rhs) { if (! this->timestamp_matches(rhs)) { m_data = rhs.m_data; this->copy_timestamp(rhs); } } - void assign(FacetsAnnotation&& rhs) { if (! this->timestamp_matches(rhs)) { m_data = std::move(rhs.m_data); this->copy_timestamp(rhs); } } - const std::pair>, std::vector>& get_data() const throw() { return m_data; } + void assign(const FacetsAnnotation &rhs) { if (! this->timestamp_matches(rhs)) { m_data = rhs.m_data; this->copy_timestamp(rhs); } } + void assign(FacetsAnnotation &&rhs) { if (! this->timestamp_matches(rhs)) { m_data = std::move(rhs.m_data); this->copy_timestamp(rhs); } } + const TriangleSelector::TriangleSplittingData &get_data() const noexcept { return m_data; } bool set(const TriangleSelector& selector); indexed_triangle_set get_facets(const ModelVolume& mv, EnforcerBlockerType type) const; // BBS @@ -755,7 +731,7 @@ public: void set_enforcer_block_type_limit(const ModelVolume& mv, EnforcerBlockerType max_type); indexed_triangle_set get_facets_strict(const ModelVolume& mv, EnforcerBlockerType type) const; bool has_facets(const ModelVolume& mv, EnforcerBlockerType type) const; - bool empty() const { return m_data.first.empty(); } + bool empty() const { return m_data.triangles_to_split.empty(); } // Following method clears the config and increases its timestamp, so the deleted // state is considered changed from perspective of the undo/redo stack. @@ -765,11 +741,11 @@ public: std::string get_triangle_as_string(int i) const; // Before deserialization, reserve space for n_triangles. - void reserve(int n_triangles) { m_data.first.reserve(n_triangles); } + void reserve(int n_triangles) { m_data.triangles_to_split.reserve(n_triangles); } // Deserialize triangles one by one, with strictly increasing triangle_id. void set_triangle_from_string(int triangle_id, const std::string& str); // After deserializing the last triangle, shrink data to fit. - void shrink_to_fit() { m_data.first.shrink_to_fit(); m_data.second.shrink_to_fit(); } + void shrink_to_fit() { m_data.triangles_to_split.shrink_to_fit(); m_data.bitstream.shrink_to_fit(); } bool equals(const FacetsAnnotation &other) const; private: @@ -796,7 +772,7 @@ private: ar(cereal::base_class(this), m_data); } - std::pair>, std::vector> m_data; + TriangleSelector::TriangleSplittingData m_data; // To access set_new_unique_id() when copy / pasting a ModelVolume. friend class ModelVolume; diff --git a/src/libslic3r/PrintApply.cpp b/src/libslic3r/PrintApply.cpp index b6fd173c03..232c86b9ec 100644 --- a/src/libslic3r/PrintApply.cpp +++ b/src/libslic3r/PrintApply.cpp @@ -1498,11 +1498,22 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ } std::vector painting_extruders; if (const auto &volumes = print_object.model_object()->volumes; - num_extruders > 1 && + num_extruders > 1 && std::find_if(volumes.begin(), volumes.end(), [](const ModelVolume *v) { return ! v->mmu_segmentation_facets.empty(); }) != volumes.end()) { - //FIXME be more specific! Don't enumerate extruders that are not used for painting! - painting_extruders.assign(num_extruders , 0); - std::iota(painting_extruders.begin(), painting_extruders.end(), 1); + + std::array(EnforcerBlockerType::ExtruderMax)> used_facet_states{}; + for (const ModelVolume *volume : volumes) { + const std::vector &volume_used_facet_states = volume->mmu_segmentation_facets.get_data().used_states; + + assert(volume_used_facet_states.size() == used_facet_states.size()); + for (size_t state_idx = 0; state_idx < std::min(volume_used_facet_states.size(), used_facet_states.size()); ++state_idx) + used_facet_states[state_idx] |= volume_used_facet_states[state_idx]; + } + + for (size_t state_idx = static_cast(EnforcerBlockerType::Extruder1); state_idx < used_facet_states.size(); ++state_idx) { + if (used_facet_states[state_idx]) + painting_extruders.emplace_back(state_idx); + } } if (model_object_status.print_object_regions_status == ModelObjectStatus::PrintObjectRegionsStatus::Valid) { // Verify that the trafo for regions & volume bounding boxes thus for regions is still applicable. diff --git a/src/libslic3r/TriangleSelector.cpp b/src/libslic3r/TriangleSelector.cpp index 329e50f329..e7c59b7119 100644 --- a/src/libslic3r/TriangleSelector.cpp +++ b/src/libslic3r/TriangleSelector.cpp @@ -1622,8 +1622,7 @@ void TriangleSelector::get_seed_fill_contour_recursive(const int facet_idx, cons } } -std::pair>, std::vector> TriangleSelector::serialize() const -{ +TriangleSelector::TriangleSplittingData TriangleSelector::serialize() const { // Each original triangle of the mesh is assigned a number encoding its state // or how it is split. Each triangle is encoded by 4 bits (xxyy) or 8 bits (zzzzxxyy): // leaf triangle: xx = EnforcerBlockerType (Only values 0, 1, and 2. Value 3 is used as an indicator for additional 4 bits.), yy = 0 @@ -1639,7 +1638,7 @@ std::pair>, std::vector> TriangleSelector: // (std::function calls using a pointer, while this implementation calls directly). struct Serializer { const TriangleSelector* triangle_selector; - std::pair>, std::vector> data; + TriangleSplittingData data; void serialize(int facet_idx) { const Triangle& tr = triangle_selector->m_triangles[facet_idx]; @@ -1648,8 +1647,8 @@ std::pair>, std::vector> TriangleSelector: int split_sides = tr.number_of_split_sides(); assert(split_sides >= 0 && split_sides <= 3); - data.second.push_back(split_sides & 0b01); - data.second.push_back(split_sides & 0b10); + data.bitstream.push_back(split_sides & 0b01); + data.bitstream.push_back(split_sides & 0b10); if (split_sides) { // If this triangle is split, save which side is split (in case @@ -1657,8 +1656,8 @@ std::pair>, std::vector> TriangleSelector: // be ignored for 3-side split. assert(tr.is_split() && split_sides > 0); assert(tr.special_side() >= 0 && tr.special_side() <= 3); - data.second.push_back(tr.special_side() & 0b01); - data.second.push_back(tr.special_side() & 0b10); + data.bitstream.push_back(tr.special_side() & 0b01); + data.bitstream.push_back(tr.special_side() & 0b10); // Now save all children. // Serialized in reverse order for compatibility with PrusaSlicer 2.3.1. for (int child_idx = split_sides; child_idx >= 0; -- child_idx) @@ -1666,45 +1665,48 @@ std::pair>, std::vector> TriangleSelector: } else { // In case this is leaf, we better save information about its state. int n = int(tr.get_state()); + if (n < static_cast(EnforcerBlockerType::ExtruderMax)) + data.used_states[n] = true; + if (n >= 3) { assert(n <= 16); if (n <= 16) { // Store "11" plus 4 bits of (n-3). - data.second.insert(data.second.end(), { true, true }); + data.bitstream.insert(data.bitstream.end(), { true, true }); n -= 3; for (size_t bit_idx = 0; bit_idx < 4; ++bit_idx) - data.second.push_back(n & (uint64_t(0b0001) << bit_idx)); + data.bitstream.push_back(n & (uint64_t(0b0001) << bit_idx)); } } else { // Simple case, compatible with PrusaSlicer 2.3.1 and older for storing paint on supports and seams. // Store 2 bits of n. - data.second.push_back(n & 0b01); - data.second.push_back(n & 0b10); + data.bitstream.push_back(n & 0b01); + data.bitstream.push_back(n & 0b10); } } } } out { this }; - out.data.first.reserve(m_orig_size_indices); + out.data.triangles_to_split.reserve(m_orig_size_indices); for (int i=0; i>, std::vector> &data, bool needs_reset, EnforcerBlockerType max_ebt) +void TriangleSelector::deserialize(const TriangleSplittingData& data, bool needs_reset, EnforcerBlockerType max_ebt) { if (needs_reset) reset(); // dump any current state - for (auto [triangle_id, ibit] : data.first) { + for (auto [triangle_id, ibit] : data.triangles_to_split) { if (triangle_id >= int(m_triangles.size())) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "array bound:error:triangle_id >= int(m_triangles.size())"; return; @@ -1712,7 +1714,7 @@ void TriangleSelector::deserialize(const std::pair parents; - for (auto [triangle_id, ibit] : data.first) { + for (auto [triangle_id, ibit] : data.triangles_to_split) { assert(triangle_id < int(m_triangles.size())); - assert(ibit < int(data.second.size())); + assert(ibit < int(data.bitstream.size())); auto next_nibble = [&data, &ibit = ibit]() { int n = 0; for (int i = 0; i < 4; ++ i) - n |= data.second[ibit ++] << i; + n |= data.bitstream[ibit ++] << i; return n; }; @@ -1811,21 +1813,53 @@ void TriangleSelector::deserialize(const std::pairbitstream.size()); + assert(!this->bitstream.empty() && this->bitstream.size() != bitstream_start_idx); + assert((this->bitstream.size() - bitstream_start_idx) % 4 == 0); + + if (this->bitstream.empty() || this->bitstream.size() == bitstream_start_idx) + return; + + size_t nibble_idx = bitstream_start_idx; + + auto read_next_nibble = [&data_bitstream = std::as_const(this->bitstream), &nibble_idx]() -> uint8_t { + assert(nibble_idx + 3 < data_bitstream.size()); + uint8_t code = 0; + for (size_t bit_idx = 0; bit_idx < 4; ++bit_idx) + code |= data_bitstream[nibble_idx++] << bit_idx; + return code; + }; + + while (nibble_idx < this->bitstream.size()) { + const uint8_t code = read_next_nibble(); + + if (const bool is_split = (code & 0b11) != 0; is_split) + continue; + + const uint8_t facet_state = (code & 0b1100) == 0b1100 ? read_next_nibble() + 3 : code >> 2; + assert(facet_state < this->used_states.size()); + if (facet_state >= this->used_states.size()) + continue; + + this->used_states[facet_state] = true; + } +} + // Lightweight variant of deserialization, which only tests whether a face of test_state exists. -bool TriangleSelector::has_facets(const std::pair>, std::vector> &data, const EnforcerBlockerType test_state) -{ +bool TriangleSelector::has_facets(const TriangleSplittingData &data, const EnforcerBlockerType test_state) { // Depth-first queue of a number of unvisited children. // Kept outside of the loop to avoid re-allocating inside the loop. std::vector parents_children; parents_children.reserve(64); - for (const std::pair &triangle_id_and_ibit : data.first) { - int ibit = triangle_id_and_ibit.second; - assert(ibit < int(data.second.size())); + for (const TriangleBitStreamMapping &triangle_id_and_ibit : data.triangles_to_split) { + int ibit = triangle_id_and_ibit.bitstream_start_idx; + assert(ibit < int(data.bitstream.size())); auto next_nibble = [&data, &ibit = ibit]() { int n = 0; for (int i = 0; i < 4; ++ i) - n |= data.second[ibit ++] << i; + n |= data.bitstream[ibit ++] << i; return n; }; // < 0 -> negative of a number of children diff --git a/src/libslic3r/TriangleSelector.hpp b/src/libslic3r/TriangleSelector.hpp index b73283c0e1..e22a551baf 100644 --- a/src/libslic3r/TriangleSelector.hpp +++ b/src/libslic3r/TriangleSelector.hpp @@ -7,10 +7,34 @@ #include #include "Point.hpp" #include "TriangleMesh.hpp" -#include "libslic3r/Model.hpp" namespace Slic3r { +enum class EnforcerBlockerType : int8_t { + // Maximum is 3. The value is serialized in TriangleSelector into 2 bits. + NONE = 0, + ENFORCER = 1, + BLOCKER = 2, + // Maximum is 15. The value is serialized in TriangleSelector into 6 bits using a 2 bit prefix code. + Extruder1 = ENFORCER, + Extruder2 = BLOCKER, + Extruder3, + Extruder4, + Extruder5, + Extruder6, + Extruder7, + Extruder8, + Extruder9, + Extruder10, + Extruder11, + Extruder12, + Extruder13, + Extruder14, + Extruder15, + Extruder16, + ExtruderMax = Extruder16 +}; + // Following class holds information about selected triangles. It also has power // to recursively subdivide the triangles and make the selection finer. class TriangleSelector @@ -208,6 +232,56 @@ public: } }; + struct TriangleBitStreamMapping + { + // Index of the triangle to which we assign the bitstream containing splitting information. + int triangle_idx = -1; + // Index of the first bit of the bitstream assigned to this triangle. + int bitstream_start_idx = -1; + + TriangleBitStreamMapping() = default; + explicit TriangleBitStreamMapping(int triangleIdx, int bitstreamStartIdx) : triangle_idx(triangleIdx), bitstream_start_idx(bitstreamStartIdx) {} + + friend bool operator==(const TriangleBitStreamMapping &lhs, const TriangleBitStreamMapping &rhs) { return lhs.triangle_idx == rhs.triangle_idx && lhs.bitstream_start_idx == rhs.bitstream_start_idx; } + friend bool operator!=(const TriangleBitStreamMapping &lhs, const TriangleBitStreamMapping &rhs) { return !(lhs == rhs); } + + private: + friend class cereal::access; + template void serialize(Archive &ar) { ar(triangle_idx, bitstream_start_idx); } + }; + + struct TriangleSplittingData { + // Vector of triangles and its indexes to the bitstream. + std::vector triangles_to_split; + // Bit stream containing splitting information. + std::vector bitstream; + // Array indicating which triangle state types are used (encoded inside bitstream). + std::vector used_states { std::vector(static_cast(EnforcerBlockerType::ExtruderMax), false) }; + + TriangleSplittingData() = default; + + friend bool operator==(const TriangleSplittingData &lhs, const TriangleSplittingData &rhs) { + return lhs.triangles_to_split == rhs.triangles_to_split + && lhs.bitstream == rhs.bitstream + && lhs.used_states == rhs.used_states; + } + + friend bool operator!=(const TriangleSplittingData &lhs, const TriangleSplittingData &rhs) { return !(lhs == rhs); } + + // Reset all used states before they are recomputed based on the bitstream. + void reset_used_states() { + used_states.resize(static_cast(EnforcerBlockerType::ExtruderMax), false); + std::fill(used_states.begin(), used_states.end(), false); + } + + // Update used states based on the bitstream. It just iterated over the bitstream from the bitstream_start_idx till the end. + void update_used_states(size_t bitstream_start_idx); + + private: + friend class cereal::access; + template void serialize(Archive &ar) { ar(triangles_to_split, bitstream, used_states); } + }; + std::pair, std::vector> precompute_all_neighbors() const; void precompute_all_neighbors_recursive(int facet_idx, const Vec3i32 &neighbors, const Vec3i32 &neighbors_propagated, std::vector &neighbors_out, std::vector &neighbors_normal_out) const; @@ -247,7 +321,7 @@ public: bool force_reselection = false); // force reselection of the triangle mesh even in cases that mouse is pointing on the selected triangle bool has_facets(EnforcerBlockerType state) const; - static bool has_facets(const std::pair>, std::vector> &data, EnforcerBlockerType test_state); + static bool has_facets(const TriangleSplittingData &data, EnforcerBlockerType test_state); int num_facets(EnforcerBlockerType state) const; // Get facets at a given state. Don't triangulate T-joints. indexed_triangle_set get_facets(EnforcerBlockerType state) const; @@ -270,10 +344,15 @@ public: // Store the division trees in compact form (a long stream of bits for each triangle of the original mesh). // First vector contains pairs of (triangle index, first bit in the second vector). - std::pair>, std::vector> serialize() const; + TriangleSplittingData serialize() const; // Load serialized data. Assumes that correct mesh is loaded. - void deserialize(const std::pair>, std::vector>& data, bool needs_reset = true, EnforcerBlockerType max_ebt = EnforcerBlockerType::ExtruderMax); + void deserialize(const TriangleSplittingData& data, + bool needs_reset = true, + EnforcerBlockerType max_ebt = EnforcerBlockerType::ExtruderMax); + + // Extract all used facet states from the given TriangleSplittingData. + static std::vector extract_used_facet_states(const TriangleSplittingData &data); // For all triangles, remove the flag indicating that the triangle was selected by seed fill. void seed_fill_unselect_all_triangles(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 450bf768f2..5ce506951b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1354,7 +1354,7 @@ void Sidebar::update_presets(Preset::Type preset_type) for (size_t i = 0; i < filament_cnt; i++) p->combos_filament[i]->update(); - dynamic_filament_list.update(); + update_dynamic_filament_list(); break; } @@ -1637,7 +1637,7 @@ void Sidebar::on_filaments_change(size_t num_filaments) Layout(); p->m_panel_filament_title->Refresh(); update_ui_from_settings(); - dynamic_filament_list.update(); + update_dynamic_filament_list(); } void Sidebar::add_filament() { @@ -1818,7 +1818,7 @@ void Sidebar::sync_ams_list() c->update(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->select_preset(wxGetApp().preset_bundle->filament_presets[0]); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); - dynamic_filament_list.update(); + update_dynamic_filament_list(); // Expand filament list p->m_panel_filament_content->SetMaxSize({-1, -1}); // BBS:Synchronized consumables information @@ -1854,6 +1854,12 @@ void Sidebar::show_SEMM_buttons(bool bshow) Layout(); } +void Sidebar::update_dynamic_filament_list() +{ + dynamic_filament_list.update(); + dynamic_filament_list_1_based.update(); +} + ObjectList* Sidebar::obj_list() { // BBS @@ -6535,7 +6541,7 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) wxGetApp().preset_bundle->set_filament_preset(idx, preset_name); wxGetApp().plater()->update_project_dirty_from_presets(); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); - dynamic_filament_list.update(); + sidebar->update_dynamic_filament_list(); bool flag_is_change = is_support_filament(idx); if (flag != flag_is_change) { sidebar->auto_calc_flushing_volumes(idx); @@ -12794,7 +12800,7 @@ void Plater::on_config_change(const DynamicPrintConfig &config) if (update_filament_colors_in_full_config()) { p->sidebar->obj_list()->update_filament_colors(); - dynamic_filament_list.update(); + p->sidebar->update_dynamic_filament_list(); continue; } } @@ -12851,9 +12857,9 @@ void Plater::on_config_change(const DynamicPrintConfig &config) bed_shape_changed = true; update_scheduled = true; } - // BBS - else if (opt_key == "support_interface_filament" || - opt_key == "support_filament") { + // Orca: update when *_filament changed + else if (opt_key == "support_interface_filament" || opt_key == "support_filament" || opt_key == "wall_filament" || + opt_key == "sparse_infill_filament" || opt_key == "solid_infill_filament") { update_scheduled = true; } } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 5e5c88e7e6..16396631a8 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -150,6 +150,7 @@ public: void sync_ams_list(); // Orca void show_SEMM_buttons(bool bshow); + void update_dynamic_filament_list(); ObjectList* obj_list(); ObjectSettings* obj_settings(); From 92ff9b2bc33883daf903c4ee560741e6fc2a35cd Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Fri, 9 Aug 2024 14:32:24 +0100 Subject: [PATCH 109/151] Clarified flow ratio tooltips (#6397) * Clarified flow ratio tooltips * Spelling * Formatting --- src/libslic3r/PrintConfig.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 32d3b563ce..089ca62c20 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -897,7 +897,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Bridge flow ratio"); def->category = L("Quality"); def->tooltip = L("Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, " - "to improve sag"); + "to improve sag. \n\nThe actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio."); def->min = 0; def->max = 2.0; def->mode = comAdvanced; @@ -906,7 +906,8 @@ void PrintConfigDef::init_fff_params() def = this->add("internal_bridge_flow", coFloat); def->label = L("Internal bridge flow ratio"); def->category = L("Quality"); - def->tooltip = L("This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill."); + def->tooltip = L("This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill." + "\n\nThe actual internal bridge flow used is calculated by multiplying this value with the bridge flow ratio, the filament flow ratio, and if set, the object's flow ratio."); def->min = 0; def->max = 2.0; def->mode = comAdvanced; @@ -916,7 +917,8 @@ void PrintConfigDef::init_fff_params() def->label = L("Top surface flow ratio"); def->category = L("Advanced"); def->tooltip = L("This factor affects the amount of material for top solid infill. " - "You can decrease it slightly to have smooth surface finish"); + "You can decrease it slightly to have smooth surface finish. " + "\n\nThe actual top surface flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio."); def->min = 0; def->max = 2; def->mode = comAdvanced; @@ -925,7 +927,8 @@ void PrintConfigDef::init_fff_params() def = this->add("bottom_solid_infill_flow_ratio", coFloat); def->label = L("Bottom surface flow ratio"); def->category = L("Advanced"); - def->tooltip = L("This factor affects the amount of material for bottom solid infill"); + def->tooltip = L("This factor affects the amount of material for bottom solid infill. " + "\n\nThe actual bottom solid infill flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio."); def->min = 0; def->max = 2; def->mode = comAdvanced; @@ -1664,7 +1667,8 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The material may have volumetric change after switching between molten state and crystalline state. " "This setting changes all extrusion flow of this filament in gcode proportionally. " "Recommended value range is between 0.95 and 1.05. " - "Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow"); + "Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow. " + "\n\nThe final object flow ratio is this value multiplied by the filament flow ratio."); def->mode = comAdvanced; def->max = 2; def->min = 0.01; From 42989cb772b5e86ae4d08dff56ec343f1b8ffb18 Mon Sep 17 00:00:00 2001 From: Robert Schiele Date: Fri, 9 Aug 2024 15:33:09 +0200 Subject: [PATCH 110/151] more missing includes (#6398) Here are more missing header files recently identified by building without precompiled header support. --- src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp | 1 + src/libslic3r/Geometry/MedialAxis.cpp | 2 ++ src/libslic3r/Geometry/VoronoiUtilsCgal.cpp | 2 ++ src/libslic3r/utils.cpp | 1 + src/slic3r/GUI/Preferences.cpp | 1 + 5 files changed, 7 insertions(+) diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp index 3909868bee..e19fbc209b 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp @@ -2,6 +2,7 @@ //CuraEngine is released under the terms of the AGPLv3 or higher. #include "SkeletalTrapezoidationGraph.hpp" +#include "../Line.hpp" #include diff --git a/src/libslic3r/Geometry/MedialAxis.cpp b/src/libslic3r/Geometry/MedialAxis.cpp index d3a6ac6c84..f3514bb512 100644 --- a/src/libslic3r/Geometry/MedialAxis.cpp +++ b/src/libslic3r/Geometry/MedialAxis.cpp @@ -1,7 +1,9 @@ +#include #include "MedialAxis.hpp" #include "clipper.hpp" #include "VoronoiOffset.hpp" +#include "../ClipperUtils.hpp" #ifdef SLIC3R_DEBUG namespace boost { namespace polygon { diff --git a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp index 60f66edbf6..3118bf8280 100644 --- a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp +++ b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp @@ -1,3 +1,5 @@ +// Needed since the CGAL headers are not self-contained. +#include #include #include #include diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 362cc521b6..d7a4a653e7 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -54,6 +54,7 @@ #include #include #include +#include // We are using quite an old TBB 2017 U7, which does not support global control API officially. // Before we update our build servers, let's use the old API, which is deprecated in up to date TBB. diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 2dad186e46..079e228050 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -16,6 +16,7 @@ #include "Widgets/RadioBox.hpp" #include "Widgets/TextInput.hpp" #include +#include #include #ifdef __WINDOWS__ From af70e8aef4cb3af5f3d4bc79b56bc7e39f1ffdb0 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 11 Aug 2024 22:56:32 +0800 Subject: [PATCH 111/151] Feature/mmu toolchange time (#6426) * Revert "Fix #3311: filament Load / Unload time was not used in time estimation (#3706)" This reverts commit 252788419bbf3ab127dfd5ca869497e716f11774. * revamp tool/filament change time * tweak message --- src/libslic3r/GCode/GCodeProcessor.cpp | 93 +++++++------------------- src/libslic3r/GCode/GCodeProcessor.hpp | 6 +- src/libslic3r/Preset.cpp | 8 +-- src/libslic3r/PrintConfig.cpp | 31 ++++----- src/libslic3r/PrintConfig.hpp | 4 +- src/slic3r/GUI/Tab.cpp | 21 +++--- 6 files changed, 53 insertions(+), 110 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index c8d61bc488..fce17c75b4 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -392,8 +392,10 @@ void GCodeProcessor::TimeProcessor::reset() extruder_unloaded = true; machine_envelope_processing_enabled = false; machine_limits = MachineEnvelopeConfig(); - filament_load_times = std::vector(); - filament_unload_times = std::vector(); + filament_load_times = 0.0f; + filament_unload_times = 0.0f; + machine_tool_change_time = 0.0f; + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { machines[i].reset(); @@ -1115,23 +1117,9 @@ void GCodeProcessor::apply_config(const PrintConfig& config) // Filament load / unload times are not specific to a firmware flavor. Let anybody use it if they find it useful. // As of now the fields are shown at the UI dialog in the same combo box as the ramming values, so they // are considered to be active for the single extruder multi-material printers only. - if(s_IsBBLPrinter){ - // BBL printers use machine_load_filament_time and machine_unload_filament_time - m_time_processor.filament_load_times.resize(1); - m_time_processor.filament_load_times[0] = static_cast(config.machine_load_filament_time.value); - m_time_processor.filament_unload_times.resize(1); - m_time_processor.filament_unload_times[0] = static_cast(config.machine_unload_filament_time.value); - } else { - // for non-BBL printers use the filament_load_time and filament_unload_time - m_time_processor.filament_load_times.resize(config.filament_load_time.values.size()); - for (size_t i = 0; i < config.filament_load_time.values.size(); ++i) { - m_time_processor.filament_load_times[i] = static_cast(config.filament_load_time.values[i]); - } - m_time_processor.filament_unload_times.resize(config.filament_unload_time.values.size()); - for (size_t i = 0; i < config.filament_unload_time.values.size(); ++i) { - m_time_processor.filament_unload_times[i] = static_cast(config.filament_unload_time.values[i]); - } - } + m_time_processor.filament_load_times = static_cast(config.machine_load_filament_time.value); + m_time_processor.filament_unload_times = static_cast(config.machine_unload_filament_time.value); + m_time_processor.machine_tool_change_time = static_cast(config.machine_tool_change_time.value); for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { float max_acceleration = get_option_value(m_time_processor.machine_limits.machine_max_acceleration_extruding, i); @@ -1352,36 +1340,18 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) m_extruder_temps.resize(m_result.extruders_count); - if(s_IsBBLPrinter){ - // BBL printers use machine_load_filament_time and machine_unload_filament_time - const ConfigOptionFloat* machine_load_filament_time = config.option("machine_load_filament_time"); - if (machine_load_filament_time != nullptr){ - m_time_processor.filament_load_times.resize(1); - m_time_processor.filament_load_times[0] = static_cast(machine_load_filament_time->value); - } + const ConfigOptionFloat* machine_load_filament_time = config.option("machine_load_filament_time"); + if (machine_load_filament_time != nullptr) + m_time_processor.filament_load_times = static_cast(machine_load_filament_time->value); + + const ConfigOptionFloat* machine_unload_filament_time = config.option("machine_unload_filament_time"); + if (machine_unload_filament_time != nullptr) + m_time_processor.filament_unload_times = static_cast(machine_unload_filament_time->value); + + const ConfigOptionFloat* machine_tool_change_time = config.option("machine_tool_change_time"); + if (machine_tool_change_time != nullptr) + m_time_processor.machine_tool_change_time = static_cast(machine_tool_change_time->value); - const ConfigOptionFloat* machine_unload_filament_time = config.option("machine_unload_filament_time"); - if (machine_unload_filament_time != nullptr){ - m_time_processor.filament_unload_times.resize(1); - m_time_processor.filament_unload_times[0] = static_cast(machine_unload_filament_time->value); - } - } else { - // non-BBL printers use filament_load_time and filament_unload_time - const ConfigOptionFloats* filament_load_time = config.option("filament_load_time"); - if (filament_load_time != nullptr) { - m_time_processor.filament_load_times.resize(filament_load_time->values.size()); - for (size_t i = 0; i < filament_load_time->values.size(); ++i) { - m_time_processor.filament_load_times[i] = static_cast(filament_load_time->values[i]); - } - } - const ConfigOptionFloats* filament_unload_time = config.option("filament_unload_time"); - if (filament_unload_time != nullptr) { - m_time_processor.filament_unload_times.resize(filament_unload_time->values.size()); - for (size_t i = 0; i < filament_unload_time->values.size(); ++i) { - m_time_processor.filament_unload_times[i] = static_cast(filament_unload_time->values[i]); - } - } - } if (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfKlipper) { const ConfigOptionFloats* machine_max_acceleration_x = config.option("machine_max_acceleration_x"); @@ -4373,6 +4343,7 @@ void GCodeProcessor::process_T(const std::string_view command) float extra_time = get_filament_unload_time(static_cast(m_last_extruder_id)); m_time_processor.extruder_unloaded = false; extra_time += get_filament_load_time(static_cast(m_extruder_id)); + extra_time += m_time_processor.machine_tool_change_time; simulate_st_synchronize(extra_time); } @@ -5277,32 +5248,14 @@ void GCodeProcessor::set_travel_acceleration(PrintEstimatedStatistics::ETimeMode float GCodeProcessor::get_filament_load_time(size_t extruder_id) { - if (s_IsBBLPrinter) { - // BBL printers - // BBS: change load time to machine config and all extruder has same value - return m_time_processor.extruder_unloaded ? 0.0f : m_time_processor.filament_load_times[0]; - } else { - // non-BBL printers - return (m_time_processor.filament_load_times.empty() || m_time_processor.extruder_unloaded) ? - 0.0f : - ((extruder_id < m_time_processor.filament_load_times.size()) ? m_time_processor.filament_load_times[extruder_id] : - m_time_processor.filament_load_times.front()); - } + //BBS: change load time to machine config and all extruder has same value + return m_time_processor.extruder_unloaded ? 0.0f : m_time_processor.filament_load_times; } float GCodeProcessor::get_filament_unload_time(size_t extruder_id) { - if (s_IsBBLPrinter) { - // BBL printers - // BBS: change unload time to machine config and all extruder has same value - return m_time_processor.extruder_unloaded ? 0.0f : m_time_processor.filament_unload_times[0]; - } else { - // non-BBL printers - return (m_time_processor.filament_unload_times.empty() || m_time_processor.extruder_unloaded) ? - 0.0f : - ((extruder_id < m_time_processor.filament_unload_times.size()) ? m_time_processor.filament_unload_times[extruder_id] : - m_time_processor.filament_unload_times.front()); - } + //BBS: change unload time to machine config and all extruder has same value + return m_time_processor.extruder_unloaded ? 0.0f : m_time_processor.filament_unload_times; } //BBS diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 976f4541c5..da47cea688 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -492,8 +492,10 @@ class Print; bool machine_envelope_processing_enabled; MachineEnvelopeConfig machine_limits; // Additional load / unload times for a filament exchange sequence. - std::vector filament_load_times; - std::vector filament_unload_times; + float filament_load_times; + float filament_unload_times; + //Orca: time for tool change + float machine_tool_change_time; bool disable_m73; std::array(PrintEstimatedStatistics::ETimeMode::Count)> machines; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index dcbe87b9e9..9c4d533e6e 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -841,8 +841,8 @@ static std::vector s_Preset_filament_options { "nozzle_temperature_range_low", "nozzle_temperature_range_high", //SoftFever "enable_pressure_advance", "pressure_advance","adaptive_pressure_advance","adaptive_pressure_advance_model","adaptive_pressure_advance_overhangs", "adaptive_pressure_advance_bridges","chamber_temperature", "filament_shrink", "support_material_interface_fan_speed", "filament_notes" /*,"filament_seam_gap"*/, - "filament_loading_speed", "filament_loading_speed_start", "filament_load_time", - "filament_unloading_speed", "filament_unloading_speed_start", "filament_unload_time", "filament_toolchange_delay", "filament_cooling_moves", "filament_stamping_loading_speed", "filament_stamping_distance", + "filament_loading_speed", "filament_loading_speed_start", + "filament_unloading_speed", "filament_unloading_speed_start", "filament_toolchange_delay", "filament_cooling_moves", "filament_stamping_loading_speed", "filament_stamping_distance", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_multitool_ramming", "filament_multitool_ramming_volume", "filament_multitool_ramming_flow", "activate_chamber_temp_control", "filament_long_retractions_when_cut","filament_retraction_distances_when_cut", "idle_temperature" @@ -865,11 +865,9 @@ static std::vector s_Preset_printer_options { "nozzle_height", "default_print_profile", "inherits", "silent_mode", - // BBS - "scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time","time_cost", "machine_pause_gcode", "template_custom_gcode", + "scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "machine_tool_change_time", "time_cost", "machine_pause_gcode", "template_custom_gcode", "nozzle_type", "nozzle_hrc","auxiliary_fan", "nozzle_volume","upward_compatible_machine", "z_hop_types", "travel_slope", "retract_lift_enforce","support_chamber_temp_control","support_air_filtration","printer_structure", "best_object_pos","head_wrap_detect_zone", - //SoftFever "host_type", "print_host", "printhost_apikey", "bbl_use_printhost", "print_host_webui", "printhost_cafile","printhost_port","printhost_authorization_type", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 089ca62c20..773966804f 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1822,7 +1822,7 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_load_filament_time", coFloat); def->label = L("Filament load time"); - def->tooltip = L("Time to load new filament when switch filament. For statistics only"); + def->tooltip = L("Time to load new filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only"); def->sidetext = L("s"); def->min = 0; def->mode = comAdvanced; @@ -1830,12 +1830,21 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_unload_filament_time", coFloat); def->label = L("Filament unload time"); - def->tooltip = L("Time to unload old filament when switch filament. For statistics only"); + def->tooltip = L("Time to unload old filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only"); def->sidetext = L("s"); def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0.0)); + def = this->add("machine_tool_change_time", coFloat); + def->label = L("Tool change time"); + def->tooltip = L("Time taken to switch tools. It's usually applicable for tool changers or multi-tool machines. For single-extruder multi-material machines, it's typically 0. For statistics only"); + def->sidetext = L("s"); + def->min = 0; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat { 0. }); + + def = this->add("filament_diameter", coFloats); def->label = L("Diameter"); def->tooltip = L("Filament diameter is used to calculate extrusion in gcode, so it's important and should be accurate"); @@ -1982,14 +1991,6 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 3.4 }); - def = this->add("filament_load_time", coFloats); - def->label = L("Filament load time"); - def->tooltip = L("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."); - def->sidetext = L("s"); - def->min = 0; - def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloats { 0. }); - def = this->add("filament_ramming_parameters", coStrings); def->label = L("Ramming parameters"); def->tooltip = L("This string is edited by RammingDialog and contains ramming specific parameters."); @@ -1997,14 +1998,6 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionStrings { "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" }); - def = this->add("filament_unload_time", coFloats); - def->label = L("Filament unload time"); - def->tooltip = L("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."); - def->sidetext = L("s"); - def->min = 0; - def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloats { 0. }); - def = this->add("filament_multitool_ramming", coBools); def->label = L("Enable ramming for multitool setups"); def->tooltip = L("Perform ramming when using multitool printer (i.e. when the 'Single Extruder Multimaterial' in Printer Settings is unchecked). " @@ -6146,7 +6139,7 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va "z_hop_type", "z_lift_type", "bed_temperature_difference","long_retraction_when_cut", "retraction_distance_when_cut", "extruder_type", - "internal_bridge_support_thickness","extruder_clearance_max_radius", "top_area_threshold", "reduce_wall_solid_infill" + "internal_bridge_support_thickness","extruder_clearance_max_radius", "top_area_threshold", "reduce_wall_solid_infill","filament_load_time","filament_unload_time" }; if (ignore.find(opt_key) != ignore.end()) { diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 000559b765..015befbd9f 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1119,15 +1119,13 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, parking_pos_retraction)) ((ConfigOptionFloat, extra_loading_move)) ((ConfigOptionFloat, machine_load_filament_time)) + ((ConfigOptionFloat, machine_tool_change_time)) ((ConfigOptionFloat, machine_unload_filament_time)) ((ConfigOptionFloats, filament_loading_speed)) ((ConfigOptionFloats, filament_loading_speed_start)) - ((ConfigOptionFloats, filament_load_time)) ((ConfigOptionFloats, filament_unloading_speed)) ((ConfigOptionFloats, filament_unloading_speed_start)) ((ConfigOptionFloats, filament_toolchange_delay)) - // Orca todo: consolidate with machine_load_filament_time - ((ConfigOptionFloats, filament_unload_time)) ((ConfigOptionInts, filament_cooling_moves)) ((ConfigOptionFloats, filament_cooling_initial_speed)) ((ConfigOptionFloats, filament_minimal_purge_on_wipe_tower)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 3bcb4eda28..4672bc8aa6 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3437,8 +3437,6 @@ void TabFilament::build() optgroup->append_single_option_line("filament_loading_speed", "semm"); optgroup->append_single_option_line("filament_unloading_speed_start", "semm"); optgroup->append_single_option_line("filament_unloading_speed", "semm"); - optgroup->append_single_option_line("filament_load_time", "semm"); - optgroup->append_single_option_line("filament_unload_time", "semm"); optgroup->append_single_option_line("filament_toolchange_delay", "semm"); optgroup->append_single_option_line("filament_cooling_moves", "semm"); optgroup->append_single_option_line("filament_cooling_initial_speed", "semm"); @@ -3581,10 +3579,9 @@ void TabFilament::toggle_options() if (m_active_page->title() == L("Multimaterial")) { // Orca: hide specific settings for BBL printers - for (auto el : - {"filament_minimal_purge_on_wipe_tower", "filament_loading_speed_start", "filament_loading_speed", - "filament_unloading_speed_start", "filament_unloading_speed", "filament_load_time", "filament_unload_time", - "filament_toolchange_delay", "filament_cooling_moves", "filament_cooling_initial_speed", "filament_cooling_final_speed"}) + for (auto el : {"filament_minimal_purge_on_wipe_tower", "filament_loading_speed_start", "filament_loading_speed", + "filament_unloading_speed_start", "filament_unloading_speed", "filament_toolchange_delay", "filament_cooling_moves", + "filament_cooling_initial_speed", "filament_cooling_final_speed"}) toggle_option(el, !is_BBL_printer); } } @@ -3741,8 +3738,6 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("use_relative_e_distances"); optgroup->append_single_option_line("use_firmware_retraction"); // optgroup->append_single_option_line("spaghetti_detector"); - optgroup->append_single_option_line("machine_load_filament_time"); - optgroup->append_single_option_line("machine_unload_filament_time"); optgroup->append_single_option_line("time_cost"); optgroup = page->new_optgroup(L("Cooling Fan"), "param_cooling_fan"); @@ -4197,6 +4192,11 @@ if (is_marlin_flavor) optgroup->append_single_option_line("parking_pos_retraction", "semm"); optgroup->append_single_option_line("extra_loading_move", "semm"); optgroup->append_single_option_line("high_current_on_filament_swap", "semm"); + + optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); + optgroup->append_single_option_line("machine_load_filament_time"); + optgroup->append_single_option_line("machine_unload_filament_time"); + optgroup->append_single_option_line("machine_tool_change_time"); m_pages.insert(m_pages.end() - n_after_single_extruder_MM, page); } @@ -4443,9 +4443,8 @@ void TabPrinter::toggle_options() if (m_active_page->title() == L("Basic information")) { // SoftFever: hide BBL specific settings - for (auto el : - {"scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "bbl_calib_mark_logo", "bbl_use_printhost"}) - toggle_line(el, is_BBL_printer); + for (auto el : {"scan_first_layer", "bbl_calib_mark_logo", "bbl_use_printhost"}) + toggle_line(el, is_BBL_printer); // SoftFever: hide non-BBL settings for (auto el : {"use_firmware_retraction", "use_relative_e_distances", "support_multi_bed_types", "pellet_modded_printer"}) From 55b4808c9a700fcf80dbfd99fb4796b2a485003e Mon Sep 17 00:00:00 2001 From: Cyril Guislain Date: Sun, 11 Aug 2024 16:59:59 +0200 Subject: [PATCH 112/151] Improved FLSUN S1 and T1 configurations (#6349) --- resources/profiles/FLSun.json | 532 ++++++++++-------- resources/profiles/FLSun/FLSun S1_cover.png | Bin 223355 -> 44763 bytes resources/profiles/FLSun/FLSun T1_cover.png | Bin 133582 -> 72946 bytes .../FLSun/FLSun_S1_buildplate_texture.png | Bin 0 -> 240636 bytes .../FLSun/FLSun_T1_buildplate_texture.png | Bin 0 -> 110134 bytes .../filament/FLSun Generic PLA-HS-S1.json | 24 - .../filament/FLSun Generic PLA-HS-T1.json | 21 - .../profiles/FLSun/filament/FLSun S1 ABS.json | 34 ++ .../profiles/FLSun/filament/FLSun S1 ASA.json | 34 ++ .../FLSun/filament/FLSun S1 PETG.json | 32 ++ .../FLSun/filament/FLSun S1 PLA Generic.json | 30 + .../filament/FLSun S1 PLA High Speed.json | 29 + .../FLSun/filament/FLSun S1 PLA Silk.json | 30 + .../profiles/FLSun/filament/FLSun S1 TPU.json | 35 ++ .../profiles/FLSun/filament/FLSun T1 ABS.json | 34 ++ .../profiles/FLSun/filament/FLSun T1 ASA.json | 34 ++ .../FLSun/filament/FLSun T1 PETG.json | 32 ++ .../FLSun/filament/FLSun T1 PLA Generic.json | 30 + .../filament/FLSun T1 PLA High Speed.json | 29 + .../FLSun/filament/FLSun T1 PLA Silk.json | 30 + .../profiles/FLSun/filament/FLSun T1 TPU.json | 35 ++ .../FLSun/flsun_T1_buildplate_model.stl | Bin 426484 -> 1422684 bytes .../FLSun/flsun_T1_buildplate_texture.svg | 1 - .../FLSun/flsun_s1_buildplate_model.stl | Bin 426484 -> 1422684 bytes .../FLSun/flsun_s1_buildplate_texture.svg | 1 - .../FLSun/machine/FLSun S1 0.4 nozzle.json | 276 +++++---- .../profiles/FLSun/machine/FLSun S1.json | 20 +- .../FLSun/machine/FLSun T1 0.4 nozzle.json | 86 ++- .../profiles/FLSun/machine/FLSun T1.json | 20 +- .../FLSun/process/0.12mm Fine @FLSun S1.json | 69 +++ .../FLSun/process/0.12mm Fine @FLSun T1.json | 69 +++ .../process/0.16mm Optimal @FLSun S1.json | 69 +++ .../process/0.16mm Optimal @FLSun T1.json | 69 +++ .../process/0.20mm Standard @FLSun S1.json | 62 +- .../process/0.20mm Standard @FLSun T1.json | 70 ++- .../FLSun/process/0.24mm Draft @FLSun S1.json | 65 +++ .../FLSun/process/0.24mm Draft @FLSun T1.json | 65 +++ .../process/0.30mm Extra Draft @FLSun S1.json | 67 +++ .../process/0.30mm Extra Draft @FLSun T1.json | 67 +++ 39 files changed, 1673 insertions(+), 428 deletions(-) create mode 100644 resources/profiles/FLSun/FLSun_S1_buildplate_texture.png create mode 100644 resources/profiles/FLSun/FLSun_T1_buildplate_texture.png delete mode 100644 resources/profiles/FLSun/filament/FLSun Generic PLA-HS-S1.json delete mode 100644 resources/profiles/FLSun/filament/FLSun Generic PLA-HS-T1.json create mode 100644 resources/profiles/FLSun/filament/FLSun S1 ABS.json create mode 100644 resources/profiles/FLSun/filament/FLSun S1 ASA.json create mode 100644 resources/profiles/FLSun/filament/FLSun S1 PETG.json create mode 100644 resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json create mode 100644 resources/profiles/FLSun/filament/FLSun S1 PLA High Speed.json create mode 100644 resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json create mode 100644 resources/profiles/FLSun/filament/FLSun S1 TPU.json create mode 100644 resources/profiles/FLSun/filament/FLSun T1 ABS.json create mode 100644 resources/profiles/FLSun/filament/FLSun T1 ASA.json create mode 100644 resources/profiles/FLSun/filament/FLSun T1 PETG.json create mode 100644 resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json create mode 100644 resources/profiles/FLSun/filament/FLSun T1 PLA High Speed.json create mode 100644 resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json create mode 100644 resources/profiles/FLSun/filament/FLSun T1 TPU.json delete mode 100644 resources/profiles/FLSun/flsun_T1_buildplate_texture.svg delete mode 100644 resources/profiles/FLSun/flsun_s1_buildplate_texture.svg create mode 100644 resources/profiles/FLSun/process/0.12mm Fine @FLSun S1.json create mode 100644 resources/profiles/FLSun/process/0.12mm Fine @FLSun T1.json create mode 100644 resources/profiles/FLSun/process/0.16mm Optimal @FLSun S1.json create mode 100644 resources/profiles/FLSun/process/0.16mm Optimal @FLSun T1.json create mode 100644 resources/profiles/FLSun/process/0.24mm Draft @FLSun S1.json create mode 100644 resources/profiles/FLSun/process/0.24mm Draft @FLSun T1.json create mode 100644 resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun S1.json create mode 100644 resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun T1.json diff --git a/resources/profiles/FLSun.json b/resources/profiles/FLSun.json index 7b658ca355..851f1a0c2e 100644 --- a/resources/profiles/FLSun.json +++ b/resources/profiles/FLSun.json @@ -1,226 +1,306 @@ -{ - "name": "FLSun", - "version": "02.01.01.00", - "force_update": "0", - "description": "FLSun configurations", - "machine_model_list": [ - { - "name": "FLSun Q5", - "sub_path": "machine/FLSun Q5.json" - }, - { - "name": "FLSun QQ-S Pro", - "sub_path": "machine/FLSun QQ-S Pro.json" - }, - { - "name": "FLSun Super Racer (SR)", - "sub_path": "machine/FLSun SR.json" - }, - { - "name": "FLSun V400", - "sub_path": "machine/FLSun V400.json" - }, - { - "name": "FLSun S1", - "sub_path": "machine/FLSun S1.json" - }, - { - "name": "FLSun T1", - "sub_path": "machine/FLSun T1.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - }, - { - "name": "0.08mm Fine @FLSun Q5", - "sub_path": "process/0.08mm Fine @FLSun Q5.json" - }, - { - "name": "0.08mm Fine @FLSun QQSPro", - "sub_path": "process/0.08mm Fine @FLSun QQSPro.json" - }, - { - "name": "0.08mm Fine @FLSun SR", - "sub_path": "process/0.08mm Fine @FLSun SR.json" - }, - { - "name": "0.16mm Optimal @FLSun Q5", - "sub_path": "process/0.16mm Optimal @FLSun Q5.json" - }, - { - "name": "0.16mm Optimal @FLSun QQSPro", - "sub_path": "process/0.16mm Optimal @FLSun QQSPro.json" - }, - { - "name": "0.16mm Optimal @FLSun SR", - "sub_path": "process/0.16mm Optimal @FLSun SR.json" - }, - { - "name": "0.20mm Standard @FLSun Q5", - "sub_path": "process/0.20mm Standard @FLSun Q5.json" - }, - { - "name": "0.20mm Standard @FLSun QQSPro", - "sub_path": "process/0.20mm Standard @FLSun QQSPro.json" - }, - { - "name": "0.20mm Standard @FLSun SR", - "sub_path": "process/0.20mm Standard @FLSun SR.json" - }, - { - "name": "0.20mm Standard @FLSun V400", - "sub_path": "process/0.20mm Standard @FLSun V400.json" - }, - { - "name": "0.20mm Standard @FLSun S1", - "sub_path": "process/0.20mm Standard @FLSun S1.json" - }, - { - "name": "0.20mm Standard @FLSun T1", - "sub_path": "process/0.20mm Standard @FLSun T1.json" - }, - { - "name": "0.24mm Draft @FLSun Q5", - "sub_path": "process/0.24mm Draft @FLSun Q5.json" - }, - { - "name": "0.24mm Draft @FLSun QQSPro", - "sub_path": "process/0.24mm Draft @FLSun QQSPro.json" - }, - { - "name": "0.24mm Draft @FLSun SR", - "sub_path": "process/0.24mm Draft @FLSun SR.json" - }, - { - "name": "0.30mm Extra Draft @FLSun Q5", - "sub_path": "process/0.30mm Extra Draft @FLSun Q5.json" - }, - { - "name": "0.30mm Extra Draft @FLSun QQSPro", - "sub_path": "process/0.30mm Extra Draft @FLSun QQSPro.json" - }, - { - "name": "0.30mm Extra Draft @FLSun SR", - "sub_path": "process/0.30mm Extra Draft @FLSun SR.json" - } - ], - "filament_list": [ - { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" - }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_abs", - "sub_path": "filament/fdm_filament_abs.json" - }, - { - "name": "fdm_filament_pc", - "sub_path": "filament/fdm_filament_pc.json" - }, - { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" - }, - { - "name": "fdm_filament_pva", - "sub_path": "filament/fdm_filament_pva.json" - }, - { - "name": "fdm_filament_pa", - "sub_path": "filament/fdm_filament_pa.json" - }, - { - "name": "FLSun Generic PLA", - "sub_path": "filament/FLSun Generic PLA.json" - }, - { - "name": "FLSun Generic PLA-CF", - "sub_path": "filament/FLSun Generic PLA-CF.json" - }, - { - "name": "FLSun Generic PETG", - "sub_path": "filament/FLSun Generic PETG.json" - }, - { - "name": "FLSun Generic ABS", - "sub_path": "filament/FLSun Generic ABS.json" - }, - { - "name": "FLSun Generic TPU", - "sub_path": "filament/FLSun Generic TPU.json" - }, - { - "name": "FLSun Generic ASA", - "sub_path": "filament/FLSun Generic ASA.json" - }, - { - "name": "FLSun Generic PC", - "sub_path": "filament/FLSun Generic PC.json" - }, - { - "name": "FLSun Generic PVA", - "sub_path": "filament/FLSun Generic PVA.json" - }, - { - "name": "FLSun Generic PA", - "sub_path": "filament/FLSun Generic PA.json" - }, - { - "name": "FLSun Generic PA-CF", - "sub_path": "filament/FLSun Generic PA-CF.json" - }, - { - "name": "FLSun Generic PLA-HS-S1", - "sub_path": "filament/FLSun Generic PLA-HS-S1.json" - }, - { - "name": "FLSun Generic PLA-HS-T1", - "sub_path": "filament/FLSun Generic PLA-HS-T1.json" - } - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - }, - { - "name": "FLSun Q5 0.4 nozzle", - "sub_path": "machine/FLSun Q5 0.4 nozzle.json" - }, - { - "name": "FLSun QQ-S Pro 0.4 nozzle", - "sub_path": "machine/FLSun QQ-S Pro 0.4 nozzle.json" - }, - { - "name": "FLSun Super Racer 0.4 nozzle", - "sub_path": "machine/FLSun SR 0.4 nozzle.json" - }, - { - "name": "FLSun V400 0.4 nozzle", - "sub_path": "machine/FLSun V400 0.4 nozzle.json" - }, - { - "name": "FLSun T1 0.4 nozzle", - "sub_path": "machine/FLSun T1 0.4 nozzle.json" - }, - { - "name": "FLSun S1 0.4 nozzle", - "sub_path": "machine/FLSun S1 0.4 nozzle.json" - } - ] -} \ No newline at end of file +{ + "name": "FLSun", + "version": "02.01.01.00", + "force_update": "0", + "description": "FLSun configurations", + "machine_model_list": [ + { + "name": "FLSun Q5", + "sub_path": "machine/FLSun Q5.json" + }, + { + "name": "FLSun QQ-S Pro", + "sub_path": "machine/FLSun QQ-S Pro.json" + }, + { + "name": "FLSun Super Racer (SR)", + "sub_path": "machine/FLSun SR.json" + }, + { + "name": "FLSun V400", + "sub_path": "machine/FLSun V400.json" + }, + { + "name": "FLSun T1", + "sub_path": "machine/FLSun T1.json" + }, + { + "name": "FLSun S1", + "sub_path": "machine/FLSun S1.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "0.08mm Fine @FLSun Q5", + "sub_path": "process/0.08mm Fine @FLSun Q5.json" + }, + { + "name": "0.08mm Fine @FLSun QQSPro", + "sub_path": "process/0.08mm Fine @FLSun QQSPro.json" + }, + { + "name": "0.08mm Fine @FLSun SR", + "sub_path": "process/0.08mm Fine @FLSun SR.json" + }, + { + "name": "0.12mm Fine @FLSun T1", + "sub_path": "process/0.12mm Fine @FLSun T1.json" + }, + { + "name": "0.12mm Fine @FLSun S1", + "sub_path": "process/0.12mm Fine @FLSun S1.json" + }, + { + "name": "0.16mm Optimal @FLSun Q5", + "sub_path": "process/0.16mm Optimal @FLSun Q5.json" + }, + { + "name": "0.16mm Optimal @FLSun QQSPro", + "sub_path": "process/0.16mm Optimal @FLSun QQSPro.json" + }, + { + "name": "0.16mm Optimal @FLSun SR", + "sub_path": "process/0.16mm Optimal @FLSun SR.json" + }, + { + "name": "0.16mm Optimal @FLSun T1", + "sub_path": "process/0.16mm Optimal @FLSun T1.json" + }, + { + "name": "0.16mm Optimal @FLSun S1", + "sub_path": "process/0.16mm Optimal @FLSun S1.json" + }, + { + "name": "0.20mm Standard @FLSun Q5", + "sub_path": "process/0.20mm Standard @FLSun Q5.json" + }, + { + "name": "0.20mm Standard @FLSun QQSPro", + "sub_path": "process/0.20mm Standard @FLSun QQSPro.json" + }, + { + "name": "0.20mm Standard @FLSun SR", + "sub_path": "process/0.20mm Standard @FLSun SR.json" + }, + { + "name": "0.20mm Standard @FLSun V400", + "sub_path": "process/0.20mm Standard @FLSun V400.json" + }, + { + "name": "0.20mm Standard @FLSun T1", + "sub_path": "process/0.20mm Standard @FLSun T1.json" + }, + { + "name": "0.20mm Standard @FLSun S1", + "sub_path": "process/0.20mm Standard @FLSun S1.json" + }, + { + "name": "0.24mm Draft @FLSun Q5", + "sub_path": "process/0.24mm Draft @FLSun Q5.json" + }, + { + "name": "0.24mm Draft @FLSun QQSPro", + "sub_path": "process/0.24mm Draft @FLSun QQSPro.json" + }, + { + "name": "0.24mm Draft @FLSun SR", + "sub_path": "process/0.24mm Draft @FLSun SR.json" + }, + { + "name": "0.24mm Draft @FLSun T1", + "sub_path": "process/0.24mm Draft @FLSun T1.json" + }, + { + "name": "0.24mm Draft @FLSun S1", + "sub_path": "process/0.24mm Draft @FLSun S1.json" + }, + { + "name": "0.30mm Extra Draft @FLSun Q5", + "sub_path": "process/0.30mm Extra Draft @FLSun Q5.json" + }, + { + "name": "0.30mm Extra Draft @FLSun QQSPro", + "sub_path": "process/0.30mm Extra Draft @FLSun QQSPro.json" + }, + { + "name": "0.30mm Extra Draft @FLSun SR", + "sub_path": "process/0.30mm Extra Draft @FLSun SR.json" + }, + { + "name": "0.30mm Extra Draft @FLSun T1", + "sub_path": "process/0.30mm Extra Draft @FLSun T1.json" + }, + { + "name": "0.30mm Extra Draft @FLSun S1", + "sub_path": "process/0.30mm Extra Draft @FLSun S1.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, + { + "name": "FLSun Generic PLA", + "sub_path": "filament/FLSun Generic PLA.json" + }, + { + "name": "FLSun Generic PLA-CF", + "sub_path": "filament/FLSun Generic PLA-CF.json" + }, + { + "name": "FLSun Generic PETG", + "sub_path": "filament/FLSun Generic PETG.json" + }, + { + "name": "FLSun Generic ABS", + "sub_path": "filament/FLSun Generic ABS.json" + }, + { + "name": "FLSun Generic TPU", + "sub_path": "filament/FLSun Generic TPU.json" + }, + { + "name": "FLSun Generic ASA", + "sub_path": "filament/FLSun Generic ASA.json" + }, + { + "name": "FLSun Generic PC", + "sub_path": "filament/FLSun Generic PC.json" + }, + { + "name": "FLSun Generic PVA", + "sub_path": "filament/FLSun Generic PVA.json" + }, + { + "name": "FLSun Generic PA", + "sub_path": "filament/FLSun Generic PA.json" + }, + { + "name": "FLSun Generic PA-CF", + "sub_path": "filament/FLSun Generic PA-CF.json" + }, + { + "name": "FLSun T1 PLA High Speed", + "sub_path": "filament/FLSun T1 PLA High Speed.json" + }, + { + "name": "FLSun S1 PLA High Speed", + "sub_path": "filament/FLSun S1 PLA High Speed.json" + }, + { + "name": "FLSun T1 PLA Silk", + "sub_path": "filament/FLSun T1 PLA Silk.json" + }, + { + "name": "FLSun S1 PLA Silk", + "sub_path": "filament/FLSun S1 PLA Silk.json" + }, + { + "name": "FLSun T1 PLA Generic", + "sub_path": "filament/FLSun T1 PLA Generic.json" + }, + { + "name": "FLSun S1 PLA Generic", + "sub_path": "filament/FLSun S1 PLA Generic.json" + }, + { + "name": "FLSun T1 PETG", + "sub_path": "filament/FLSun T1 PETG.json" + }, + { + "name": "FLSun S1 PETG", + "sub_path": "filament/FLSun S1 PETG.json" + }, + { + "name": "FLSun T1 ASA", + "sub_path": "filament/FLSun T1 ASA.json" + }, + { + "name": "FLSun S1 ASA", + "sub_path": "filament/FLSun S1 ASA.json" + }, + { + "name": "FLSun T1 TPU", + "sub_path": "filament/FLSun T1 TPU.json" + }, + { + "name": "FLSun S1 TPU", + "sub_path": "filament/FLSun S1 TPU.json" + }, + { + "name": "FLSun T1 ABS", + "sub_path": "filament/FLSun T1 ABS.json" + }, + { + "name": "FLSun S1 ABS", + "sub_path": "filament/FLSun S1 ABS.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "FLSun Q5 0.4 nozzle", + "sub_path": "machine/FLSun Q5 0.4 nozzle.json" + }, + { + "name": "FLSun QQ-S Pro 0.4 nozzle", + "sub_path": "machine/FLSun QQ-S Pro 0.4 nozzle.json" + }, + { + "name": "FLSun Super Racer 0.4 nozzle", + "sub_path": "machine/FLSun SR 0.4 nozzle.json" + }, + { + "name": "FLSun V400 0.4 nozzle", + "sub_path": "machine/FLSun V400 0.4 nozzle.json" + }, + { + "name": "FLSun T1 0.4 nozzle", + "sub_path": "machine/FLSun T1 0.4 nozzle.json" + }, + { + "name": "FLSun S1 0.4 nozzle", + "sub_path": "machine/FLSun S1 0.4 nozzle.json" + } + ] +} diff --git a/resources/profiles/FLSun/FLSun S1_cover.png b/resources/profiles/FLSun/FLSun S1_cover.png index d5c49294bb201fa621dca104c8c96264a1de7877..a1e43c2a502c1d32f6691397d2621cdd6bb0566c 100644 GIT binary patch literal 44763 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

lJoK%^f`(jb>jF3zdt&2>nvDEvp~ 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%0A5F^wSYZwF))=)x2 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 diff --git a/resources/profiles/FLSun/FLSun T1_cover.png b/resources/profiles/FLSun/FLSun T1_cover.png index 5ee7fb0f129efeb5cc63b4200d05ecfd13263e2b..37435793c068a4e5d9cd2eef7db27422a3fc8cf4 100644 GIT binary patch literal 72946 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

%#SwX8}^7B-XP)Omm!N|YwKd+rg*^=W&7s3vL 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 F{{yXIsYU<* literal 133582 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 RlFMY^gVMaIQLE+<@jrjjQq}+f diff --git a/resources/profiles/FLSun/FLSun_S1_buildplate_texture.png b/resources/profiles/FLSun/FLSun_S1_buildplate_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..81f375fce90c477ea977bd193bb8ce850a34e221 GIT binary patch literal 240636 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

    dTgPc;v?ll&g-4J$b{` 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%0D;{5Jkpt!zIupEyTrq%_Q#8A6Okf@hpq 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
  1. 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⒩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

    tWoL2(;X8 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

    pJU?pM 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 literal 426484 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%0D?>1gnDQ zMhSmK=tS(E8-aO-H0O$HM}PcH_;Pn0Z?{SKGMG(UxJmf4y@~VlP=7bf?133owlI;Q z`Bvf2@K?gVs}0BdN9iGBTm-AK%-kycSsj~T_nebADrQ(-t#|NN;mcIV1p7m_p1&V! zDX==>cE8Trj3?WLFAHUcr7^;n>9k{!9m1c(wEDiB`oFlhPel$>wlGotWQ-{NqL9jA zx*3F%^)$tLH^Hj2t#$~1*3%MgD(H{#9cTZAjT&2+X!kBgOw3hSNR^3+{a$I8z6SFGs5{;S{wsy&x)UQD_I=aEg{Sm<`@BSTP#=bI& zC_B58K4W#Lk^kgbjV(;{ENPFVq-v+)c1*=bt-7rDJ8Ro{~s7 z^p)=Hcm8z8RE_(&XYM^B&){I$&)hfo=5?@=z8t^KjT@}g*uq4f@Artii-N64`OX<} zppyOpeO^D*O|Xjl#-N_X4T{LEMsMo$35-XPf z7i29#A8@9vE*uup1MX{n(P)6&PY~3Lj8tTc=AIT%!1gp5+ux_bV zdwo1w_g{Ud#ug?X?uZpt3T0H;rf+~K2qJkkH^C}yH``u^-6(@F*Ozv|K8-C*j5-)A ze09;WKdMO&ym5sZzb$kVtm2l&FDG`2d=ZOmZ_}1)+&&eS#EFLWQp@(?Yr+?I?ECl= zzk@CNuG84U#ME7J!k=gRNkT_`A+G#fA2-1&z9!6F=MVN{JHL5HtDN7`NHFoFP#4_ z(*swU!e1+X5x#GpiVihaTPrlSFyZ#`Ilj973*x{0^IZh1mNfGUf35hk?bm2K@ynU@ zMB|XeMhAs2BmU9y3Bp&|q2KTX;jb|g_W4>#6xm%Oge^>jmOCW;6?K-bOrdYX@A<9V-?cHg%K`-Rf|x+(O+r& z(PwKlCue4_T_r;J-1|LE5WadW?9aAC7q8WhJ5MqrQiZUEiC+>934a}|nO~&TTVU2e zyWhk`u!_$RU-hHbYWMK%?&qVHm>IpN!s=v=93V$u^ zG}vcwAKyPBhI|>q7ADG7JuLhcZ`+mbs9(ihbYVX?!K$y{CklThrPIMU!)VM35@~mxqPF)^CP!BXy@<>cHQNhp>hJ?#o_>g}=h; zYYn z{i;Efv*b2F~Mh|;!XJ&fwnq=w(1$&bst|XpP_T*jlZf`Evc<~qOE>FTa7K% zbst-pVBh#^iP-%fgmJ2P922Zkv0H7h{N;QDVk4qG=y>rswlLwoj>g$X>U%-V&pyjV zuh^1KtYROtBKC`zD?2^C<=4KNr<3VhK-3Mfwf%Vk+cNa96 zU{!(kmOup;Pe=Lv<93=tx(=eQRncGz6CKXPi=4x*D`MG%>hcY8&5V{Vf>lpbc*XA< zuY1(FXf3JD&N*`@OI4ia~fM5#~xeCOKf7V>{jFvvO zolBV0mog^9jV@gly$bx$AJ=XcW<(i`HrmFRk)edfgRju-y zVt3b9Dz0{CsiuF9@3ng$OfcBOM808h;$rF4;#V10sWVs88{l2-4)#_v!K$AcnIdMz zD^C(3u$MY7=BexSnq#nq3H3xSp2>Urx7bTP3va?(KO$K5e5fhf|MAN6R1yvFq<<23 z>UKjT4Yn}hJdvMhms%W>zXmU|cF|+;#v(o@Nsz={yc>LhcY|Wq3WF_7 zIPVPJUa7?hdEfmN?*{+iNx#xZ1go5PhBE12dyMXuWH4L?x%ue zKXc!pR%1R*KZhPHh1>&dVM4w2sUFOeU(?fr82=H$D()M6=foRi4!l8ToVL_p3lr)+ zQT5=+Qcd*i=<|M4-2|(+Z?Iz>Z;(^5O7D7~bp~6QaNZNE7Rso4P{&*9LG*c0UpK)j z?i=jE!W*RXoS0tUY_Nq1^#&e5KTha74Q?MkLubaK(1~D?D96Vh5Jf?p1;G|3_-rwkv8aun zAH>vuye@)OYR*XG!y-n>D0zrEnK!7^^u@w`23wfm7P0LDQ@iRVBaw~d@L?ChDrb%? zOSi(x$4Jboty>#v90b7@Cb&gxTf^MzDG;4coOKbba%NI1A1kALcqE@PO4u{CP9U;n zDeEFwrM`=Z3DQRv&lUMKW777y2CLXd(C*cu=8{fgp!{`S`}(~0Bc1?yKVN9Dg^9tv zqD8~Ey~Q9&Y{sgcSy(wRXla6rVAYca(V|yKAJJX@p5MT#onJsqpMTt73ljqiM+vL% z5Ya;tqXy;EM`8|OLZxRef>k%_M~T$yhlnlm?(;p?)aF53waz09K6mb$uPR21(%X8= zzCk7BEfLx)%ziY=D-5}k!ZkQbIY%3uo<58f;j zsQ;mQaPF%#dI~&WU6^~^MX-un+O~WDbXr@AC>f9~%3u}y;Oj#Mfh|a8^j1@vTJ|b9k_(G&8aB++xR=23A zZ^Khx_0l;_wlLv*iG6cxqWE3@;`|IE8-AlIe?+j#`4W5m!x%->#~0qmSkEwTL|&6E zOsH?gVw}7uo&qrl`*D8%h+viaRxHL!qSW$adRO$|{XVx0?&qaJ^Tp$9lVz`Q-{4y+ zvX?t`$xdZVZL)<4^|fF1$L9mH>8sG^r!%+-R&n1T4`hWR`g^P#_$F0WlPyfB^#S6I z>_HoA4fdhWQ>Jzktm3{wjVi1hxRkWkz+?*(YJGq>E_*OLhz{uUpOK-P30866;HwN) z4$Q$?gOS$@nQURgSvg==ouYa$Ei$BU#k!1j9}%qL-n8vzSi_>BKMJ=+e>m$- zZkC!Zw#qy8Caht3gw{oE4wJ8zX|;+(weEz=`Spfa3HTjyth0p)w~sVfQ`8y6s}8wc z1gq3KAn{iAU~{Ztan^p^L=6INA3j58rOJ%<(^Y>&fQZDJqW=voXtIR~K3h}=27qIV!Rx+r$Icztl9(+Y+-`054-!ZCaMUCbl;b85v+37M$H&K zTlsiZw~U?xcb{{pbi@`W`1-Jq9&7Fjf*4h&yo+F!vx3eZFkkuj5o_)$qb|VzK(K`g zcU%2;wUAy2#F#u)Tm-AsT4ymqw$%=`=jY1i2t)1K5mWH2rdIZgr}#~DcG^t;utNU7 zZI4H_Hz!MT4iIc%Lao`CG}gDH+FJt<-(Q;KB3R|@&C%v8Q$GI2euGAMW*Gkbyum8= zp;lvy;qs|31$IGv2jZWqR}8i=;jG5b{r5UW#HighP1k&3GQlcm*G-?#*NeVMPkq?I zvjWeFiyCA!*}{a{C8&rzlh10Mu_7fqs#P+p*4#Jp-7#147)`2kf=dxFS^ikNI+ zqR)kz0{Pn&k*?YeZ2;am2cWtx6Rawb>^p({?c#&HmmF3*!)|n&ZgBf>|Et|2;+cHX zA6cxjwiG?Mrpt7LElfE3%90OSCnDsNe$9+!wPhfNeVFMYSfzHsi2tOID%cbE4~S&% zXBuo_LhX-JJ{JB_RC^2}<%l^hf>q9*zp3*#DIe)C6qR2TpN*blu!RY=&reL1*Kv2- zT&)3~6Z42GuD0S<;Qq&Y22_r$3F1)eYX)1GQ2W2c2pPMp)GpJVh$|*o#r<#F2h>j1 zW*0M?Y++*a`kG?H+f6DGcOb4l;CHYa;))4Yam3)c9Xs51VJA|}w$}{)yL=toPpAcP zGF*$t+-oXS-Q?C)du`>_x`}nzcefKh*3`P?>Om&hH}Z?3hUrB-k(D{0*<=-8hnx7b zVFs-oqNELKFkgLET1;_C-F#n)lGeUaGfeTYMZ zXJ6tXSXFyMkeGaCuXrv;)V=QSL#pG-?`2(Lu!V_|je|tog1uszjP{npAA~rSHjbQG z>LOUx%*mTT2T9arnh^ z7s0B&n}fudFJhIC*BfhTPIj@`@1GlNVS;q#XkBd)zA*!K!lqrV<@9#3>(T zCsoo)EJpN` zzvqiq&C`BB=HYsKbDC^nf};oD&$mp~T7if@_?3%bRmxGp0@an7~ypGIKebK zGCZ$~VAY4LsYUaeamq*MdjqsHIIB$~^O|g7f}_W_%eQT(od;1iUw#+Cs;>sU@_10V zE$KQ6cWI{`LjLx~h4PzhVS=Lvzk}=RNn-zR1zZHHy8LwAQ{z;;^3ic!J#7u5!jK9jr3UJ|on){iv6VV3m`<!OTbNLp zP{brj46DCVONLd&GY?iW`D(d!d2HJD-%$%SC*ymr)Ky&stHRy}iQHkasy{lcTBxl_ zhp&CjUEJY}H%@t8#CC<>^@;Uy@}c&IFML?;mE?Y9?El;IV1j{f_k4Ucg78YaSQDs;sfs zJ?HFrxqJG7Q`UWG43086B+xGoIk=is6-LiEt*}{aA9ca)@ zQ;os@A&1a(e8D>MLthucD))$5k32;l5GAMeH`&63%6O#4U>jWd|8V91E7ip0GvO=e zm_{aq?sK&AAbxMr)J3rB@ZYaImj{}vt%`z3gADw^AlSkL$24}V7Y)~Pf~efIxr<=c zAY`^$R?w?_G$l=e$flE&6HLY^6DsqUirp)1XKE2x-(D7H z#VS54js<*OLI$(dAZ8Wm;UZY2@|3CT$P8i+zJJ^-+{0uG6Wp`5J=UKe&PA|F<#ZFL z<*)M;5HsLo-JPB$TbSTjuAQ1L^1y9idPtbEGHe>c9@I$`hYsNua$wlLw2 zlHmJgv?d@Lp6%lzSfz3|Dj%h@hG}JxwJxO7AlF%`Om(u?xD9Q4bmlPa46?mV>^R8P zR!q42{EyC)v@IZJ%nEZ6tm0U(?M=`HbjEzZ%Hg@qN-pN!|0eL*TdWCpo`BzWKtI9mw*Aedq z$gOU&g^3y+cEuyNx+2o1PZx(8LT2fGbzKCj7Ej+5k1YRUxBPV;T>9a@d|2akvP=n+ zRqW$#iCyu?%q`E*wmlEfM!8=1az8 zT5GU{i65?a_O37M^AY?<5gP43BdvFXoxE+F%P4-=&Q54%81Q zAFr{-IVFfmOIEoER`pxF(|fk|e&wSI);K@ImEQxw7A9J?+vydb?pHoiU={9j5YNL` zx(HUiKXcSO>aJJ$sQsu(TsY=;XJt%j?rxgKi=5puemG+4y(;fTCTJB`??I@1$R=Bu z;ON0hz#LQJZeSMY`KlByf>kRAcky1?nxK3<%RVLUD9&ow$`mGBnBeHK?NT|{#2o?A zJ%^iMRrJ*2yJd`wcrFRU za|siyy8SH5i;ULlxx{<@dm{&kMR@jM3lr=5$9R!JSrO4+H#M^2nPC#18JJ*|swJeJ z87gK8Gn{9i@A2%z7A88LJLW}>Uqv+8bS^G4`uttRVkWmJ-zDCqituhukrXkuy=U{e zI1hd~-&HPVvV{pA|F+#|^oO|WAaZmm>LOT`dO?&InbK8Ur2*mORzKFcsL2*4c>LRT zov9g(nILBLEaDGDQDAP{Tn6?PG< z>Jxg*>!0hJu%nOjAo3CqNvl_nnJi)y^_8 zUjO{nnJFcV|KXXsS)K1pwlKlt2HBIos%|6)QTKHX7s09{V~=@}XI;&a-OF9w_#bA~ zvSU__EllvZ!F5b;X=DR&9y51Lu&T()>t6qSV)m&mjb(_$;+P#|3llsFkn=3Dza&ay z29gO@sakvLItm}@Z;ZoPO~ouHTbOWwscKKiZJjn~+h+8Q$~ z+~?dk9F@55#LS|Bxmcx#85Sm3<&O3`s3w>QqSW;MCR>W}dG!FX0c#*fVuqeAOmM5)_K&Fhx(7rX zd<9^FRZewR|ChMFAe=98-cu(RD|v3jg{Z%xTX1QQT-JCaS+u{-{adITbSTB#N7uz?jR3KwvT);&1Y-d#Za?2 z7<{m{cym4@Y6@fo^_WFXFML=}uCZh}?rE8miE*jNYRR76)ZsAFMk<9EBH5BBFK zwhhl~{Em5sJeTJgsqfaXP<27B>#16_rsZ3oR_U+G7OF0&^*)0K=QY-1_G9n4c?MgU z2oA1drEjuTtttBL-|Ui@lJyrC!K%(1OIxVApnSyl8)Ll1${O+ZuE8qyq3W%xwQ46% zh8rJ16!F|L*uuo1`VA~pT~Nf!0~?JSST&guYt@)w)uhP{EL2@kYtMRm0g|`+44?CR>>J`?Jm# zsxBxZ_RH6X7x(sAm#Vl3RyC^J*+SI?@m_v$kGb-R84sdcrHUq7n8?4pkCo?Av?3m! zO>36J7%cK%4Hv;G&FW*J>Vh~W=kzOHC~BNQT+JOb$KXET7%Tl*0}J&HRFoY1v#4OS3I3lrg~I$5Z1pjH)M z$R#9k3M-eHVAafxy)D!?P(GgK7KSsQxMfR(!4@W#w(o8ES4SWEBiz`8nWF#IyyfZ- zZa0o&)E{g#-G~FxwAD3(EliY1)6(*hbKjPW<#gj_`TC)>(}sk%E!az-3{l|b@|{dD?E0Z^05}gF`U(D5Nu(h z;V-kSMl+@gYH9Gq3vov{X6nBeF^{zROOL#(VB<04q~?e%%qo!H4@h-|B_Z{v+( zIID7K0k$yVj;q9+2}T7FY0=6|uqxg51(t6IFuw41IBWF7OlsaYsZ5SUjm$Q+5#TW*n;pG%2TbL-dV4{T@3O)jRcU$6@vzVUKMX>5+%tWh2%7tQ^{IlLwPO+whB6GHUdeyO;@ip#> z6aUI@vW1C)b*5X$b+3p8gA1C@-oA&WOSuSEwQW1ya_t{9eftO5!o=!+vn~Iw#$niR zml@wbCSa!?6RheyYPRLy4fv{dd2>04ci0Wc7A7wCn{WAdnI3z4#rPV(YPT<>Fu6s! z2YLJ>R~YsOmj-clc`_Hls$G9iwhn$aU-kK4eQz1(@#~x}I+@89CV2eY_O(q9jl&?G zN4_zbVAb_>(=F6c5WQq1&e{CXs0ZTck~aohnBeh`CmB5Lwgr(V{+Wwl)zL3!Tgcz9 zcC7z|@9nMeWH}NfTbSVSkF`;Y-WWfCn257uf>lxJ=3Bn~)tC{+75Bzjec1BQU<(sG znr%B_1-`n17&hRRi(u8XD+?_DUj0f@$;{dKN>-)!ErTsgxbF<#oljvd1abP!6&JxO zV^*Z)-`&4BD7D!JGxWybY_2Hb-sI7R`Sxb%%<&+?BQlw6VIrpFbPF{t)Hol3Q9B=d z^-p5dGQlbyUAA4OV{Y?D5Cb~pHrc|&`IfUSR76nwov(K(X70v!&I;X%xd>MA=)yW= z+z~c{h{9fEwlHz9<9rJ_`_=Ac6QkC`j@(F$S|(WK9<}+f=QSKe^&5puwlLAO`a%nt z>(y>@qiH&`6z-zqreretYPofJ+}QTg(O;P5Kr9^dg^OU-(vaDfe>ZuFAHOhjWkP;Y z{L2<5cof+7mydLnK+4Gni+`1KFDjp7AAPypsFr@%_f2PVrz02!Ky|(BQ1Ysiku)C zAg9xcEy+!`FyS6iCGY1l8-eK6qX*fhD-uy%KsmE6hzFTcy9icgx)5zytNJJ(rCU@qE2Coiv{E@;XC>}OTE4s} z+=jMYu4P4YHnK*Sne#j${j&@F11E3i_w`ae0%+|#2h z)W?wV!?DEvY`gtQ-7Ezn8hKdQ!UX%X?Zw-xnrU$5lP_g)5!{=fjft|Ry&EEq$$8Od zJF1$u@l_`6l`JM(nBacGbIILm<}DD(dS!4CteXBL+Paj`NBL+B;&ZI>{<&uclPyfR zd+_PA8fHEaCC{gI5v)q#S!3;O-&q`$*KuoCZPSdwI2T#X`yZmMeV6*k*5#Jw>%%hx z`Xdpd>3Ju|JjbM$(v+2xjEG<>i>H!%Zq;5#rg zvEfotdB;w-*kqv|i#(n+caw#BEaIV@FDZ+!F*`x*9GTZ(3lo_dZM9I3 zMG>Xn-8IJHE%i~@7#G2+FQ;s^GPbTF2FSP6OW_ZVa1ggX4KvunM7Ml9tONPWi2jlY zo|D7OgeTf>j+}#8{}VA~wi(&X$KNndd>YZ?w{23ljyt+hh4NE@o*FYC72v7aA)SFNlFn_Jp-gNRO9zixlCRp`kQ>^9B zXPN%|JYy!l8!R1?*WiBcmvyU!S~)UGxNq=_gYRjxK@5AA-Czq7bM9}q{(4wiJdkm< z>8FRrKj`!D)L|}yRopkYi(Y8!8^`H^f?o( z;=VzBwZmVTqd^SVIn`hb6a8}Ru~5xLWx5@gP|0*EFAiw9(nYX}`^L7@eOlGb10ooC zIoZNQh5oVD^8bQVp47V+8=5b%cj+hO^i|hvXLD1&yR@-f* z#dyqYa=YQ(x#B{@S$n>!Nd|*0OpI<9V;!DXNZgk_xb)Iv!>M>{_3G>*SjFvT+ZR50 zX7mFQ9o5ue3lq_|c3Z7#2df?&n(&ob8*h;FwoP>rtm1Zqk1e^)h9Fk17;mtJiFck@ z%a_B}wkxAQoII)Dqd%Bn6}L3jupm!{^Cd32Q3iwCr)0huYipZAVk}yhuL;@l%P%&Z z%#l6jq&C>XMAHqstq0kHRqGx}^~`WqU~gL0)J3q0ugSJ+zIkpqE3oTttYxr;iC;d8 zwHB=l68+@(_-ku!)A=?L9gX!%)b6a}RVhr8fB7MgQGa{hK-Em9sy* z*JfKHi9&te$FYTprGM_VhK>qSS3dgHbE7rJ`I6si8BDN>&(OB(A>W6yL*XQRoc?*Q z)v8{QJQF6^pKVtf9A)Ifb<}BdA@2I0`>f^hsl+`*^?;xESwZtti81KGJsS+mmmAx* zV+TbU-+~z1`a&FAnE17?VYMIsQsoQ({>gHq0*K_FA94|_GTX*m{+#54K$Hei83bFH z$eSzP^5-OPQ!mZM|iLR;kTfWTv*iDYzC=RhSWR{Cy)!Z=$ zEPn?6f*_on{eL<+`^mz@FChmkf0q9}vsX)EkQX`oiC|T}83(OS-YF`}|3K{A35AdM z*q6f=CVsDX&_Wd)mF0gdb_Y4c&XbK@1gpXZCRhV%bn)DhcTuh8TcawX{kAA>jQl*# z@?~J>sJwN@u>9HBhg5%SIQiQLB7ZwunBWM-uUh1LEV=1?V@dUPzl&g1zas~&lMkkNddWNWY3%hWgR>g-$$>bw zFu@UO+l{dU$sxMtUgIKIm1;|ZRc%@qPfzJ%bJi5*K%7;&9Bbm(!h}0^_bg9g4hNxS zo#G-`m8Z`k3zeFbkIV(~n}_gxRjqS7SG02+xBJSp{B;2)uP93T7r)_3C}R<*!h&Z)|mQ1ck)wIZ1xTQG) z--_m}2y+pvD!IwBBDWp${3~Za9vyBaiM?2r%N8bHesRF6*C9p`ZSVFpmt&sc_nqBc z1gk2RIAF~i8RI!9--O2w>us(EQTOKe23wd2>3Yz5`XS15KoV=PuXYV)ycU&e>LOUR zZs6>(hP_o}rR>zP5n*9iB3hudQcri*gV0 zJqB6Q(iSosfOv|kBuucXa7)Yb*D-mTrjY5>F`4bHXt0F|zGEOKdELUM2Sn#x1ziNI zn(f_ht<4bQ=^)<+Yh%Yt4V+ahs;jVt3BJeRyEAsx)C6$~`*N6I)#|4Qtc=l7p7zqm zranc?aOC$1o0ZXE3ln^gvF#7tikjm=Mfs=%;yMWLwsUc8VS?{5$iMTbn0XaMg*{tb z1gk!*JY)?N6+G=^Th+o2z4z$BY1pyH7AD+xpW7pgn<=obsO~QjE`n7{%O_gx=B4qp zl|DYheu=esS8G14r7IFS#&`r{t=gL!=5HX@VOIxRm{@vmzZF$AM%_zFCSqp-R;y>; z)51ltibt?*4-9D|iQd@z!xkov*FI?7xfA7iBJVy^ac5|cJ40LC8JJ)dk6=_@Jk!VQ z45IJ-G6q|iNH-+Gy4NwnvtQmz2KO0iu0oY#Z>~x%f>rK2L)O*9%mpBB-3&I^!o++0 zek|$I)iXriOHQG6FW_BmRG#VvUoE#Tk2Kr9Sob^gI*4o2O1KDCRmgYHT9Fv#Su1C8 zs({#o9{dsnTbSUHhTJ09-{q_XZ24yv7s0CaWfH8K-$Z!UNFQ%OOan0<1Y4Nkv1!}y zvFmImh?p1eUGSNAogWF=^|KF z;q)OZre6i+<1`o`|6mgFNGyXU^fF1kC|U&L|6{m+q) zDlyohR{_Kqy$Ts@VPa^D1S@Z7gy*pwgG(`@-u$t_IE)d+1gkjmQB^m2KQkG!O_x5J z)nE$~JzF2LIyda9#$aA#q)78isBzhN!33+^k@&w+ zBg{k)UzJRZV+#|%?@P4&wE@q+>1P)CYlCqu=w%$M_^dbG9R{3XH->pJlA@F z8H9aa)j+U?362HZ9uz;o%nsrrDo8THs!B}`TmCAQZOs8@xy$&@`DMX4wlLw2lHhD3 z&Fp(ZjaoTo#oa7;*h0-xS@)6qfLjE6$wrPa^MF`ZEYWr4OmIJ8k9+o!=5DNEIT7sk z!GD*p&$eHV8)-TMo&*tBYV2w}@?fUyL=AB}+E$ zWTLKYDKJI2u z@{!@}Zy`+hjvZBjk%?Al#eClS@;aDcOCaJ;c^%EFjB)xS+3UJbLYVL!JF3J@hpgPm zTX<_qA55?%5OGTS_&)P!>Ep+cFEu87$Bt_E`UJ~LnB?_HA55?%5OGraNWW^7^zl=% zsu~l%V@FlB_d#oX*A?Cn>4OQj1R_pIAEh6RkUrx6YO68fJ9bn%p6$1mo{9CAlRlVW zOCaKR>EqSCVbaIfO~-0X_>LXblrH_tP z21p-w?rqVS@Etpz%K0a@IRb#?; z?5L72-EQq#U*5_reK5h6K*T}mqgVM((#P#>k2NNI$Byckur1b+<-$rQeK5h6K*WCO zj+&Z0BnJ9bnbPOPy0S9E~&TKZsuErAGA`bhP@uJkeHT~3_|-?5{*yLqVMp2y! z-?5|8@6NXhcqdyAqz@+85{QVEK8}gX(nrRqQaTg9V@Fk~`fTf)P1BVRCfE{)Nb=Fu zQ%?HWeCS)93E#1!8aH^FwP@fR>xR4zCfE{)*dwpw^YmX!AB$tF=uG&I9o5LuldPBN ze^EY|U`rq($w&WHg{2QM!lN_cJ9bnH+K;zhj#_N}C9i`Cwge(}%j?k6=aoLbw7=7t z@Etp<$cn?Q#>O)1qV&N8TLKZgq>s}zzmz^o*ZW>)!guVbLVNYKPW%yVos~YAU`rq( zM*0}jIFs}-woN0Q3E#1!>e#%KrR`p0{ULoY!InV8PU&NGx%ARUt1``WCVa<^Dou*! z*66;!Dj!U+B@mJ1W86O}rH_|~TIo#qjvdvk0rjlW|8BI7$?IT(ErEy~@;c&DyfvKX z-Jf!|*O~AgJF40%b*pmqt=19gg9)|-BDPB(yRJQuK313StTW*|c2rTzzOmvu?od9M zU`rq($w$#qm!*$#>AUMp_>LV_+HQrdufE@9CCKYwf-QlFZSp!coH-_a{JyN0&V=vS zQDuDpr8Vi3y_O|?Fu|5U#8&Ae#q)jAN93cvIupKQN7bJ9aYLH_q@F>$6JPM zD<;?yh}a_A>Ur>V>7#Dtp*j=3V@I`T)Cuq27)$wJf-QlFBpLXb z;BR(%541R7?UmQT1X}_To8@(69MV+!XxL$-&V=vSQJsug>l`#f7F@q9XqPQpN;cYe43zqFu|5UM3RqvdxNBpr(H(tO!$r+Re>>ez1Qy^Qa+eq zOCTc2N0Tyt$2qaPZp0X!3E#1!I=d#b_u%S8<%0>f1R|1r)ZDaK`Z!Tztj>h**imJz z6Boa!$YJG!3AO|xl6=HIFD`vlOc<*(;X8IzV{+z;9~kEI!30|Z5lKESEl;!0X{#;o z$LdV@jvdwfBCYgK#`%0O!InTol8?cCj#qVjlzA{#XTo>vsJ@szx!Mmu_6Aqch<q1$wQkbK z{;&}`6TV|dHGQb%IXQE`8iP!*B@mJ1Bkvy*rH|j*4bz$M9XqN6D=vHHp7g5U4<^_W zh)DYVh-^Dw`pB1Zh|YxX*iluT@xs&iqN#psnP5vGBI&objj>AlIM`{R&V=vSQN?Bd zR4m^Rr+hHMmOw<3kM)mtNFU8c_1Bs39XqOs{h39s+Of(96Kn}YB>AZE@PPDjD725x zgzwlLXbtobFy*eg5LvnUg62}C44 ziykb0Q~KCkw5!g9@7Pf-+g?fhdw!ep!30|Z5lKG29raB5sQ*nzoeAHuqe{KBrr5E3 zv+}_NTLKYDJ{DK~M0f62f4yy^GvPaSR6o>jB=&r}LA~QJ!InTo(mT$MUp|#SLVs$Z zGvPaSR7JgQ#D5FdDIZL*B@mJ1<4ocg(#NRdO>`!F$BwGZ^X_8g(N*f5lL@v2B9h)Y ze>s&^`e=G7RA<6>?5N7#9w^!$U#{MrnP5vGBI(_E)uykckFgu-=uG&I9aV}sqs8&) zCCUdAYzagp`Ow=HkUr{Fuc0&HJ9bpHUr!XT>MT@q8BDMx5Ro*O(ebZh(nre`n$Cpp z*ik)95g~FPoTq#+!InTol8>4t%SazzCsx#%@Etp;-Mx zgKJliK7#j_)tT@eJF5S!m@9s(I#tbIF~OEVMAH0KwNfF{$FX50bS8Yqj%sV^1>#hd zaO<(W4kp+Vh}b8uBh%kP`goP1kj{kf*imhsA1Q`r9;fCLnP5vGB56KxRkPaCM|MvsCFKW66IzOQFE_Muq6f1R|1r zME=rP`UsvKq%+|=c2t=*trZ`pw^wuFOt2*oku(?nzIAiyBSVk0IupKQN0q<%Z{k{! zACwO!*b<0H@=^XqYw6>5wiG%OzGFwV`S>O=aB^++ZGs851R|2YOKgbQ9Hw3jS1heqpDkQrzpO-wEB+21X}_T zN#AjnzvwP~oLzKYW5Rdrs3s-fEh;rFpuTxA!InTo(l@Ws!+T2~$8IKSO!$r+)z81~ z700e-Q$CnrOCTc2N4uDQ(ns6pyEP_!$Bt@SaGV%bEuH#4$OKyg5lP<%^KK54K8l=L zr!nC>c2vb%nBvUicj{Xz6Kn}YBz;TOI}MgT?2!vKCVa<^s#zPaSeE66^1%dK0uf0* z1|A zxwyuJ@7PiGt8_^Gd~%>#Gr7)7fG15n5*5e^e_>LV_){}|ie6`eSeF+n62}JxUePrx2R{BUYIU2}GQiKCom- zUWfC3z=ZGEQK@4+$wvS}S^^PCKIp9C_;2}+9hEvmxn|0?nP5vGLawZ`eXW~%azq>x zzGFw_wDg5)sXhH?Jr`6mZ@hDskyuq6=jm-OKqwW}%@H<<7p{~uxJ9Tvsag>hr=y^CFA!-5hK zVeW;oH|&Zf_O7v)hzdkM6^yaR-YY0}1Qm9N9UGR|V(%?hY}k!D-2^nRCz8UHTb3zSx4miAD@0P;p1xGGe%XeOR^@b|hTKx=Z{L1x_|%Ac2ZI z;^ef!O=buCjBv5fjIAg%o*^Y$kSa<1H>WKl_IUS-5U0u^_}LnB7GxWBUBOSU87I@VqKom1WRkB!d(cdvFNT*tagzmv@q<1cS9VjzKv zJK~8E_9SPU5?h<$8GSx__7Y7Mc+z}~840xJQkZ>LAF7ad`Q_X>5Ac2ZI z;+YWxo{AJCT*tagJRyk~NTA}5aK?bAI|T{XvF;L2dNTDF(dR${6?eo7<8#1MDova+ zo?nfB%XO@~#1pHCfdne<2xpAl;`uxS&2U4)b*#JeC+~6j!{ub-b0C3=J0jKi98fh- zkZ>LAF1>WSUz)mM;k9qTSpDU|8jPM-q_RNN8o zjn9#|%~=;664OLM!gZ{>^onPXldDAxBv5fjIAcr__1*qggA^oO$GS^YZe_YA(&s<| z6?eo3<8wS0b?Sj9+bT%7j&+w_fqt_%N`7R-Kmrwa#785>5>apO{=Z-a3D>di5|wlj z0|`{z5zZL#;=RGif4eG3xQ=y~{zf2f^>+EC@i~w{#U1g<_#7WXobNw=uGLdP!gZ{> z#G4Hf0|`{z5zZL!Rz^X>b*#I@8yXP<2~^w>&KU4^NkPJOth>aUCYjE8$}1#LaYuYM zzN=~Cz1qH@Aqo<%W8I~{F)P_PfhI@lF_1vT9r4A80dM;hBwWY3OMmmXCdMXWAc2ZI z!WpBGc+YvJ*GL5k*Rk#rZ!kp+Bv5fjIAg%uR|N^zvF;LYVrgF){kuW}6?cSYd{^)m zSwX^eth>Y;W!eEukAVa#?g)C$rn(Qj4OftG9qTUfW?aNT0u^_JGX}iXSCDWW>n`zz zU&KHH6?cR)26QJVNVtx5m*`XwF_1vT9pQ`tT^0%wu4COLIxa*EBv5fjIAa97clMVI zc^Il7;X2k`dgsW*XUQT45~#Q%oH5>Rb@s^|oE4@Z;X2k`q60?6Kmrwagfj+o?n_nDCSo9giaWv?Lv*)=Q$L)7gzH#$iB2~W0|`{z5zZK* zOD~-I`V=Hw$GS^&?1>mipyG~j#t_|x;nbg~AmKXJU83_)#6SWScZ4&B=$Z_tK1&4& z*Rkfcq6a2@L|(U~i*wMd}ij&NRUMOSe+^&u-rxQ=y~=r9&B zkU+&9;fx`=qr<76T0z2fth+>~w1|NOD((np4AJEsPJQ7D60T$2B|5&vJsc9KxFekR zaF0Wb{`T;C+50OA;k*}p?d;PJ|Fd>)1qs)&?h+mNA_fwu zxFeh~COg*~gfA%BT|vTith@A;1fegt%1@1ZA0$w5NBm1PO&E8sn+U&uq_cvA>sWV* z6%pbY2MJW%5zc2Ev6>^C)_*8SxQ=y~SlJaD zA^Do|H%9^$cf>oQHBGE`3a9l^3KFhk-6d8&iCP8{sJJ7XwG6RpE1cGODM+}Eb(dJd zC1N0fiaWv?L##dvr}b(I60T$2C03$|`V|tWxFekPE3t|$oYvhbNVtx5msn9JVjzKv zJHi>`pmY6Tc#ry(6eL{7x=UXfcq3-As3#(UiaWwtPt5FG2N`}NzKnu|>sWW`D;(GT z6Cxip@(Kx5+!0inpuGC>$ym=BKK)ZM1qs)&?$TFkW~ww?)LxN5#U0_Sy*_ZROATL> zzkq^->sWV*6{j-wd(rbC5~#Q%o*SRzmUDe=c%L6~DoD7Fb(g+!_Vk@jq85$>D((np zEqv{!P71va4qtFEqk@F%Sa*pP!18Y6b0C3=JA$qT^!Lc@T<;uS=)e~{60T$2rLSZ@ zzFHRVCXhhI9pQX8Ay#3B)4FXt60T$2rLV}|8(mwx$3X%WcZBmjPK0y)dAQc~mK_P# zvF;Kp%jI>(cZCEh?g*+5(sw0R#fQ^6dOH%XW8EcI$cuMgNTA}5aK7{U?3@P>Uf^|- z9SPU5?$THKKln3`ct3~)D((p9`@!DMxd!1^AMLOs;X2k`Vq$@afdne<2xp98&iM@C zrD9gwk#HUBE`9RCfNU?syHq4laYs1cr3N_XOoX52bL>dCj&+xqAQ3pj_?shviaX*i z(VF(bIWHr;eETpv60T$2rBA|Gem+6G+eQKvcZBoZcJ(LYjr07_ji2pExQ=y~nCKz; z0FXe%9ihMBr^!an`6c0#D*M}!a2@L|eKLvT@U*}X3CJ zJj;bGHY8lfx=WvU;}dpC^vNKBiaX+p5kpMt32)Xp$cBXLSa<1@dtCF2Gz|$<+!4+g zdM^=OKJ?s5qg^_pzA6zMkfN(KW+aqen{*z<%|E_7e(?y_yM2$~Jp-#QTOQ7QDlw6T`T*lYEZ8PH!)B_ zV(DO2{+`$`ul7a)T~%X~)UGqmJMLS)E1f_EiAwvEM_j2jYu=6GJCZL89l8c=^8xbj5v&RR?FS>?Q^(NbF3zNB*98 z@t3DJ66mU!ZkIZ!N^SM7<-5`eRFEj2WtaRtA)TpiA<(t#{5G{#Az8g+iJ=pyAhGc3 zHu-x(|8|i;*T18;sEv-b_$G!~> zc(_Uap7`rZT?>J($tBjShkxy(-m=8d2~>~>Ew^6&p3pxz66iWzd9^z8mto(;& zn?P5-cLUY+p0qQf<#XsUP(dPFxr`LpT;%2z34Qs*$?1>Q?o#H3ku=AW=@@nxI~?{LOU&6(m|c z%_@IS=zl>Z(6zMwCr5;8`zD4?pn^nX*H3}p6LV(&@Dmc~Iy3Q(!#i0~FIql_PN0HB z(t|U8ov}T(5+c8~#Lx*;kPwv@llb~wA%QNv64Lls3zML~g!3Fk1qr?K@;$McDlAB#OH@MS zcb3ng6R02|YBk>wiBw@h0$q9~=6UaPSXUt=JFE>Q__69W|_M6JdozQ#ZTU7`|V5??(R4gF1l<5~5b~4RMqzEJ&bBuY@eCx>f#SiJ=pyAfZ=YEX3FE3JG+H zO2{`c=nG4O3KF7LV-jCuAb~DX2{8%!*PXwKs30L~H74;j1`_DfD@%3{cfi6)AF^R9= z6)H%G%F8!|USUB3U7`{qr%AIKdJS{}6(mIE#U#Fd4kXYeDj_EE^>d(tgs9b+#Mc-| zpi5LjOyX+{RFDw08k6`M0||7AN{C5(je!ahqE=%PUt=JFE>Q_FiLWtGK|<7OOyX+{ zB+w-)Atv!P1}aF1T8&A3je!KZL?y%|zQ#ZW2~n#tiLWt`K$ob5n8eo@s30L~H74;j z1`_BJ6&92D8Uqz1M6E^;6K{tpH+G%&?>0Bm-?i&kd+Oy9d#xpv`@OB=+N11eqsMDN z-!P>HO-@?bX`nwUNTdrns21)OPIwZrrPIJfB+#YP?TXh4@YLgJx#L2VZu5iK zt2})ZQ9&YbfHOwI@QOtAj}1{mb_cN|)vW}&^j+VI=BN{Jz#vw>9Igzx7Q^P&>zarP z5>hi~jQw9UyQW1E@e>iA-w^21_taaI>JxC>AS!k1sYD!3Ww|m2C8C1FwX)6_ZSTfW zjI%v@Dw`8iS-|TS76M(@a~@S!ob(BB61AQ*RgPx&;1!4ZCZd8wyI0A^-(%S9VH6|7 z!=}oU+#bB`BrAcg;2X(my|q38a}45mTTkV6Gl~BcSv(OHB#IgPz=`2Q~8~U zCDW}0y2@@$R&NjW2`E)fC!X(3uk^UznNQr9nt%!t_a-`HZ236WrfD;YSV6?*C@X=k z*Zq^#thIdtoW%KIQT7hX2!8qFk_1$cSXkE?WvOn zJ{LSCWr?UJ;dzH=u-G9n$-_9K_R!vd6$>5MUzhdMp2d;hh!LMROqsi~XX3pxTO?GF(7PMWy#YhxCn{6@)36JNj#&tF>3f4V zviXP@ReVB~LqmKMvov}kp@M|orD^UB=v959(&k=@^!(?v3<-3Jy>lJejn7db-z0@z zZTKDaFUn9sLhm*;_Xg~Jbb_*EY=X4e2x*pdvk|svWoL#I&9_Y~8#coi~wk-uhdD$GjB~*|YT5zXY z@@`!b)zKAhD zO@eLDyigwXyrYFcm#Y`g8DnJ46SkvGLix4cLnTy@I6ZcY`rBVYDv#E`t9EA;+s$F2 z{OxTkfv(TPqtsWEgVkD_bfQT5+4ioKC1Z=#WT+sqaQhbZeV&%;A8+*Bz4&F8J%q03 z(H9 zwpIdNMXyJxk8*SpM4x7Pm31xXJg*VQP(dO?ff%*<%$8~<qmB&|O*fN`yK-Zz6(Q4_Voz$KNQR_lG zE16>yA=o%G1Qd}l-yyyiT-=aa8!`c*QlC1dVZNMEBOwlNEg+z76M)E z>n&DSzMP`&H@+(^dw??QqTO$9y-FMvB*a=v=Hce7dJ)in0~R^!uU$g@A z?eea&?|RsoM}?hZNT6%h*1>8G@3rcLRQ>AQ?!{vJP9oaBzQj;LqFd`;>cQ|0f+$#0 zwilx7`KRrX76M&UGxkz5H{GDVTdv;d?1iD;3w`+?mp!=&Ie(GcEy)l&k-DQV_3KFiK+r?gsiKy4+f41NAhw=(j z&Pk{s5tkgKp89o*_`lk7vZHOo%x(*TE>{Qb>?X@8#-dUoww}d9c{}-ngbEUw z9@bY+b>1doH2)N2OISv`v5nbpA<*UOxpl_qnB316<{Qd0wfkE_1qt69b=CfbcZwLd zM>Mfr2@mC~uN|}y=yLVkI%5ne)XLVmPbiP}J|UrkMDMLN)C@a!ix@>~HMafRHk7xo z__u{X*Vc|dswKjqWVF-nA0w z8ma!MrdvW!Mg|cQHQz2bk$4+>F^&ongIjs2Cp*NdrHx+(pN;eF`I<|7Xo8hMSEZLf zs+CW~sXrLR<11V3f9Lez{kr>bRFDXm;H7q*9IJX7zljI0ZngWIj8N}|Q4*S#nsmyx3I(BlWMQcHd_gF)v8-TE$tDn zPBDnM5hv~E=xPvT@5C(%{JV?ez0`e5tXk2y;!GZS(!Tk046`X#0$nZIR8XhXju*uE zzb@EU#0RkxvwLw=kZ5?sOWkrRR-J2H&!-Y$i=|rlHw3!!^sJz6Z5S_zTW7D>3wDo` zqWbeU!=_UlDXNsm4cwh-w0Ts5!S*O8z`8lU{_>qL9mO8fWEqhQ01@ zCD66yhYyb6Rf>p_Y3_1+sX28LTkajjQ9(jX=n{Jzwy3+%-r!}5^zXBg76M(q>F+v1 z+c-pwHnb0KXyXHZp1xx_DoBV)V8*L%bb^p~WN1^_Q)KbP-TfDfh{TLD32an~bAd%Q1 z((%vO!)jrJ@O$WGUvoW%9shfXg+SLUInvRh^I>(A@mo?lxuAU)5w+6{<)|RxDBRZ( z8E`}pZL;RDH?*g+>#Mq12y{Jp(#J8k$PqQ0@tYV@^ntB55kqEl=cpiYzN3#L`vn*A zGVf_yVfx)YU9X9SK-at~K92Jnj;Ob0>UWl>e^_fPK*XDrCL9$cYER7K7+EJ-5IYw{ z+HTSHBkzPN76M&++h=hMPLr$-H?C2);_KUP6LI~16^;rL4?W|PN)B`pKZh5x#nF{> zP4Dy;0$l}P$0en!lB^DUp{&xPk5f?lp~K zNT4feY3-yb6_V9+3-x=3xo?*w=tQoeQ4AF%+D%dXhWNV(rOv(mMGJ-UiJL!2NTAEr zTR(C9db)?xU+>PQdSXPMGZHFDxVrA0grm;Ax~>?gAR%}52{1p$l|g;{JlBTu;og5s zNT5r+k5-*AA_i~ryIzHAuccl~s36g(P<+5y+I8CbT~&yG?3Za)DF1Tml7&E*Yqf$i z#-pPd{F}56<&Dogl2AcnWz{T!J;Plw5`t^{7waF&TQ$0CA<*?+Z#Svx+X)RPEhxs^cI@aMGyE7x!lzo)d7M$%i$9eLAp zRFGIaHA|p*eiVG(Ryt32ecSU{33OGd=o9$vmm}hgIA($B#>bPl3|M4^~0f#z8| zkBIbCfqWcdCD1jhi%+2W%aAV3S}8p}bH+Vx!cjq@?O#~}PYy^HzgIodt(83Jx8w=^ zmLP$y_~|}@=I>R3SG%R*d-Zx^4~_~F4IgF+%ruAIz#6~1Pg8eGhlz;$hCtVfEk1!2 zKf8W+xA#brKAekTtqu+2s31}1QNA8^oKG-z zVZ%3n^tAoMIAyxyrc`MAXod75iaff>C;~nu1@=3)3%E>b^tbUc>ECjmn%^&@?*XgI+B;slJSqv2< z-VayQZfD<%caVcSc2qX#ogAK1Ed;vo%^&qlbZ)P#Cn9*zT!sn~6-L<9%QZ65j5z(R zWn}&UWj~#RJ0DNB5a_};f7E4Bnkg|vB%c3+p@PJxzy!7bnLOehWLbKn=tFfMncgTO zfi8UWr)eoWODcXuY+L&qLj{So|Lj#eH}+6J7;jACKD@ENq~FBLF^wz)y70}Prq#;$ z%AQI@rSE`)6rLd z`%tQj?q1d2LZAz?l6noUKDQ4fLLJnbp@PKR$Gg?*DK*sG##{Y7zKe}F?q}NOwh-vD zX8YnI3+*4M;&tk6VTKA4_(qxb;8{9GsXb~~;v>H~3^QDxrPnXp3uC8H%t}o=ylbTL zrq*Z4qtHTz3KHX1C~EcWAH?~QamFy^(cU2Tma-iQbYWIfU9{~l%0eQRI@T~$keId8 zrk?DUNu6w*9}_6s-=C*li9X_#TT>YrOqYZETz$C5{$Xey0lLust&@1iCOQHEp@AnDQqPe?`w{ zs36g=OssmKtd}@H{=N3x{(_$F0*3Uq5a`0J)U@6IOR+yAVnn793>75uwce?wE$t^d z2PPC;XkS9t55HH1Ed;u(*?#@veET9I28}7rP(cE_AvEnwu2IVI<0%P0Y+21P!^J#H zV@F`jN=-|=K3wtJbW<8#Wj#X$iKa9+A!$%1)p`ARLfNjrSIeWWu@LCOtkkrdPX;M< zh$zjsGgOdxu`NOM`!TOLKb{}%sjQ-_!G$4F76M(Em9%?ZqwY!s5h;8RLj{QegZ8Pj z_j;&4#`R<9NR*95p5yRg;}X-=Q{=|Wr%3mcMn4ai5_p`)F~w@sEToa<$1(c z@t|z4(0ZMPKo@4Erv1~+M=3%?u4`KvDo9*y7pwMc?WrkrP!NOw*Qf3goQvCW+nA4eR^nbKt$BY zP=*Q;v*&G7^Hpmg&X080=G*ObHJBVy+Creqn(aM9=h|&V{BpGtLj?)!VM?!}>!oX*cQI6un4~1ArEBF?pBVR7Kc);) z)XhO`CS^Mk=)$bjw5)9hC?AN(vN(~Uf<&pQ`_%HMJk${5`Z2Ugccse781^`DkA*-N zW+h#tmUUHX5V7F7gQ0?iSJ8O24zHkAFwTz~ld36 zgQ0@N!0=f0r*L}DVw@i>y89@T=*`az%625sg;}X-OHO+$VMJ`Gx0j)U#JPPt)jwwY ziSy$vWxEe$`*X^6B+!LfscES4BTRv{$EWe@oep z1iCOQHEpH*kG&QV6aSvdP(cDa#5ApJ_*{Dr%JzNND_ID1S+hOQ?IBA4Hyxx;O_CVq z66S8$pZnB*uX(6|npV$3SIwP=eIC(q9$=UH1C% zYW{u|M2x5Qfl8NINq!{`pJu2aA!b#pg^d*>^AGh^yr@rR?3K$F0$uz6idB72c&S&6 z&#|v?Kc(GE-^4DRZZTAl&}VMPN7q*K8!@!zy_BugN&eHy`xXLSuWIa419SL`7*A^S zQu5n+Cg$7voS}k*K0Ex_YFW)@#P~aVcg3;zt(0T&D+__HcSED!A0$tc4MynwH?4*Q_JnbK{FC#|<3GDaM zwC4Wa%HD~i{Aa2^aqQR;yA`N+zl15+Wus};_f=DTmfe)H{NT$`LE>252=&YG1!}bM z7ko$EJDGO{vGUZtg9N&;%SO`%-2PEXq`QnQrTjQ5NZ9XAQ8Uz8Ec$(Z=v_+bO_jTO zmuguEbYYhbz16Qyca}ty>0F1Sg2dYMq3S>9m#MKvJ+XgW3z)M8D6O{-5kAR2NNtQo=%@3%hJItz6w#c8!SDW6E$; zkoc?45H;O`wW@5qqu(;;qyE;(!;K}5*)>>L#&mM-e0mWbUT z`hBveF1GKX-^4=iE-@s~gZW~WS_pJu&kR)u^VGD*5s~rBEQSga*a1V&I9aPH`3pZy2;T3w6;{13{+1`(8mTM{7kw6z_CGBx|t$`8)WIs>DsvG4wDoEtL*h`JLvq796d6yrychjFzZ)Ud;=)$a|r_>2{doLok zZOp|{LBcajC$+>)>R314b9RiKXRkr;aaJ_A&X7PCW+i1}+nM%qMBM6jo1ub4jT|l2 z#XGl%o}xg?_M?>T8$Zvo5a_aI`-i_P*-sELef(U83KH18rD>N}RZ!N24NH7CDv)D_ zi(Pxv8+84^tkkqZOUf$QDu0&3gJq5i64!Evsl`4nQ`Z>Rk4u#8v#2I>n6e!SbYWI% z+P;)x$`c~WbgIu$LE_W9F>1;1RcamMF8mkD_HBQ~u>NuW76M(El^R{7aw~rjG2(Fm zM+J$ptB0s1udY?s8`qDJe3_K@RFi2r(%V9y3$v2$^l$v2*ojc<*5RliaWhA6bxGEZ z;`~T^@sWKq)%0^;D{mptg;_~EH8r?pUqHl)(v>(WNPKM2NgbRsTAUwu$J_1i>7KgM zhFlf`U6_@cHoRt>{V5SVC@)6^iBT36!h6K7WE9q~3 zcB*|15v;*K3>75&D>YCf7i<&f$CWFU>|t~l?ioJULZHi?_qPbbeq~YFf2`63WAQH>C=V8gW#R*qLLjT4UBK zaemySZ0}EZOOq+vkw6z_rKXJxEU2U-V*lR892F#(Iz(NPx>lSYYX98IWLoc>{$YTH zKo@4ErY*dXRf!;C#H;!o6(m~M?X4E6vQeBLr>_5?9HVE>*1mNt1iCOQH7%j&2m1*k zW?uEDNGwJGM=nAHSWNYCl3X z{U_`nh6K7WD>cn`NT@-)eE*Q4f`o^MpPH@hPH}#Ck1cI)PgjF>m*-mubXl{#%d5in zc0|-DypW-S1a{48+PJ`?N`slB{0B5>&N0Kq?se(~IzKQgHLdfL!b-7n>!p-N%{eMa zl)5-XeV=BXI6u}>wm;n%#QgU)wh-vTtkksM$L3b<5@CDRoTGw7t}eaRZ1py(HH_=W z=!;pE!F0FO;7xrCfiBES>Y=ZcLHQpM+b%Zds34JLLnpOIaI`o-9u@mwe@AZt_FnU| z5a`0Jq`YeQ%zl!H;~hCi1&Iy&TB`E`V#N6o8F9g0mhP5zHuSU*=)$a|s`IiF_6kHK z*00V{K_Y%d19i*4+r;^?gR;GnUX!_;-$I}Zvr^MK*4$vPOhoSng*Ylmcy{npbI;f* zdYxa62(>%tYVhgHLxu#pFe^1}Pv#N!BqEfE6ov{C*p01e>s}YO=cH_3U1Xt!K$kV! ze{Gge>5`$N^dz+v$6T`H?y%nKp4J;h?#}edr$n77D*aTuH7^AU5@I(=^(>t$^m}z9 zyK=r`g5>jSI}3rX6&E|H`@*8tCC2^Ltyn?ErFNbXBVsg7Nw4fZSU0iVLAvJ!1qpq3&q*)0swa%k(IiV6MXr{H4eH#* zLZGW^nTBfW@a>`xdBx|CcBx#i#C%1&b5xKJyOgTOj2Nr_d}VLE`K?qvhm}BA*UbLv z!I%E}dv^tr>%2TUDo9k%?UVFjldHFO>4QCq3O#ey zUzy%QpbI-%X`al=)C8UQcVBvr3KDv^>HbhxZ|$(uB?~%+f>sk?WkqvogXI*$}o{*hKs$)jq?MuQqz{cEn%-OeU>^u4B@CCktV3GTg?+*Mo2G-_$~&3$s$ws$|b*5Iqx{a#WC*Q_m-<+AY`l(a$R- zaR${a>(}tK5a`0J)U=AziYMxGig-IujtUZbjyLo%27c=&z{O}T<6Cjn#QHi@uGQN z76M(Em710`wYa~FKn01Nr+fm;>&M{@seby^;3HiPkU$q^CA~|1y2oE9>d_Sk6(laU zjSnzabNqh4pZ_0Jlc~}=iXnk6YqnPiN-~JcS)&*#NMM&gb);0kY1>isX~OGqp&T>( z!p8iLLmQHf^8>SzZW$^Zw{@6(Q>s>L5=RAz!I!c)%r5VHm6L6wsV{sB^@SsWF3d_z z^C>*r7D_}!!4QrL5_yitCw(e#RNP;AOpmmcr@N)AU4~l-bYWJ~{F2h;ZRLmapn^ocbaevE>qqs7;{N*8fTq`32y|gqYFe9W zDF)Git~jV5v1Mj_fVp<5{M|kN@$}9sBdtV20$rGuRILpyBg~Q=6Ln(l>){*~B=n5Q*TR+U%|5h9{N;EmyVSL(g+LeP zn5GSV-ojreE)#(Y62DZh6JTBq_6+v*Pom%Uo%Gv|1iCQC=x!-zHc7u4w4v(h7n2rX77Y2*lJ z9@AO-VnE`E5($#ugHQ{BF8y1-G{F@^UY#XT-DUS%@F~prd$<%N7F6uae+YNQSkP&J zf1j8Xsj*BG7vSGQSB20z0p{mOJMg6cyJCKcPwt0tRFKFuXL>-pcCHw=b5@fwdZuB| zk|tRQbY=J38(^M;_6@_Om(P17E{h1`s37rj_p5+O&zx5{P5V2;Tq)ndx6;XplPm*Tq-{D~>M+FI7W29-`Tg$NRS}U49*<_2 z<~}W@qc@6+0-IP?>LD@nUZ22ej}D7j#mTy1q}~&7FtEv)Zg(JEU~9sI}^p0i3>U5TslSu6P zxldq|(TBwf&{;(zqziQSnrVZTKo_p_)UuxnI zK7&6i-{X{&w`B;&^A6A8*F{zbnrrokEv?U<`aAY-_n*K~L84r~sK6Qd4;kmbrtQcd z%re;CN>|$cY9Y|Ib5UHNIYA(^UqAMyVUNTkgU54JkeE4E4Lm*TfQT`~do=s0RT`E* za;$|wSF7hI0?kPXpH59-*Ot~v+}L>>M+J$4Ypw;(JM9qD7JhCP!LB??ksKdKTL^Sj z^tc;nPIP$Qbpd;|R`tu2ZVX2S3I9Ld2DZ7Ph{+U>mn~$&yC+EJW{$ED=vrFjLtyaN z$rQC$uV*ori%NrPkL0KzVJnGl4VIj~pWke>~oUqX~co)kY zxL#^ka2Q7gi8sD^WpnPwX=yvlzA}h;J{@Es(3QJtUis3F1ToQJ^TI?HNJPeV12`&3 zWWC@aXPZtdw~Tjpn*;W+D#v2jn5Nw=1iD5m9&-C3`^0pZ3eOy@BN5TdyK+>JsM4^4 zY|fKu(`yeKLeDtQIs{n=bd4@wK{lt{lql?Ay@(h_Giy*m!e_ddY);b2b9F20MR$ER zn!SSrx_Wo@lFj)({_POW=-PfRNH%9|t;$`K-6NtDbyJ~&M2#82GRz8V z^FJw)=6EfpIbKMh%eDKhbMjZo+I^(%G%HN$xYOh2ipFj3Us2~wJf3z&kU8$y9rBB%Sv~r%* zs5woDU9;Chplfi%B>C^O%LGwnYHKFbU$E_yDGU`P{&#P*tQ=Y?Cd!p2q8zd-n_M1D%6mAFKqrf<}hQ<`lt-{XVhF^ge1PO%X%| ziD5g&$Y$qqy1t*-GrH?bePkuj<=7r7o3jneSIN%DA53NEs9zKnB&OXOBbyzjd5O45 zMAA0|x|ZDzmCc^*oYxBQY}94(jJjA+LE=riv9j3-n2iVzB2vB~(A6fC-EhNx&&Ld1VdmwGSO7O8X<^TD}MjRC+ z(#@SDpIp1#=qb~*#jVQm8rx6%f38{ILZGYhhbi*=CX0I~n2Xj=AxN+A*HfM!BT9C*FQ)lMWHUlgKy6`Hh zX&Db6WyOi;5!sicf<(h^6=ZX++SU{Y+d+T9-4Y7hXlF4>?q2*NC`Yq$WoNiS5x1WV07%wbup~Nxvn+dk|B8(ZeHG-b{JjtUZ)f2kmw^ZFK1wx@0nVsVu1NT3U|Qqx}j zb%9+XqSTyT92F#HAMldRNriJpoMbTdfvkf>ZNDR5$Kz?3+yEs35e^c2h zx<;KXR?|YD3$s$w@-8{S&JiKW)j29iOqkzNHhVdzAKJ=hQk|g#b!H-gF3d_zbJU7s zvx!(n-Jhr+QK3L5*<1@Sk!Hj9qiiojo&89l3$s$wevO^SMiVii{&j{55^aC(C7ZKx z(^sp@3RAY{rb)L*pv#)=MN7&|pQigSP18jM3A{Vgv<{okvCeykCI0W?0FD_xdqGt> z?D`&~9}2UQc6L~Mna!*4S-L&5FGmFl_P3X8PQa`~*`ABm%Iu{Hm`I=tvr^LrZo12w z5OJqpca91Y_H_Pojk3GMT+S~iudpYM7^d#+U?I?jSxN5={=Lt9)fhHma$AlH66Mk~ zlzkd+7w1RUte03%>Re9zyMcv37iJ~RlnuDcS`pDNTBhG#^E^Oe*`b!Q*~@un*$K9l zIx~H#GZP7PVOCNVC*lIzMnrk){zL_d)YhG3b1lGP%J%J)?V*(INT3U|l6DN4U}sy2 z=tyg2P(fnux?Zxmmh9uUdCZrd?kY;x84~Eitkkr3FBY@9SL+{R%%+Q)-Tv0BG%>V z%27cg#-pJ;zUOw)>#V)I&q|z)VLst)Ed;tSD>W_dbt>~FBB6LIjtUZup0$*l_KFd` z&R?XvtRGzsZfue*1iCOQHLXRxXDoz>+U+?<1&LwPI?3i*fL*^`VE*}O;t6&3BY`f= zN}A~;-(tQ*G^Eu7s34K`ZZFwfOV*UK{S0Nh4`n+N=)$a|KICPG4dTs>>>L#&Hm4mT zo3qt7Q?~2#eS9g~kw6z_CB1RayNV4UVr}?2h6)n+#Hwk7?>Auqlyn-C+iedEhi*5GCgdsM8Ig+LePn5Km# zd|`e>WS-TWqk_Z_J3Gl{XMfqo&zSGNR8}{bTL^Svj!`BS|G)x?D0$tFqk_b_BE4mE zWmtHlTkHna`X-mDWFgRnIYw*4FFj(niD-JgJVynI1NDc<=E~w-OAoW(>DizICjnHDz`6$Yau!;}8dAL^NwrG-FOp}Rw5b9K$rzY6lIw9{X! z3qc$eBx>FtDR)1)T2v;kHY?0KM!l5|j%;Qj(1mpkniR6FIN$Tcv42EN6OIZJSl6J{ z%cm>zpYxybA3c}xlys4D$wTvvD#zh~2-!86z*_y-mZmaq|3{>hYYpS5Ao25?DYCh4 zd-J4n{16e_`q#4%=)zhJO`7_(G=E5yq7i4fr6z+!!lNm&IoIIDxYGO^KdVE zi=2HpT{)rNhD2)O6xrPQB>BfY{2!{^tr}`2(1kTX`U~zz%Ma48Pu_rHmg*o9l~+uW zqi!w|JD=7nsc(_Eoo0!;Yx>Rd!D4%>O%0i$EYyH$Ma_y+d533k!mydL zxtEYnRWF`3-_iZ0lIw6(kob824|#Th+3Evh&CkT$wfM*dZzZqTS{4FbJ${=bn>!q3 zuJ6MiJ?)WrVoyzu3KALC%#*kH&k(yPHQ!K&H*ArH9qd!hLZIv7=moO5Q&VM6ni~1C zPU5H0o*Wel&Bpxxfuhn|xgWLAf77;Cvb&xWDE@2_itu6ZvK_R} zc{Kg*M#}{)1iB*Lu9dGI9-?+M-UwaZY!A_7Wc$66mVy z7cHB+@a>|NpZ-LgqdoOdL1Iq*7}?zEuY5gEzLtJPFVjwcNLXA&V`Ovx!2*HR`Box^ zFFnCDP>|TFZIkD&ZJ<^#=0LtapP%b{9LA|zEd;vuoZKdxQ@Iug7UI!F_|(|IP(h-= ztevts=dPvpkPW6^(H>($Ed;u9cibtPQymLOrm*2eq+}bxP(k947rSM1PU==#`KeDm zok&wpkw90DJ-cOd576wihmgLP>3y24iV6~yE5^y@UZ(zeZc9^WpHa0>dkG12?M%Bz z9-OtZ*vmBi5QlV#_A=o*{fCYw9= zZk@`SX`vd;7exh$l-LB>oJiX5NKdZM->pvbcacEXjCh-D z&iLK(WDp-i?`uD@?FAf5TVaWO-qv_kw90&WSeZxVy#wuD9=0Vt+ajh zPKF8+yF6_2gn(?uY)jf_bo&V2`+f5MVrQZ(1iGpOEAsj0pNwhBnl@=x3+`w=+W%N& zVUAbJIp@~NzwH=gT#@k#M{E23ZOPNe-jw#Q%*#Uz6(o{IN6Y4(tncU@YCC!#b*fSZ3xO`Y!qF2X)neKcky-h| zP(h+`zZluvjrLFn&ePH}&ReR@Ab~Et!qMA4s?6)VJI2U&87fG;sI*;fdbWX>nR$uc zLsg_Rs_^m?76M&(g`+n=9yPfi5h+tth6)m=m7TIVGjnylLVPu?V<}K`gM~mBUg2oH z+Uz2HIT8Pxw49-WM9+$`vN?0P+Vm8bhkoH$))5v0U3i6~9^sqMS#Bcc4DHQOL1KKL zIN6-pe~Yf1=jh7$XS>`M0$q5$q7De(rR;Aa;%MJ+RFJ@{53P{?vkmvU^CY3%>^vMZ zJm0oW@|T(2)pRtM5wlXChS-*OXz*ED+cP^y1&N(gqGfZhUk7FTxb;D7E@e9s=)$bj zw6ho6@xerdM5O1aAWj z6cL|kN;4`*l1`pmAc1#IG|j3*NA49oG_iG`tQ<4E zY{xC~?TYP;^8>SzraEru$g4E}EY)q4k)wh{hgmVQxqJ3n%JwW#L2L+RI}+%^tkkp~ zRLeiKiB^W4_{2~_VnW~T^6v#2ie12~(0i!X^gim3x2YBaU6_@c79Q4?2M{s!BfaT` z^8kstId;j5Zu^Ou%ih$-kdtN`?xQ!oNT3U|lHLzeuY?~FYp7EQ6(sshibWPZhR)00=w#`YEhU6_?LS@qK!mW_xN+Zr)ckia`~swWm) z&bm{!UmWmRLIPdZYQJOj-P(dOgI#zzQ)=Omj`Lm7rDe6{lPq~W(x-iFR zCz|MH{0kA|iaHo7NOb!YCz})aOLX<&=c&7`+m)>r0$rG6G*#uGFaL*#sX^-)Do6}0 zxlcBCa5+x7`+#ycQ|t^2fiBE3O{=-9Bu^ot+`8WwDoEgS8_leF^M(b`6XcWVMiv5H zn3c41R=FNLWB<|qNB!S1%%#2gcFDP8{MFoaUxI&s%J#S2c}4H_(&dG(87fFTtG!D$ zXJB8Wyo#lnXKN_0kU$sy{Wa~E{Dh{Wi-3>73C2V&(v61_ww-ihnLr_lP^WXdZf z(1m}0O{<*LiFYER!kCi`6(p*aikHn<_kF1&b0YOwHui8>2z24!pC*!a3gVN9I7ZX) zQ9+_q^L?_pSIUM%zIUQzd!9CmC2v~M#O@(^sXK<4hekn*0kQcOY&r@ z0X(6+LIPcwF`AYyxi^oj*irglsfP^z2KYDM^LMOl&Q|}NsShuFrYP+w_<*5;MAPzn zLgCRoy<@{;?K?dG@JTrX-~ZzeWzInborcCRN1S7T@%%Ao>|j2Vh%5J+GgOc` z7Ia8{_+XV|yg`g*U3on9Ca-ejxvTG~w{_~zyaf@SgMVbGAQ9zr zSZ+`&QV?f0!Ca z@jil>SEn-XPkV;F-f_`FpzDXY!*by7eH^x`St!OMTJzeMh;s2eBvg>_7Bv=Hd(GyRC%Tf3Ole8Eq&tM1!e=cLmsLwVVJF@C5Z@$Zcz@~aZTNh7_>6Vci; zRq9+Tl!p}A=!Xgt(N&V=5g%$N#oP4H(Y^Ck=>g5kX#L~Ux=5g_#-}54d#{|{&KLpX zY29|0P#zcYcU@GFm>ZC65C;@JhKuMo>+k(Ypi8GmeW)GaB#a4cbcg)=%Owe@AaQfD zGsc#W`ro|g@F>QJIQz;*psQ3&vV41}Pe7?^dbUq)@5%en9hoDdcp@rDwEEzTG0Zpz^@(5ltd|$R zSqXHtzn3i6Tk8`r#~_x|ERHMm9F;i6HxU&iE>}8g{5{$lza<$THsw#~Em`1TD}k=7 z`H#vgPWl8mi3#0%@(olk$@r>8A}UDuwsywYZ~VfQ>D7}TiBDxavIJQObb0$9l^3Pb zgfW9yNPFF9pt@+r`dt%ILBfBiGe&~(OTC(ilQgAZ(l-RUygMD0i{_{kaKIpb-4nu( z(u!P1jlPMfAfbghW0d>7EzK|;5F5hB?+#*r7PAuQdN=5(+^%??08fMXEo~^zQRn|$ zopnGJ>G#I5K#aA;z%En_3=m=NFe75uT9{bag<`C6Z3RWq6+2Mu76Vk6dAXwkDk^q& zD|TVv{LT!szx&L0|9zg1v)noFynRj*N>mPsmJ4VI$4c3XX$0zc^|4{Gzet`vh%k6F_#j`(B^@_LH!_j>luSxs` z|BGD6vrr2vNX%|_O5D9L&X!C6JAU>X&tKZ#-r__RZ;?P3_HdL1%3%Wkl?baxR|_gg zG#znT{PZW<=xbL~&pC*C&b!oeB7rXK;b_(Q>PUVH5gD&MET|wcu5YqfxqY}TT#u`= zVSV@x+P*XOoJgPxdpMdqZ|^!OU-291`fl z9*%M$QGN+0B3@9w2~?2yu`5Lk5xtDQ_FYCTelmR-qN(RZ0$td{(KvBhZQe@6hSlL5 zDo8BPohm*U>1?~Nf8nAF<>uSaH*qah14jZ~*u$ynt^v9EwnT)_aN$rvqGr8R@nz-s zBscv_y@j$rwW2R|bju`PB+!NZm8yPen@z~~2m7Le1ol3vI`#8p{?$Zw;#16M3r2Wk z;wka|mi@LS)QT`FDX$u3a**S{aa&6UT2Mh^>$KBi;ewlt_EDLleH`r-&828Z0$muD zs>+X?$d4f6c{y(jDo8j@O%`AE54Ua6zgMx>M)C@+_5Gn}M*>|Kl~nOI=V<;C5w*{j zw4j2-KK~Rks9vzqJ~nRb%ipAtWk-s3B+!LXNi+KJApQywFI``7s36hcc8Yj(w3n@t z-s8B7t@t{$!@H599SL+{RMM*Rn^t^nBDPU=c2tm9S?+9WulIuzMSCZT_FWY1 zNT3U&lCqJ!tj+&T#HADd94bh(pfN*2ulS_w5r79pdlW_cSc-Ne(1lS+_i@(Hn1P7j zPmlVdf`m5u$m{8qlszul)NZGxHnorC6zxc$%N*@#H1^SmVjtJ|pn?RBoM>O|>=b@p zo&kw19NSqi!Z)}ii&M%***Iz+7?pH(F!~>UWkUzc{CPeWRFDXdNEV$(huaG1{l~)* z6ZzipG*>I{Z6eTxQAxEqwoc+(5^?F7s|6J#g8S15xnr==K9)L+=G)Qx9<8$x5z8x-wGpbMi?Rp(L$HjN1O$nZr432jvSaI}}vK8jQJ!2L8r_NQn^0$muD zs(OaT)EcpB%_kpJkiZc+)l1c~GgGv8{=CLSpvxTX<@-2 zUfYTIHou%NDoB(x%?JORL5_<4JvvYW#$V zP41~2DoB)wO%(?}akd@SBe4s`)fviFT$kbs33TE6r!4=J)%XGt&f(!4DkdT;RUG&r zK54i9-EDulAD=*T&Q}yyNYn)vzJFS$uHT=x5fL-K42KF5#_Tmo)W5sODXy+iT$QCP zl}Mlq-@mGsqPg>BBBqb`_C*B=oOx%j0R+=mH2>^!CIVd;F{+w2*UG<0D8qgFaGt~W zTrxdXyy@p;Ye!Ln??zSKgRFe9gl^oK(rFwjNSskp#ij3^jVQS^ z3*U{Z#=1=56(SClj^t25qDq-F;=>>DN!d|yh2HsoI#oO-EZjt(3*U{Zjl!q7Hda{t zM|ztGbm7~ieVheW{*VLJciy~=!`}zr$Aj8uMAv-Bl3evxdwI|d{-1B-eJjri=TJey zSOZAvO7CA)ExuO%-p&Wy`u=rI1iG}7DD!}LDxY+hy}(51bnW$&GZ>}O~# zDhIWw%cavKRFKfxO@QQO5V`3q`i#D!73-v$2y_|WO5v*h6)j9(>ia}Irs@l*AYt_L z2GNm5uajx?TCCW22?=y*W7IzNf`vEwS9Ar9kcSfCb*7|@3KH6^uTuMPgQ!cZAD*;c z@;QG&6M-&cjYF8Le?^Oi_0jJFIF70=qk@FCXR$doT8Pq#F_b$ff>u8gu9Ywm=!(fa zB^Hf|7Cz~-ySr@y_$5Rvk8qb!L85cgNpVNvIHA~5Z8u}sa5w%S?OOJVC~6|m6&Zd~ zjJtPK*rKo2zHM8Bk0s*aiE1(`NGNWK=v*;PIH?m`Z#eK#wA1jHzbYYtuGJYf@$|!U zLeng5o%)4MwX7iGMw`E6RFFsQ64W!= zdV7wKn=Hj?ggm8Cii8Rh+sDgd(5&x5{xpqfx8N<;s;rfN^0cUlK-Z{rSFqWEM{ZZVr^_Wda*G`8|J3%N?DAYq)87qkDbas^!A zo>E_!Gp&?~K$muY-`T5(SZsI-{a;1byU8&+r$457B?%QIw39VG+Y}L9E@*%Gih4J= zmUI_j#QwS_0$tjPw02L+idE7z;sKrB@upvQ&G0M<6(o!^6XMA~+B^3!PPeTIHWTR5 z&H=q~aW#lpbS|SOtr}d~*+NDI31i1y%u`R>Y4|{=knT|)mPZH71iFkfAqHWgUHvB% z?K!v3l2Jjz*x?tu=q<{d&X>HQkxb4lW&&Nt`2cZ(PI%_^<mQ*QwZqK>x(1CsE=C@66}fDpMUcM3o5mlNQ9(jGf$v+rsQ6X?w#O0SLF?4_|A#K9$bES)$>dC2@}r=jAiL>Uz%jNN{5u-*@*b{@+AT1&ebtIY(uj57!Zp`A5Y zn0?kjMgbJ|v8pjKJxCd4@4}j-j3t33Oo(N41w}ZAqJ-*Lv zUCZD8{5c|=DmRl+L85AqB6{{nGy2-Lt!wa&Xjgwqd^Hn+F6`k{HPg8|??FUarHPCR z5~HG%#3ZlBMqledJ?8^$SD$)LB+!LD9IfJP%(6TtqW(=+85Jas9FoOOSH2s4?V?Yc zEa&JPKthoe2?=yze?|FyCPZ7#5>Y1TmV^ot*!yI!0VunePXSM786#X<4~R-1CrqUF zfl-;g8dZ%}qZX8}AftkWw&s*~bhyx5Zy(bs+SB5wjyqKXLjqkGm8zOStF;=jr<}Kp z3KGT+gwZ}G&`z9|lks;aHlj=Sfbc-gDAj1jJ_-2PKGN|;9N z1EZ2^jL_ahN7|d1HP1&z1qox%!e}2&X(w&~?ZmYy?`}LE}nt5@Hdzc7xVN}wo z;)jAx{5dy9Mg@tURhW1zI8$h-j}u=|w6~^cpG?t?1iCOPX>X!(6}|%zasB$rs34); zJ{|ko(HQTxZvM;SL(#rftZgFDg;7cKDC4&5?}gqnDoEgnoU#bg9bO-b_Kc}-BqY#f zj&^M)ZdbkmiM(Sw8ROO1l@n%Dv}25A?^N%go$75R17%c@F!rN`HhOQ+m||C@a~Ufs zc9B3A#+a%)(W%KhL{xJLkx@ayI8A9p`>a>Pc*}*omSJ&2Oa!_x#^_F5&7nL`MD5zM zWK@tiQPU>6-+nB(>b*giYCZV(bSq`|rVtZ>E{ri%t52y|goW}lh3o_%IQ##l1WPYClV z67l_KpDB7qXNtx@3zbnp!Z%S6Nm&zDg_ zBC@$ny!-R9kfDEfT`8^_(v6Y0TC+?9y72we+1e(9`36Kd_FE#Og2dN}Oboi5X+&aB z_wM{f8fEbA^GpP~@cq-djGkTj3))C#_%az4B(!_!x9dBJ*^wAi!jCUYb7%F~B+!NLhVGJ4&VgJ+xGmfuqk;skYtZ=;%AIhQ-gyOj z=SZLn-=?Y#p>z7l^gd?3S}Ei2gYQE-@$XUKhw(lh(_Mh9ob=8|ua;3kLc14mk0G~B1iG{vF-_AvjAv+f zWlChGS8=Ory4v!G=Debq63KH5a+JbpH ziY0U+p6-VKq}`0&Up|=#bZK|SOT6eHj@HKvFBZ4u3*X&qDJ1`qQ9(k>sc>pn4}<7U zd5RXC_+(kr>Ya%|mzIsF!Hgc_H+{^|fN~+NCgO7WA2KRPEdFb|7+!Rs==4;(%`v%R zO};jb8Mqb?O$558KHnxvcLsRV&|LM3jI^cBv*`xmp=n#RFHVteU&)2;v9pRw*DA5!HaHM3|l85 zfi8=@N-QbN7Gp|`pq+-r_qTGtW?T71g(9HWY~x z-#=O)mR_dq_RU%K)1u`TIkeAApewcFQnAQi5u&$FbP6xVSEE(VR)P5$Do6x1juKhU zFtLW-YFC66|Be#-mJ6fR zb8T;8?cFN;7|Kpr@uZnR*Oj29Vz)LC2GOT}J^me?thqa(8bbw%q#;q_uliwPUHvOM zi-;IH6;@!PnLyX((52$ypa_F#+|rYuLb-}F+}s%|NNBkNRo^gimEM2sB;qO6$URik zOrT54VEA@Kgh5QDOoe@$J6Jvps>@J8!pK1=rt7_0DawZE=h;6o?q~xOfi5jG;?fe4 z;$@u}MYor|&V~A3@%=7iPiEX?77vgMdmlQTK=X+ z#>fGYO1&EXTj;{xhek_Ao{0%zxfv=*7`ao7e(*hIRhdHX{2BWrBY`gLeN=VY^_F}f z5r1mtVW=Qsf`>5*qCQbMhA{O1x!B9b>F^dtWP8=z^ z=ecSwcqJo&F6@2ij^en=d^izHntYZ~L1J8uXi*t8!T2)l%XH?y(%kv< zzZXmdy0G_A)qwAg{7)hp_Ps8nf<(jN>%=`(tj71s@9{;;ANnS)aoJ`f(1pDZ?NpaI zXZfUkMZfKqQ9&Zt!d2p(Hgk-AF!|w3%RTy1Fa8~9BG83>iKKU_;N+5vVT2nwC&YMa9~hN%SBA2xJonGy`nGU1DM%Q(Q;hZ@8##p5Qncg0 zg)WRrRo!mnDLTF+A43HRBU_hPUjM=sqkNW6FYdKO)XHNb(1lS+8M7#7=5HbrZsudC zAW`T+jHqlKDbCQp)Pi>tem;HMzfiOzfi8?nRgE0mh#x>itKv=!6(pXtix!=BO)%QW zwDFbs{&d=qd4HCXKo>?Oi*eR-=71p=d8aJ!ff(b|lb+ zQAsC$Z{^~15)qtrPeug^r{k-{RiSf?_92u!XW38D{*$5|33Opps_LK$$(9{N9FILH zqk;sEIOt|EMf*i+9}6kkkwBL@+98J!!+16F3F*;}F{Y|@DaTewc8)EE3KB*pEpfiy z8#FaC$~B?bMFL$IV>I5StaU4Br=jhn!VDE8j6ASLv^!GlR;Db1MJRTWKo`asjly60 z@qZDqVpw5@3KE4!MT_NbO)#RpBE@bLecK-tb21U=!Wg3+UaE|@nTQzo0t^)-IwY(U z+wHU((cX<>_dUh#{K3CvB+!L1rmD`AU;8N$xen%Js30-_$trR9nmIL9zSr z_dOX2bYYCqS((1lT%o$ak@cD6T$v1DX^ z6O-t>i|;=>8{&t<54ePlMNJA4M$SVc67y0X;SH2W_y)xl{#)q6_fKPL%2hm_i05KS zh6)n-=0=N)eoqjq>)%}uimTFeBR7QN3JG-K`&ZTRM|}BQL`=I|f}w)MnOp0`s<*9T zr2gHVIlDf8i|!lLu2aB7pbOtWos=Ep&R-_Np=J?=3KE`qSBnjgQ!aXaT(X8M%O9js z#_|I>O$55|{nIYMI2V2^5$g&&F;tMinT4u4Y;@oY(;O%FuxBz7=)#D}&Y2mPoimf+ zdp7cC>QRF4Mpeg9e(L1x{L~B;B#gY(MwC2>Z^=KSmDIxY&XGVDz8h5y4fN;V5+T1W z%TPhW@?o9$_>a|ylCt#9uhU9u8G7ePpbOs(-D3%C!dIZ3QLp-C87fG8t+rbHeR+-% zB?ZU2^AqV5>pgnsNT3Vf4Xqk9apPl&aC0ijP(cFcZFF`p)P?t^8Ket+6Olj{zD-rt zGK@FN&M?mK_rdpJ74_jOLSy&lFSjInG(il)kcG0{6zf zs)<0Ck#pUcc{QYL>{b3!e7tj2XQ&{dWoEzZGfzy@pW&a(@$v&Yk;2zB5$M8s8!eu@ zbNnsNJF(ydcZLcQIB%mF3uVV2McMHi9BF8p-QkQ*%d@|D`cg4k|E;tP{Epcf_!%ll zXxaEHo?b5A)c+1G%YQRkr=D5U+eDyC%l@y9jWV7A)jSv~NN6=Xeo(&q>}O1+Y922) zhI7uFEhYk8M%4{*hyHggqiP;0(c#?EAqLwGrLIVoVq4I8xNSZB87fFT4pMXce_a z{Hc_puy|j|rdV3)gfiA6nT!jZa#kTde^SdLB>U9wviZWD?Fe)+{L@ZS%Jw+#e z8}xZ3BY`fXVyXBjm$s71QT0Di(#mL9n3S`jaO8T7h(w*fpDoA*|ZYmBb6)UcLsu6xEgSk20R=#rQD-sgu;_LZ} zX`u(jCi|B(R#l&nR@}XrRzB;_DG3!Mdb-sYL&6RlL_*1qT%SR7F12BrgbEV9j@K9S z#2z;Ouf{iM$^GeU<@eUOVj|GBWngu&V%0cVF7y88w;3k2(=F?t*0xo%ju6 zJs2uT7?nQ7?)rB(gouxH)?nuU5a=>0;TnXM>Wns~s)*Yn2QXBSFzPFc$MpVVHxaj} z4sU~{W&&MC#ZoazCw5Ww({0(+PZ=sm7A(p_x-D(Kf|8PsFo!@Bp3ERbkl+=jSIyta*xKfFeylAHMl&ML>v8J2c!OZ>7M>3 z0$teqsOny!B>y+famF5R$xuO}@r9A%noluefc^&iQmr_epBq$y5qx8LBgoc zXY_-E{U2IpQby8x6>FLZbYbtKs^{ihw@f8sgy_ytLBgoKYV?C+saM-W{oqpS)sR3J z_CB=sN>z?`5D{>@I70;qqjIX(1lS+Gf1kP;7GTAlW(+S zs34(Llk6Y3%V;0>%Kor)qZxhcyFMlYT^N;A&nw`aC5VX7?mR;U39a(#a=*ReFuljw zPgRGyQy&%3+}%W=3!_q1hp$bu^dX`~vw92_B(%!idw=aW+Q(0-I+T-cL43YZ+(e)Y zqmnX=Q`Mo|M67G(!cak?$^aj+@WNQ5eXI_(T3*r!AT-A-83}Y@RH|xUsyg(9h-Qm2 zWK@vA5r?W?{8Y*^oTB}-%Ssc0E_1YBqFRmlKJ`!Rd%Zowcr|J@ichIGz!;-9*sUmk zv$2E4e^m#Qf`nFCGOp8hBiaj4>`tPd^UmA0CIVd;V{}U>A|GFgh)J0p87fHhN$(-1 zj@@NM`y`6p+Z65RDRz-S7seQ!R;Nk`kBA6a+Lob$gi)*2i1sZ1cb4fVX{VtpZz9lz zF{Y{l|HRUrh?6@-h6)l!9d0AqV<~n&()el|#V!))!Wg4$Rs)R6;h@AhHW~d;6<5E?P$Qz=Mkn@LS$Vi|I zqmnXnQ)SYwl6T_Uvz-~nl2)1Y>*}52D~d#X|CB?Bs-O0IoWUJ_*V&{XVboDIBJuCV z`S@v6HzVptM-zcAeE+mRxF9z_l!%@;yD(IcFsk?(kys=#yVmcW#cfRly72we81B<2 zO8`{|jw{=dp@M`_Bik4uf26poL1XGAyF?R#E`0y0n&o`c;z`8QE6o`yNW4DjBOZGm zYmD35&r~e=X(jbfnFb~TUHJZ0)y?mi@g zs{UG$m;W$V@d=(2$nZTIHFEVR!FQvoAE^%Su74dioV9U{RqADTa=x0E4_0h z(1q`YYNee0ZOJ5J(V{?x3KB+bX|aPodj0kJlcfvISl*QDXd=*s??zQ`WInf8i1;?6 zGeZT5JuiL423}}3!QV|)W2jp5WVIW&mc0y+I zUdxMFolOL~@OM+yR_AY9P7u-bST}|W5;$X}eS__37Av*d%&RR;1iJ8-ru}oOn7+I6 zRxaaP5X1j>{H=_-=*DmL7gc3%oG;Wj)4e}K1&NJ^y~U3=4;gdL)B-OoU1J__&WQs| z1iEm>N_9*cKebpFzfGv>7R*pV0%xrBcZ^B1Ost&6%~?9sG_S?E?ENRM;_y|+jk$Bf zH>WJU{(hTKrQJw|3KHQbi;ERnCWt@unQ%S&pZUE10eAh(2or&>uiiz)!L|hB8M9v> zvCQrf>N_uV3_}G8sZ?HZ^Ipk#M(@Bwmb}7Nu1iTXfv!0rPGa3tRQXMx8#K$}USym9S&TS||1&Jh< zCgeM)7)0kyA(jSoemBOghlxPfu~lip_i#mAsLu@wB?MYLi5PXRCqo5^ZLQ*jDQ`|1 z#P)K{EMKXQ`um5!i9pw$a&bb##FNGv*^MxFOC}NhS_LpvkodkoTA20al=w$qRV%Zw zs3o4xE%hJfW+KqlW_Gj?ES(aU=xcqKrv2d#6A?YICPM{@<(XkZ%e2!5vF6W7t{bgD z?g-6kBG6UkLYVM-3Egwgt*ttzm)*{FA);29TnrT?4)qx%v z1iBg(9VF~(kSrd4sjVTOKjF^ZC&I7T4jC0BejM@?+PwRZSQ;?VH_pe(@AiBrA%U({ zX}-daf0M;Y-%d27+1-SOzRYUncdfZAp@KxXvy-q|NHK_nKu_PYL#%wq7EdHpkl0wq zS?E7A#rQj3oyp_ds*{y(dFhpjKvxTwc)!ap|0A^g^8qyTI^wufMg@sny_|&*CB^u4 z&$dqT)lU50&1WXib)$2~$8#HAyw1{TmS-D0UCNG85>^n-uRy zX@?9VYU2>jfliC;9oCwmf<))@&ccPEsp49_omYq+!bQ@G*Wn>%0$qJF;{A?a`j41G z+3G@$eX?A-+K-`vM8HdD!D(r#n8U$=R#L|kQICkn|3jdwbKzrtj+7@poA^9GoV!hD zIbC{>WvC!g`M0z1j&gGj(Z8bQ7ld;veG?z|G85>!QtO!C?-FMW;z6lM?ki<`JLocn zp@Kxay!nI}Io0S5m`fy=OecQ3lrj_OD&TX>?^um92C+QvGVaOQZ`{6V(-|sAd_4Tw zZ`!+5kuqP(b?nLA;ONYT;=Ae7xs4hCP|@;%~y= zx0&8sV(&wFIoGYU{2P?OU5yyeP(i}Y^@(8p+h+V7jj2})SV3ndBF2~qbYbs9JEMc< zTXGVyU}*?L1qtC^nov4TG5WzS)T`~H6A<@n3^ftx!rn(!t%rtKHW0D>#W02n5`T}1 z6D}7yWyDnv>eUKTB<4)(X(G^ty^pE}ZsRRl_PrpXH$w%9dDo(aqE$~DEvn%{cguJh zw-;?2U?R|ky${tmr1~Y}h}c290H`4GwtTp7AXl={&Pz}K!;PdbLk9I~NT3UQA3AGr z;08CGh>J~YF;tM4w{?(kFE-iu!ZoK}O{Q<+w9>gu1iG;Ip)8wJzeFP*Eo}q%o>IHE^@w%ss_Mt`ldL!DAKo>@(st$PE))Gs^-iad^DoC9B z5-sd%ecEUr0b6-XbJ~?zVd-rm(1lT{s#Atmx3nSR!n{5V6(sWdg$r{UCL8UeDnZ3}8v@j9q!l+c$B~-0v77@ipw`8aw5%F}8F#pwm?W6Gi8(eehYg3xkG7;#)sHB@n zM-Ot%h;YfM#ZW<_wwssmeN>9kKJHVrU#B(XeA{xF2y|go(kc#B>$yfmY_Z%76(n%P zp{nJkIC3qheFSdUAtQk|80C$s+tt#5h`Bi?FjSDZk$;om zGUT)o?MEnf$I%*c_~a2L0$mtms@nUdhowIe1Fw%{s37sAXSmR=XR;CPm4{Wgh;$x~ z59?zh(1kHZkw_H;8WX{7?#oa?;(Xa)VOi-EBic_&7rg!d1r@WWv7;PfZh3|$k=@kCXc@xp@_h^O+5*zk-32s^cMadR= z=czP$eYz;fM4$`bjjHCN`V7fL#I@+hP(cFcZFGm1-g$2N`W$-Q%0!?G-=?ZI+E>|f zEZ=3{7rUl0d(6#Wh2@209b3s*;{7;i9<-bcBW z?Jb`4K9E2c{%-W^Qf~NyM3mk$nW2J2@nkRIcj^CTkTr^Y=Zf6lYkBx{w243${%#Z{ zK}lQzB4SUDVW=R1Ggehqsph~~dLQTMeIS7@{H3WD#HXB=F7#U+>o}d^|2zIx0oT2R z7+TB7Ub7UpI9OhWrTdP2GM%A<#Ie+RLS*~@=A5THo#Qs=yU3*vHxuZ>87rOg&P?Rq z7n4u)dTC{-Ab~Sh+Fi<9m-BAoV2MmJ&xCOnRFEj;7H+f8 zSZaRBl2+0;F*l9jkU-aO$8ei{em>_?33(L}&NRnC1qr8B(Kh?a_PS|*ByF8~6V2$6 zKv%Ef(Kh?awz#mUtgVFy(ONhvNSwQT)HZtFNn^&+DDIJ@gbEUuCw{jr86z8KoxfbpA#I7Y@)Mq3FcIil>;KyprbyzZK4s|4wvRf)zk9A4#@GGna#>l!I00$qWR@+srzB^b~6vaYVQtfZBnSM0Tf z3KES2iYU^m6UH;%{Z&ee*lFbpl|5-9&~jx4lNbKugU9q1% z&(YXh>KtL^k5)NtBG5I!wZ39M5nrcaOX(M#Z*T5)MM4FMf&1z!_7m|VT{=oV=?wj@ zMrkGjUEcSbD)y88FF%!%wNqh?PKBX@#LE};75j75Q4IYa9L_D`GO&&n`6VvEi1`_Bx zbk|3*pZ#z$4{@vB_9?Efc#Ml$gapAU{K&KP()9C~x(3Sk%N3oxP z=(yvFe3RgxZlv~~Ve+YE-&g-kZY;edR9QYUVqvjX6 zp>GE;RFH_?*ie!CA2CiRJbm;=?r32r=6Mb@5$I~Ug;$z3i#3S5yVgoiB0_z`I67el zW1Q>Ti`!09?KW-C1IG`ls#HBEZ8$`?ej7|TDM$?3?q#!&cfD(-N?L8F!c+e-5$MA4 z1LfbPoa$Otl9Ib8GgOdB_71k$XLrkrewV7!T&)$&)sR3JjvrL@cWOzw3=vCcK8Oku zpT%&SeKpFRs*z}GOP;j0gao>9{6M#UDW|$XL<3sCLIsJHQnby!H{pGyguIB_;1b$t zKmuJjexQtti`?Z%B0jbWV5lIGkSES&-__p`UR37jHu>eDZYBaBgcg=>Aw!9<`7#}AZWlya&^Yv07vs*DN}zn(v`#RMf8 zBblNrjz~@EOC3bx5+u-t;|E&PFOVW>xpBLH*d(KZ1dawM(`~&6QbL)x3122z8AfvqIo5|mZ7)qyJP(fm3`!t(VFU2_ZvgU9#IiA*DuePjVBG83VN!g~QCh`#?BJ);f zs31|S&SP8WbxB71NNn|&yokmOT@+PD0$muDl!5<-tGs}SiP2dyDoCWJez$GdFN=fp zQ!jfd+8a=`&!=cd0$t{4Z%#SY8xrwre6)-T5;&5j`#5n$WQQ7~6HE1-&M?A53(mAP z`INmnh*7Dk`M#Ey3v|rl%DHuYv)T8ymF>J7 zOFPwlXr~$pbYWD|3G9SGSs|hr?S`X*#Mv2XHv6eC|4Pl|A5<5hK$gFWKo>@(s^+Jh z>dv%=e0feYh6)m)BOlxRFC`i6W8JAH@-I5MJh5PP6M-&_N;>OIIo0#gSaj0vstgq* z4wlHYop~i2?IZe%tDJ}O_1#{ZB_n|@j7rK1%-5Fl67fg;C8L7G$OK0v^;)9QKHB%Y zB?Zwbq~OWXCIVgNX#acW8)+aBqi=7JQ9%M{VN|pDU_-fe&({gV^GstH;puT}ZAFyq zJr;~gs#1B+N4~Q80hdWGT!nU+A+CKJ0?h=3!{>51J>y(uOQ+K z?aH8n#Lh8sHv8Uo=|^qlpR`jQOFPv_pbMjtcKfJ;zd~DcajnwAZ9)M*>|Km8yDop10hd2)DRQ85JZtO)R1;xOT#5AL^tx zQd{Z`)?eFTBG6@y_US{iq;^CcExBGs1qob1ps&xEuJVu$<9#hXrZ9}~(1u5Crvgvu z<136xI#2yQP`xc^4ns?5B!5Yz&d} z)BV~z)q9u-bYWDgYA>oekcWsV-MTYWkf^&V(>AOfGiLP9&W@26Q*RLRNH7uT!ln@wh@AaQ)^McauuML$_Z85g&N$w$W}a2wZ5FcIkT&i%w@KW+H8YlLiV zdD6$-dm=*xiQHkYY{Ty+8P90fbfw(^5DEHmMPAqymilKr;(X2Ac{2V8Y zXY`F^@~09Pxo24;Oa!`K+;COw_dm9sN|QSzr2Dp8G@PM=M83f_lyYt3#jiADrR;l) z&&yZ)hI8Yu4KoqwD$>7(vM(UsxSR3t@@=_fP&l{q{9uL(61Xx&r`yh7r_pPB%SFl> zfdsm6y^J!-4ZSN*9C*q1edb_>|1PdyAx$IX6`$pnyT5Vu3I>^0yl|DPPGy>7jy+(k zstwKhDZf3_Ke0xcAchJOkz?B^){pzdxB72Y(b<7%JEPTl_A(LZ+EBEk(sSWn;~B#; zad8<+!Z}xWW%{Vy`mH^hO$>Ept#@Z|E$((V5$M`*qla>Q#xCPN=fj2t zSVS-8GopSsh6)n>yAMz-$F>{Kh`C>Ytqw@wCQj~RBG6TF%s|C{dwH!_F;-%G8Lp*g zCx!|V?T3$2E?$n&Z%eD{!ZyX&&->lDJfAz72y|7vF;cPT1DN=x6dPJ(D_68-TZRe} zu>~h8_6!?;3nf{u*!GsoltBOqbp8H5L9yqJ`j%0a4IyGIWtu_-iM~Iriaj^gk~<~X zBs#6$kupsofv%WqR^{2Xbw;MCIrYl29YkdHXu?oIA}M{2;!=6Fcu>#Wa>1<#TTi3c zr(@ks1iHS*%~1k#uNGVCcLAC>mSp;P*V~Pug2Y0HFlC-cl#%`WP!T8An^p&Rg}Rss zbj3edpqwrkCHB;B@NDXqpUom-TzD~t3KEa=M=0N1mm0)^0~vA;n%(VL|5HW+U9nFW zDcin8im&x-?BC_jRO^Lu4zSNMDoFhEDN?a#W1o2>L7q#uIhr3$FcIjwdpc6F=ZOFG zJ4q+@G>?-}L89-G<%&HI{hbe?a%md9mgqjjM4)T#oaKr=JATt~Q)O2o0{!~Qs34Ki zX_aEn^50^b{uJlHDzpe+BFD9b-8NQlQ)DfYSmR7pVk zuaW>NNStt3r`W3%mE)FXtRFJU# z-mLfz8eu%+^Tgd!#x^V8o&CQA{bmH%>Lj$~5c-_07k zQ~5kQQ1rQ~J>%*XNqRTQ%D>+>(nO%^SLhz4<=J*((C+Q@jL<7gx<1CrUw%4TLIsKR ziF=e;=i3|4h@(AJ){6FP2b&3WT@Bo?Jjn1jh;+)pwu45mKkw9(Q9)wmfj!F4A|1pt zs#bNn7ZDN>v;T)cSLDC@m11?98^q6M&t&a}g8S8Zbk@MGAaVEU9;NBu9mFB}w=r*fCEadAI-(S z*?kn<(f@URuVvErPckYIIE>@oE8z6zM@1qYW_R2u*zV>2|GcRz@201WPkf>8^ zpRysSy?9t3^?m=VFYB`T)QQ|D|Hw$7Yh}nm<=iGwuh~F(2Zb`M+UW7V)0($sIC@#v zWU|s(-l%6!!Vw3pGx(Kf?yDYfd0Mn!s338-@C>Ew&viz2vAmSw_A345(`h7w1iEm< zLC=_6iR~f6iSlxyf`t5Jj*_RzYSB|aDZ7hCGArnAU%8%5Oa!`c#G$IW2UcVQiCB8G zAwvZTx3XbMSo


    {BgINmh%_0UT}OW+KpqBM!>)Pt{1?(W$V-_p2~ekcg`jp`7NI z8e^ZhuK8I>TDjX2R?I}83r8Guhj)4*R)&bV)Ts18CHQ3KESUFIVifYwG<QIOzOt*<{(Dh}QcL z%BUcbckU|1UfF?#OqFZVNaicw&qSaL#}BGH;lWJVod|cTaD)mHI2xdwXZb6!!*kvy z9Lx$}7~!jeW+~sNt`+Z6yThoYyyt7Gu#?c>vcitGVJ`)rDKB+!LXsj4qS ztFeznh#vJADo9jo6`|zlz0_zQb12%w=}Uc%q8$lzVN_Dqy8abd2oXU8Dlk-#*uX7S z?3IBkPb=0BbS$=nSQ_h-rjDB9yQ15E_F%+cQP^&FizFt3x03KBSyRn=S3HQ4bPV-mlQ z7Z^tPl_cB#=m7ErV=zOmQxqkcUTfi8?nRedqA78^k33Opps%n>eRoFwyCzC`i3l$^=){9c?wYF|9D8_0~ zZ!m>s#7LkEqmp8GoD1tn#C)1{qk_bud#ecf0>*-rO&30+V4FpTh-p^KC? z?OW#Dh^!CDcq zxs3-y1&M8=mn!y3X89<}lj!6?!NIjm1iCOPRkafJ8%K#4PSw&-K_a+qlwz;pcAldB z7>$-npDJS_(1lS+xx&2MSSk^2w8n%A65csiEA|Q%Psh8kCA3o1wWyPcKo>?OeM|VV zY(5dWV{u={`m#8;5`RAUD1iCOPRkd-ZBfCPx+o0<*DoA|zvQe>D zkZk$nqO8?}Tub#Jkw6zlC5?UNUX`_)lRK&ABq~T$X%M5-KQzLqIhk>DzPy{Fz3a19 zCIVgNXuq~MTqjn#iZUul;F<%i>H9Wf^0#rm%aq0pBiy^$Ql;Vk2)$w*My0AojcLTZ z-L`VBV;eD4kQg|1sba5?cY>n40PT$Wwe>I&=)$N})xW4Ett8?ZRpCPgiPQa~6nkwz zxn4bXhjvD-R80^GbYWDgYR(%C*&8ClX&!o&k>A5Qzj<&o4rN|hH)gvkZ#WmI=5I6@vx zMA=h*MS8PhB+RAVxX4GS-Ai=+k zQmWb(81*1m3l=uiErBbrzov;mSJ!5%m5m?g7?n@n7Vu*`|7AW~n$={eAYmD>M!COt zwozT>$^wz)xst&hQL2~-bmhuir}Ql`!>HhLeq(c1uC{k#IeF zU;Q}wG=S~$cd$JAT+T$Gt3pJy!WW%rRP8B}*_!oU+domxEXz4RO1<-s3F}M*x-!QyCFpXd;Hs}W5Azz#RuRDkEs;?{LaJg@+;2ZNh;4!0*>0NR$p!lw}LkgeaZJPiF>?(CqHk z!X739T{U_rif4~Bp_sl4Q2QrkS|s9Lg=R7;NOU`KQrS^B&LDcy4GT{?=`{aXH4}lZ zWphp{arcf2Tk2|6d*bL8M-w6(BZ|tXAh9UnlrnTev@lyIt{u$58qw;YeDslo1iJpU zo>Klaix%R4Yx_8hLUJ;#diJ86ibOP(dQSezNj8bD(hNq(Y{7ku^nmT-;f> zXw&}keTnIkNOwk`_9wJ>BG_>-aN^eh4K|x|)wNz#N z4^QJ6D;kYu`(wxZ-h6sc#&6W$KC+VIQEvS^h~E`eJ#%j?>$c?qH@)^&x@%(pk|8l^ z15-Q-{1Ce8-^2*|UL88t-g1e)S4f}>zbkYWXWNDrriDcSjf=7 ziHtJCHlT_+E9iTL1iJ9MLbd2>4rL9Acv5SYj0zHU_AAP|Luo<*{hR1mqX!#AJ0^=` zLQDj@@Vi3Q9nbb;1BrM-=c-XbV#BMGO0;jB@rAoj->dU9|7csWnTbFbepgiWdFudn zjR=Wup`n7rwoj*&qA}6Jr^qq%z1la@jYZK}=PpZ%nh12^cZDh<46ex{iD*CPkAw;m zqtBjJ(%*y`U%10sW>}h^pHWYm2z23hMO8g0Gi+;Z4WQh12^Azl#w9Cb{Rat+^l#$e zLEGiCw70$W>fa^;UHFxtj3<;CRwHUk?h-0UV4J7AWQE4F(GN2c3hvn?V}yJ6N>YaA z{~#=(u?R*bWn(`yjyW{S;#}#zGb%`I>S$A*{Po0WA1lMhu(P)ImRO2*B+!LXNw?1y zhp_8J3=Wi9`*E7lKGG>;hQHJa-9^Q9+`K`zdAllsKb(40=ho255hXyNxCtrF&Zx?|~2r$vTr<4pv*Fe+)zN%uJ05|N8;F{6USE{|lT zdBbpFu0BG}P1#he6z$;@?MR>tqmue4%GffSh{~B+5-LdSf03-TI5)^>A1x@_uTiuY zr)Wn4T^NcA1ER#|}!UAW?B-ic+_bm(X7yA*-8nv4eD`Xp2jji9i=dCC!}+ z=hlf=?>bAUAh9kfMQJHI8|`BkWsLNs5%RC;jwS+K=4dbOv{NTWwMt4v1qmE$(K&#Z zlbH9^HwhCu&yX>~k9J_}2a0wi(1lS+` zg;7Z-&#sMRDcUoKRW}jn!l4r4r0xV2KzLMz@DoFgQ7r~SciaR*HVx-cqL^$X>g{7S^^mEjU9NUZ#mqC6PsEcof|V;kj|oIs8LRe4c4-mk9Se|*ckQ+`bSN5R%fiAbQ!9PKSS zWD~dV4^Bh{3G@7;@Y8=-o=Ks;<8StnF~WUEoK|K9Zx*Ie`@pDF)eyRMRx1BiZsd5lhZxU^+dRp_m)vXBL9SB+7y%_ig$=_UeQ7?pIp|4l2_oQVB7VOEY-(XuPE9b==A4IigqN>g;A-h$EhBGM%+B+FQI}&t0AdMLa%tg?DmmN zH3v3Q|1p@N9SL+{RH|y-b=kzZ7e^COLE;NNBcG?2-=3e^_^NTcow9}ckA4pZn+SB7 zqrHbPm0e2f#(j`|WsD_^-H7?gN?yvYnjO2(CroA6a+T$NIr++{AaQJ0vSLe~FHE7f zLKzp&Ol4ChCU86FRxlCh%A&q@{h(lh)7wXlV$<1%1jQ%Kw~UMm5~=%Bl=3+Pg^Btz z8q}M{zCFp{-uKCABG8pa-;w~yOK7Y=qqdio1rGC0EYjkGgbET>r=%(!np74>>(7`T zKaK76b+Ft&ebz*v>wIFWvh2OH@r?MQGnjQ#|HONj_DHB8u{8e~#cRe*zrp%5N=={6 zUhn(H70bWOM4;8`((-&6Cfi9lDd<4L8(u%pH^E@xblmaee!lZPZEqJqT6U`6RLAi;P>9?$pEg(_D5 z;kOJEfvzdrZAz~V=Zt5}*>FypO!p1$JieTW3KDgWBq_ZYUK3JlzNB;dy$XMnoM^4j zrGle`1iC7fPg34(eyGO}N(5&x5{xt0wQ&Y}J7dOy-gKCZvDoFg?nW#Kjlv~XHI~sj_D)nq^il2AcnaK{shvsV$Z*zgqkt+u+~l+N|F@}A8q znFw@UU2#I`*`|o-azXn$HoM=Dy7aK}dG^+oP(eZ*b4+RXw5(VqT_eiT-CgZQ?uL^U^+%ysB!g~m+dNlm3q=Z@d$g|ZXe9wby z@ye$YxD>t49+QHu(=a4%F8MZvuQ z6_Ue=BDnY7dsOSLT1S3&j^WLn>-xQa^?L8`$8eH6>&f$cZ?~8D*dQ0V_f4f+ZHH80 zN@Il;CaRZB&~|mJXu2f1{z|ng?zO2{zs&?!@v+hM@;=MmMB(4^sjM)u;OQRi=CfLI zGxu7VOgCPrFY(M!Wk_Ee!Bu>0bbbBwXX-y7c4r@{vcg1(uw7b#-+fJ&T%TXu*$&72 zG0bp2eDqR#Fh{`@IMWrYb|--3DiCF?kI;f;RtUz&~JDn6P>J{jp!c158N zAi!DSk)kS==G@8qz^wg^Bz-_GsOA*D{Y_@rKLYXYHPL z`BWyjiuW6y!iz6;k6%UpTTEqziGpo+X<58{&9zHQW;|1kr@oo!2gw9i@qR;3j!%!( zl^{|^I#gDe;1x=`{y;A3Y>9WZ{k3Ck1XuB%*7cVj$;xotKR%3Wpz!{woOQQ0s9Jrw zVa~+*{F`(==)_GW7Wb&{^Y&F(VPaU3U0RuYjpUkVjjN~=y)r{_eq?)FOl5+r_&4FY zixl%2Af&NgDl1Iz`Y&Dg{PI|>iGB5Al*2}F74HRIulo0Xr76C|HSuqz@ZTPJVY~KI zQQ5t6j<=`ltyf)APFHkD>bSuQD@^dpH(men`XW`u-JsM&FO>&PsJ3~=B6Ax#x6M@+!Mk^=uT)rJ!t3aC zEq2-xx#7|(_#HdDY*Z?s|L(r912%%I>Xi=Bav5oovtX4)X)N75ojaO?ID!#usq?sG`*$A$h9~!KQ3)aXXw~cMIcoM2S9paGEBH|TRm{{F& zur}xGI+G9|w@^R9yUO*MDid5aZ`)w4R^4d%S{5Tm@mLwzeHER&GhAhbi5_kHXosf8 zm_*R)CL9y z3VW&G`+?d9?`XGQ`S@cVa$>mR!cOSMb$j_=*Xx;^U9W19%d90HR2#I!;!Yuyt0}&wYPc^+nI+ElAI1f~(ju zx}N7&uu^`xLt5};hr-8s^z9zn3H6Y7e+%uRc#@g^5~uT5HR9Z83W~eQGmDJ&JMa7G3Yy z2(IE|qw7!3&QOy;IGa3BSz%&G|E5~P(e0*7a$^+ycm_4;k6D+|$|!8z@`!U_`!>4Dm*@mn&EVE#Jl1{{yUU+1Yza24-2j1--(qHY4w zcj5w-6(;C(|Z)&KlR=;*CMNLb9de6-=yo6ye29=OF5)3 z@bGJOSLkQbkS0{d_IDE-=AW{F`*W-2^Z75Qv(1ie-ff?oW>= z16s7f7rZ#j) zr`w%VSYd)Y^Xq!rXfJoq{w3)b%?fTPRnjI;6GN4=Mcbat;C0y545& z^W+(m9a5FRi?+OpOQX_VmzTKQIToCCq3gZ+K1_Zh;LU5vV_OOa6J2}6yX5Z=nzn=6YMw23K)r2d)f$5z12#o~t+5(ma@W*&xa_bm}3qYxcp!J4$z4ukIjY zg#RtB;p<8JFOVGean#B#|je{I{CP)M7IA*K2p+< z26YR0UQBQmXWHOx`}H0rBhQN!Ci?Ho;j*%q5A;e=j^Imm=hWf0d>pRgY#v>gLc^64 zAc`S-nH47TA4^QJl9c_5M<}VtMQ($hvP^IlXAEI%>0~wKAc&7s?dd~Ia8?p#I{lfR z+;auy)@DAfu*2Kd*zS5&^`QIwU{|7R#K^PBo60z(Kd-z}SYe`BwkX#qMT+XXQyD@^>95azP7;`hVt#@xaEa61!R#jeD&sOLt- zm^;`2a|l^sVtsIs%S!J3y7iJGU=-&((odP-Dt4u=pNik9_<`_5`Y9_+EUf0^vN9(_ z3!PSq;i=C^6J&y`*p;|mWsO#ffH2YoSz%)2>KraBn>^>6JxT=5k5r_kF~L>rO7sNW zFjWZ!aSTc0tT3@)XJU$#G=6qwxZ;7FhC9d&XM(HPl^7%Qte|8AF)n3r3=Y_5tyE??hW>7!#aVrt6!s#U)?B^VP03Cotc~ zIwu|`EOKQJJ>)(=*p2S z+4oFv6}wW`mz?}f`3=Nq%)V!Zi8IxMTrGkRoA-~`m@{Z}XmTKRnhCCASEA!du`o9g zu|BJl6((AJsPD3pd&lnGsTg^wO)-~+39e#S>iWXP;YvncDl1IXpPa)rszJJ$$(k!u zwDKM^2VBTeWP+>MmB`^;H^5Eo9N5yy3KJ{mB&O^?lWu0qhQjSN;r6?5I}=>RuGIBu z!6g)L5FhIFcCy06!$m$Rc^e!tlSwa>sh~8$O!C&Q5jKLW*p<5O-LPA7GZ1Uu;Eba4 zfCf-?irho#`$3C0~~J?=QHFp=ALpTCtL>076N^1PJ}DRbO8g&n?km7ilNBcBH}*-XaXaJusF^pH;=;G> z-<&ON1Xr;u@jC`LOilr@>q$!|D@+*f*;OIq{J03W$H48A;C3dsid~5=1+RYf%OF@` z;*WL>{H^;(mKxpsn&WN|g}VV0T*a=$Y>`qGgr7mQ!5xPcCeBse=Wo4#ZlTeLG;J{gB2#)<=f|Py-f&ZDhQczZ6Aww117kNU5V9B zN4`sL(bggLJo7~1axNL69aCpOX-mC&BvI} zFnCkajcN{Q;*W1_1Xrc3te+B6Dc#)0wLw8i-q8+ec-?afD@-i?cII-{_{MC7B(lC=$2gZqs#w!s8f$z6T?t>1BV zP>`?jJ4WDlu);(YG1}kSS7C!U`5OCb3icHfT-Cg2qQ7-KDkVPkHIBzu91m8Q2+xr{ zAmh5C>uu}w_cQLb`EjpZcHA!@{fuYPmv|Osg^8zY z!vd^#wY{f)69RE9nSnPiCb+8H$*=%xWTIX2csDT(Z+EOPal1`afHl^);Ojxb7`a=6 zu?!}-s?}dn0aj-5_{2McF*Qmt5F zqDa!+04o`&PSi-z=qPs_=_*Wc)#yie1FSrjFI8rUM!HHE(p6Yt;>fKJ0oO-4k+x~9 z!D`WCo;U}0&O2By%mi0OXZ;v3dY;ovCQS;C6eodLUM$GT3KNU^WtYe7QB2}t$~v*& z+(5BV$DuZYt3pO*m#q|x!Qu{40`ckjASWwKylaRa6RspP3nF*HxqdbAuJ#Mw)!5+| zPc90`7|UQ+BB$Z(KEE)GWfa3$1}jX|_lyd##`@Z*;{{`^uOmk8nBXdQrLI@^i*OSM zFgnNz6Ww>m2UzLZ3li=KM&7nJ+|C47u`96_K+**xZ@Uljwpn4KX7%F%Rubl4dn<^c z7|ZyCG(je~ie0Jejhzid2Z)_W6J&*npy_u5tVFi@v$}}GFtXhm9V(dMDt0Bt0Mdtx zgF$pbsue3tl-cniz)A+13b%j8H{tpnI@t)WVpn3W^MD276A-03cW|=8M1kM3%Vn1< z=K0YcZZ|TKenZC)Cb)`SiIlOyvEptJb<%n}Sz#hy^#byhok`~T(F$(QgOQ2Ca61!R zWp{gnrOBcUqE!1ooUAZ$^PZ<{<*{I_&o5)Fj~yP+YVLg4oMI6wUG<%bEbVpn1u?!R@y0}!q7b%_-wo;^PnU}eQmlyzYnMkX2}#gz%J zVpn4JXREy8P7t|~;>rpW-!;7(U?pJ=IoLoTGg^4vj+2!1$6*D<&E8Je> z;A`;)+|C47u`6}Gci3w20oF(5soBoS3KQ9i6_8IYNixrm9&q~_xV=8y&IDJnD|P*V z7%$EOQQ+sEPF9%6dC^nO9lGBzx2Af%tNZyy8~e4Q{%08^KlVN?rfu zqNkfE67@x8g^8%@9|Dg2FA4LHxK`o?biYVKnjjNg#je!#`+a(d7eRDKnjkAod@Yh) zwi4Mc!tE3Av{V@xZcK0$yHeL1U7Rb1f*4v}bh5(4$WQs@G9#1B^P@Z5o(1QJ2i(pC zSFtN~{q@W^(Gx_ID{Y*tFcIwZlsgRBZ=N5)QoQJmKB>tqdfEuCVprmLJa>sLK-`J! z=46G5W<4s&A@vi@^J5d-{u=%Ccf;*WaFyNdbH+aRn~s?SoiKBN{hG4)Zb031r+X}e zJ%&DzU*7n6401>-n_p8{VWQUFI|12#OflX55Z*Q1-Vokpf~(kL$R^L7=61U`(t%lF zBJuY704q

    UmGm$Yec)Ojahiian<5`=n~3k;$65@h6oPChETOkgZ(Hwmo`?5AimU zqii`R6I{g}Ll5l7BgA_kwjvvl6($;9&M!Y~oMh$?>hNw%E>G!P1<^)u6?+VG)z&W; z_kf7b<>zFDi4$u*<@`VIH{G5iEKZz~^jZwK*2YF~6?;tAcLc?YGeE5A66j=wiE7O% z$zGm`rrQg`yQlDOFdW`xf~(k-cv^apQ#cstkp76gt?+SXU%BSJ512Pxl_T#PUliY- z%`B{sa7bhBpHx_3BD~w@fH1@Xt?gc-p000sR!S&a)gd)Xd}JfI>fA~Xxzn;_a~sbe z=Mp|*4B%p=G=&u=+C0xGkDifaZsToa4PgOhdCw^L)JAYs_22T#%CZCIHvY+5OqheQ zj2}uKR9Io+Xh>0cQU3kz8A-^H-r_5q!g$H~+K+4mSJn8tq+DaqWoj|1aljC>NgZx&v8gv`Ba4! zCc0LxC65f-V{Rk=mq1}3=3jlq{41%ZpPVu0s)pWN&X{@j^-UAmnn%{5>_njpW}bOB zxu~$h#E$cUvNf--@cAmD3s;}?2@6yvxTZW-HkD4U!B%%f+f7?!CLLvckmX zEa<)4KiXWI@oeQ`aX7w`4M3746I{iv)b)Z3Pm04p#C^=+WQB>!W5&qg<)Y+C?)NWk0wa-V1ldcZr@VLTj~JfqLJo7=K&K*!{^9WBEspqK|&wQTgujL zr@{^&`mBeXF|(gtsq4j-hY9z8bVwhwom5z1Vq$?lvbFxBW%Wj)v6|x~R&y}HRqRU4 zbSf>oiTzkH!U_|i`v=R`+NIksmy2!S_K9#i6I{iv#M-`sQKFHUzIp0-l@%r?)*2&c zeZNM|H`I z`gds?!By-^tRLKwMe+f08~x~6Vd8aih-~GIZmgVNibOK0$4GA*!By-^9CME%(k&3F zNG4^4iE>_HvXuZ93b&8P$V4`zC^5lR>`Kf%53V2?T?C&XSB4cPy7ooR!T*wI3Rm`) z{Nn<}SY!||!Buv*=V?`2ss|zkIR~sT(Q6u3G!C9)_HUnXFIXswl`pHG?NHd^xv~zD zGuB73E3tlXU${`*-yxOhaZq7}iA944%hpQ0&ZT6r1I~|!=#tL_SFtPMs|PK_&LDoc zHdAGViRt%)WoPOdbEV$JB2i*9JS{avw|^$Mid~7moJC{YPh>t1PN}RgQKp(hZqq-~ zJU<%syeJmJ^HtbK4<{2`#jeB{+1DGQ7YNt2tWH*#sJc2tj=iYm zk>Vp4(n38&W%@CVIq7{uxzbl z4Sw80e2#JIyfiDZ zfOi7{-erQT*kkDS)~k&42*d`YbFsq2xt{Z7E6-~lyu0Y!R&fEck(l5rb|qFEMlBSY zV}F+Jzcg|tk3*?qfi`U8D6sw*a)sV@<*s_t%{$t zb*``!V;L2(DxMW41{?{Ot(Etut85YWVC8+hZ@i7*D$fP8WovbRhsleDb!#0`$?uja ztS~WVr&?5($r+i~t@EyuGqR}@JR)T)**a#5CN%RzcbKs&6;_z2xMYoNsl1>)5tRb_>VpaOC7o|auq;#27=(t6}UUT<>SMsQUl-#EF>lrCmwv0s3Mge)zAI6%2vv8?>JeKK`cbdF)K_o{AGu1r5yiI zs*Pl17XO3HVkWq1QokLtm03J_N;}CP#6qm6XN8Fdm3GV9KKq&}$N&7$O?r=!iFfT^ z+6b=tr~Yo)N>}MMpr_=q0iz$A@2RXX5r1y4Y-OdmTrt9V%*)8!daA+>KVECCoRO=} zuEeVN9_d0d#xe@%OB7a^n3yG6wldZ~UYjXq!;|HLCoNPaxQbngE;l>E#mpcoddVs) zOe9W^k*zeSJRdKM(Rdae@@~0};3{?{`hNJ|5Z8ccgjN2mFj3@Qto$TT7xVo14{i^K z+bd00Z3I`bE75T=uz(Z^;xShFv%-X4VykTBhJTg4r6fFA=0^7jCb)`SiB%8*HKoHK z3SyPNO`(7HWtAPWl>)vsR+hps3u!7+z?tAGb|pr(&o!0igGk7AS!IQZ1$lPM%kTKg zf$n)ri{bXw_|lLFw==<2>`Gn#C%&UJ0mPXTS5;P+a2?z$&r7Z?f9Fn}9@M|5v@JPM zjE}u%Be=@$_JD{!Qf?(s9DVYl$_f+vS|-X?&d-~%n}uiS*Vo|97=<0~D8E5Y8y_TZ zc{-y$yAr90`;Q2n%Q~cc_2wz8F!A}<7`b+?K63Mm#ut-GaC=d>ecq3<$^=)jD=~i6 ze~wrT#7{LFsjM*J+8!%!Jla|QC6m$1B0AuPD8ub9;dUmt%H~SF^zV1X<{&Pirv)oa zTza}iZuDDgd4T)=k@iagsUFstT&$g7BWzXVO3YijR7mm%(HuQ3*x^iU)3?hDqMOPI z?jCe0a!si+W?2kgb=*d96}wW`M|swfjE-`dr)w%JOejxx$yN`#muH$vLFn>d8@*DP z;3{?{(rC~AEd2%Ik4?u_R+vbN+bh3~u5F$l#}hhAe;wN@mOgdWMsO9o5@Y%)U8F7` z@{BpDvcg0}qeQuFr%LAeQG9+M>EBI(;=iXZ+6b<)yM0c0Kj|ch!AFj$tS~V#a=&b4 zRBe=Z3-^~gBv+f^3On5Y@g~_npo=`C<N?q@<^{_Bkc1W=YLKIe*_&7FJe)Csn z+4sD0eoW{$N9+Q(2cv@v6I{ivL_acpo}2J4Tt{VviG}f72^o_8?%sR zwwq%kxQbng8NbaQh(=$7^%rKStS}LOa=YAka8t9FUZ#tMqz#y*H&5GUBe;rPiH>ps zMWt8}-=UiaD@>er?vkyJi|lqLxQbngb;76XN=A>yS?JNo3KKyy_saFA)|M~cGrle@ zh1>s5do6z2c-%&C6}wW`SH`uHa-_c&=M{IUtT0jI$3(e-RLML)n#1kN(XC<)xSa{E zVpr;Vu2tQny&%@Vbg8T`QF``%x#B5L`HQD2vU3M)(;o4iGyb|TPpd%?^R;#a&I zgcPl#GQm~sF=VX&xj@W>^CR=sDk>{X%wE1-E?A?f>Gs@BABe`B?PKR>*a)s-k0Cch ze=K$Yp`n`xD@+ugw@bDPWf;-kk#Pc7u1B;41bQzF_tAk^TfB+}NhF!bFeH335p3N~YUeZfzyCNq#N9^mN$> zu40ejcytMr+Jh+7KVD^piJ%et<%oTrvfzGNy0W61m_zgFSc2R#(SCPxcF~&_D5!*i2!Ci3&M(%NboHb^Y4On?f`?M^^u#uZ`fUJn?&E zt1oBe?8(9~jAiUXcS=^6*p($-&gcWG>pvB`BaB7w&m99g*a)twS~)?sy0>}_a|sIi zi)yEU(XY`9MT|Py&IzeyB{Yofe^yMt&p|HZl zxUDYP>QDV=t7x%0t|c+c_Sy)pTK>!>r`|pm(CCZN-FV6L^OAliL==c%U15vhoQ}-h(eyy-qVFuCb%lr=dj%L ze`z-#2K_881F`Mp7ljoj_LfSMt^AM8YkEjmFypsmjyx(8T(zx9nrx*mc!l?rj0}Z` zo{tn(m}rwZU0%J=C*Ybp$7KKKVNw^2q|Pt$-bQehSLt-Q;5MIt^X@z6^3>s2$+1-& z(I*A{!Yze~!n@Mte)n<&9Cs6ECQguUV#e`JV!^?4zrqkns~_s^19VWL;=gR<2l zUI|$*c7)qEeO#w7!By-^ysNF;;3jtZMkuT>F>m@I*~-rByF0Ta0 zyL5f{&ytZ{PFrLKS1xP@e7*DOVv2P;g}xtbq0C}-p*uq)At?bpY`J7g%VEPpha6($xoJ|tT?4P{ns5DVh`Xf8x3 zOmG#u66>Sp$GC~nuJH;hOq5=fDqBghTY|GlM)xGY%!h0QSFtOxcBw>G$>`8DyYxnd z6(%w#9G0!TyR{9fO1+G+j2-AQMrRIJu`4n6{O_t#4-lJ>qQnXlALG(wD|e}++(I(4 zYd#h{Z6mmfU5T;RzgtK~c1^`>(F!X}yc?1(FWs9Xps)K~ZA!CVQXO>1@A-C*jo>PF zC3?4=>m}6%u{UO_!itUfk}mhXmFR!Weg8NEw{JhaRSXRew-Gg{ie0JegIpt|-5_R^ zuAs2OMBOe&~3E&^|~-?j6)iFG$xt-x~E*KoRRO# z9z(yrmN$eXq>^0q+nCG>6X|VJWh;Sr-P{;)9o+6f7bPaRiamx^jXgKIiO^HODXcIt zZ2V!_N)6ppJgc+>-rbL!Q6{*GJ%*Va>$6HLK-5ED8CIC^9F-

    2+D2SC#tW&8r*o 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 diff --git a/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg b/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg deleted file mode 100644 index a90e5aa342..0000000000 --- a/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/resources/profiles/FLSun/flsun_s1_buildplate_model.stl b/resources/profiles/FLSun/flsun_s1_buildplate_model.stl index 5702cb464f939f257596b3c8cd0e14618ea455ac..5197d985ad2eb40ff4da9fa91929bcad19fedbf7 100644 GIT binary patch literal 1422684 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

    {|={4H)f?$>?7g5^jQI+cj!TF)8n4?a6 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

    v_*63H&68?So>WJE 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⁣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¬P7c)IhT#yl_jUm^rJ0P8}oLaT*9B0_oe(B zYm%h=mj{wqc*$%|6SJIujvsBLH0B-$Bd{h(iay?%6dAC9<$lPLJAd`1OWL>MdW%i> zqcMLs<`!=M>`NE4Ze{Z&an1V^?G3l@!1oz@&4(76(2d7&bg(b|{IWg&o;=W(o`2q+ zYl1cXZNtd;1KZj9nCr&#_k3tZ$!?&l8N&#y3GRp=IgGeA-op-gFS0{mDK*T8Zq46^ z$0tdCQ#z1CX-TX;oCUbBq%>VTejvAZ*ox9Lbkaa>Np?*idgV)RTRI**i6AC;e{dMw zP4%Iw5AE~5H!n4ewnt>GYfmmT+REDh5=TysH;u|0&f~!G!H(kGzGS>h3Ny7e%UCKT z*PCX2AI@#JM=V(0p1^FDso%5YPVc?xtdGOFy%>!xl%$b<5yYYOGWHzCaM|-q)3>7r z@^oOdJ>u`)9m&#~YuO4lOE%Z>p)I67-1fRxeCYA9-T3#yi#~MJD6O2dw>e7J=|t|Y zTgj#Y0!v+s_ND6|wdYdy2v(^+Nq;hf$tPfK3DuwE_r5f}Nh@w4M)NlgiS3O;f~9Va z^P`8hH0JGb>Pug$y^v{TY{9#h#P+Tw!6AD_`Oy|@00FJG=VM>Gr8XeAZ}&P~mdu8C zE$_lDP^-`Q(AtB$aZ7IZ@}-G)+Vk&2U3}@MtL<%ZOiVVBV!C;(1Jn{+8!#Hz9$3qG z8bNIDTH2KdE(3c+@@WHcIX;=)hqb=TvrE%y0|)ZhN51l=yI&6HR^gHb=D4=q6fqQd4kdQh_P3lNWaaIEayTL z$*SN(>pt(z;~2<%=(mpDIQqQahpxN}zw_MP)TJPq^eKY9f_0yS<36-yZ;%2ny1K0| zeRl?O6r?a327z5Og`8Q z&V(|DzQpaCFCDIfGUt6%)jvkcs}3hyiU4Ba0Ux@sc{i??HS?vn)7tazuJwJXa|&3< z5xplhGEVlGmFfqlAh0gnFIC>f zzh{n+PhH+?DF=ujK0fr;<=)&9Y@t0OyVP;{(Y8{o4fJXS;!4x$Q3E*wmnPOENq;p; zmp@-D%{l?1|9x+I_6F1vC$v4*ml#K z_B}hCe-Fs?rXdPg%j2L8(&ahlOEUx15^OI<;Pk=m7wH8E$sff6VGM^uaBauA06R*4 z2J*1sbhZXsR8m84I-$@T7f% zCiCxs?>y;*fXQ4F+?w68AF;hUEid2WN$<9s0=k+pjKG?JCzIWVbcEOC9|PBUnbDIv zw3xW*^RdPsva;*OVRuK?bs!WzA%_<6(fRsJLW#3V`cu-lk0oLJg3Lj4MqF=Yf z@ivIjk~Dtq5ZPEX!x9Mo3QHX>?@jktg}j26niA(lORR*v;;q)T%OJViw~LmSfVdRs zNj-m?#`R9R>Pag(P3GTS&w0|KKPHKGek{V+Flj^TY*^XGy09;4HOZ42Do(Na-N8Kv z$+z-lTIT!`2iE(ymnS_P0(r%)+HD#rdwjae5&!fnMGf7}+!Ab|J;Jk{(Kw~?uGCj> zf62)nrD$?{C=bwuEr~4aLFKk{ZC3St(@$=E`mW^!SXJhkJB`}(Cy!&zHV+yxbvFNA zw%&uTo-o^HRgce1Zrr*Cy8#}q>|PH#cs7JUsbLE-T9S6ua3CY5#;{t)qsYgD9`wn4 zKtNwRcvvY~t}j>!Xsk(+9*+$qsaIAoADFS!|K?7=ANrHmxNFRVCM=!Jzp*AsI`}Y* z{5yCza|PD@3e|%aUNxK7U0h!=8csN!X-V=Xo@A$By(GSX2Q7N+Pu|Y`GCXLnHM99Q z)+9-*!@H9^L$0yi@ZQ9Rf*v$D{ZH<3Fam3WTe%LkAaPk|S;qY=c`I?JOYY6*dh=j6x)gLZV;F%o!Tq9f%}CPJtIXZujvT$Y1btC_8P`>Q zWJ%ib(;{xk#|d z@D2MoxqhU~+axvuZnUTO4^gwMgAOl|8)$ zwItJxUiDweQ;5+yXWi&I@0A=4dlUD+%jb(vV?AIjI%|0eU^*=0y7GFKq#GWAUa;iu zf)ccL-cp-YZ;GbMDL~x$4kHmZKO}osj%4Ft-(Yo`8|`0oB~KwnH#+1- zM>($KXt<}S_*ePx@L6myl%Sm9MwgWYgf^x|=!aCr!=V>vX>oWp=4{Q zEA1GP#6u#DuJmd3BwhxQrHa#o<<{8{_eXe>)Illi#4m{Xor}?D)izrZ2n}oDtE!WQ zA(z=RxHSSxmF`iDwhP_N%OA%lN%Dkhq{HiL?A$MisIe||MYU}lfziM=TwR^4sdSn3 zdk1_56g!r>9^p#EYbV)S)c!RMiQ(FFb{Tk&2RY&(O?=IN#gJykI`~+NU_JP-Pu2gM^&oG`&nB|F$pl0ncla>z6W^4qmnL z%PUSFS4`x2g4-QNOOj)e#w4Nl1C{`58ISbEDXG1VTQcQ)ak{fgBLBvkBq`^1Byml8 z%>D)DGR`ZU+NpuXX`kQL*~;T--?n65Kpu05Gs{>C=T$_cE1f4N@qB|_nXm219M5;m zaS5DPGZd#Q>#pM=*eYx-+(7fAJz3%Xj!l|sk613b(eKp~|APj$VWW1e=H&WE+7P}4oAeO>?qJ2M@8`hn4hn{m2+~R?y>YwtUL)Oja zao}E5k~;S2K@2RD&1h(rH%%`^w~sS(sko`|J=V-qj?r+8rA1$IV0b3W=vbZMkv<;X zV@+_&&5S-|m*p|j9OQ-e9<=V{xlkLL{Vx|ZW}f)n%F-KiW*~XB^RI=uoRvl+0TmpTHJ?(WFKN4unvc%@H!lxQ^CE1lll^8 zrxbQ&r&-1;bQrO9RcX3?>OgKG+#P+nJy}#Ii6z~;$M7mAUZ=E2?72FKtg4j3^XlSV zZ(7cAB+o063tIk&->rG|rgtxLLBEQUF02V|r*s)fj_=vT^D1wjA3b|7lINAk zX)S-m@7BD6*EWfGZ4<{~DH2HiY;SeqJvK?25I2+z>l(-UKrO*iffEC%cn|c__&}yclHa`ob+FRk8lszK3{4kQ#Y!pkYZjZ?MH;{@~-!K}^RKMs* z`ooK!E9-q_(>-)ld%06srDASbw${HZ(~xlOno*9xXwrK1=4-@OY?ro zPO3=|)m~_~G6$aT4Dwp)Ve_*U>cPx*z|^YXV=$(GVEKgV$-bk)(!Zm{?NOMEb9aCRXpdfc;6 zxV`mZZykL!0Hi<{W-4Gb%)IhfCOL{Xi-jFt9DDN4AR5-*g_ljgLOQx|(1W`-fI0e+(+Y4#9eRdNCahndQXw(t$eK zI_3xGlwfP&RLZ=jzy~tnFjchUOU>){^l-pk3 zBcpUwyvT<&0YklUFVfp3l1;mvC1ZON{|=(!UBj0pbu{r$t)*%E9|OA$C(jD?U>?vr zV=3GQ-yRC0;)O&>>JUGIf~N%fx6& znl))835>M9Yl#tO{Pk44y*tWRPk+9V>+xkI=?-t?K7ki+u~h6}Jr!^7`VZ98pKs)r z8Z?SLgEw-u7jH2i4s+lz8u%rfCy>9t__A(;n_3Q(45r#kR+{g_oI9+Ezk@|=?_fz7 zu_8oI#Vg0+cWeIvuN)KGyT}qQ1M#g%3AEMk!kfiJd$ahRXRt-2TszYsq%?%cLw@p2 z`sOr}te9Spnd+Mv4iRObNr@87D*IZIq)e#oxl@g7?T0KT>S&D`?-fzQwQqaG(Ctmg zUAG#n`YjIyBSZ_%{U=8eZBzS}r10gH$nsJ_EdEreBH4Vn79#vrn!^_bqhU5tp%VEV zU5-ur1tC1OhQMe^DptM{c>%9fPB=nJU_AUB$YaFx7^dytNc4Fu9 z-(jMs{}my6YAr|LT}$ZCzghcp1&83=#kmf5CqRF`druWM21-z{g0ynRC5X|$*@pgn z!W-V7+ewMO{p=I>g{ws$Sn30+> zHeNv-pESWK(h!0NWVI?BSV*;ig|y*BtX+uU-)Z?H*h$vB8u#IhY)-ymSs@Rw3lSVI ztqcSM%32;?z*{$)v)dFbCB~(iClahTt54jyvJsgS*p87K z9(Eyu38=Lq!K|~kD2?6L1K4fD(?b=(BhxGqj5h6CFx{+iG+~8_p`w9hpNUcg^GHh} zMhgy`hL)u4W`#+;&lT96Ul3SI@RqE3m36Wq+23_2^Lp%|2t~dzN|DLu$15nYEt%yzdLp(s~e4B8F#Z7&J)3))I1SJ!)u#khmy4&;#j9KW`?E2 zoJ#X*Vn$~5aI1l58J%Kg?FXBg;6Q461-DZB7PC7m!f|g~@-DeA``F8YU|rbnig}`S z1W>QU5ZH||v+TL{abUe-#%hftvi)H4boX4A1_&|x)hxjl+9QT6Z$naQPGY9P4n)j& zHC@;e`+4nKn4dphzmzpkFf%c8*WwU!a_w8pwyjn*Y1@^Is4|oF+LgrwUrZ}CY#~O& z3O#VuB7m!w^{QyVYKGukYG|wpUYr6xTp8fQ)wvw12*!?9M+FB?`^K7}|7Z`K zy8@hZr{Fq@>n=tEI{|oooo;bnpCb5snrFam1#5z{;hCf5_@c`#*TKUHj-cjo1QSq0 zV@+@(_v&al$aT480U!iF@mB=aBuW1|%{F#Q*_2wROT2sQl>jQA_kM2rMO-DptgR@k3;< zZzniH>{M&9t6Sq3I_H?&+fmPQ=>P?XV1!^Q*!scw z$K>$BdbZAFkHAu5x8I7m(N~qjpZK#Jhy&{toEc3DqhV*XMgg*OV@DPQeJu{b2*H!F z_E9%O3y`lnIx?rzzaVV9HBCxzG^~gtz{P12Ih`e?h1!K+y@GLL?K$@VAMUJ`52xS| zj1XKLDM2MFgfdGs>Z)k zuoP||_Hod*ON^gtoJ##YEM7qzxHQ4J(`vrp$ywXrGhpe>1eTsB)OH*q_}iN8g1u)= z$JUZ3NIDEYzSx_^at$_A{OG+?vH48BsPI^0(CvG)= zXTP5aRj`!c(`zkNFoCVDw!?$^Bto6SLQZ(tg$TB~HZBotW9=L6VFAW(3^0EGQ9~8M zN!2V7EMM(guz#&_j0fH;1>Wl?$X%R^7>#os?v8HkM9#Es&UC+c23#KY2n#TNQ_?x( zSHXS>dm`*(;6yI4yxrSymbW69#99imx5Jtw$)Q*Txmtf2d;G{l5v;;r5m*zvU=RHE zd5yQS9{*%9jKET2FH9R{!b}+0(eHsB-Ts1yA~?-jE($KV7N1~ETg#(QPfDJAnayG! zcqoEHtsw*#T$93RxUcVPClZ%`DSHbmUbt+iR>yl& zk~E+}f6{W`CRTL5eH>V?INxB6qiwH#B&)@C<_HME)7LD)7TP1+;S|I@>nR9^OA41D z)&zWN*tJ}2-L;g(PNfz*wq5L6TCGwWv?0B|u4VJKyqB>Q-l?=l429j-?XdgWu&tSi zeOWCXV#ihc7W=B!IF7<8hykXpZ29*ryL4a#uAy)Tx@}IT5fL=|o7`46#j{xlvUnUHeuehAG=zbYlVg%L%tm3>r#tB(U>ZBR= zV`@Bl#bZ?a*#sWZr#$gcZEQ@tc>>(=+t_IFBfC;R!}`^Zxg}K_J2I{E33pXvP-lsqEAvgW?s$txOYaObsFUm)737Ue$pzd3@E91$`|J5nN6!M+Jk@n!6SJ zHW~Xz23k@+PE-)DD^0L5HNAo%W{u}e- zieO-BQi98?^*DlOseQv)%T__;+t{VR5DK-E5D6tYnEU%ykDE8$SaMozWYnc1(R4y6V3%mYBnxEF(wRP9gjsR zSV}O7HH2VCTT^~=nV!rjHJ-BiuM#?$`mAB;8?Hm*CTD{z`Dqt#Mpf(whw0 z&sa`-Gs9AXYod8I!Bnw&xRI}#l1pJbn0cW@a0vFImdEvq1P-C z+_9PjG~_oQ88=bMg_d?|-m}<57y>p=vb)w-u~OlHxyDoaZzZ$!cFrZ5#{?Oi4=1@+_|A=B?m95u;&UG^>`SDBJ>- zv^iecFusWT`|)iY5wNMKdd3Zync%OmCfK`+?kSsgf3^G#y}>c5IIU6~xPu^7;Z||l ztq^br;rsQ2;xwOI;xVhg0;`O|D#UM18@tDi3aiGxaizjqNXNlma_={vEQcTttXD8s zHNEz6^!;&2o?ADP#lyT7O9|eqh7gQjtu9E?b70CYsuan_!^#9kU@5_YwIbH;o@cC_ zSK3moQoMrGku;?Q_5F7#PdQE#teyjZ_g(#0mPQ$|3YHR_T`jK!m)DwCw}6LSuq|Of zARU5Ltc3_pvSx`rVk0oHH+A6*Y&$8z+19+BU}oEVV&NllTvN)%LL4}M1ix8}1LuMy z-Mr>cep|JU9fOe!)+IRNTDudRZEGAkAL@|djSjLL7=>dg!J*f@gy5uGJ=~Qqb;;@e z``O9U9*Q_Upy?HCeoYFaC27y4R-~v$I-8P{#l*=MO-is0HGhTClGHx7C%Nc&j?Hgq zW>`wF4K=SO*oIaQ_X#+VGH@Ut41xV~+j#>`ui!mu--6L-McmyKNm^Y$$bNg|K(H?C zYwh`oOW}mVXNY4D>P8HuZ!rZB;)H@`2}au^z5_=%uTcgYP&gkE z>`zS>wnXqqt$P#NnTEhV+3aICGZW_xv^c~$2JKrgOs!V+TGyPE3e9A-A7wFdu0Sgf zY#~O&uKveRGNnWsyY$pU5o~^~%*9y%?Hg-?`((cO5!d%gY&g_J!R*&+97bSGlC*xz zH#wEfVC`V;jN3D=;aC&Q=(7*XeLb79gkL-ZM%#Oz;(dC``;xy}9{l1HvDElN#p!pi zbvB=v=H5e2JSefMfOuEll}7m{@sI{OSK75CaOlA^*dvrBDe~Jr?U@OzDpSpsT7r{~ zX)U!&WHI`p^k$C6nj~qtd#;>%@GsWpe3T-1`dVILwBYI6Jj3!Y@+PmjZ2H+K<*;jU z8WFUP$5H2baq8!t$iD?I+=}>A+n0E+*v@1a`-sy6T8Q9Zx5yJjy&U`>*A z^kNNid&&jo0A3U$#QBE*=2fNP-sIqb6t)-E!o^7oP3mjgVzh3>&BwIT#Ar!+G{lR% zUVM-ZJr}B69_2zkL$)2$5DkaA&?bg$9Dy~#%nMFIG_an6V1n7Nr9*J`wUmqV6xQ-^ zH~=SE*XFQi6U+=t3C_NjKZ4nB&8q?Lo03<$x6JqLQ5lEeG7#qitcb0T2&uQ{AzLQp z$ylnY$%UT%x{a5bJ)-~K)?|@`gYw5rGrK;oC@ozv`Iu(AIBB7MC&#(aa<#V|v&Qj9 zrv~KA*H>)mlPo6AVEl>@CseE{zd5KXS#|6mR_(HfQgUWd+9fEN=Pu4^d&J&hrO2op z#;#rrRk9Wpq05|i^D_8rN>MtzbTa?Ont%ftR)wq`euovkW}QmmUhVB7 zXBw8hmw#hTaLdix4zf>VQRbkH!sj~E*njqN&pByE5jre)*MHEGlAt!Od*c#(P>)-sgF1=NH=7A|GTUr?>Q_8^Y~qhW=m)=*>4*C5NGZt=>3;?7j) zbzfSTzEx5K7$P7AeWHpvS=>C6fwK)3$>=ujVEeq~7C?a5UV&AG=d_ zZajp&fpH?1>b0>j4Y{1cOY_~fLiE7CgZvv9zfW4r1zUNr*}#pOvdW3BZpFB+OB)N) zcGHgVI1X=cqTf3+{tYLjTep()rh0P3mL&yfQs7aJz-W6!N@Oc}f1D?af^=X6mdadR zfL5w_)E38h{R?>%Nn+B;C&*5ra|+Q_Is7TZ_7x6+#}Jf5iR( z1ePkk!x^mxk=;p1M`Bg7ncAi> zx>g|lzQ16-pLi&`g9WMAnj^e6+&x@~CZ0OT(O45O=&HMsVe`+k@C%_z;%+B8YY5}D z@50`Kbj8vm{2ObMq{W?|%bxo;F;5tg#cy+>seKr)qZolTNz%SG+vKp{#xhUX=fv#* zw-2mIk`_5PmplIB!zi?zq?NGHW;wTk)Haf@>Y~QJwH8q_=K%RnQlIo$86os zKBh-0vyuu>*P2JURjalYpx=#0c{)z7aHJQ1sJ0e0)T=nTu_}|DfIbRKJxOt*!J`?^ zw_Cdk(ESaL+FDfl-LmAb-##!I*5PnS)x%D-#dyYZ*JpnL`myOz{w+yOZo7~gTduQK z&}thj%ujvKpWv2cu63k$3#Ie#0-GG^-s0)DI4+laC_fmtn_W5)rMOLSpv|YA;`UAHmZR+vH=>=1%Yu6>6!sv! zN9LokEzk1Ud$*OSKJPq7V@>dGc*P*%b<9E813cu=G5Ki8_Gftt2X&HYpZpg%8f$`E zXoG`@<%omg{?bF4)J>wLoG<(bfi=OH+E9bk?ck^tvY2ZkB6ZKGN3{po1g8W3|*F= zI$t}%5yowf)Y&tgOJTGmoz~YOvD*tPu6ME+E?eW@1?c=%N4X^!4I_PXB;xY^S?*cCtagpH?f(S?OT(d*1CU!>+O{6NdNXp=il{q zInqV`={7{Q;q{5!%0qbq>!KKerIxPCPyMn_*bouTi|MqZGf>rx;U<9sj@Y49v0McZLqml>ps@AygrY?Ij zc`d=U-5#OTC`>$JAF?D^0|*=b-6UFEiJ)HtU-3i6869)n-;; z=fI2ZAM?pnY{*USMX^-QluxE7V{h6J*9}D8@mC0g8w8Y6x{s#U`EGLrM%yE%1rd40 z>=0H1Mz0uwrRr4qX!_UXwk?j)3D@NzqZykDqwxOoKA9Y+-sGt@-N`kre0q(4uX>hi zGQYcK^Kgw%IFSi8pRp4ep-NoUucphbuJDjvb-$V#ce=vM#vU=Fmp>_?b5gcvc_>(_ z#pLfM{lQG$&ZA9VO=Wvtv3UmboC0LG>kFp9s=?-!pG>ZQ-sExgf1hhAop+7L(PiT& z(~%`N`8Uj1{-{h=zAvTheVE0tu9l6ynrijEVy%gJxh5Bf>$W&HH4P_wV*?bwzGjA{ z{+<2ZR6Q+|*Vk7~znWV1zhbMqzaJ_`T5fh#GO9=fhv4>6w??ihF7LW+l#%kUi3EQ% zz={KSR9h?3PU>JO@w;^m;PHq?76whfWKL`Rm$?n?M= z2L;E0rII$jHHFl_2WR`V)3P}gjU;+}2rqLSBEGenfi>A9aLE6Ku-2XF=jwbQZKTs@*ZA<#+Dq|(II!N%HXo&(`ow5S8au;>bc-ph zT!g!ja0o^S|7bn${3OnYj2~QB`3UcZV+58GUet=1Xf8nJ6neq(PKFX3f)T>ETTkTn zI_^ZC)p*8U0|HBlon%viKIFdBB^U_@3MMr0eImWYv;R^u=NYm%fR-wTr9PLJ6nK!`DehQMfh!~z&) z6o6624mh_hMgUqX!U(Jh_KH6ElDB6HDu4fiz*4w%Nz(37mC55*rIgkA?#Q+BeKA!k zc%AzX9G^X+GmJ~Rz_?`J!z@{hGPFAxFam3mr0=WhlKe42%JODr8TU&VZIAf9SXB~I z+Cw?`OB`Z+rR4&S54fDgtCE#I9?I97_Ew28yk;RrOH!@1)ks6Rr1CEyu#^~iYjM~k z?xh8g*)VSZ1h0VO5R4Eba;x_VI2k~KM>#6Z?%5--6fRBRI>Wpc9{g22;5`;Bh2s!2 zVQUv6%NUrk6jQTgEG1?vT3*>BM#J2BKg^wb=4Qz_ z1S7;8PD4x5sMUn@9_^z{7zpRjZF46r1dp%m5i^pikr@#sl~G_7E)R^x)=JXF93wHo zTx~173xG#q7=bmxN)e2ZH^2zlx35{oV=63#YbEf=dis;Aflf**C_!A~aQWMppjWNJ zByZe9w)?ofXTYV2y#(A+(9fBqz%{ybX zJ;L;(Ao&j7=Vpez_rV?q_gzpEVOBKMIxDjCS6B-7k8r~6voBe3zM%3C^yk=TVDDp( zSa>sp+)%xgqu_n;m;rkOtO@Sq$gWK`^w%p_;jS<|V#Nro305G>g_8N53`!BWI{}Zc zFxnpR+vD2g#sIxC5d0OE!oCZ~2W$E(>XIKLf|Pu})GJ(r&>@LB|#BiwX{h&o*DcquP%?Iu|nycY4wfNS?(Rf}0_u@dx-$BZ!!Ag9Fqhox2}G{LgqPrLJT#F(T9U(l7#R0`7UC(xiT|BFbZ6Ks0al(c~R+`#-Z^ ztO>X{`SO!7E8a50nNa1#^LM6*y?6NB8KawhcxMVaa>q7zj_#c)&-?8-%Y^+8x41W^ zURCe&dB1Y^ohf(o9sZ3q0hiNbrEHP@VmEDjlh~v561*xRNp7V|S-y=gVR43iwY5=?kG=T*gd=ujJU`a>|IzgoU|D3} z|3i1D*oEDJ#f;8tw~O8Fs%x#g#u^|PD2gqv-Q6y0zW2(EimfOHDk=tog(9M;$p74# z_kKOY{{B1<&oj?^&*z@odG7hFd8VasL-}{gKi?i}zk@fc89mLC)Y&|@Q#i#T81b^^ zTV-Qlnudnm#PWvZZe(pz3eIG()NjeJlmk1SY2{`_>{;EAnC8_c|3F#c5RAAG`c_FR zmu5M|`O9fFX(}xvkx(C4YVea+N~a^wwE8e222Ni^;_ogevkM_AkIzsJRZG_p7%d28 zD_6VkCUBOpL?}Zo1Vz`^Y2rO0m^(*D(>1P&%bMxzD z(ttz~TL^)r9<_O^@D>U-!fmgUio+7g5jbzhAsBJ7>suwUQJO_Z!-)djR{S#wJ{v-@ z)V!Qm%JXy2v_4@(3~Tj+2siRb=|YI0*%`{TX6YINqrnE!^n;YUlE?h%8+72DV>GO< z)_)^SCVwY40D+~f+|rea|7K`9jEH}uyy+fmAG#OpWN-*ZjPgxazL+yCCti~yyy@lw zZ<>^5L}01aF&WC6*69{R@0H)kg>m1B*A-)`Qf<iaXa62sbcd;oz% zFrwq)XUd6kuPvj`?0R;Acs{yH$^in0U_|q|&y>DJUt8MM z_Zx{eLVEf`C%lyBM#C1ZYuHbxl{%P-U;^@i6c zHvtjfBSZPsFI|(u2pki5b-Y-QWCP+%Aq18R8=9eHl}@*$YRu6P(r;>A4S~l*tj~xz zb#tcq=)rJvzF-`wajGyHYz;0CF)x`g()_H35s@ zxZBG~b3ov+9ixqi`UgYEh(GI+(uHOmjKDDoLe~Ad=DquCnR`SU%LzmdhK8&n@#H4*5R*z07B_jSlZ*J}1H% zz|EPVyv~#7X3Bha&RpG%KF|5cYuM&scTu$nNg%FNwmCrkw&x7;gUdumQ zV)f?N#m+F}usI4#< zF&fyQ;FPm6oN}IT6HTxbUy-x*CtuI&Ytb8UTDuiaYfXPflYch6mxpyu({4%lc`MVw zPf~Tn1vuGW3n$w(9$HH{F1$kKC&l`ybMvirq}eqp(Z5?5b>MjUNwKaY{%$R)w|5mf z4-jc}-^u%KKGRZ#Q)onF7bzj#=@>*C^{|rKHFzigxcyAKufZuPo0KW%w8^mC%G9k< zT?#s1oemikP5e4!%8_b@rlZT**Yb#t>Du?vL?H9(l5V;A*}tNkH1|+xx(WPvT_LY! zK11RZVl=!;iSU-fVXl1)b8Wq*nKGZlJ05#2^ECsGNf7#*euyrxW=Mqk^C>gk<~6;&qq@b6_5vRy9-RGg<$wuVuc5!!ZfMpkJ1YonglL4aSlYThnDe zPn<24Df1Zz#{|Ab9$f%?hO49>==gB}5SH1?D**2XzGxW`EbDO@>DkEH$Qcrks90Lu-ADZl=pU>%F$L#E7L8rEYcVQn$X* z#O+L)Jn(Cl7H?YH=knse-)i5%9iPkg>)%=suD6Ox`^r_Of25|8vnSK!y*XK$c8p$E z>9IVgW40w#U$+NKoj=v1e}XThJJlb{ZMtS_@wQRZIK^T9#gmmyu6S@o#aeI^H4S#;qq%Z=we&}leEML%_8t2z zNp{|sZz-!kkCu?GerZmxt}IUWCftxW9QmP@Pi*V!^2=b5an4R)X3>zQK1n4>LZV!(gpF1{7;QvY17hLd4QaRMspLtWv+|{2 z+y5YNOz<*nvA5JYyd|vx^??ysYOhVAY*)%gt6A_l;Nu{@bZks(6w>jyZ-N|I(N4<~ zP9fyuN4DtEq#`{7_K8^PRQCkAemOg>tc-{`W3$A>S(WI)LWmDDi5ybiUPE9sut%)B zD#k4FqDx_<#!@pT6FIG7!k2Mu8Ozgyr@q?h#>?cDtAhdUzf1c(BMHJ{)YHD z+>=%=guqg`HU;73!5d=4G*3DL=2{$r5ra#gl}iWNT6C;@yj|>?`ijIQg;AW6`(ufG zq=>!BUfN(Z)ZokQ;_1v++FKbMf)OKHCdd~8?KCtnh78#%uKxSYe{{TFdP+X)@1RLx zG@M^;9VgzLwIA$P;B7cc2}VRkpOPPYIH>yj!8TXNiLW;AC!4^xAx2=S4#SB2(A(aE z_%L~^`0Dr@@)T@2an65Rb4t!H=Ae}i)+Y#Sb2o`OW8aZ`fH-{cxct$>QA<0P!f5cO z`+k!+a@ad^1a{jv#Pj%Zxq-iQU^s3l^w5z+s}YjM@p%Je!|V1JuU!8yme!QWEXv*NRJzH}+{kJWeM<$O;kEmat8M7-VbTr4M6qmlRh332qs9bOkT8o(@uRyT^7C0>=ciL9)BFwn9D4s`zx%>vF*D0&Rt~ zs>OA=+JgdZz4K-E6?xGIv<@w;eeACuO8#!@Izktd3L|h#@XB=0U*a!xH+c;sH4d2>cvg1ywbk_Dn81%PO%Xqrbfcr85B@dt ziY$E@5z9f-I8Sg6H*l9|ADl^Mz|ITLoOrgx z`rwXb;zV&~pM7Lop;-;jWEc&+WSzXl%a6mzAUGq#QqyOilA|3RRQA5ML?0qAbFtUH z1tGwDve?RFFUbTQxZH8t!zq>$dR~!NrU`ng;x5XOAFM2h>k~_g_nWjO(;**N zs*=xj`SscY?Icw!ab3Q-yTEe3`(bfuF>_99k_iYbHRVE*++|F@hB$gFNe-HpZ$Z>5 zYag1puatQZ+{EnBpp5@e_e%lOjbY%y60?rvux4A3-sFbITQCMou+Z4Iui(Jde#O^na z(&6t#Xl2S(4F@=%VLonyJp=ts?B`O5c5 zdANy-h6gl8Vt_6`kZN7M~U?WlB4sw3TU3ryno)&Vd z>RtJXL!MS^M#OZrycqA(Lc2G>QYomFgp|H3cm4WBYcXJT-5@x$;l>u`O*6tNmcnh! zh{$_dNlc#Kj2wk__1l<-vfY#%EhQCiq{!iFuJ#>qHbwUSH`k)WHF=?!?6IEQV|S?t zflrN$W#!vc5fcNGNwLdeG;&j#-2PscmUDczgweqDTYQQ5%3}@b2|B8+Oq1QOWN9h+ zTKTzrbMjjajbjpocIj2b3I9r@HjHqa20fHdjLOl{8};Rp+%qs+`~Jfg&V9;fYcatq z?3XpfOU_M56F?N1pC((;EKO>5$>;Ks(Qh>=tQ)LF4g`hXjI3(*h=Y3rq@&CDG@0L? zV100Zo>fD%@ohrJKaft=z|w-k86pit281#Aysa1=`z2&!RMD4t=;^D z@|z!gZ-DO#a7@M*xfp?Ofs8jl8b${i#;d8%Z!3K4!leLw6Tfve|5Y%-T&-R>#Zv8; z-cfj4`mK73!s|&8hP|moVplXH=gvY)L?Jor?kKz^HfWTh@D?fv?<>WSYx6gd`_M{o z$cvqK6yERJwn$Na_S#=EtC6M8LNzOk7u_Byyv{qFd!X=E(lqIT^0So$jU8>?w11j; zV}S9N45N!Yd7|*zgj=%j#mwhAmNR>^SC;!h5qIoSqg-o-bQVdO&?(sXrb*Q22SW5%J3U4Dl_0hor$MifgKU zrxb;cs2B~WoI$Ti&}%#J)fYmsRF{)?6h6zm?~$VXoIg&#aip6pGY$?3O}L}9dYh}w zJ|Ft0D10UogaPzDIRW!WTbMr4hL!%gGPDw$w|9W^b}Tjd;vI#b zg|`@yqVRKgU<>s&_0h2O-utb3;LI~_Rdb16y_K9{C_{6CAyvmYt^1|w^Iy29@rF&enyYgVV} ziPfnUc!({&G(+L{jyNR^i>E9676|-{rk0_{N0p`9;0_Y!10!%uaH{6wORr7vqAHvL zVEZI&EreqdgeRkcoYeC(NrbTk+dyG-1DK_M-fbrjN+N3Qb7T{YS26qGw#{NMh;6ZO zOu%L8xSC{zE+g46CSsd3Y$1lxf>3ozV-mBtrnVyMx;#tawu9I<4#xzy8J*{vXBSL2 z&jK%-*h&v0a7P<>$-E=yUVU73WSg_xe1O zUOx0m;ns!`rW}R8?JTx5S9z0kM_bhZ=gaDKB)i`tQXF!Q{t#GSJrE`w*^988& z#9QP}o0+tn$FdY|*E!86TL~-s(6awHV`W2If%RugI32_xfeBd(xA-hlJX_&* zq~K#~Wgsnk#Fci3*O@p3Ba$v;Dcn*4&fBBzlISUfyoFS`@6A>CJJGuRauoi4bmFf$ z3V*e!y~iPz_c*lDi!Ta)EsN2&KYUU6yIVLl$lFB5!h4+RFrQ-tmO51Ko5J4a=qK9~ z@;8y);K#xaN*9M<#MD~f6#kx95cbY)PW~PnOb)_Y)Fa@VQhk1sR#R9XjtTsQM>i)~ z6M{*1KCLQ7SwUyW;vQwQHrGLC9ZN#(HN|6z; z-ktTQwW(n0MGb+aW{(4tIaaFe==0i%2lo5(bN9jcygYmaQ;QncHL1+(?+X8(6KiAQXn6Bunq~fA z?qaT9A)I0{KrzWU`KXi zEBW>1Y!V2)7Kdbv%vac3GImSm3nxb06NVtP>G+uBR*ol^z}Gzv!H8vl<}2J2h9J}( z(~dYhmmtHSmDs0SsoWb$X0o92mXZEIP8YS{UnYk>LK&Vtuhk9sHE5DX+TA(=T#&~4 zxVxi3;l4~T8rWzTy3lHIsbo8(3a2FhP=UgInHW>GsA_5Y2ly{p4c^7D)Rypkh5IkL zGB01@UP{2Kxcg)Bu4X*>t5B+N%fKlVgd!J8(vt9&tosu`isQ9z^-bX(B!W79Q@H;D zV1ynFoC8tENCLD(-1;0tzbV{<1lA`Al?xnb!`|8}A=)PYi^4r2RD-iC?g;^-1;Kw{ z37P`$quN5Ma7t=>?Id;;y z(Qy|43^-MF&*UoHcLGi!lRtGp0tx> z8c^=nfJ-sI20Vq#w*-$#_cH;OveaTJE8-B|V%WRO!BIKNPahD6)>NV`hZdv1yiOId z6t6Y*PL$WV{$?~Ny#dXEmtnudo4D0UxeE6{!P_g-!F#R#0yJq|BU%ey{r&@plYw~( z^E$%Pi_u2Jgf)%mRm&?njKESw{qhv%{Y2Ms7W$xrpVkK@oL=4^*$Y|T)AW4Yhuws` zzMGJ+6yJZa_mzB?p})24JN6b?^hqIhSHdJ5f)RY5sK3?U);EbfsdkRI00K+#Js^`Z zA|}FXr`GywCyDPGnH0BaXRrG)S`a#bMSLgSB3{B$+`e5X)#?ycqyxvxcd5FL+%BQy z5B(LL#CMP^B{+pfM2&Jm=1&V;&7by!OMG9;;=(CGy9r2DvrkP)P2EqC6uu!>VIGW_ z4!$#G-+Yg&r>e}-b!2moMMP{qQsR3+Rv$Qp7%d2WXWk~|PoE(#;6*OqDYEv%_qYs= zV-kdeFyl;v8Ry}J5Q)z$tiAF%gMH(e;8s7XD6KZZi9UMdC-GU0wQ7vOF$qG@T9aN0bEQS> zvPEmPK;b^YFyeX%YnA&A1M7sPE$REf()5*gt57b*QWd^5Ut!+9SSj$B^l>*wY({sC zDMAMWgFOyuOA8d{MUIuv>Rdr(e#&&j(qnb0%QW!Ocp_CimLsUlOB$1Ec%ndIKJQp< z?*1UC%%hw>UKOuYhgRtAMXSC{6>+>b7Ue6<9~ndQm8Fhw*iegpZ0til0D-0WDvU`P z5#Y^=dg*Tho_J=;PK=T z`2D~k{Jezq4}Pw}zQMjE#EIt3ct%F4ArfEjvXt;uCi~`VQC-KoDy8X1@Pu&av7dxX z6r=g-oT1?ic|jSP?rKH%7eZhuV|`qzSD!wNb)yw8q>6#|)++O*$Lat}+1OaC%s-%B zA3;Y#XqC+_H0WHaxYg4}Wqtrz2=TE|nfE=0HX=sP4W^%Vd?s_j%grcP8%Oxh*+NlpE2RpwK&FapN}uQT)A>5iSrq{B7vQefGuu~Nin zBLcirQj2#=gN~J@>{RBRlBEi#5bkRqy3xAeow8#g9XMXT>(guS0_+E$ZN5)VUJsFO z{jgG*|3sD#zT0Bod`G4un#1ny+f8kEC-MCf3*kF&)|QNj)N0$wzH(8dPm7Tf-}f;o zzPo3$0pD%2Z$a1=--b*rUy6jltcIod2?ColjEEeo)}$evGZaSflL>~vXkc*3Yejm% z*%H{77I!hBLCJElEcAavB0l@zXk{!-#m??J+4{E1pb+bqOvjzBgp0fXfZe zcVP!9>pMt^?-W_-@>55Kz-YK>fK$$%`YES``!hd*Wck2oxWPIrlgP-5>@-TkQv5uT z<%6FmvTyLqX=+I-_A19tIVGHPezM7Q;8KA3WBh#c-Uma>G4|mSE)y(;PLN>Dz)m^0 z>8G3$P6=LF7*hqH2>6G;2nkD}w}b*Z%LF-eeq~4%PKmLVG^cIIA8?*H{On{2hwzgk zRzAj-xB|{gZo_#=Uuf<8T!hscZuv&U#JuOExyu2Pa4F1yz@vn**S7rTPUE&ElfySc zBr7jlmHESEtptxH7%d3k8<$#q;~Eg{i`l8nH!kbv7!7Ysf;{Q4jY;GTj3qV!b}I8D z%yeJ`)(z(+J2HrW$ZqoLY?zegY^ySly)5S#ZA65=*-89chm$Z^_3<++hT!K+tX=UF zFZK=ocO5#AU+xuUr)m-o;b(8GKKQAc-gZacmduIU-OX*6giAOCo!klhOio8E2&`=O zOaFFy;;wKBOQF-#LWo^2yAXHXC%F{jYOgXs$WY$ZB^!rm!UQPyVT-;SHvM05ex5fnEzdU)z`jH zQ+mnCgI+s+l;9A){$#7n?S3{Y^S`SjzMt+uJM;)-{u3jxRQw-yD);!!f7jQ$;4hqV zf8pc6vYz`3$B67Ljw<&Z4*S8P9q8-b?lh|L0K%nMO1@UGSDBA+mJ%M5o+_^uZE2ef zSNfz?w1`6-g6&o2VVsrE)N&3g^KPz})%GEww8kkLDt|~7aY#xTdzE<`XKRM$r5#k} zJDhzB!oWElDD$oER3TbC8sMZduj@>^ZD~i9`BP`#E+rjR=A~WN(XmKVT4G=UndnZvQkjQ&U5B`)3UwQjNyfhPld$$z@b-iGw`Z*qqrppa z7jK%s@G`N1wJ4UV3-4r@7jrfe#RfR2%(p)K7KCSBZ%F+*+eoYHVG<5;_OVx)*L~KD zdU!dgj7dQ6QCmj%(pPQH5vwa9lB>Iu%6KJMO2!2^s>}mF`*!qpR2dJ2uA_%*bsAmr zDJc&7!D@ESD&wwTImGDGg0srFE*M&4!Ju1!1;eEf0!w}P=&UkE485$pYkVMSI;Vvs ze{)h9(+1PN&e2I_EEw#&leLq|xGwa3RGghf7S!8FqF|+urOvxJs*FQ{Nf{AaCLbU! zI_rXj%VdhPgUWas*hqxY8nXjwsWUrBSSs7rUS(_!Y*gb+68Z?&rB8SA`!sj*DiKaU zzB#IlU4zB@z}8V^tQ+imYQBTYm?U(>2Vkh^pfglRI4(TyB8Cd+sy!!mCsh`@Gj0xp z4jgaBM@N-$cIY~)e&|7bfSbbx5b1B7RL0=JQi4-xL@X;>)7)Wd+UbRG`Y}4)No8yv zEH0c9#Iymansc=``LWZ1I6%%zC%ULdeD`QNW<7LP7d!3OzP}_ptBl!0PnApH5#sDU zm?VH#$7Ro))iK@>0=0%yh|z+O@iLnXt-6M!DPdAhrnAa8SXj$=mE)vNw1yS~XdIIu zbQ>2yZ4*zC_poMYaNk8`j5@51PRVjs8UG9W#xa5IN240_+_*=?ANFdvjpDY8(SlI) zicI}leJ1nnrix8IJFASlhK&rkui%)#gIQQ-I=G=NjT;*+Hp_EX8Dj(+aV9!CtBh}g zp>a$a-vn)`^G%3{VoW=A4M(vQH00ELZU)F)f?s3YUPGw z0?V33gXn@d553gPuPZEwKJWTaYxObM z%0!FRcX_KPpDxw3V|_-%t?WK@{DsG)P6HzXOS$jxR#!b)YSHoQ<_@$taM2Zgkt*U4 zjEKGGrS|;1!ZNm(-O_<(17bs(5rL&vZ1Gl$q%O4}KA-4Fi=|#6iG>hY>iK9N)m4eL zq-yG?2Gpj;X_5hF8CVMIczDZ8jm%zQnWLKIHK0}NoF<>18WC9P;d*bi@4clK#OIub z^mmgM(iHqqy9J%YteD(KuP*p+Ca|3 zX)Ts=S?#UPxw%vu?TiRukfe2hK{BBb!snWo8uMm_hQMezL%v;tu2{2~48LU5fpd=0 zaQm89oEE&_MrJYuD#fe$ zWJ#Ghq{lfU0!s}{^isFJfIPuC54KTXi&H;fEF8shj#72V&P(m>xLPYwtPlKt6e&&* zwA@7o0|JL&#MWw_>S~|0TAl=UBOfR)fGZOJ4PE3!lw`#4$O=9 zpe5qghjrl8!XC%A0exEb4EgQg(Lv*a&8;1G=HQ^!-i zT4b%IT>&>BwQvJUI0PdKLOj*mCDvNn?t$Lz=)$BF@(O%rVktcO7!mJ#wWE7(q>xCv zMu>_AFSRXD!@Mk%rJ$0RZo7Av=WI$jY7%d3< zX7{3f@-s*rjJsG0kGsZHmHytF{uXCTo%+vf%x5w-e|SH4Q5pXnn|Jwa$G*WQhff%t zxvqfNgYQoq;`G!--CJ*umfPDGT-C6~J1sdMJ)i|WYnw&xT}%~m$ni%m>Y7@6v^oes z=c;xK*=ebdAMxF2(xzPEIs^QRE_7GdHrlMEWXFCtb&0r5`;Ob|rdDjS&7vc&e}DRZ z_*Zgz+Lll}4`TF>;U4ObS{pPpSgV(7M>mvxOv?U|VwgFx6rK|W0oWa>h22rarHD({ zhyVsjYGIHxv=WSt9OR*yel_)I&W`V}n*E?H0JJQiILfcjjDob!gqq79GD|Zbk1ePA4{iz*0?ixv5PW zY}2HSh$=g3)6NZUkq6KGBwSOU&$z0YwSeClQi#!l5IZ)Iu8BKNCd1APOYKc|Q5m}< zTgeVO<*G7nNcJrV6+Cmv;`|lFDKSjKA)(h?)KSF&0V7f7Kd$PGvVhRW#F(LA5nt^H z`GcSc2=rh?rKQIJIfNi`0O9EgmiL*o8+WV8ZnLPWFvoKt>lDcQJZH zXAhNer|LOBy6!6(610d6fc;>-9vu%l1?l4Ss}M_a#LJ*)b*> z2}>=cF6yr?P=m0i;*8+>uIP&I0J2@@ua%yRbypd)EsM9u5;v7`*|P6F(QYc^vegl9 zfN9)DXBwAqTzG$mn8so09py5B*c}zfb4V4|f#a<(!d+zy$1fE5WHMne2J~;|}!o6Y5fMZXuH;e zK+NwFE=9!lE?~4E+-)Ia;k6cy3HCUfO41HBH<0XmArf9eV)XTXK5ENqRPC4w(+E0s_*F8bY>>#cGaZ$7_^G*_=4d*8^!8VWm5#Km z0AlZTp$>Z}S(=+F;<$Rh^i_xd8LicS{#HNLy5k&+juuZF)7a66NXr!P#*U;Km-kg8 z;$pNJXUS7vHFtcp_6=6volDbhQ{u?|iy;yY=~L2IeYrG7Ykj*O`l>TWM_XE=Yb9&C zcHAFCg4qCvV8p^eU-h>bKx^}0!uC))cla*indK)*-Tc*l#Uiz||Gvpjz0r1#_Pu$n zpE|YW980R~ZiLZ_%D-fr@JI}E3Qz~#pP}UtqlsOB+BSKHh6YXxwJW{f>IgYf2!W-d z;sez2V<%h6>fF_?bWE2cr03045r<&J>%#$R#IKVrI#QPpp`#8Hasy6^jvWh7eSV*; z)f7%4j!6)%uNp!}|3gS__h@mpOMqJJ(Tx8fa7)vo{;;OTA$|G)*Y^_0PMZ!MB3cFK@eR zQoMXvDd3pkmaOtf>NamP@d%3+U)~5(uf6K7$2F{|x~o@b4UJ=hTjVdjXllVK(%9*d z*!XIYy5&W8Er)b)QFT@K&KlYflhApziN@J1Bz123NzE<Z#8i9`UK$HqoM>bWWX zw3M`2S42(zIz&t1m-<2K#EJbZ^&w?6qtQ)PkZ0G7_0i@_p!#9rC`|`Og9Y96U~08! zCdq+R;gmGU4piri8l|Pgm@1dEb~Mi>j1-0O3QJw>7^qr5AFm;(~3SpHI0y_5fB#v-@j^nl48K6dWpRDO{+Z3Q$w}Wp@hhy!gG_3tP zQW07rZhcPs1JvIKPS$dc^$9}pZsq8-BlF4Pn<3IOAwYGwGDDMk@zr0wn=nJufzg6+ zV5=>4Xw#qAK&o&`K7I68UH%0Gq{Nu2E5{N@rScWX)Mg_kEEQw&S5sXhHN?xt{%SS* zNXv@s!s@bgZpB3;x=^ZqZ|kpSdIJJh`Z$H)58&zZc|Dx4DOny*^Ef3%hoW2&kZ9Z8<2-8Wx^l_i$4 z_3~Al&5qF!`HsHo`spwa!b%oy8s3i}i!MDjUjPJ_if!ei&fWkkJ&-aYI@h$OrDy&@ zP8G@ro?mgE1fgl96+MtSl{A9Zj%Q@&9zN>M{h$MKj?v&v*VRmF_HImmz`DKTQg8Ll zWjNUcsr&Q2)#hiHYWcuuSiR02MuyDGG~a-HU@7=Y?|~)5%8-+Yzhjz@-3ZeZ_Z}2e&F^j{h`M!exS`_AT;J#jcCki!u27 z)pek`)u(5tr_2tQa7ysrz?dokMKC0@-obH=+U#xm@C)n*;ICB$KhsYg>=*cpUBUt-}S*c+^u8cXrUA706prYho_0}svExYH1R#T5mBXBo>;`P z+s269As!}v8qvz%)5Q1cf>3^Z5h-b8JUM(OMEc&<-NesDmiBfx@e>w|27eh-1Encj zj}x^J;?_hr6TkVxXhHaAOrW%E)p0WRYKYWwtec6S!(ar~4gT9bbH$c$CgTYGV|GV( z6F+;wXd~in{J-M-`@aww?m2^Nd6@Xw!Zb%u6W`ruSMo6N-Mt_@@*N=lW;p}EA&TH> z;(PKIWjstj&j9{y-X`=;?%UJlSB6VC1heK%L2Ibyl5%lvu zt=vugj07X@jc_yZvn*hKx6KuI<*p#Ha3+I8aOvVwhu1Z~2S_(BodWL{A(GF0R};V0 z#Wjf0aB8rmmej)jE@^+uPr_1RQ`}7a?A6#x+VpB6^~irmc7v@mmfAMW&BV`lg9f;p zexBCWau1WPtSlhP{AdwN?VsUh;%CU?2fLeoo(O;O36plOEg*JqhKxfnV%ku56T4&8 zSFb%jwv+Ca`9S7;NFX?*TM17SyK!Z!zGkgFO#F0M5QbLiE6v+rt?{K|shYBziQn+@ z-}N>1+Z_$1-iP0kGF7c5k8Lg{cJIvI6=B4pCeEgx_CD8Fbdk>6+0oy-{YAJGOUc7! zt|orZ&12H@@uFL2$p`MXPxXivamd{zt|oq$?!Lvv#BavI*W?9RDq{Lf^3vf(5rr&V zJfw$C7Md5 zM--3>UsJ^$$DK^v63BC(vx(dIjE;9QaoZn3XyjU5O0(F>VC_BDxR|(Y3`WDsari=$jk+_oWgg^P(>!w5p{lx)$x>>6_ULYRa@s?BgUar=omu`VWV4FT^B zCiqGVx}PK2FeW-5b~14rpPf6MP2Bb;WQ((jTiJkzjlZi%mo0Wnk54+9xYZO!&-vHU z#BG>>ajI`+X~>T^WCU0`VFZ@?9r6olM;F zXwY^i6Sw3MgcCEf#5c7zl9PbIQm@uJo48ew5#f@3NX&UUjM%{FgUe*rJQowUfWc@% z7(KF==$-FGY+;1MQp?A>nz-GHeT0jNTf+dq^Th7r<`{R)vS!i-Clj~v`LM#-#BG0~ z7CD=K+Tws^O(?gl!ExbncbTWNX>gr?EUOIbKHbH9uqny_%Nnc$$LkyCWcq1SRPAn8 z5xho`bU^rQb2M@5CX6;BzzQjpTOplU=V+?F3GBsSp1>(V@9SZ1_~Tv|QEcHy5@5}6 za;v?GTYTQ!?qK4Upo=y*n7Ex3oHJD0FAm8ZPx4^RuzjC{iQA{)6k;@Zpb35>u4%T7 zoH!pQT|eSr;x=&EdmK&Nq7BCcXEL?Dq(7HlBcWi~|1#d*#I1bG9Ct8rOHdq>AgIuG zheO*P3~d*;QQUSh8u%bbhf1kuY-n0ysqRvQ1pmA)ArEv`&( zFmby_U+}uctr&4k!1TAGt@QP!D@_9%Nar(-CT3^JMoWyqF$qF+?O!D4_wICUdbXL5 z$ZXujqaBV3#*)jwNUuy@+H8Oko!uQw-1?LMuFnSFPu7-{9xzg`$`>o0uro2+Q#Ko5 z1ZPs$5tx;ohp<#}K0qeLf7cNstUF0{miklMl|xSRcp0KKwKs7~S*}~3KjuWYlG00i z(fFw7|D}qB^fKF>NLuT0}M+n94W_+s>r<F2Ah?%!%luZy_T3MbPIeDqifGtCRazw0Ggzqm7BbW7@FJ#`N>;QsQCYz~1CS{Q-fcLigC3_&X*eV)yc3X@%t_60WHS z2klJ!RT4(S+9%Lc%37C1&VeN$mfCR0-o&l^*X^-0@mB?~vfPm&?yJ9>WP)Ws4hi35 zZ{il}3%1#rxWzx%y*_l4V&ElGH?Tb)yV}OY-xb;Iur=}5RY{v{P0V8jJ3)Z^^VG6Z zk@Y{w5-43e%1JLY}G zF@a~J=4s;2lq1BU5brBSdrh}CF;5t5-wyXtC7+3hCLSVJ;oRrPENc_Ov!sLHiq{fX8?hvF0HXOF&`jI%82ljc8jIsrx6iuUvar}e=_Vo z5~INevQ=j>b4CCOgE`VOXB+m-eb(rR$iT{> zE|zx_I4(R}B7ZV4b8d9*Ahy0=l$an@SO<=md)U!+j0SH#_STxW9*O(+VJX3ABjQxG z?P7}M^%+KB7GGlxy7Yf6QsDZ12`fv?L5{h8F&b6?qqm6lw$3G=;p7hUoMSZiY{XJ4 z2ub_eh=WU(V!n_h?sbUekozfO-`wMoj#vQRlcKieG`9|8IL5wJdZ3(&5mSae`HVpT{7j+c9G(sf(}FHkkW3lu|OZhM?U zBVu*GQlWp%cQkj{9WHUdQ7kT;D&woIFWF7SD)TB60oJ0qQJ-bz+l=M>Xi}ccUzT&< zRC=n8&fh2wa9BWw!TL&mlqWOqVyqY86k;^I?vJ=DPWY2(yX~E8Kg-PT80)F)GV^5S znS_1gnBZ(_p`A3z;|-x;$RbPhL>GqN#@XpH7uYwUO6%>cHv3OZYw$T`l~3II!S9yA?s8Q9WHI$N5^ zxz88^qm77pcWOx?URCJ8F3|=Amg1~tx{h1^0TT0H(m&Nt;w*J6x14{DeRDoxR)*lB z92kf#KIkOQI?O^2w)`YBPj#$5jEKoIZ;K-M14x098cY4UundjErfD!3pfP#3H-uQ5Ux#bEY<@b5WtHpaVA8T63&IpzB$XW zuA|qgzr~3=mXIbeUU9Z&mR^j&F@Yxp({*u6|3vZ}UY~Ks!ouZ)V*<-e;G(MtTy&3M zuH~F_taLG&Gt23v8xDMTyMXTwd`(K6w~e(7&T+@SaZK>a6gc&!1E=1`hp8gx&SNdE zLydPb^LSGj4f}K3no{MrRq5zK@Y>13&&OIjZm&2d%`c9$8vNq?UZ}NW1da)qt-Tva zy*z8tO&=DRIfEcu@8TYXdzv8Bs0+7B*J^9~4~)Q^gZy`WZ}8EjsB{y&g*t+_P|WUz z5ts)}5V~)xEOojqYC3obOVx?KDe{=8&)O|A|6SLC5nSs3hhV=8LUyjN)H*Jhjw5;h z<5y#)i_u(%ju;L5s0|fE=;5z-n((x<5YAr5&^&+a8~nqCRh1s-e0TrLISb(|jI91S z51u~yOl?+O%4pSy?uytSinVi&JBH@`ak>u9EO+r>La394rH+MQv=MO#c>6wI52o*) zrixfQ=kQ}Kk@M^6sqzEHLR+1&P{LB2>5=sn&Sc2G;jHiF7cmxik&A-WBo4s{&Z(&P zr~|H-#e=|ETozU`IE1r1vOdqb8ujtY0oYIf1oqSV@FJIUnX(Yhgv!PejE2)F;AH&) zoUFhUD`6?l;>t!G&ef`qK7B6M6F&{txPB$h8p-12tg7sr^Rw!R1x5Tr2Zno_9pDWX zjth^2$mcq&EEipU#J%7%9o#!U`{sV=^;9)Jwp2V8wVK?68x!uQpVbFW zAx6WxWa?RwdCl$w_XeB`fVBqBm&v|yOoGs-Uat7&o2Zn;%Z-iY0LNO)ctX)xUBPC*|~P!e-Jn( zL8uq$E0tbS6FAn52+mB&Qi%0IE4fobT6DJw?GH02mg0<+tlW%<>Jh%uyG1qW81RzD z*)Lf>FdC;;5c1>fq#Ma4=nt^j=3FVP?P9bM;cjw}?u;x>Ulc-MDbAaskGpr8Wr#85 z9q1=G%iv5TtWRKlM#OYraOnUHE+=7S$yr+pBXCTDaQU|vV%fotl)YWTh=&`KKYPM2no|l(ko^1IGj}MxZ5@ftJ|3P|k7MjWrkqysy)M_w`(%){b@HmJdE_ZWfc~ z0`F_?1W1*I-<9Q@^S-ha8WDYfjrIhv(Vp%VZ5T^%AH?Gda2#3(N#B(!^nG@!$eDY! zzHQ<6W#z+pc-imZ!?dQWG|a0AZF|p8;`~8OiZcVTcEy>2^d42QZlJVcXf>Jz<5hVJ zUlBv#5yv=Q4S`-;XH;?80D3L%Yq-~9G*j=owt7x-FyooPqkz{tS)idek3Z{ySoLgpW*#Ay}olX9?2 z#ZsK3h{bE{wO4*SB}SCEuUY)!5RBl=M|!GG-&rW$^j=T0V0VYp%b9xEDuZ(g>4+|w z)x^a*gNuZvIJ*v8i*ODeeO+<}SbNfdwZ}6qT*4uEy~EjjbVPx@duaRHCCn{$hD%rq zu_y^f#Dz*R;uc_{$$;H9=R{&@=PXL>8<&E{j}vO)$B}TnoNI}t#Hb?*_@jmaf7El( zf#bqDjHTPGIPiJ-JtPg`_7&F$mcrw)Ak16*RJ`%G6TJ&3Mas)0`PA}!?fe3ds7A!3 z2G-K{jiu>D7p36LtgyXOLtF&LPacId7vrGE6w`FHPxZq6^_xhO;{|DI70nchnIx zfJ1r|a7bS$lq!tCF@a^x`9Nvk*=Dr%Kx01esEzXk9<8qhNwv#1rLWm2YT>_TsluZu z9$n#m?d@XHg4thcGE# z|Lg{nmk9e7gkDgC^PmPd0Y4{};&s5Jcn#`)oxOn3Gva-7+5uRnu@rA548dE8j(8R8 zEh#fv(&2@eNiiEKMuT62sh(0dx7PGy3nQ0l#i0rE`f7F>gDB=T1*TYEJ1J^h6Dof; z@}*)_7FtTBaRDU62IYyAXq$}K;d ze8R}}ixD^`L7*-F785&tB;;Bcb$oSD&IUgzj0*s>_+k!V@N@TQpt$|7BV;Bp31CD> z+Ce!Le6cX@0gQ&%%K`nwX*-XS*?>6vYM)&Hyo)A<5jZA6XzATgOxkjkn89a14jK1x zpWNfBirbrCPo~4ucgW@ExM>`jebaZ#>04d3@9|l?<(R#$77oy} zy{yG%A^nK}Yy}vBr8;NrkZ&(^vmmY)6ol4VF@XF~jR-7tB5kW2HrU<5&pG9yYiPAs zf11Ay4yQPzdGHpwN3y%d0g814XYrV%CIcqdHNOV7O&o#|BX94O{q0;eG#r2Y?=OO4 zDbJ4^6t3exhzK1NL2(F1)Z4O4`KcqVz%g`b%t-Uj@y1kPG%jfvOTO8Qzx3-vzCr2Y znwpokPu@UWwDQ6A54SR}2a1d593dN;j-*F!9+Br~IsKS%r+6Hb%v z9+ZE%4IX=d9k%%|@p5@rC#`(ST|6Q?WjI;tAYSu*Pxb+0I%crO2qR;9?vK%;+oc0!0x%Hckg+?C z%hpbgS}9gmF()rr4h)h)yDVE^_9|oK$i-5aFBj(XF%3c|ory7TC>Ks~ z+Hrj>UUyvHV8!bL+U@_^E{@ByI&i$jPH$EC zsAkl0XI&TK>UoUJfRP$YwLG>-@f_u@wZ!RklM*(;T^oa8Hn`|&<|7wy#%4 zH}=qaD%J-#?wj4sGhalStN#*iKn#srqYU@-)DRdg2z8#EJAL#}19M#%cW3ynRD7p; zY2yb*VBLbyB>4U51x|y_Z^Dg;qI2RDF-_Nj(a;B%e=x5cG=waIISPkhM88FGN{LKQ ztrTFLI5XHBnz+gQYr#xIswRzHp}gDgrR4*oVJDpU#$0CSP|^!@;1G;hG--vB67OZv zk@NngIqumo(iado1S2N(S*i@1>1{!@>XmD@^BYVq6w1eqjcb&~fqL4FrF$f~4e@St zf_#EH$Mt-C=Ne@>yoP5h4r86ydOw#4Ha|#PU^2r}#aG5Dk?(axiFI*GjnAGI#`G#n zK9~peA3`n{N);|qoI*G~Kl{eqb=y!9Td1sXDPT1Cnrtwe^y*(g*28KEr=5DlQ@OIUDM$yN!&7w?NTFnTx>VWzZrs~^<8R-2j|Fxv#n{!+%E)& z@Oarinxl2Zwk7Fg=$xU{I0Pejo)}sXSk4zg&KLaZBw_@X;w7RZ^0S_j(iQs9 z;iaQR9D)(Nr1i6mS}&fGKZE+vJF|@lEXC_dNBj}-lC*fyi;e-rSGqhfmr1+~|v^{vn!w4*O+`LAytLv%iI;w}?gK?xCt(TB0;t-7BEmS`XUq0m?SxMW` z*5HEpZ?=@GCg!cva$Yn1FNFss3-vk@`rv_h7)4WT;42hKT0!;Q&(LWGVDXj4F7DLyi=R2dN;Gq#c;ZA#ET z;8h9^!3aJEv$JKG4PI;|)mxUJ8E~G65m<`PI67hsjP0%Tv0cJaSjUEuOO^Ety;U7C zdgd&0x~D+XZ-q(egO@4~=RgRYO=GkX(K>bpIbvr;zZ61XsY#|-MQrP%#RS$n){V%K z4rY=Cwgxqt#44v{AC;ZyVtq!$KCAkqNJ~OK00M_x4~$XnTZ5MkK;xKz`NX+CN$W(& z95~;_h<7Dplwr=kT1qe)?rTG*kS)Mr-Wib z-ezD#zu*|9KDMU%A{@PYKq6(Qx{)X9_uU(2CvzOAd^{ zQb60TEE}Th6NHk$GG69zDLV6Vh=fBhg3qG*{l_-%H6%K|6wLsOt?|k8mET7CYP|@f zjflnP{w9l+QgjFC;IlJ}3rk^r;2XEdQBpIsF`fL-PvUbb8#6Eh$0P`|osW@?tsBv) zfWRSqer0GJ6ZqtqdYMe|?L?b`7g{XEXG=B?8W9Ds0@w>HfJbm2g+nlcuO;+R^ld;Q z=~K2dwSNG-GL}^a3*l>#|E4Mp=JTB}pN}5_x8as~n<4NVg<}HigiR@A%JhD;RwM9u zf^=X6pM&)|>dA*>;<&LtwE+YU;cFjFABqY5>Ay}Ui(s|1W111cS4b>gjE1)Wwhu{7 z>*2smay%64z%w;Q!x`D=hh$0SFyQq*9vb^-zH)t{uQsb;DU61FZSr+;?MDYXwonb? znG=^G+<#oVPX7Mff!6zyD)KcIs{@R{Z2@k>b50ToRSS=+^EBcgfMNfHdJ zJ`b?p#Um$1;Fw^Q0qb2)eZ6bYf#bz(8rp8D^`uf}NxJnGyir7>502M}XkKGIDV0}} zZU&zmc&x<;924Xm*3^H(ntEHNu@B<5i~FM>JS2Y;t5c=uZb%i@j{CMz$D|`ONS7j3 zaQhl&7DPvxquCpc}7+Nqm=5c*emq1Nbm?6Uo>Cr-=afoP6KMW&n&fB4);J zA|Yi;(p`nh3fCqsH$ga+Oo-gN0d<8s$MZR^bBqQny&B2n$;>u}AJR+kz^rf>4jXoHG#}(i! zf|Y)8Sm{4)cGWOO;hu{7zaX?P{ek%H>QB3U^cR17F-NI2*-z`|jl0iPD)t6%Q?Tkk zv1+z*JxTu^Y}LBFCx1ltpiRN26Ao$HHcFXZ-Csk0XceW5tmoon7`l}^p84pH~7C=kTXlEALXyjY8ZiIg7;D1Z<4HI zwP_;wv&13Uha;5O3|+_EeG!WNb3G>D^nUo26wK&KeFnq3J0Vi3y~vXG_z30sYd!61 z{w$?z49`cm@mZu#NDDgXd8+7{HdEQ%F+j^<#=V(JuXX`io<1NnwDv)FNre%$=s`#o zPRX6CGnM--!M7HSUB*+LKh zZic^BCU>?+C=(v(-+>zwvE_ z7`u#!_;q&V-(r1<2)4CzS4JpFH~cjzdErc@epNt&J;Tt25lYRApaZ^vH=~y$`8KOJ zDFSw{djqB`39I#ZciT=^#HBg{>x2EdgA4g_y(bAOgb0Y7sxnt{p?@1~F0*7G4yn3@_UedrDes-OhQ}qMc zmKY{ASvW%$#_4@R^oWpok8*H`ka=H$ciZQNh{NIzlM67b;drr>qcltAH4DCRom|B7 zP=l<_v386$BA^CCc@5%xV03tLxXf!4%6+AsIKitg34)w=of;|g*0&=vQs!+pjz-Bp zTVlCU1H@qKqvW|XQo>R>t!Bx*Zx4-$lzA@@gs`To#dqI6l31|6!XY-DXUTlTX}3I5 z=6xPsnJ(-uK0FyuMu;QfMbaEOb)4QmPF#qRd0%Ol6ea)cgEpJlsH9ugnIDJSS84kW!Yn7fO^M2lDC`bkBeS2+@IkNX;{Tuvj-~JjZ zWe+5sp+5F+nkTp1=clzetV7&APxk!BPwUO#U99=1&{}^DCLR7CUDq9uMeelM0xH-Q zMGz3Xp1omXS7SLnE24-U#ojx1P*Jh>-g`g0qVgsf5qs|idoO42?VIerbIy9dk3YP< zH+eFXY&K=`%mffLrQWL;);Y*R(~^LPyuVoBr_kk&0iQ+~G?#bicsA${K)|0JF|_~0 zz|*2Z!;Wy-R?gv7YN_Kd&?@uAk+N84s}(8Q zH`i$St92h2)OZ5C59QT(tKevf?|`E1h<-il@$cnh`4X@JWGe|}Ip2W|JtA6$?T1z{ z$K4irrgG0gpLrATuN_r>v`p{?tzbvr`Qb>3Z;h4&-}$V~Jl{rdu{r@fEeK-4#Avzo zu!lL<(pds-CE2{5H`tU@G=UXz_X}er>jct4#-wXwWU?L>qRE(O`R#!9JA6?mSMwt~ zeMH1>h@F3oli^t{1VzK$nKxGRQHOklJOHckeB$GSYbi#TDzlnSY`25`gA_dsUXt`5MjFVY%Sh?(4dCrgHIq#Pj zKVX$Xb5XP$9V2JTtfoAO2QWL1m%m+JoPzr%XbMHRM8?SL4$J3Wxz1X=}OmGL<>RNjkXB9^M)6Boe{0YSlFLa8FWuhT2Wm8?G4hmmhtL%S)?bv^ZPDKczfX| zE`e>S*x(rH7Hiq5sBMYL2CdRY@~%%c@f2oGis;-oM%LeE*~=&z&Qd=v=kbSqg#*41 z+L!3JLN$al$gQLJQeRD^gw^X&-*NJ3Dr?N3GN^1#%X?)EAHDnscsm8#zVk*W$H+xt z7MjX~cmALj&pvuDZvqxbn#*lqw8R-;(4jH1N;8}dmR5N07}>j>8GC1Nk7$YWM-Imr ziL-$nv20^bM_kI;j#9ZJjYoOMN}K^+rH4`C6SNhqcPLuZTz46~!^{2rEvzzV&3&?u zlcO|C6WR(8QO+%r=Xs)u8_-rXg<2!+@8j?8<#?J}oCm`S;8Of}S+|L0p`}(%iiT*2 zcb+(w*X+Ox9*HoXca4$P)>{Z#k5}zt*GA=ED*GqTV4m>eiK%raJm%gF zzOtz9>C7Vdo)c_<$IlrpW6nWgfVhL|L})-&`a2!QCvni^p3mvtZAW5R+MM1b*TL<1 zs!nk8qWd`>k-D^K0^T)L-)ZMo%CgIVI|_Yw*p)T1$-%VFdgRKujXzr9C2~RJFPiH~ z;xc(J0=S&8E=_Y{rJT7SowK*kzBh&6o%NY7ft?pkp$KGCSzpv7V-l~OPS2j zX6`1Cv8BpICXaeXzK?|h2_XmjtU!(&Jr z{u~ggH5+Bhe-)<900DvN4D7<8ajp;aj%E?7%G1!N$9Psu>moO(uPou$>6 zVNLj(PrLY4cpvczYvi8oz|)1dMm3~ph;kD(oyVv7#LvRm-tWX3S$Z!Zpf3$hSSi!b zg1!W3S`x%nTeycuAMq5Q;cWZDsr9nyRp8S?fAu`SMjq$Db%tkJ62xvha*@BkUs7a- z7!VCFte4l4+|6E15ws-OJD+^b6NXk7mHtW6>6b&lC|VM%6UU_x(~mY3Rq6m|;@}op zAg%S)QgpWiTVy`CUDEmn&yGnUmLxV5A-{dK6hTXZc`%2oDD<+Ka9jU24#z$V7)#NVxP_v))}yk^@<;veIc{$$=RiOhbA2w%Bh zuJLenj=L=nrxkOWHxaw9gau+QrB#Y;+vNtYH0IcaC0V1WPbN1pD!Q)72+{FrO7%Ir zr1CdV?K5|1tW5m4*O6B>Wa=o3tOS^E)=t3K|OXYiDAp+8V;YA--6&(OUb5(Y1kx8y@ zW-dD-x1Pk?&Mz+VL%*tae3NYc&dRm<&?b2cZa`H%k)pv4cWxg~b2_`I41Jg8%5-GC zJaXRM?D;48CfV$%n{yP6+d7BWy8n*92a7OGsT>bIAAAAS_i#HZLaZ{$EPSFHvNX6x$N)bymtyQ@Oq%o&%!OPA^WBBS5a?}<~kCzUrsFK z>Ud$7k`uS;mASx!z+cU6_p3E?$?~;m*!>?S$~s3%dK5~zr5q; z>U@I*#~tG%S7jC*;WWchXTJ={=W5ntYR_2NDt9XLxqPQs`5o@YR--H2!SiYv@7CcT zz7=*}H==jR^4U_GDZ_{Dl5aD>GxQ}p0yy;C$)Pv)w2qYt*`O@QRk7bLsd)NoHfYc! zR^G~x%4vc8?4OaBifY0KCPWxCSBoyYq~f%zIm3=9eJdT`k-RDI_ZuQ$)OM-75)^`> zVg9(9j?erYqI>~tGG0vFE*1Y@X+_b%-kIUfFM;z0)g-}XEyI13U8{JnZF-4KUg7|p0?=}OzN}=pj~b(` zVrWg!v{n~3>s9A_n+Td~^@n8)?F@FrAM+CRi%u46<;RN|GFJm%EM~~3rD#oi8*xP! zPBt#hbvJ1NQ;cslQ$K&TnEhh>b{O+W|L2Lt5vD1gw-+$Q_*Uz-Vs95SWE;a>DFN^F z=YC;gW&9EcP1)IO1yeQvwPrk(Y&k=V1@!j)a2Le2mZF@Ck4{r4;(_}rhP!)+&+z%S zz7^~x66__hE~^;s$;H=Y3|YP-e=cLcIKo4#p3;Z*N*7+QB=^cnO-zo-2v z(%($d*Js$k&{9ClrSjl*`GP<6EF*%&?#LJ$!ZY&*hW3l8?wi>!JA+a5hrR|Z6TV<) zpt;hd-^|cTVMnBY^i>}X7M7x5VWGOy_t8AlTBd9@&UO2t*Sgd0qkW8+#}wyZy=Qz@ zdk%_*DF4t)UO+GLi(e9mDJmEC80B4oZD@H~0KZ*#^4tIIaViCSqI$-DZ25)*zg>6o z+ieJ%3;VQ%0AB#z=?f4?b$_;L7DK;@)ko&CUtSQvjnbXmC{A-7-!O}zcZD4R3{&07 zFy%DYxN*}N`mO}8oyE{22E0rk+|`}F0G!r#XyROkJ|DDBCO=VE{KN$Cm7!%VT``NH z56&w&m!a>8rqw9ESXWHI6*553T>9|oOtF~blYbHC7R_Rc<*lB9-@bjg?qul+nrp+r z=}hsomA8`}G0LN&zQ3)5|6_C!Ip)k_iWjbOh4-4y6o1?Fsh%>6{qn)`%&hC{!sGsf z*g$fHZkx-{D+xT@(wEbJ26G-+wTti%p28GQTggaKcM4N1Z&L=*P}Anmx*0gPU}t^> z{G-_ONle-9m49uI>Qk7q%ByFJ*0fx)9)SZ2EppWIh_oRVRGz||rvUL3t!X)O-V5xL zyAzKEA4OW*6`i2wV69g&Xq_|-EcBI~7J5O;-S+1^hF*J)vG6v*rmxVZg+9<}p%>HR z7clg%JFtE(LqE6;%jYumsMEBy8Ff8>yExtuynbmbQcWmY(|U{=spn~>i6v)(MY-6y z3_ZZ;+oUDIjPrP=W*O2HXGX^3OHdIrzpFSqqlFsnH--sChF&SWYV&Tz_OOw+)RMR)qK z2%OJV3a$oJOWP55i>%f6hWdz`=K^fG8l7Ii(91B>-Nj6ui&)<|oS5j&6B9vGf{rX; z=%e`j+G2(tjPf2fMd|Hv{+OIuU9fq&)_Ix9o7^K!y*< zD84JZZFa_73XL+Xx%OLwWJVu21@M9SoX*=c*UaQw*{@T8%rD;Sn@Us@)8IDRrSG;g zv`zMYwVk2G%Z~W^NHdx)tt+ZMUCXn(Y-M;hac$x*rtFDIt70FwGqiqc+AG&DdiJ|j z#iHM2VB`*Ed!zDz7rykqem$_L7zU?g7_&s#WGDh7h**}pb=i^`mCGCAkK0K)O~Lpj zYW0c{Pb|dIeJ;ka4h_T?xUY!n8*qOYL!0H|JG&TK3Ly^5p)^L|h9+WY<5z(cL2FLY z5c3RTr2GXjQc6^h(J@AfdQ%ulMQKGf)HE;8WJb}7mX(v{qPp7=p{Jket011t>Q^4d z>k*ux-3MdHsCJ`hu$L@4sc)H<32fB?#_$Nv(1t|Og&Q1TXxD;BQ(^1$wE3U#VQ?zb zspbK8#1kxDuqUIrMtCMLx2!46-@%tGW{7@t-FjZ7W)~yl^+a|qWeRhLO>?!uYWM zFgvgea>1VsK}v#K{0e-kd?wi+4!JJUAh8p)A}JGCE?3YU_R+K?O?w{vrgB(xX-6Z7 zbx&d>Xc&`0A!tcT{x5bLwTsZ*JuS(M0pW1QfUsFuDB5oE`r?<7=NR6E?*JPBO{rZc zR>q_Tn;d9mx2k1Y*^8eWxtTWrTgIA7`{ni=U^j#}NUeBw#OzzEd2rHGKKE>}4M8oQ zb_?XBooD#75gA2$@Pa7*PrUT^f))i!0kw-#Get9FatJ#l7rs48OCKvM={Bfpd8_*e_?e zLrcT^DDu-Gr5k)V@C;}4_0u_wjny3fQz8wTLLzr)pU%Wf?3HHUjl;f6bIE}T5_`TK z5%1^CJ37CpH9ZsM%umToeQ&HiDDiu&u=t?FuM74DF-bnl^LF z2mbem{Gt?`G|*hsdT#F}^W4&i{0l0Gn=l*DT#HX0lsSD;R5rCvz~8MkLr7pMQDS{j z5f_`>7~1TpY>^_F$(f*th$$!KlI=g7w}9vR=_y_|tSOQf1#`@$G&w&vQBKK{+|&e1 zvb37HC!1&vvGk5YThWx4vl8X{Ov%mmnG|wV4oQ~G*;YMYrWH;9E+-bl$q!8ln3gDK zq*u}9PB;>Rj>;}SH1kK5GOSytYlgpKPBU~d^c}{YVL7DKDznSd~TQdge-df zr}KvH`*9gX-BqQnh*tnND~@L~EMs>BvM`+687G7>R0BJ1TwNYvwaB z&-QNNa})3JEeUW34@pTFlqk#ogc%OT;GY$a$|5fTVOlx8H{9YmPP&OxBEU$DJ0&rK z?mO2L^5Th~W;ET)KaR`w@~0W?5pINjoIPk>RhN&B-hy46=x`jnlgB*vXgy%AbH z24YZ}^_bRsCl7vii*rEGTz%djmr1)pcgST&9GEwXKU=YyR|0D-ZIig-N9DZ7nmH0t zG{jG==ELKz)ZqtU%|LVA2v3x_emIf$sGNNVTGt$RU(WRB*(TQF!(pV3Ty{!&4gGH2 zh5YQeJh%R*`TYLYartZ^XlNo*Ro5Kbcjk3mfEe+#EIRHMt$R{-4g2A|P4J(o{`}#X zTKws6GHAKgXP=TmJ)o^j8R<9X;rmb3G`Sxs8=jS3HNKjfPz~*fl6hPmhd1SNv<0nJ zS3fIz1;G1&vZyA5?_ZQ-OMi4~mG5E!-ZiKij|Z*ZExIHl4}LIZjQf0E-cI$|d`|Jt zdD-~OC#P0Fj*jEodN1b*z=3R%@`9X`^|SfbsD=~`5wm>u^5)JMre5hU$Sk=40pG;d z=4a)LAkYxrIV}n7SARX`ogt#N13bfm_Fa_Aqy##$% zMdqe`l=fYUhOQf#RSbsc-%nn^sebMY@?*efb7Y`BpO&O)wJ-XLBM{wqKSVc<%y&V~ ztMu6%al!|kl}iSEHPN&r&OpleYQ;7O zj>u}y=zI)<3)LM#=#V&)yu^X<-6LC&0P4qB?DsJi{j2$_gJn%L>#>&#fJ}O zE1+y^{&;aHw@BBkf~XIiJDSoo@siB{_Ji5F-tDi-N^9Sl&oEM#@f3p~uJd^Cil-@o z2QEpBN&mX_RoQjGPMSCP6Q+ z%N;e}n9s8wUYF?u-#BI5IG#@An4MjWg4U(2NYS*_;pQyZt=!9yO=N-9YyGMBo>^z=E?QwboBIPr42B7GM&u`1^-Cmf#1LOBm zaemCLGOrACElv5{_NGjK;-#7EL6e&h;pC-r{&@4aC@%=nzXJh5b2T`0U50u>i^6w{fV7EQzK?_YnSZIfH+J;<*~d||Y@|Uop|ieSE47QTuu%pr zi$*l35!9``7Anf1D~q;~XBe(`s60(uH?Mo(vyI~&*?x?$MM@9wzszuDL8GQ?+K7Ys z^aELHnCp`Aqc1RA`|K}rnc=#GqG8<4G*;hwZH37ksC@G*!!_sq$rl)|GH6M_HQ10x zKjd6rU5&WFaJ4k($XSM~upQ^mGF%O6T8W#T0xR5~>e&8ngh6XtD9dSvYeR~LGnP(% zdUVmh%(bW%dV=Aa^HsYO3|Frdt!YKBMd^=IuH^yn4boiKmLFxfSO2u}D8qdM?41{m z(toU3%{>6Iy5MPs>uBBgG{e_fn@B?jUFz!Wqln z8+xVB?n1!+W5|dT40l2WE1qV!|Db41%Q@k@el{qt*a7>fZU>Jt+|hlCKEZHDM@xd} z7vJ5C$@$8QL$E(D{4J3o2M*(RE4wHy3Ak!*X^e`nqdyM_jNh$tQ3NdsZ0u>$7?b8# z5d9$%0!^u1Jb@t-kd_2{wfL+0KEHIL2XI&h4Lrec7w5a{D8t=d3dd1~77K`~^5PT}c#&_d(m8>W;D1 zl{`2xf%xs0t@!OW1id4GzJEPs++LG8j)wG&WCu=ve_it6Ydy z@-(fy#}9pC@yfzA^0|&FDi@w1sM95EY4xmWWge$8K0%zKz7UNaPc77$7oHWUXNuOe zMybB&pYBu@i$5fBJo!<%@FYf^jM0)btqGie7;ygaIrx=>>W*h2N)tT)u(SexyW!-w z|9e)XQt(7c$)jjE4TtlnU2q=N8MKP{v4tr+&uO`M{-tC@r`pUE z0I*E)n^-R&Gzk%-b zH?T=ZCYX|e+&J|No|8d4^;z3;2(Qxt0$E5Z1sP&W21RSyWA9md{?mt zH?@|tN5?0gNb!Vo8?SQWUzCksLOej@sXT}wq-Az&+cnM6r<6SsH2ROKUVRHnU z{CMQ3_o@T$4!s0DJypM=xhNXWCLk(TH!CWaKz~=&8_<8$MBAb?x0y7YzqBGp3XBh? zdI?2itT6REM6`xDkY%knkOKW^Rk`TttK?yfMyn_Ogh+*hAX4F~;{k$}g%QkDx#;h1 zedj;GE50;%#YaKpVf21i;}Xqvu%Y`2OszuTB z-fG?FTQ2b@RzwGmksFi@jD()(>$xoH%C zm;;zj$Abm>u&`o3Ge#CNa3yS&}cUjmzo=0aa|)yM3JqiG^}5z8xHp!d6y zfqw0(T&f{>rDU$e1AHC)-ET6`dtJ$(@-%H#SUElfeB1}IF18+y{^tro<-ti@p_`7g z;IV!a_;Bb=uD)mVQdiFu4R&2=Oi_sR4@bzY4YQl4mf^8c^3@9~VxFcg zT9I5#Y8oVp!o9Cm!iLG-yR2LVS`3ptc34sJC>m~eEbSsH#WoNsh4!GnC|N&7?;9E+BSu-8oV(s%%IB86<(K-)gHNsB;ZCHQcX_w;#l+&K8 z5wc9ARc_71!E#t;PxG9U%7go(n#J?b&mQ8_1vuvSG+rN-2RC{i4(AOQY~y*s zvzX=@G<&ebxN7zYe-}Qx@i}`!`7^M?(OfjT9F1lNv2hPpb~GzJ-BA;wz0s&{G};?Q zLzK-A9r)DyTX|E^>QcT4iILb`R`r*4FI!RB)@F&2$vb;G*&@^GrR8t0HRV4*D=OpC z^!~Em87tR-5&h+rBY-yTi2<^*BNnu(@tamO7mZD4uHT}pRh&J}U0}lq_PS*blP5)E z-ofg%@bJJzd3QS^M~pC99UjC6=7n4!o#vuwh&G+*r_cXfo6m<6#p`+F2n*K_nGP_1@)jZuH7HPu(nhl_(9f5t0y^Q>7^SooM9_c zMCDII7`7Yiyc!SIhgRIcTSAN!Dt+Odfh>LoXb2YJOVt-BkRaZD_#pqP`@@y!>*}z_phuy#Gt2kHRWF*d}D+))f?xW>8Q**Pb|O=j=h44=bI#M)_l0HbAUoQcuQaV*w7c==st~iS{ue^kmZCLndvO=zt8=cU(y3O7VIvvN?QnvX@w5K1 zG!rqv16a~>B*VD16m3ULI&fW2fJnEkAqL&&kdX|d+fuaef>8|PJ|x^ZnQN;4sn2IV0ob^^yNzWS zcaTPov?CULKc~-!$io6+{5lGZVHm4;@2$}cqYdYKFq&Z$Vu%CT>!m)~8Ao{S(oqa! z2k&1wieXG)JEH!|BF3{^k@o2wA(b1VdOuEBiyjMo-%G9Zwe>8RQI62CNPXax9L+1`xP0l`|~G(1A;p6 z*5DPNcg{qHap3YYXkBNVJBo($^W*gbdpe`Np=X#{EfIe#jh3Wo&%l@LIrx&Dg;k&1 zyGabA)}c3;LerAqrj5OZ?z9>hxt2_17`2YJ8*LGYvI#O~TmEV`8R(;?e4nX2xcMD? z;;vafaR$wW{&8xxgkEWuZ}_xrgY=i%lZlSN_KKT`qo0fPGWdl35*P`OZ3JN)$t0Pl2zC~kzvHnRjDR3ygh`<2HVo7<@$JMj7His zXwRqe;ES3ar-wnb&=U}A@?iJ`hEYgA?4HOlrYMySR?hqf^fP+`gzt3^+gH0c^LU0) zPpLeJl)LMaUaWjw@fdhZ?Xrz$7)P{erwI(>i&EL(@9em)M?L&Y^hiw7?;RY+FoNoe z!{eCRpR1EGDi195DW2(BlQ$D-i^S+Jj*ep(1%H|6c!rVksccQV(%_Z;2BPEFgXsAA zhK^+z1%Jfwu?(Z*Q+cpg^M9>pg9!X3AOb&?(QEv8h7tIwJUF9w{iYWI8^Daa+4PpB z$1sdsPsesD58@{_`m9UK2B6V$5usK9_`9|C@mb+&ypL;Ut{Le3fzK)zqSagity?3R z;j|iXOi{UTmQnT#oIfmEhUbdp#@>)15zr!r<4mSfaGjuRCln37GNoLM4tpAig})(i zm7x$6t!aZxxEMpNl?=z#i;_VRRQCT~Evb6Yn$uMju+<}64ege>hWmHr^}7rz8#s4a zKI@swG2wqNiBnCo=Zs>?GNEis_IiMwL3i321nvz~u8?d|OxYQfEsLT}JA>}DGuU!r z6mw-S!*!Qsdwm}suRD@w6LXIR*itA0<9aK!rVXsQP>;y_hBrJMENCu_d#)_0c0?e= zR=*Fi)t3SS_iCyvil8N#G2#QAG2#W;zs8e@*6|n#-m)iJdvo<~lnp_4@isI>{`wVF zUf@nx*(ov3x+)hVv#a0X-i(BB{VGI!KMMZNRCk&Sqo!MS>Y3FS>OOGm!VY*S^*pyc2#|FWsf27vK%s%gTzS_dNuz)l>>a+Y!r3@6x@7KRx4R^Oda zX|_J_@_Rn#M6kf!gi66E_Uf(K5uZA>(a%D3{0HDiPjg|Me$_KDYQEJ=3KpE9zg_T= zw>lRraMz$@V0?Qe1NS9XFX=JIMfZZ3{oY_br)6RMe$^8(Qobc4Rk9_4Wyb$>d;tqR z{U%71_jro_^>wK4gCd9>E}o)IM3jY#5;TP(NWA!Xi1m_uiNkZ!PsdZxisr(bBvd`@ zh>5@Mo3N!&1l~7cedo2GB-aZbZlyfK1l|jv+63=3P`PTR9>Y{bdkeAV4^8jdrj3fY zXhYCk81dg~-Lh|j^eeA-^TlviJnjM2o1*gUh+MFP9MIR?K?>ZNsCQ1^Gc5^DGv;pA z8SHTy9tf}@XwSFz_75A@>s4TnGv^XSjd1R3lnmT+sNRmd4D~zkeU7cxZ*TJvtA9h_ zno1!k8g|<^R_hBPay{&E1g`p2SrkEKgPnTCA${%eaw7h>uNK!->YJxuuo<~tcSf$a zm5b{(g|KS{k?VD5;GL3sTS-r46}jGe=McGGcSf!kxHD0G z7xy*lnaYOvq92#*&N%e8o=AH>m1oAG*PU_b1@0Qv$bh>r^-N_0fA`uLJ^k7rJYxbx zLm*!*?xPig$^)Bzqw0F3V;_GHs|?&#t8oeU%j%iR1`g!STKcG=dwE3|uh5>L%EcQ> z6oSeF?#G2MfrH@YlOPxqX)e4`MU9+zD~UCV?pXFR@bEw3D%QPCE49!GC2y9Qr_K9D0E}dR1GBK&ydO4~Qxs z=!_~aXbQ12#G}=~LckpO?>tCz(bI5xN^Z@W*1z_dlg@p#70g>=9L`%}1jheY(y0u* zVZhP~ZlZBGZ=w-+LxHL}McWa7_NvF1SB&K)p_gQK-n*iD2}R@WD(ZLBe#M>kD}i^S zsILfbM^L$FNzfCgZ{}myd5bBB18fMqgGGJwc)y7??)L4qjZa$aC054;2)vz3$-q0j zR4%;PMg6X6p_O*=m7{WqJ-;FF&M<|bXibYRwTm~0bz(MHC*rMNsw|42vSC)6e~OQC zEhFk*^AJ>byrWEwICw9eHTul^evZ!ti*Uj{4_mo-1Dwib*J?D}6IaE$Cr;2@R4cso z&5{u`=P5tEvnJdtlfkO^&O2|fv*xJgsWs8%StBuENX)+{`D(_&lYI3|(Qpzs z;U{;**A@NuZs2&bu5y*RGgzvV2DK~3Q+@S2*Z@|f5%ZRXh~8)RI4Awias4B!E* zfE|60#xWev;+4J>K}#~N=iF&M=XeXBLeO@zw^hmZm$?`0ieg|_L{n(%;vIEXPkgmC zj!!F*UF-wi65d#+dI{crr=IbQ-a?Gf=kcGP-txUCVWsc9<4)zmJLA;%LD9e${S?dH zTX>2;peNciao$Cz&~~lbRGiHVUU<*rK?dGAr^=-=sBH86gFDYZY+n@KqNLFDD*$G{ zOCz2k#UAdjm`={SmQ*ghsY#71DQ}LH>eepx3~>kHHmG^c+VCGRf8ec8YFxtGpwzP+ zalgbLj^)XwJA86S+E)5>bx+X{DI|FdKB4_i-e2!xt2y4Ur!=9h0I}6;%;Pnt(E#o^Yz=oDDg@1iJc-}mKSXJUdlW~*jy@80^b~>o2_=J~H7(2TaGrYd zHognSUF1e6-6?{W1YQtxU3mYjE%|MjYw-?1g`jOkcSv9(J3PQq`$d9dOS2JzrqEp& z-t=e9A9Plu`$1|ip=daRte=**wOAGcSr)1+PDPFW2CGAY0`3cVL%MEHs`U2QJR%3jwyT zlfE_N=vd!5a1FSVYaozWqk0B1Qk1*_JNrw;HBi568l38L=c&Fx_KqqGSwU(%x6614 zyruQPTWa|viQ^rhDi=i{pUE2Aw-t90pTWwxaHM?{rMc*cs%eYgxrs7~O+=ZqdmO7; z0n-Uii+>-T?T9u5zH*mdRYmouU@3Akos?F{LQ>DjnX&I{^0~u5* z7c#4?`J>5OH?bJB>hsF370opxslQYw{A%_wt+fKrwsBrk_Gp?5pDjBzkr9YmDen`S z3*}i}DRt_(iHX1iI0ZZaU*1k%KmpO?s)vzmeP4-e5sEez_m;>`QC<*-c^2T8R0n=ZiUoZoa#bi3jFtp(?%uBF z3oU=H?+4zCJ)5G9@d>t-TOD63jC|y1Nutj^!}>~OJ<*cDH)FHz*jH?nqh^^%8{*27-tx7RO-0fFuBoG7 zF>XXn?;+~||3>}#@MAxQ&lC-I>ddnogEOsm>;(Q*y*AzDl*WL7Gr`#QUFGyR3r$Oc z7+djv{Meh?ydaz?Zfw|7_InCUAV6rHdQ0S78J&7ciqP8&6x$cCEh7PUPd=&+u=+znU1-MHVdTZSuM(Vu0)_ z{VoC;_+DUd4}ZktXQwh_Q&H(&%X-Qs$-PYeRkG#XrDrEZfL%t^1OC-wi1JT!xozkz zk#jX_b5Ds}ELbztf6YgiOd;N>sM*`Q%a7fxa(iCrDlc5Mp6yx{Y?MK4&y!7Lhg*BR z`gW09%6bD&;)H`DQrzn*S0`C~FIZm{$|+u)EF>PkNz&&Y>n<U0>T-_8=dBMTH5_w%)I`xsr*rM_vj+aXwF=B67(L2Wi zot8WKLsyw__kYQ_Buj{7#VWuk50*lbYhTvR^3n`%a|Xa?YivIgR#z>xn8e-Eb(F)?eiE(#wi3gvPI8B-F)m~1TY{{dt zfe%+Fg9!1GRY*Q@ z;chOG^|f8Ah8fz+n-eVEsfL>7-u)+coAikfKM^2S-tHi~CC}+xniZk%Juqq2bsXcQ9l z59Jg$U)i;ywWS(@r^S^L!p{TZi-g74dI?30@^3FoOwH-kYT^EJqS~2~V)6Ptj-y#R z$|4!86q@T|p7zoK2x}$Nsj4B?EG#H|-|TUGsnkwZ%52q^)||Eo#3Zj)R;*4eqrQ(Q zEK7X{_)VyC@pnr`^q10N_Nv_C>b#XYmZcCVPpx+lVSQ1v^3@cxv*$Ly!8%DTWtq*s zroQ;Ba$!l9jI>$)61o5I`41v>uI6&l6uolr#NF!|#2ko{_GVgZInB>Xp}9UJwv;#4 z`I_^Jrd>OmN1VIxgHH$V{>GhK$Z0wJ%#=F2TgoM?ea(5$j#!wpoS3>Qo#=lrNvDXf z9?j+2Nq(j#+tW0c)hAdbfxq(+Cc+}Ki^FwebZjeCLu@Pcytsc0`Oe!y!_5wh0>!Sb zDa4oONqVLJq0-+omsxI^M zJe!F9q2nC8UNv=u10ps{Yx&;AN};(Z8dfrOYw+k{`OLfGDPr!OHnPqzAG6#k-`dFR zqkNoe>e+f#KB84&?hW;*a=EP>{57YULJ_y(+REtnIh|TH{Z^T;N>`k>0|ZT}zB*j) z=wszdFT&;72&*KxV`OG|US>gQJ`7g+>vwdJWjmpo4tz3Rcc$&A$}r>&O!w z;phN0rzsCcb&{*PLoWCWSky_@?1u<73#eb!u88K!___-V?*>}I-(OF9Fhr~WH~*p( z;>e*kGH4*Q5BwD?(vjiwh6&*k(Qty5W<;RTpqryTXjMH=XNGOE-n}csnp1gj`dYNA z-no8ZJ_Bk_5#Rsp$nbr@--lXA~t+$!_N1!zKJ-`F!t+*uvRQEl%+OU#60Rew?TeM}rzNnH#>gy}odhxH&RssE6v%g((nQcYOrSddw zNu4Qy-;5fLP9UStx|ZzxL>Nop4`vzmWEwm}?`z$(H5;Z`&)^HtezSg{d2jv%_MBA4 zcUN6|_-Zp6hL{ujJRj&QN=5Yc|!*N};*B*4C4s&D zXer|X%m!{S8_<-y!Oa=Y0M$D-XE>KYM4*!&^#*=3xGUUOw0mp|_D@lNvxemZo3nvO z;2Cu9w5$cYUDA36ANSN1jqcvD{5I?$2c&AoN_EI>>MqYVWgC*^F`uv9Z_1vf$m5(j z({8S0L{(&>K9S3&ev9H#c(Y`-#>VzEC@6zz)A)pp6JO>wPrXwQ^bOLtr)Iqz^Ya#zmfOS zC!QI!q6p94VGP$)J=%n^U$gU!(KU>{_p^xhon!QtcU!ZuIdYjb4;vQ7a7DKKT5E=@ zD02m1;0j>hskRJPeY9LE5AH1XENARqo=!-p2Su!^5YBM@*|KOj`?a#Hb(k6DM?h4S zrZIZV-L_1voz+UOP}OjTtJmb$+p=G)K0UOIG3SQ0dad`YJ@fLhR;jdHDi7l6yZ9L; z+PR2bz}cpVq}?5v|12M~$6Q;}k!_vkWA=RTGIa|y8c+8XD+kBuu|L`~wTn|)t&<&@ z+N&u`YUs!I3|Gz&Pk*nsQN30g0bFgvGpaKi?q-!mWyqC=g1 z7vYN{DZ2-BWoloma&_$3m8l)8b=zis*RsaC%>~4fb}@R`iq1^!yp&cyqPjA*KUZ4S zU)Y(c-K%C}@cYlO;`yjf4C>;YCiYS;HOZrsl=o?J=N^?SWoWO;8> zUy5klw&}$*L#5D~(>iIIm{!C%*tUd7+ayLWKBPNS z`&w1o$Afw@WmQqnb{SxkF`PCT{oIpYOxa|9&qdL2yQ5nPqj$IRqVVh3K#F+VvJXQ` zQC#yrtQc60R7o&9zbR~lPu0ymC(VV=Y6tlvvOhyxmK{M;{ujd9*B)@mV|)esRo|=& zI3iREMbr=I$CORZvMo)VRm6C^9xQh+VjVPvBCsA7BEqeJ@p5HZv9WRtrwE!Wf8#z( z*%qxc7Clt~W8#vsB5xNvg68^Oq90S1NekirM^0nt=|Upivm{PaD56X4K1^9TmCXrO zRe$*z-*4p?{of>U>{qHRnv0@go!Pdq@oIP}(HHD+6hU+0o3(0w8hS}5u-x?n1Wm!7 zp>olZG>!Btn+%G;o@mwlLtQ^(@V)%v!EJjzXs*aBy_mB5S~VXHU(_o2qTXCd;xvUK z@awV=PwM#@Gw$XW4?zY+(6+MI<84p|;~rR@b6oKd6mg+qAExZo>a38WHLcI+w8rG4 zo?;Q)LcA$|Kc;NON;=I&(Qw)ah{J#={~Lnl+UVJjDI2+U&bg<~YyD916rw7y6KD!W zTr1dzDVx4^&e`g(4904oY+@1c`ko%`#ga-|c1nt%^#d+WcwwV|WGPXrn*E*AUP61m zZDerJUP5!xuM4cs?j?+4J<5yDbz>bg#cya&hBjnck{v-)D1!DeO)CpyV(oS%gw`a6 z<0z_n9PK4`#L33~MukUt#TfXaaBNp^kRoVF;7b;g&k$g(oeS1lnu7C(LerAKW*M5# z=x{%mI08I#JQ`rH~O1_T5mB zfpe|WgqBO?!8@<(X~@j!gm%J1;C!xn97WKQAZndw1!H}YJYq+?7>={El8$QzRS%q< zt?#_(HgDr|l{8`jL~fyF;hI5di0cxox5u}{B&Y_w$j7b+1t;>dK+J1T@noSpfYH=w0@e_td^(oG+jE8`l7w&xEA@n6~Lb8 zeqJv<{2&iG6f8Q0bY_{8`IuTo2X|!$Mp?G^Bi%bQKUYgbxFIhgtId>)(vr1`Tu!&3lUi>P|w3dd^Q z&ecEb#gG2rvlH!z)PMG5CC7N1ElSbgAC>*6eq_Q)UKsAX+fuSS%l_TltT{zc*_t*T zMxTDp(T9#Qv>tR+f;F7i2Yo3-fnvb%qA7G#qhlAaUiM0T{r>YjIuYJSs(wtJPO7nw zB2s7V!_+CM;(=(|mK{IaNrUgYzi5BBS#;o#)|P?T=iB^Gq1dYpggNYD}bSMp_c|_JaA1 zws685(SKkZMbMQjMT5u4IbUOMVl8t`jk(l`2|lZ}FGkp~R>t*;Zw;fZScvQp9VQ9b2@hcH zLvuyC4q%GUpvFOr8e@%#fqx}47N#-8*3>sS##>S4Vx$oDY}blJnGk7 z|GCYK2qZANkQxCn3XpoXBT_(|qQ4Axp-kLw@=rh_^HkSgbTx zrak?c;{K@72jeiQXH8oWno;lmR}EOCmqT z+hvfLPJ)(8{a`U#lcg1ya-)>5!3BsU?Cw!=Qsv+F^R(!al zLc!gR-Xlf`WM(Ppv|K6=Vn+ijYzDBxT0mPN`%Aq8ibiIY`d!mvhj-^yfO$3@_@c-# zQ*VkgK50p?zIwNwmjQO$jl*T|!-bc~MdQ!h@+Gt?VWrMz31Nts9<S^BfarGBLm)FxeW?_Uj3o8Drd1D0CVpfwM9hUGj*LGwW>D57EeWD0oysJ% z?0<^rN--Q6G-^~smW_I*CE2(*aTI}E95wDzG;pKN`HB_R*dB$s)Yy*C3V|FQYiw8S zok*~L^vSW{UnY>!1bI3CMSS$iA<9gwDx&{@U6GTwq!7qRQmue2Bx@7}dx=1M39^k8 zBII3Hscb#J%hR;0;f00Q$WkJA#Tb5NSQn`*UaBmLKrWUgqwFCMaW}fS*l{e0Q|ZXX zQg02}R2JenFwdG;%rilAAsbWm7-Xbbqv(BLg?#{4*elrGA(u;)i%c-}Y}cxOPzEt7 zZ#LlxHh?kVT_o80>Xqg~ z#;5wakRfP|iESFZ=JkL<_W?XWk&UOyMb?~pwrf=Z_=(AeE#qI{tEFWjS5bZ2$SJgB z{0ThE>ThfFLWvQA=0fhM8ds2iX^n8LTNmS3=LhmRuuep-qbe6Umns+X6Rol2s~GCY zmusnG0gSt}Tsp$pWvJove~pQRFKQbfH7z@6H4C&_3|di5kjwdBt!|x|!ozBsJWE?W zsP4$1wA$(o@GK*NXQ{#L99y}I#C1D;A9h5Fzo+w*OXl&fFb`71p`D#1uEI|r?<5_O z)(!whxU(gB-P#rTVi>9Y({+)!(#NxARS)E8@=Tud{2Z=>jM~RLNZhN@a;ZGv zOw1_Hufb_J+!H78Y+IF!XXdJ0JSDeetnoj^@60&DufUpt%BXTVTuvLF(_BCJy$F}M zD~3Hzd~&hA{2RU>*6rJKw3F)G!1@k;an^33; zc|=McGLozjuHB<5A{#KBrh^X_@|IKz&4sKdH3mb>8enW`<8z8;!p^@!R+yR%?1+sC zOe`LjU9{*C!;yug%0h08l81~WOGfnQ8Y0<)ETVU(82({ss8r`_Duw2vXt<{#dpXf^ zSvqn5Cqz|ovZ+*Uky)djk?CaByd%hX3ukxXo$WGcxyXRB5SLHgHFxP6oJp`cbkkrl%Y;Wuw3Cq*=oA(i~i zlbDmQL!{Sw#eh;;tvS;`982ROB*>tQEm|&>2lf(2P2nE?l>Y%ISQODEU1N!-$dtVW zJ#kqJ5jHBBD1K;9Ak}KOM`PIxG*tDV8fw}dhyYb$!*!klWSrj7NaEQxEtkpzd;7$4 zqU^Fm{34t?XIS1y;;BAG(2}4YZWYB9pIDv^&LC+@%Wgpuc>uH|O$$j~QGE7_<@bR( zKoR{%1W9BIP_(AK*i=a*uWB&|Xs%;X4Q1I07QeubIQB;?arf>u?#W{GY{wc&Jfj~o zDM-$8$zz`UEkDpm{yL+tkhhH}6nBni07QXB_2uCCdCe9rHNAl>oH?(FI5WS2ESkmo z9Zsr!+K4uL&+);%V)XGd>&yQ0tXvd9OVYID3mS?=DIwPO$0VKBt0Q=$?zZDK#t6q*E|`e@__vb{Q0ZZxAB7TK4_cJa<}(rD3NiYX?yee ziz6lHK?LOh8-nIK8yqB&O94BUwUtEn%Gty!bpm`*?ss%c3$0hBTDO>iDJACD5u(-}-XGEUVlRp$+69_q-;ngUSO-D#$qD zlyR|neJQ6~xhR5`q-ovKBo_yl4d9Ewn}Z@M1U8UWQUe+|J`@dpkbtPZbO2un2%16> zcPm2cjs$j!$q*`ijPrNJ%kXIsN0{c?le3}hI3kb9VX`ASIXHiouMFP^{6vaK=hr}P zO_|q3P&7ow14M`uG0lLsnquir5ws+$<_XT4)AvE&!KCs*a^qLv&zSX?>hKfovn}Cw zfSF0ZXWGYTNx*zIc}V?b8BfmD1#P8hSSA__t{(A1x7fUvgJsKtm@==QJyV~ zi9<4rqwdFfA7F(I2?>>lGFwbAig4KxB7gD7dL(}2?Yw93>rnIL6`M$8X3^TxI)RsI z)i->r$3p%B5DjxRk;w6SK0ibvqs=ZOL+8yrPgrmM3i|H7f}s-GZ4^;(M2JLg9B@)M z2lMs2GV=z&1U#EAR3b}{=9(53B9VUwOsCjjo|k9lofGT`n(Nc6rt%j{uga_mjv_G) z96f;7M^hRNZYGgCSba`2iOfTDcY}KzgXW^FK*~I{_CxS5prVYGVZrj?9_UN(m*#LY zhR^OSL?WjUqQjh-9$0dFMMp=_>U*6Q>``7o0K<^74XHfX8{BH8KRuruzNiQr;^V_+ ztY(~re&*7gt%>(HdniahxJ!?08Nw$SU5wgYTd-+`tQ4B-WA5e*dp`IQz5b@pe-^{H z!p(9`UxhOKawxCQj@ak$GnRTR;g8@urwGcXvoq+tYWH3 zt>wTSbdI%@;|Cr*`TY$KU;++@`Gax^VLN)(p?yG-bFJq3H2n zo3i;!R1L!)b}Z@o+S!H=M~5-x`J!Y{=AovIImnFIq1nZq z2s;yy=Avkbjmv5qUBSDi$n!mclsmYsS~yewKWcSPd4$lqL4O)ee)@{}kM{&pULVax z(VDhCL!i-bmahl}uM~>7d$c1{eqO2`c*1XS)plmDVE7cxBX$By56}Bm3Pm74K%pVJ zak@%IM75$~?S?&p$Y)TxBcH)+E5i2!Yi+f%#$?N*N<)O&%Odwfq49TXj|2Wu2Kq+@ zo#@DvznV(H+A1{uuAYBs6}4fH1NBw=TGUECqYMk-=~clfUp$XkQpe7Kz?v%rww1L@ zeVjhfXffMYu(~n-@+nmc%|+2LM;)kS)SH__WLmM3Q+;VY@I5Jc<}TGhKd+u+!x;K@ zQ3U>OwN>vU%Y{|ZCgXHGtKnP5a>6dEO+R^q3VG?8^l{rMO%Mc5LpP4Any!ABq3snrS_c!6?^DH>}o45O6?R~#7-=k zdt=aAVy{|LyH<;$x>(wN=gfUidgkrtdER!O%>A8n?<{xjJ?D4MDHyIQd54)8ON7U69VrLv>SY@@61M=s85_J6N5hItOY!XM^N#hg|3nw!&EvyOZ?=Uj z&K$utdgnE* z(SWPs*wsB^0n7~C>dYxjx7dpSnSe z88=DHZjmf0MiF&Tj3ORWe59Ip6CiT(w*_0p2k_Q%9TW$Nttg68d6CO)DlQ+Ny(~Ti z{uRY@;#Y>ZqUcQgyAxv~y)h<|Vn%)K)NVvSh{%l}l21Okp96IvRg@_rXupidWK~rw z0MEOAvS^9pq8Io-C}tGuVz6E@7oZ=I|q2-WP3$fTrSrKduOl#Y`=L{ z=qLRp?dVY!*)OnH6fKL#5LrCCgUkzS>g`}X=Q_yViu%ZMt5yJH-)(X@!y-E_p5d*? z?yFWy3#Rp#nE^M&?yoZ}vT`D#>Y{cw?jZ2E=#qB!BREzFt$bH`ws=A4pO!|laK%E_ zY-~k;SBQEId&?DBPejTgx7C^S;mVSFsMexQYxIzRU%4#i4|dyLsaM#F+hH~BC|FWU z>{FIh-fH|OZS7lg)K18am@{jj9GrPcSWowOO0G(<&w#ZS$H6VM91R&_-y0+gt%iLR z{NvYz&^TK9yIRB5nmbUg-G52E6Sl|0?YLYAp%r3Iw|=t2Q7H=dgpp5fZTG8R-C5mF z93O8-o>9kN4v)7JPgnOwrL2BBKpy^MyJ!pueug8y7~jgymlEJbtkpWpIUP2NlXr9U zazk3#8{Q6ZtiT-YMl|_zfb8>fyVz&U)cF~%WAWrx_65+P?%W$|JsE6S91XG4Uc_)f@G~6o z;mbDm(s#fX4ron#_e7E?as7(*oezSya$B}Xf%W`SNPV#YERek`w6n=l#4YA-#K2cA zv9fAokp|W%ZpY$bN~bpo3= zT*ZdZ+uCiOs^gNE+S>ge!7=?yQwMIF36-g9X$o^GyEIZqJv4t zZXJcEE%)U6wv06idd1~F?c2$u`@FJuXOnuUX|Ekg(kooPVm1CI)!_C$j%YQYqe;)0 zrp260(!aQR#X1j9$=X33%+ML?=^Hhzqe=b`HzFzSZM}A_BNi|@jE`F-nsuwf8wJ;@ zQq%Tk;nu>LIhy!909yVZv#ng;`v_G2?TnDjpK@i}j;PH*k+>pPg_ z$62+mqe=cKj@GpOQ}Y{tFX$z*z^1=*R-*ZOAdD9MHIv$#pMIl`pDb^0{yY1ezn#~J zN*pF0L%r0*4T&brK8+7_Fv(-ab^mKgeGe?Dhb}^|yq>sW-*q&}+sDzGRC~wMC*ybE4m__9o4VpB-s$=A5kV{TjS+C(7vd=U3uBASRtjG{3K_&gA^u!6fe@ z*A02@R<<>Y!rXoe=JsEnbuh{My5x_JCi!bQ8u9^D?Pcs2XGK}?@Nz`B2GQhRuP#T! z>UHiwqoKScE}qWtr2O64#B~&Y>976O$)t4&M*}}Gv7b?Q#LvzugCpn|R~dIFbTx@l z0M#Qv$Kb3>;_8YFi?<>jxP~KJFCK%{ph_guj+X&SriKSjcCIW7c6_xqwXZ6sukn5wcyNXh|$Bj*UN8|r!e zYoWJzfB87bTCc7y@O=#8`|vYlW5-rx7gZy_YMaJ9;6^=6ohc|LA4kX$WUW^tzXN#< zl9KbucYn_jlv@DL@N31#1RI;Jk;a6UMdi`6IfC*U;Ps(A19<|)EsH-cMIxs{V6xW!Y` zs!ZFUKbSm8Y%|@KRNjiRpWyBuVwYlC>CGxSd01Q)Q_A&%_7ck6q7bVg4@(8e!!idf zEX)I%#d5M_Q63ftox5m&>+C`>zp4xE0MZmJO>(&$!7>|VY1*#-aeB|s|0fEAHHzC< z`8c>u7V-nNjn==PSRHfkxU995NeBDREw_-*vQbn0L6<-=0(5YTDMxS%D_B?{BT#dd z5y)kS<5ovE0!E!Xa&Ecfwk)@eOkF4Zulri@>%;QcPdSv~(_BcqH^IC5?; zb20)6Z$===TT!MdM0}dk-NuYS>M4PYK*F05$YopN_A566G6D&2Mj#i0{PL)STc%() zv3jNzIirI$1D-@aTK<$!CM`s38e{|#-i$z!xCYo?E|=?bG6GrNj6jlk@3V+&fO3gZ zpmcNx21Hb^;o>pasksi~GoU_VLnx~nWCRl4j6jk&6L^NVB9?`+s=ZUboD77FK;6HN zaM_l){mPBFcr;9QxN;VA*0>PFNWnRZTc#iu`N$vQ!0R80M_}b7?g#dY*do{yVv(p` zL0%l`&5I+6rH3;om&^5mwf1;|G~jza5x(afK}WY~(BZm7@62qe83fh6&hPzN!ceD#566m)b2 z9koFR?fZS@a(!TL2R>Zh#@oaj;EAK1J0i%=fIZ=opqlv)QS$Eduf%4!gB6FgwsF0S zt;n{3$6ONdWIpa7hqm1zzPghmI706mZ{s=|5o7~WS9fj0YSM4!Eb$N6kjc(~qb17( z_K++Vcnm85uq|bPZRr~5;Ig<5vim3ZxPp(It~b(z*=mVv#sIqGL_xn!MXB z)|SuI@h3fF?MHB|R!g7m?=3%^yIL&iuvc&$TyFiE@pf3j0578GqrviKuj9D?NTV~j zV<9^w%B8<69oCp(Qd_cD9Ig2xiq0T{+x@tuP}7p(o;S*~K^z(AwhmGc(S}HOR`D4! z;hx9-v_y;@FjMEP=;~rCH{uVtAFY2}B5sayBk1a)4vq$1#^>a9C4qks=920#mlVF{ zZ_u29SCRLfj|o^W&AQ0W5zEA)J8oMzN7Hgv%vw_}K$dSdNz4N~HMd9eR`>K)_Kak(UpZHIZNY-F?8>$x zA8-dZR%vD583*M{0zTq{N8}?CZ&)Jo6=N-La(^?FQQu7R|~0o&U=gT1_hIMOZ#8zV8^((#bmF|QWj`!lXZ~G-Fvx}P4-K$4tBm{Wn8Fg#kMQ`7p*9jQ-^Nw-P^;=L(t&A3l^4yxD^ucwb|$@1 z-0IBHV0#@|$OxR?RJ;by?o!#-q&FvFeLIuhR4xhLs4@XYo~Dz;Z{S_pZnZOUwS?~- zw*qrC@G{0WGy1NZE#3p3e&qeOCi&>zJ=4x4?;@83Sx>djM%|7Z#R>31mb~81B=01* z>2fqwSNVN_5&nF;s019ymp`^M$=CSGh4vvpY@ojAGnril7EmR-u*GrB(JQdohp%JENpg8w0xG~8C9U8NnYf+c{`dE z|KmpNE<3^)-*}T_-|aH4t%<8UTusn1uBn#JYj5I;Osz7$hH*?*BNsG6TuoB1&_+gA zL|N4;0%8M<{6ssbUgy2Kh@jE>qG3*aG}!R2`ZPWc>IwFW{;pPiTfypF8T{u({>iXt zw5Xk|*?8%`%boZJm$I`f34y5 z*9x-T<650K)OgI%ng-uN!}}eSZ5;|DISBJfjIxDo#G9!hZI$S$B_98A{1(>2n82{q7r=3P6Utcjo^_KZ-90f zj^Mf>f8xn7W6AZiq8a2V;x=zS4sIg{b^_$zT@Lwo{UEy-KSMcpapZ2RGeqzh-UuFf zJ+r5Y5j@z6BPg%48u`Hkf9R2~eI&ld3{BqL%6NufD?TPCf=Bm8@JPzijMs;bC_l9?g0fpHTi=>(iMsz@Kk*psqLc$0&+t|h)1qu-5W%B+BY0d0 z-iq>UD@2n8vpk!pw6Ristj?6b8(X;%Y|Y@ZI&&)?w-n~C84xI$*E@@O*|S(YP8MYB zJ-xsRQ4u^Y>md2-u~*zu=tS@cZv>Czt;nm72;u~&t6NR(5=apV>xXVUHY#KyxNsvVl_&!^K@AD~GYq?d8b`yx8Jr%zH zz<_|#KEwa0Di(krht||MTG~xu4{4Wy$C~yT?A83#Ud<(o>!AIW(oqp?WXHiqcFD&^ zMmsNTMf*?uCTdy$?4t@zZYn}x_MzPmYNuToj)V4Bcnon9uoDi2op8ZxZmSyYeo+VQ zij|JPGYZRTjl)ELxP!DmLmjlcL%CcZFlEcc$k|1Ph@KbxC0Qm=7S}=61U2&Sz?SjJ zYR8r#`5CfCU@Nj%s9v?qS4<|fFC!Yj_nh|n*sFp5v3AejYC66au6SmiLr}rt>w)55a~U+n1mlzC6Q03wXpXM2y|G!98uhevDa>@ z<&AJ}vl_Biira$mp6V!)^11t{CxUePGX={s*V<#{uEcX*JuR~_>GB0~GF7NHr5vgAn9 z9`T(*aI_myC!nbOy6+9~Vt0gG_(>D{%AjCJ$M0V@vFi^FcCHVX1oa@R{w*2@JQpE5 zB4pkVbbILoh1m9~Zufqo5L^8L`z@pFw1FXx4vwBaTDMF880;O# zf_yW@;W2B(q=w0opZUIrZa=;e>|D`LBBSi7y+gc+`d>zfM@Q<5xpt~N(YlG zF|a#Yw+CNQ#~ck`18uW4^3h!D+UN;#cooy${!NgBc%n76oB0RhZaa%hf~pIv*NG)BY3@{Y0U;B-o#~_A{*O*?POA2pM?2zWvYo zK>JKa@iE(zGUl|06+xAPlX-5k-qAl%zq|3z>~nl>!G zml3eyv@Y|^6ajnc+mWjS9j^>;HKR!byJBbcceqyC1Y^9t%@doN;rV@21N-zIw13Bo zpsnf{{RX$@H?WHp3G~_k0`p8TjFa0u1?B;fP@? z8rVyqSIV1_GH94FaMDD*|3f!|x1wvM#&IXlKx55|)t*i@b964Z=~23FP;=C!W4JcZ znES_S&w>!hi^I-vL>652=%P4stb$P{UoRuLP>TLes2jmsy&KoS{u%C|8pn+SZH#p{ z=X<(M^f$QNUf-);p}mZwv7%=ilA}`9?+WBeqXE+U#YV` zVUiocTUB_gf!(wVjpN+Sy2h#J<2;9kL&g)2o<;Ac4ECX8uy3FsA|HSO)@#f%5d{Pm?i2;M4bY6CmA z2aTiJxwHDokIH!FR!lay+=mgWS7|GvGdUV!OirHFSIsWtnfH3K!Ow7nC?9T@DHZ7D z2+tdstuHHe#gpNK;H~8926j#_8b{GRY5Jm&ol$aks=?(>=;pmv;054l@KoVIs}4IaxK`8su2?&L5aqKP*gut2z2a!7y}Ww7e&+Br z3rEgd;n(tdG1V(KVr;{~`oU3`t+#y<@IC)$KllXU>T)#18#EoPHyVH0y0I(O!0+Ag zEamOPuO%V4ZcS@;O6uiqg^8l@T;aVvR9cOkquq$dQtJ0FhKckylMVbrt~jK;mK?z) zLFL6S^BM=`C{biqqJdBKTV+89yqz5FM$Btg%&5`SU&Q+$cq@F<+73{XH0@<-kkS7_ zq$o35z2_qb)^g@0uFs8l{YG75)ZgQ*A{F)kJ;GFSsx&P|G zIfirtC)J8Io&|IkOW#v-V)sGHbIj3hgi)}KvFY}F>+}RSg16!`xTejKvBruToyGp~ zP}v&h*FLZPR|n4Eq#IVq@crnKKSfOUem{yN)pEWQ9PLK*hHupTm#eLn-ft8kcq{(3 zgN*N>qZ{bx3Oevxw5$Aob>P>IB*FIszO_}SOcXu6-`Y{oEBvN%v>UMlzUOaM+GJVY z?>QlOE50&-_akYTF@5qxG4t*W9lzVtEBsdnt_(;L+;do$^m;x;-0-eT7DKOa?ZeS- z#G{z8MvuRyh({k}cyPsX0(AHya7{##AS>|JUdEACr$zEl?q1=FEb_EsL-4DhX?^u} z#-)IR;_a{;owvfZVT+TB&)`NZf74@p`F4IeyPg|?E6e!V3c=B^|EL#e{MGHDs6NNv z;H_}=dUuB6Hn}29w(N?+Ky31`uZ&*b+Q}5Tk)q77{9IjjPPsO z;ze?V!R6vAe9sicli+BG7>V{XCSJ-Gfv^JLXE*}a?R}0A%Oc~u%0{;bi^c0c2;Pdn z!J4+U_I>?kuk~U+tQojm+)Z4Ypyo%8hPVmyzW(Qs^+HZfH24{g;PWGFrF*CA?T(HV z9V;XoycOL4+rT*+1u12#(gY#SP2q?`=yI>*1?5tW%i1vZ(3_ zM{wQ1l-)m4Z`Ltg^nWAS*wMY7y~$Kpl%w5<@`pz1(OuKU4fv{w=rH?2>Hi|QBuxwK zyZm7p{FI!*P#!p`E2emUJ>)FFvt2c+E-G~RDywoo)ekpDYa3gpt{@!TX zN9VHj(B^)!_^1eDL#;47&zt|%!F7W*Dr=NJYg=A#03cqfeR{C6+ z-szweCaf8Ft7)&-wF}-=ECM%TNzp4F|K8am+z0W;iBNmRDTUx@P20SGn&hc*0hN+JEIEkNfVjy>|(1|j;Nk+ z1lJ8&BN|-s{j{e(^fTt)_mlf)LJiQ`_3U@rsc#=g@UI&=_L-0K}ex9MDg(dk+O=l&;Tk-V+cwd{eGiKE|DDDKhS4;dW>i!PC z**(h8zStt#`KA+k6#{ zJ4@OvLEUiJ370M!XPxsw@K$_J4Rgs>$aDAgC{Y#WMBWqrC3E*GDn4Bg-7!)uuH@c- z@b41ei)h-K4T<{M`enr+c-na@v?m@P1#>Wb)!c|ZL$mdWa#yTqpIs5(3Gp$(Djci^ zFG|E&mXFndw{q_w&wwps_semX?PLAm`w#cE$^o0qGuRuv|TYNU>zKJc$@XO zjIs{WN|+_rdhY*VIQweqxb*4|$J3gF|YX!ts zxGF}w7;S#=<@M;jf3#@1baI_!|nKF zlR=LF#Abj^X7<7|*6fPOlAdbRPF59^OHaP)RU?=ge({g9z((eb1LqPPAxFCr)nR|$ z{rNa+z({qia9532k=_ZqRwM~(ZNc6->dt)Y>;!c`aL0>xirxvjA0!E`73^!LJX>vj z5~A)o?nd!xpm&1qIZ1*n1+eGb^4cbA=L7Xz;Z6~sD|#pBxgtq$t>D=maeA9oq^x>& z@oC3rl->zM)02W0_;*cDYjRD9Qmdh-T>vidCdnt`vD`T7A^_g`$$D|L>NBVnfg>i0T!0Zqxh{Z}2k)C(00 z!1cju>E2?!#J81Y1D{nmUje#TeMP^8c_cMRW`V_Pun4ukxTEC$Vu#vIuBkO6*9Vp5 zI{53qwkjs?PjRm-`MQ*^GT~Z9#CeKtDJ8q6B|7Wf$GCchwJ5H4lTO1i*hslP$Xd6# zjOQfej`m&e^3^h5`$BaUuW|Wy|yj3dL z{?>xg!auHK)y~>>iSz33j=wg|`7dNp=4W=EuVX%cu38nS7-qT<2mn-?(IT#vJt_p& zBJl64EukhIC!_@0gof2pVvOgz&hxA-&?_!i|0dL={dv(J>zK6jhB)EOF`g0!##rfq zxV$aIy!*D&@#I8^NoyajPtzLj3fIMsaM2U46_;D*UWiF{h6>+@nq)zM?B60$pVG9f zSPNF?{rN&nvNX@A5@M1Cn(O=5meC0;6I||4Bg7WjyNO|mC*w5AOO8}dHWU$pf>yfP-(q?Ig3L(WWCku@kV-m+jtcA;~yiGEIe z+OLgJ$LQzcXoX15H{Rom*fB5IB+nQ}L-p*;SYu!H&U!T1cN1<0o8)&2_%qlf&lpF8 zwf1slBkR}2diszE1N%!pp>o6FN`ns?d&MQeS1mHoc%|n?cYB7JPv2Guj)w0Ctly3d7-sDIV}@RTNj>xN zWYy}*(t75SwA#)Whod#^__NiX=LH5DDX-?}X^ZNaho`GvwZBr|%sWe=xg>~7Ew#yN z@ckIWel|lN@n(3gj$^Nf=jz~S@L-in5$6l{GBnr^R;wJIt3z~-$Q=il1o1eq7Yy3o z%curx>RspAiE3_WQ^Lo?_N)%Tc54b3hU6@p9B zv`tN_%Gb=QMot~D?=EPVd)MrtjZEYOpdXk^020G1eXM}PoqFN zsqaJmE%5MOp4lk(xoT0rv5DLUe6F}8hXEnI3i^jRnD@SliFuz`@EDJqdtalh3 zVN~qV*hF3izJs05HqL!lxFm>PzED{Xe!N&eIxNCC`BUTE_k$z2BtSGNCbK;L`f{+` zRWB4}l0S1{(RwEgiEJ9&XI4v#GRfo0C288js~fG=KkbNG4KsD`!BM7{i=)+A7iA)|2GLxS z!>qBq%o-!+n<&%EtZ^Z@Bu(4?db)L~{gcLDfR6chqtpxsUz}S9yvLw}O9I3j>DC{e zp6uTM2s|^S7tD$94|_$vR4xg!SzX*{J-odmbF+6GR$+y}zLTGmOG0V%FU?4Y`<$Gi zzERkBLcjWFYqQD&^>=EG|4%b`Ow^A}!cF>8yAj#TmwC2cJ(k%Y;-h#}6G!tXC{6oa zOVtkmLwW>6J570zU{d5HkB@RA?sht+FT3;5x(rct>r1pTDV~!fxFpz3+#9DKx--S{ zgUnyek0+R4#=!{T9(+|X!R+>nI3Y&eug97`y$?)(?>mHnzr!aaeddD7p>o69K64?dM22&euZAa zs*jHkV&W2y=}T@tw3eCfk=Hxb#-zAZeibyW=f1+mQ%{)Ke=O19t@7M&V^ZvEsda5l zig1KAT=O7f@BDC)23fhb1hz3LDmMGw1QS`TI7^gVlwkfF!~5o=K%?H7IPt-u2;)Gr zHYP>n=Hzc{QbaD-2Xz5DM;j|wr-@G?GK{w>R34(lwyGSBjW4z}F}_~0Uj78DLEu|M zMYY?Io${?VCPfy{`Xa%k$l|qo63l-iq&uGJWx!8#{4q!8twug-ZBk^h8?m{04`cVL z$s!66euLVW6d`@PMq3kO^>J?JJ%qR7)4@h%h(B*OXr|6v{Z*%}i8%*wulD$PTa$8I zYTEj^QN}ADuN1}WJd2{(F5KPymamEX7~PMpZX8H3F}mMD z97-@Tx?k;5m((3=_;sE0pIEZLysdC&O1jl9HLlw@s8ck~LF`-_Z#Jr4+u7H01pQs< zsMsad_@-N`c-&@>ho9NnrnUKKh+><4vN+x>1d_0az^3Y!YQRr)he`sx??(zJm=v*2 z`jn2GUMa>$JyXP|5Uby1ZoE0Vn)*6(9V1$_HoJj7#lM=?C&hrD_zE%za2>P$X>B%x zsCaC}^+8_eZ+jW1&-N1Kb8_^i6XMM&RnFVIj!W6Ybx%!amz2>L{>Vk07{Q;Wg_1kdt%m$H<87zdetkSl5sk1 z4e$UWj9u@vG?9Cb+MmyFX}PE614oQi7co8J7eetfys+^tGjB!K400xjfM(^34&E zQYzYP^1DKCNnl|)T)^0s{iggt_!|KSO!KQDAr9ij3Ddlq65{CKk{}LwBvF6ZKjD#d3Ddb^_;73T=85SkckGD zn;zN3tbAM{e%R+R_XLM}5vB6a)LV{SBRV%sHkuu3ZX$0U@A=MIrg^(dh;z*KK}2r9 zx%%Gq&&9;dM59Bx$9x$8vY;niF4qUEjMhQ=n^u-+4>}T7ddv?hg*tLS&D+?F8Kux% zlBONf%INJ6B#Kc7QjI48P0Uvgsh;?cG0pSsVH~gmC{ebFIWtooYnqXC)>E4Ic12_!S%(@^O#Ft1$}_lwBBEYcqa5dXhklaVDK~bvZBmsI41Zv{9Yq7svjX< z)EVtby1vD_vt)w7dtz;CV%A&&J%NAjUIhgg@>HxGV&z{m(S>Lq-P}x7{C16_Q3Cx- zGk8yKbqTkpczadye_{5dd8&uh8vmbWaJd6oHL|ODd*#*<+h}Fx&;zZl0?@0XQ|j9^ zLN1r<1FKrXU)JsEy~SH_b?0U^wCR4_i-@r4Zr-gCVgGw|gWqW*zW5gj>K!Hr?o=U=@e{zF61pxMDR8u3eC5c_2%)h)gzktAg`^A>@7MAGV0FX;#uSdrTWq?^cGe0l}X*{#>~cqZ@A# z#S$yZn_os4yzdD&8`?BeyT|bmuGRT#_2o}H+*g;k;@42q{@Qm_GBtc!vFU!it z@79s2yK?l!gQ9Huz83jHx9RK5(ZCRDXvo_yD#};GXX?CH(O);Q6Gti?88c)G^v#uv@LKIU4eUm+vMIRbC*5zVVtk`*Ve5z({V zIwsYMwrNex^#M;Nxt1J0qPJK9t8m_`SH2cD?M2*(x=FR<=PA8K2IzS6r)Zm2`W(R} z!Aj;xVR<{efk;@IXi(HAeq}h?jd*w?NaoxO5{Hkub%d{LVbczR>x2B%5M??EqD=dL znrKjLDC*#H`E`T1yRc~a^Xkds{4%Jzz(&jOxqIZ9o#N#Bj&ULZc3vEjn%Tmp{TWAt zh5p-KG9By;xP#0rfK&E1<7A~{~*4w z{f$4Tn>OuO_><5-N*B(}QF4ufWD2$T-RW_UpM`5`Lm0JXaKFj$Z>V zmuJb-v_WTj$*|MP;>GVEe-gPq$R`6&`;N|WqBT726n~DpR4$j|&++fDkAi%CM*(ph zY#ID%=kEvC2RnL*afcsfv^FRb9%nc%m!jA4@4)i@5xng`1c@qOXW;K3pBcD5=+&fR zGDAhh8`b}evB`SMY{m7tBJT}~qsLYp!Dl<@ zReH97pVa~EyBx82Knr_UKjqorXiY2hMYe#S^)A?VzrGM-lRcXEee;_!_PqClfnk%f?FxAOg?7m<$LI;tf-Y22rBx&;x^E(GTuyZH>u z4@~ou$fsdZ^cR7M{c{OcB%4JXCh{0kl_@g+pm$%{!eB3kBzcgd=<JwJ2a3CrazaQ?qrN0)8k`iiaLVjGNuGc!4Yvotkr9dHc_n`Ols zp9nYJibuQA81VmT#=_OW?Dw)P_&6|Ho|qBfF-cwF`SGfswI9ZT(eLDs;<0va9qZPO z*H3>v&FTtQm&fpN1dl$13}z5H8PH&7rf=jVZ^dIG-Q&P`dGd@U4~({lyarZB_=oZJ zb8)TaR1EAc*eY{cuOrLO`&Xe2tiZh+r}NAZsRM z5XkqlpJ%Qw0wNAE=Kvx&8u&gFS9mJi^z*FuUR`f)0gWR15y5psR6Ot#FC29EiO$s} z|0y2_u^Z7o2XS7&-_2kCiYL~~-z5((u^X|K8_}*wF{3*8gg*tJFtIUl)+cTy&RxX0 z#AD#l1DEr~)kysuutkXRiQgjPZz7sY0_Ffj>Xon6S(jeUHt{`(BZ_D)Nz)$u)f1x0 zhv^++6fc}2x`~I1-(BLT;xWXlB@Z*2d@xZzby3BVVH7|5If&7UyCUMiD&NGb5aD+F z*%bZ91jPiT2z%nzA{v>1BuUf0Z;@)mO`WR4?N6had|dkwGZ)t)^mnx`DdIoKs4(q< zzBf9pb?yaqfg0r1;$}^&J2NULu6K>c4;QDgeh6b<=C6|kA z!_|qk9S$tA4eNo|NwJEzZP}ui?-ymv8|E*OZMb}dl8fxW1!Gk!u20iyJXoyPI#=0f zIVwVOxyUx$`d)2^nTu@0W?j^=riHi#O-fe|e$nwSGhHF$St`G9b%qin( zeCn(|3b@W(E+Q6up)$81+pxe|${{p#QW@)Si1wZd2xJ>lPmujbt++l-n^JjaW-*wp zZD2=pxyS_k=1Y|k2LC<={6>l${r8VMGE1M^=-CGuPml??aJe%(XK@5F4}brd5G&zp zvl6~K@WpWM;-zXu;Lxa*;bod0&trNLgH9*r9{nB6k)jy9 zgB*eEKa54k*?^-VbL3l5M(K@PL>MsQk@1I-x7e!J20L*em1_V$?69xg=m_0(WryFMe|3G?;x}tz%-0BDO;IA4XT94vvPv;vNt6 z&EbJ^{0uh&d4$NoMg&KLox1u#J*IIxS4s*Nz?AxgO9$((b#7J*Mb4g%l00jOZB3Ito(a2#B`y#j`sG-m!U35P*QnZIS zmN6&5GYWCkIDbT@HgO=M|eS8f_jaKKfs>d~;!Ahu`dr;F2I??pToPE-Dy3VWbb8Ww zEqo0atI&nuk~Hlf;6T2-=Wrk;V=iV9?-6xyNw7DVyuy0-uAk>q(1F}R`r`bwy>adr zhf9K-vTx0^s&|Ug}Aa0`cvs;>!MUJC~*KcM1 zn}e=#+(3Qr_IuW4$XeIDV=I#~)%{w%rAe9b+=%SynfjqNhFDrNSrTsrpQT>STbh&^ zk4w_D(MJj!#ld#HhWwAMimQ{p-zf}`CC;4BeuNfIX!M@SqdJmzS~1PzSFkqg4bRH!ab{6w60 zi6@1}ToU*VfU)JRN+OAWh2Ib2T;VZC1OE!xhU0)o25dt?tT5bv5EINf_Hq>w?bLiR zyft40@%nIAM7%XT=90j7*M7JWeSNMNxTBp5L3}|(xOsgKTl6rBteGs{`94PwYZA2+ zR}p(fOh-Kam!CK*^jRix5`E=zePG4unPgzqo^PR26LB3;7SBD;B>}Src$R^{vuq64 ziua1RmA*ZM9etl9DcGs$x_cmaTux_M2S zSPGT1cu$C*icbkuF;I8#*)M@c?Q?Nr)}aVVOj&&Ti0g{S9Ia`8jA>?!{A{+E1UiV{ zigKw60v_|;0)q~!E=+CWR9%n>-r5W(m*<}6Xo#Z+#_uu3_;vM!*uVI8QN;(81S>LN z6<@sZ&{_`fAn}m#?Ib2K9&@y&?Rz#>e>Z!9^$S!*BtA8MGdO}vg7wviLPpyeO-03T z5+(7Cu_shx0+0FlfO9u(q+Y^Ix0ZkoVv?f{s$+q@qUsoU?9^j1y!BXIa;au9>Y!>B zYUIPA_HzHz`>f)iV|=Wtv5Y#XZU)Nb`k*3PT7Kh;*}cRR$nopS&F`&?j5>HOe@#0K zb&(H4UF0W6+*$sq7BV7u#(!6}W=U09z)(%-t~RJL{@sG2p7iKE>J zs+jHDilZTJ;+rJ>l&ZHaIf80$`}R=NpvJoHt+6h@PU~!9jdg4lyQY)*+oY<_`ii3= zbIYriURBjtcjfHoXr7rLvUtqjtEb(G6`vc)uAKcp7wBqYjdj%L&UFtp)^%@{%|3N2QKrhombvUfjsnG zm%L?Sjdg5A70mINRXNXcRx)YMe|@sbvnuJX4D+fjAy`$LELQm@%dMmSq~+Ft(~#j0 zdd1~___B?SHP*3LR0ST7;p==NN%Vl{>f5hV<=wv%Y^NP&YA%`tST=Li9T*7mp!(Q$BXmM`EDytsoAWt0XAm1Iz<@zAD52~dtxKu@SgBgxzE9W}M z(}?T!>G8ZEn+E#GTO^-q5fpKLD!F$C#SXs>HmBsvc(5oLVZS)Mfvm+CCcg!1> zMV>h7)xSC}gWa|37027>c)!F?h1dPfZp<${U1eE=kiqfxLr-An#!R zFqNMgvlHT)nsO82`jc`NskLY`$c2=yav?d{rZE>1uG=X)A)+Ya{;vE{HS;$xM1ckl;>>IH>^qQW z0(HYGXEHN_6tN%mI`-fiZ%a?v)%#3ucIT3;kAQv^JV-T5S*JYgX;tCN0~UQ0%X4! z;gkJ>XQ@C0Wx{}{l-B-YLVPg^J};x>t=hS{+r-7%xtZ~}KCq+)T(LqRKb-$-?(7#l zONBc#MWq{IBI&FY??di{ik}7M<~Dr$gv2*5_xs^O@SGFwJQEJaL8TcVyR(<){x0)8B|FAgFt@vMS@4__?mQE3zq`V->bjq`6%ftigL9*a(Qibt$Xp-f z7ljPU9>}14(nq3vUGJ4E7G}+!93JdgYmr}oek00^#?g@9gJqlM zh%F7hIVXT$z|l~30lZ5Auf=&*%}6xJAB8Lg@+cwKfTJ~S-_r4V8nA>4z&$4~88R!# zONKpsuS{@mWI4nxvFzX2D`HuYp9}SI-LL}Kkk`oCK1xrAoM+@e!&c}wqPTsI21^lC zU1-;Bz5ZgJ8*!<8sEIWca2y;BS%GK0)Wc@J)R(427{3&(V}{lO-zKy|PZN5;ku$;3 zU{$-At@numFP0BtX+T{Q{pX0_Xkesl-lG5AKgw7)6r$+bhneUz$5!ZRLSH)0a2ySJ zijGCVXe&O*e=&zx1ptpy{ z!O@U)2z-OHdq91_RDT2gHFSN@S40^-xTIXqkAc}j(O-iM0qhlee&~L1Nt)Iga_`oG z`%wz+2l{L14sryS1oPFSOZ?H2_ydPCo?*$w$@)h74g}xi~ zR3n;80@fsW8U}ZEJPii(4`}3@Ks1-+oe`b?sZ0pOjpFE2*{w|CduiJHPd0ksmpKyn ziTn(Y=;x9C@O~T{ua`eE9(Te9&j-K}WP8Ukfz>%ZTQ9y<@kPl(k7vlnj@QbK*s|@2 z9``uE$X_$r6)j8N1w@nI0MRgCfp6l~wvKPY;H~cUZfRn5CT!(KST7#xyL+q_wf7|& zky)`O*7?C!qc6sqShWeCN{)t+7rCYvd9+I`$w)M&{m{b1ibIHa{#OeVt2QBmO9C%h zzzMz9gQH^OE_ak^(l5jFnBAf&V{pfR@W$-;-EEc?(bz} ziO)*Q4Tt@WE&H0-6nV{~wm2I62B*U0*ej)_Kg4O%9Ux`u!k!OLwFN zkFIbdOf|}IOqw>JG(?|ed@TaExMO~JGzX9J0Kaqf z6QUlxAN%3`pekedMo~R4Jm&hKzVpk6A|Bq_TJY9VbuMhh<70Td5yS$#zgVoVyihC- zPd2Fj7`_KoKMaq#K200DJw~*=Q$?(V_k-$>;S)zyzkJb}RuZbdt%9m=!7wxMUh!xi z-b2XISfrB}v#OLh2G1_lK0_T;KMZwneX#Q?)=8XLT}rI?K~ViLU$mzAPt;`mfXN~p zVwZSNcpMXtF#^kkK2S_qf6w}SU#h|7QYAC&74IQL(H$-0N3aE zYlYWeYf$AqluOnqJmygaz%K#&Rmcg)e&s@t^$SPN(cmR}veAN{^HpQ^9gQQH4Tw)y z!18AHD~-2emCOK%uTB($PpiOUq9G$z5anW zmp84#INFU^4|N)jeV?uWk*sogQw}<`K+)a+b9s{_O?#zLpm7Vbi*<$UV#J}vl{Z?T zD9;_{@+L`;UF?4zW9QKP#*dJ}j99*CnLrB^;wTMx0LxxQT6k^#0Qrza$rbCMB3yl3Dc z$M}o)dp57!xOOUq%GineLadxpr#Ntdlc ztp@A$ccn_SC*>ccTA|$sXE?Nlb2Pjk&B}^$2NLyBJ_xi95igjdA@AVcF&6whyTL-w zdB_|wcTi26xLAC0cQcnc!`RI#_F~fD6_nTR1mxDWL>my*xI~*1vBki{J9&jC`Uk}$ z<8sM%f+Kgcifdio==t^Tj;POJ96f#sqU?KFWK}@~*9WUtu*qa+P4ndUVJ?%k1@8yh zXO!RI?uoPd%@50X1l+-PuPN&go*`QgTK+j2{2ze04jFYV9|YNx5W&%4(}z5%pEvOr zEoUW4wAK(Ok#eJ=uYjXrUkf&}Gw(Q6#+++{`Cf6fWEaC8l7$WbjvjZZzYliH3eYRE zg<&ho*owX4x`E^!29~1U>&2$oiIOtGVk@-u5c`v(AqxBYalPHm8@t0`dLHjo%@EGmlICpVLxt1ac zmLjJW+Q0Fxp{pMS#G@5Qd!Ss$6Dbg=8OLS5F`m!OHc=59OTVx2Uqu_kZ=?0 znBe`W`*wth6-p4zB|$E|4*uea$~G-0rAC-o8O9gECBX{dT$tz#RbrZhm+a@s5hhlK z!Kb9!rbrVj_&84qlcZ@iZ-$AFfnQqy_`ByaBTcL&5Su@73uy(%D=F^;{y$ z(;IP^g?v%W(v14JB-l-4j7;|CpXE!x6S2bbiYcbRP|i)HW3VmUft(yUmVTZVw(0HxHZ;*n9lPt?abW$@*^JX(Ke z=_+eA=-})xj^J!Dcn9Z>)Vs!}TcrWP&v3q%o8vX;pA_By=ss%&Ab6`vP1~E54^(&V zAZLg{gjP0I&x5k#Tdcz&$?47lP zI+&p|6wAhqfafGlJu7K01n0AG?vH9q2$p{}i$z6eRX*0vJoBWwH`?icQ;$ayQyHF5JxK8I-Xc@Rzh68Jv66~%_*J?HEcuy{Qi zE8YiNm8|e=~A(~6VY6X5q z$OAul81^_+`2yDoRQn3iToUAmgDBQN^s4fQ$Q(hO0^E5~tqeqSNnl%oNZHmuInRy*O6lP~Bc{0GS+KD-RhpKx;~QlKt*&$zL& zS@{glce|j58^m^@-2S^mZH)6m8vxe_k$Mn;JuYdO47}y$WpMt4n=^6p)lHs1u8ony z?$6M1-vF%k_e6I>s78h%;rY4~D*+|WG7#mhhh@h9AziH{$zww^p6AU8+n z=qKw2=Q24eghJg6FO!4ogZx+b=UX#iE&9(GH!p+pClEm#4ag2tv$H6k87mW@zCp;Z zwR0<<{Qh(8+{!0hA9#^3M~bRY$7G8SFN5q#lgYJuK;8FZwHPq&Scr~<`*O*%?xBev8r)d?S zHs_gM>0-JMFJotFt=wvxoTC8|RolWveaL>XJtNgPHo0bQ6;Is#Qf&^7hF$9CiDGtG zS<%l2(Q!qM-1^QO4W7~ZgT)6!E?XDCI(VQ~jojMQ9ShgUtvX#fvqo;EXka>hI$nqa z)2zRI5arSXa;s-^H2COYE!rH`qT9h{$(bCyC%lLFcIU1cTnNt5aPumJU~J{s-R91YCO*U~*FVxBYx%Y;$( zv=;$gr5!!W<&uEETOr+3sO^)+Xy0Wv02hKwaz^eQeVXy-%z)f%9f+pP9cZzj>>duI z(eg4HT?l>;_`S*10S9TWacoHrP!;Uq4DT)Miolj(-PsX^bpiMpvVP#m`Bl)g8DKBb zmA%AZ_7aV3B#2JipRy&}|{q!@5K zgZ2QjO>;El5r!(2HvIbeAm;oUn#&^KXo$@ivR<#P-`4}7{@|pdbz$ewGqPqU8f9nJGco6Y zEJrgq%pbp%{qeT$WToU9keI9H5u%eU^0rM5^ zs!0d#$w>!CJNX&JSe2i_!2LP(9e4D^XW^2d3g3k=@qsP%hQOJ?T{YSeu~)c1r|ZTg zK~&0_Fwsazy*t)wg#9^PD~{ljU|$W98sc}gTpW3rq@u>}tp!iDELHk-fh8#PQ1NA&> z?^z}Hry3NIiDxL*60aLa!#ApACw=VNQer6h2RRQQX??8uS9XwdrMV>d8vL2=Iec%f zm4D0x7b0;`jM>~DcmVK^vk2TH=dD6kH?xb@0^R}qd!jY9n|aZ01dB`6(z`Xcy)mlV z!h$VLLc==ow-2ql^_p6T%1(57M!62|n}o=)xPc-cM6zDln`#g%9j_JlTDlR)Z>Rgg z80s3a;}OjzxyQjhZXC@$bZ|eO?udGHd!uI-JXg45Ik^MgJNSn?7R>vBI&jD0&F%qb zygL>T>{wjhKHRZjt`9_T&!48PjxMXWK9s1}fu|k!8T5W|FQOYUJ-n=b>GMP#EBE3) zgWd^_;F5ri3-jSF_zmz@?j<%A?pTQR#3gB3i=pfFKaBhO`@p}#eFibMaF;@8$_|5b z7mVZEZ2fXGKck?xdL8k|INFW)G3lW`(+D*7jq^9iCxqTU%4~y-1j7K(xG-m-u;IG`wt8EA15a& zuO99Punrcs!u`kZgUQ?H-G3Oc|8V*4xR1^4R|{*f$@B8=7{kn%;p{oq%usT1b&r*^ zaCgV`LComyt36E%4mA3g%W?Vc5J5gRw_mL_RN8zA)wzbgnj>)kLEb*x50JNy>jPiv zt@&0B@ZEjxR?21Xj30I}ArdJO*Sb911=!9c)XlpAN{a zI*Th-tZIb_+?P;gTDa%C)5N%%JEQXWAiB>}t5-yDw3CC*^5&p(dHZ-zaJ5W5#95sF zx&4D|?VH6`uUQal2`l|iTRmxv)^py9_5;`}S|Q^x?9VgO^kB%zaT%^I?KAKU`s*m8 z2S)?<{QO4G=Ic8$(KCuVy!(MH+Sibde`A-R)|SUxYs>L9l1-l@xFl!PX=?0glI={g za4+JmAC|@T2{3Z38Af?O_!)i=_`OlmNe9=?_B+nirQSlu6X5A@0G>WxUADW+B4$61 zoR3M<&b~Fz^MQ&5kSxX^i}?SDU^_?{M-3}c|D<_Yu>w5RTrSn0#5an2FyWrBU8JY2 zStKx57*)K)R=6LaY&0CLX*qJF-lTK7*yDr1{Q!BeI9k&V*rW7!x964lrX@<;1CW;t zS>@zc<7kMAkMY;@G%Y5#fM*o<0OW~l3%d#O<8evArkY>I^B5|uX1$s$aW}Ezl=7?L zegI=va9-h(AoJIfGM)hk&x+S7B|9F)SC0G_!6iZLQj49Lg`pTQ z>W91Zkt9t!8N4&I%+@q<6yEb$jUX4&*Z)6)B*B{c*BzOE+}>!xicGRfZ(05yMwnma zC^VPkeiB(dxGaw59ta1Krf_MJpTVz;H+!qg%I(%+jj3mTt1882v8u6Ictr>eE6d9} zGW&nK5%Y^W+1|VrVY4U(2d^7P!+sFr6Az@W_zwb^6o)_f?O|yp6u@nS!f|!sKZF1{!+zT)PYyw-}{l;aA%aa4zF{D?k%_JyAf5Qc1HcY zB~2WIdrnn=@s09DkR-@wS>uW)?cHo~7@l3KQ;g3mWxYi-mjv_ft5-bFduBUcWU6ND zi{O$R>!9wn4mz0%>Ae%tVNP@vqPZlPeW2dtzN?kx&EyD4k!)yVrwYwzp~swuBuUfs zja&59oug#hM3tkFGMG^fX+(2L?wn_2E5=nAMdzV~o}%{f81lD6G~gJB20Z6wZ2ezd z*BYfob!7_!42bBm$2JH)c&PmV9eF#1s){6p#{xxL1C9^OjL6fF$aDrYHa!|eO@gQc zOOxnoUtx4mX+V38Q1{{oE>T)^kO2gmfMg7#292&5BRDgASJnPF_07zWUaQvEwNHKZ zRo!#<+4tOYxEqk%Q2Pgoww8imIk@O!(89N&E~gZ1s^rqYiIy&&aZ%R&ME%eIrMFvM zT$advp~>8_Cj6(ai&F&OhHX%qc?})&ETJ=n{)byy!?QXy`9o(F^>!kpix;);u6q1xL&ROszi7bim6J9=~cWU<=;O}{rZ z{Y^&)miJmVe=)GU*V0}O`6a0Kw*D(rd#ljftu9{F!mqB~5ckwZ*qG*r@PnWAl`+IIL>g`q+FKXeazUT7ldogy|mRO^YvD4Vrx)N*mG1{`% zOY>yhM&!vHxn*QQZ@0R5Q48Px&@soqD`$<2XS{|ze5f2qyMMp7w#4imMveA*$Q(GZ z)eS}V&d>_I{pw%Umed8>YVX(;KlwR#4=S-e0d1-4yEP^CjkapGMF+t-uXy+Tjv?+z z=vNkDb#aSE$J<92xzjh_m282AO!i9NM&-uptrnfKJ~t?1eFcOV5;Xve#)=}Uq}8J* zE2^ZW`mVaTRwC2`7A$=K%5vXV!`lKeGG4=Ez1b-Wim>6efj!HrxY)^h{nGIB>1id; zg1)O7oxFzCdV}ERbt5AF-2i1mRY7?cnUhosi?&~@Io;2hS0N1^Jf4{sm<&MxUY|WK z{1Y;;7vi@v6-fj3JeN{vuZ>^#_C4Xav2&tFps*~f88SvX%*#Wuw=dT(ExP!vOa;}z z)J6?V#Z>_Ee4jKg+@7V3M*a###A~Q=H*v?xunqUYp77F;`uuq47->uP+Xg|`{_95P zRcK?f309k>T^_U2E#FFuM(xkj*KN3Bb#wG8o(EZx?2?gLJz18ZQy*Qs;c+Nl_u^ZT zAxZHfztZn!Efs$&s}3?BO7~<@ae>YGyUH)zsjhwr2DfbCgfnT;%v6l#b!{fh|eIEReo`F>di-^b0T{n6Vp2ur= z9;!*4s^>;ew3g77y=rgx`pov|Cgka>x-pf1av#0B))K0op1e2QJiR^o20WZ))JzktrthDW)6za|H;T$nb!2}7OiaTOu2i%W@_}}%j4rA z&DF6KA@JCMF|G;0y;_!<|7>eEQi% z<Μ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 literal 426484 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%0D?>1gnDQ zMhSmK=tS(E8-aO-H0O$HM}PcH_;Pn0Z?{SKGMG(UxJmf4y@~VlP=7bf?133owlI;Q z`Bvf2@K?gVs}0BdN9iGBTm-AK%-kycSsj~T_nebADrQ(-t#|NN;mcIV1p7m_p1&V! zDX==>cE8Trj3?WLFAHUcr7^;n>9k{!9m1c(wEDiB`oFlhPel$>wlGotWQ-{NqL9jA zx*3F%^)$tLH^Hj2t#$~1*3%MgD(H{#9cTZAjT&2+X!kBgOw3hSNR^3+{a$I8z6SFGs5{;S{wsy&x)UQD_I=aEg{Sm<`@BSTP#=bI& zC_B58K4W#Lk^kgbjV(;{ENPFVq-v+)c1*=bt-7rDJ8Ro{~s7 z^p)=Hcm8z8RE_(&XYM^B&){I$&)hfo=5?@=z8t^KjT@}g*uq4f@Artii-N64`OX<} zppyOpeO^D*O|Xjl#-N_X4T{LEMsMo$35-XPf z7i29#A8@9vE*uup1MX{n(P)6&PY~3Lj8tTc=AIT%!1gp5+ux_bV zdwo1w_g{Ud#ug?X?uZpt3T0H;rf+~K2qJkkH^C}yH``u^-6(@F*Ozv|K8-C*j5-)A ze09;WKdMO&ym5sZzb$kVtm2l&FDG`2d=ZOmZ_}1)+&&eS#EFLWQp@(?Yr+?I?ECl= zzk@CNuG84U#ME7J!k=gRNkT_`A+G#fA2-1&z9!6F=MVN{JHL5HtDN7`NHFoFP#4_ z(*swU!e1+X5x#GpiVihaTPrlSFyZ#`Ilj973*x{0^IZh1mNfGUf35hk?bm2K@ynU@ zMB|XeMhAs2BmU9y3Bp&|q2KTX;jb|g_W4>#6xm%Oge^>jmOCW;6?K-bOrdYX@A<9V-?cHg%K`-Rf|x+(O+r& z(PwKlCue4_T_r;J-1|LE5WadW?9aAC7q8WhJ5MqrQiZUEiC+>934a}|nO~&TTVU2e zyWhk`u!_$RU-hHbYWMK%?&qVHm>IpN!s=v=93V$u^ zG}vcwAKyPBhI|>q7ADG7JuLhcZ`+mbs9(ihbYVX?!K$y{CklThrPIMU!)VM35@~mxqPF)^CP!BXy@<>cHQNhp>hJ?#o_>g}=h; zYYn z{i;Efv*b2F~Mh|;!XJ&fwnq=w(1$&bst|XpP_T*jlZf`Evc<~qOE>FTa7K% zbst-pVBh#^iP-%fgmJ2P922Zkv0H7h{N;QDVk4qG=y>rswlLwoj>g$X>U%-V&pyjV zuh^1KtYROtBKC`zD?2^C<=4KNr<3VhK-3Mfwf%Vk+cNa96 zU{!(kmOup;Pe=Lv<93=tx(=eQRncGz6CKXPi=4x*D`MG%>hcY8&5V{Vf>lpbc*XA< zuY1(FXf3JD&N*`@OI4ia~fM5#~xeCOKf7V>{jFvvO zolBV0mog^9jV@gly$bx$AJ=XcW<(i`HrmFRk)edfgRju-y zVt3b9Dz0{CsiuF9@3ng$OfcBOM808h;$rF4;#V10sWVs88{l2-4)#_v!K$AcnIdMz zD^C(3u$MY7=BexSnq#nq3H3xSp2>Urx7bTP3va?(KO$K5e5fhf|MAN6R1yvFq<<23 z>UKjT4Yn}hJdvMhms%W>zXmU|cF|+;#v(o@Nsz={yc>LhcY|Wq3WF_7 zIPVPJUa7?hdEfmN?*{+iNx#xZ1go5PhBE12dyMXuWH4L?x%ue zKXc!pR%1R*KZhPHh1>&dVM4w2sUFOeU(?fr82=H$D()M6=foRi4!l8ToVL_p3lr)+ zQT5=+Qcd*i=<|M4-2|(+Z?Iz>Z;(^5O7D7~bp~6QaNZNE7Rso4P{&*9LG*c0UpK)j z?i=jE!W*RXoS0tUY_Nq1^#&e5KTha74Q?MkLubaK(1~D?D96Vh5Jf?p1;G|3_-rwkv8aun zAH>vuye@)OYR*XG!y-n>D0zrEnK!7^^u@w`23wfm7P0LDQ@iRVBaw~d@L?ChDrb%? zOSi(x$4Jboty>#v90b7@Cb&gxTf^MzDG;4coOKbba%NI1A1kALcqE@PO4u{CP9U;n zDeEFwrM`=Z3DQRv&lUMKW777y2CLXd(C*cu=8{fgp!{`S`}(~0Bc1?yKVN9Dg^9tv zqD8~Ey~Q9&Y{sgcSy(wRXla6rVAYca(V|yKAJJX@p5MT#onJsqpMTt73ljqiM+vL% z5Ya;tqXy;EM`8|OLZxRef>k%_M~T$yhlnlm?(;p?)aF53waz09K6mb$uPR21(%X8= zzCk7BEfLx)%ziY=D-5}k!ZkQbIY%3uo<58f;j zsQ;mQaPF%#dI~&WU6^~^MX-un+O~WDbXr@AC>f9~%3u}y;Oj#Mfh|a8^j1@vTJ|b9k_(G&8aB++xR=23A zZ^Khx_0l;_wlLv*iG6cxqWE3@;`|IE8-AlIe?+j#`4W5m!x%->#~0qmSkEwTL|&6E zOsH?gVw}7uo&qrl`*D8%h+viaRxHL!qSW$adRO$|{XVx0?&qaJ^Tp$9lVz`Q-{4y+ zvX?t`$xdZVZL)<4^|fF1$L9mH>8sG^r!%+-R&n1T4`hWR`g^P#_$F0WlPyfB^#S6I z>_HoA4fdhWQ>Jzktm3{wjVi1hxRkWkz+?*(YJGq>E_*OLhz{uUpOK-P30866;HwN) z4$Q$?gOS$@nQURgSvg==ouYa$Ei$BU#k!1j9}%qL-n8vzSi_>BKMJ=+e>m$- zZkC!Zw#qy8Caht3gw{oE4wJ8zX|;+(weEz=`Spfa3HTjyth0p)w~sVfQ`8y6s}8wc z1gq3KAn{iAU~{Ztan^p^L=6INA3j58rOJ%<(^Y>&fQZDJqW=voXtIR~K3h}=27qIV!Rx+r$Icztl9(+Y+-`054-!ZCaMUCbl;b85v+37M$H&K zTlsiZw~U?xcb{{pbi@`W`1-Jq9&7Fjf*4h&yo+F!vx3eZFkkuj5o_)$qb|VzK(K`g zcU%2;wUAy2#F#u)Tm-AsT4ymqw$%=`=jY1i2t)1K5mWH2rdIZgr}#~DcG^t;utNU7 zZI4H_Hz!MT4iIc%Lao`CG}gDH+FJt<-(Q;KB3R|@&C%v8Q$GI2euGAMW*Gkbyum8= zp;lvy;qs|31$IGv2jZWqR}8i=;jG5b{r5UW#HighP1k&3GQlcm*G-?#*NeVMPkq?I zvjWeFiyCA!*}{a{C8&rzlh10Mu_7fqs#P+p*4#Jp-7#147)`2kf=dxFS^ikNI+ zqR)kz0{Pn&k*?YeZ2;am2cWtx6Rawb>^p({?c#&HmmF3*!)|n&ZgBf>|Et|2;+cHX zA6cxjwiG?Mrpt7LElfE3%90OSCnDsNe$9+!wPhfNeVFMYSfzHsi2tOID%cbE4~S&% zXBuo_LhX-JJ{JB_RC^2}<%l^hf>q9*zp3*#DIe)C6qR2TpN*blu!RY=&reL1*Kv2- zT&)3~6Z42GuD0S<;Qq&Y22_r$3F1)eYX)1GQ2W2c2pPMp)GpJVh$|*o#r<#F2h>j1 zW*0M?Y++*a`kG?H+f6DGcOb4l;CHYa;))4Yam3)c9Xs51VJA|}w$}{)yL=toPpAcP zGF*$t+-oXS-Q?C)du`>_x`}nzcefKh*3`P?>Om&hH}Z?3hUrB-k(D{0*<=-8hnx7b zVFs-oqNELKFkgLET1;_C-F#n)lGeUaGfeTYMZ zXJ6tXSXFyMkeGaCuXrv;)V=QSL#pG-?`2(Lu!V_|je|tog1uszjP{npAA~rSHjbQG z>LOUx%*mTT2T9arnh^ z7s0B&n}fudFJhIC*BfhTPIj@`@1GlNVS;q#XkBd)zA*!K!lqrV<@9#3>(T zCsoo)EJpN` zzvqiq&C`BB=HYsKbDC^nf};oD&$mp~T7if@_?3%bRmxGp0@an7~ypGIKebK zGCZ$~VAY4LsYUaeamq*MdjqsHIIB$~^O|g7f}_W_%eQT(od;1iUw#+Cs;>sU@_10V zE$KQ6cWI{`LjLx~h4PzhVS=Lvzk}=RNn-zR1zZHHy8LwAQ{z;;^3ic!J#7u5!jK9jr3UJ|on){iv6VV3m`<!OTbNLp zP{brj46DCVONLd&GY?iW`D(d!d2HJD-%$%SC*ymr)Ky&stHRy}iQHkasy{lcTBxl_ zhp&CjUEJY}H%@t8#CC<>^@;Uy@}c&IFML?;mE?Y9?El;IV1j{f_k4Ucg78YaSQDs;sfs zJ?HFrxqJG7Q`UWG43086B+xGoIk=is6-LiEt*}{aA9ca)@ zQ;os@A&1a(e8D>MLthucD))$5k32;l5GAMeH`&63%6O#4U>jWd|8V91E7ip0GvO=e zm_{aq?sK&AAbxMr)J3rB@ZYaImj{}vt%`z3gADw^AlSkL$24}V7Y)~Pf~efIxr<=c zAY`^$R?w?_G$l=e$flE&6HLY^6DsqUirp)1XKE2x-(D7H z#VS54js<*OLI$(dAZ8Wm;UZY2@|3CT$P8i+zJJ^-+{0uG6Wp`5J=UKe&PA|F<#ZFL z<*)M;5HsLo-JPB$TbSTjuAQ1L^1y9idPtbEGHe>c9@I$`hYsNua$wlLw2 zlHmJgv?d@Lp6%lzSfz3|Dj%h@hG}JxwJxO7AlF%`Om(u?xD9Q4bmlPa46?mV>^R8P zR!q42{EyC)v@IZJ%nEZ6tm0U(?M=`HbjEzZ%Hg@qN-pN!|0eL*TdWCpo`BzWKtI9mw*Aedq z$gOU&g^3y+cEuyNx+2o1PZx(8LT2fGbzKCj7Ej+5k1YRUxBPV;T>9a@d|2akvP=n+ zRqW$#iCyu?%q`E*wmlEfM!8=1az8 zT5GU{i65?a_O37M^AY?<5gP43BdvFXoxE+F%P4-=&Q54%81Q zAFr{-IVFfmOIEoER`pxF(|fk|e&wSI);K@ImEQxw7A9J?+vydb?pHoiU={9j5YNL` zx(HUiKXcSO>aJJ$sQsu(TsY=;XJt%j?rxgKi=5puemG+4y(;fTCTJB`??I@1$R=Bu z;ON0hz#LQJZeSMY`KlByf>kRAcky1?nxK3<%RVLUD9&ow$`mGBnBeHK?NT|{#2o?A zJ%^iMRrJ*2yJd`wcrFRU za|siyy8SH5i;ULlxx{<@dm{&kMR@jM3lr=5$9R!JSrO4+H#M^2nPC#18JJ*|swJeJ z87gK8Gn{9i@A2%z7A88LJLW}>Uqv+8bS^G4`uttRVkWmJ-zDCqituhukrXkuy=U{e zI1hd~-&HPVvV{pA|F+#|^oO|WAaZmm>LOT`dO?&InbK8Ur2*mORzKFcsL2*4c>LRT zov9g(nILBLEaDGDQDAP{Tn6?PG< z>Jxg*>!0hJu%nOjAo3CqNvl_nnJi)y^_8 zUjO{nnJFcV|KXXsS)K1pwlKlt2HBIos%|6)QTKHX7s09{V~=@}XI;&a-OF9w_#bA~ zvSU__EllvZ!F5b;X=DR&9y51Lu&T()>t6qSV)m&mjb(_$;+P#|3llsFkn=3Dza&ay z29gO@sakvLItm}@Z;ZoPO~ouHTbOWwscKKiZJjn~+h+8Q$~ z+~?dk9F@55#LS|Bxmcx#85Sm3<&O3`s3w>QqSW;MCR>W}dG!FX0c#*fVuqeAOmM5)_K&Fhx(7rX zd<9^FRZewR|ChMFAe=98-cu(RD|v3jg{Z%xTX1QQT-JCaS+u{-{adITbSTB#N7uz?jR3KwvT);&1Y-d#Za?2 z7<{m{cym4@Y6@fo^_WFXFML=}uCZh}?rE8miE*jNYRR76)ZsAFMk<9EBH5BBFK zwhhl~{Em5sJeTJgsqfaXP<27B>#16_rsZ3oR_U+G7OF0&^*)0K=QY-1_G9n4c?MgU z2oA1drEjuTtttBL-|Ui@lJyrC!K%(1OIxVApnSyl8)Ll1${O+ZuE8qyq3W%xwQ46% zh8rJ16!F|L*uuo1`VA~pT~Nf!0~?JSST&guYt@)w)uhP{EL2@kYtMRm0g|`+44?CR>>J`?Jm# zsxBxZ_RH6X7x(sAm#Vl3RyC^J*+SI?@m_v$kGb-R84sdcrHUq7n8?4pkCo?Av?3m! zO>36J7%cK%4Hv;G&FW*J>Vh~W=kzOHC~BNQT+JOb$KXET7%Tl*0}J&HRFoY1v#4OS3I3lrg~I$5Z1pjH)M z$R#9k3M-eHVAafxy)D!?P(GgK7KSsQxMfR(!4@W#w(o8ES4SWEBiz`8nWF#IyyfZ- zZa0o&)E{g#-G~FxwAD3(EliY1)6(*hbKjPW<#gj_`TC)>(}sk%E!az-3{l|b@|{dD?E0Z^05}gF`U(D5Nu(h z;V-kSMl+@gYH9Gq3vov{X6nBeF^{zROOL#(VB<04q~?e%%qo!H4@h-|B_Z{v+( zIID7K0k$yVj;q9+2}T7FY0=6|uqxg51(t6IFuw41IBWF7OlsaYsZ5SUjm$Q+5#TW*n;pG%2TbL-dV4{T@3O)jRcU$6@vzVUKMX>5+%tWh2%7tQ^{IlLwPO+whB6GHUdeyO;@ip#> z6aUI@vW1C)b*5X$b+3p8gA1C@-oA&WOSuSEwQW1ya_t{9eftO5!o=!+vn~Iw#$niR zml@wbCSa!?6RheyYPRLy4fv{dd2>04ci0Wc7A7wCn{WAdnI3z4#rPV(YPT<>Fu6s! z2YLJ>R~YsOmj-clc`_Hls$G9iwhn$aU-kK4eQz1(@#~x}I+@89CV2eY_O(q9jl&?G zN4_zbVAb_>(=F6c5WQq1&e{CXs0ZTck~aohnBeh`CmB5Lwgr(V{+Wwl)zL3!Tgcz9 zcC7z|@9nMeWH}NfTbSVSkF`;Y-WWfCn257uf>lxJ=3Bn~)tC{+75Bzjec1BQU<(sG znr%B_1-`n17&hRRi(u8XD+?_DUj0f@$;{dKN>-)!ErTsgxbF<#oljvd1abP!6&JxO zV^*Z)-`&4BD7D!JGxWybY_2Hb-sI7R`Sxb%%<&+?BQlw6VIrpFbPF{t)Hol3Q9B=d z^-p5dGQlbyUAA4OV{Y?D5Cb~pHrc|&`IfUSR76nwov(K(X70v!&I;X%xd>MA=)yW= z+z~c{h{9fEwlHz9<9rJ_`_=Ac6QkC`j@(F$S|(WK9<}+f=QSKe^&5puwlLAO`a%nt z>(y>@qiH&`6z-zqreretYPofJ+}QTg(O;P5Kr9^dg^OU-(vaDfe>ZuFAHOhjWkP;Y z{L2<5cof+7mydLnK+4Gni+`1KFDjp7AAPypsFr@%_f2PVrz02!Ky|(BQ1Ysiku)C zAg9xcEy+!`FyS6iCGY1l8-eK6qX*fhD-uy%KsmE6hzFTcy9icgx)5zytNJJ(rCU@qE2Coiv{E@;XC>}OTE4s} z+=jMYu4P4YHnK*Sne#j${j&@F11E3i_w`ae0%+|#2h z)W?wV!?DEvY`gtQ-7Ezn8hKdQ!UX%X?Zw-xnrU$5lP_g)5!{=fjft|Ry&EEq$$8Od zJF1$u@l_`6l`JM(nBacGbIILm<}DD(dS!4CteXBL+Paj`NBL+B;&ZI>{<&uclPyfR zd+_PA8fHEaCC{gI5v)q#S!3;O-&q`$*KuoCZPSdwI2T#X`yZmMeV6*k*5#Jw>%%hx z`Xdpd>3Ju|JjbM$(v+2xjEG<>i>H!%Zq;5#rg zvEfotdB;w-*kqv|i#(n+caw#BEaIV@FDZ+!F*`x*9GTZ(3lo_dZM9I3 zMG>Xn-8IJHE%i~@7#G2+FQ;s^GPbTF2FSP6OW_ZVa1ggX4KvunM7Ml9tONPWi2jlY zo|D7OgeTf>j+}#8{}VA~wi(&X$KNndd>YZ?w{23ljyt+hh4NE@o*FYC72v7aA)SFNlFn_Jp-gNRO9zixlCRp`kQ>^9B zXPN%|JYy!l8!R1?*WiBcmvyU!S~)UGxNq=_gYRjxK@5AA-Czq7bM9}q{(4wiJdkm< z>8FRrKj`!D)L|}yRopkYi(Y8!8^`H^f?o( z;=VzBwZmVTqd^SVIn`hb6a8}Ru~5xLWx5@gP|0*EFAiw9(nYX}`^L7@eOlGb10ooC zIoZNQh5oVD^8bQVp47V+8=5b%cj+hO^i|hvXLD1&yR@-f* z#dyqYa=YQ(x#B{@S$n>!Nd|*0OpI<9V;!DXNZgk_xb)Iv!>M>{_3G>*SjFvT+ZR50 zX7mFQ9o5ue3lq_|c3Z7#2df?&n(&ob8*h;FwoP>rtm1Zqk1e^)h9Fk17;mtJiFck@ z%a_B}wkxAQoII)Dqd%Bn6}L3jupm!{^Cd32Q3iwCr)0huYipZAVk}yhuL;@l%P%&Z z%#l6jq&C>XMAHqstq0kHRqGx}^~`WqU~gL0)J3q0ugSJ+zIkpqE3oTttYxr;iC;d8 zwHB=l68+@(_-ku!)A=?L9gX!%)b6a}RVhr8fB7MgQGa{hK-Em9sy* z*JfKHi9&te$FYTprGM_VhK>qSS3dgHbE7rJ`I6si8BDN>&(OB(A>W6yL*XQRoc?*Q z)v8{QJQF6^pKVtf9A)Ifb<}BdA@2I0`>f^hsl+`*^?;xESwZtti81KGJsS+mmmAx* zV+TbU-+~z1`a&FAnE17?VYMIsQsoQ({>gHq0*K_FA94|_GTX*m{+#54K$Hei83bFH z$eSzP^5-OPQ!mZM|iLR;kTfWTv*iDYzC=RhSWR{Cy)!Z=$ zEPn?6f*_on{eL<+`^mz@FChmkf0q9}vsX)EkQX`oiC|T}83(OS-YF`}|3K{A35AdM z*q6f=CVsDX&_Wd)mF0gdb_Y4c&XbK@1gpXZCRhV%bn)DhcTuh8TcawX{kAA>jQl*# z@?~J>sJwN@u>9HBhg5%SIQiQLB7ZwunBWM-uUh1LEV=1?V@dUPzl&g1zas~&lMkkNddWNWY3%hWgR>g-$$>bw zFu@UO+l{dU$sxMtUgIKIm1;|ZRc%@qPfzJ%bJi5*K%7;&9Bbm(!h}0^_bg9g4hNxS zo#G-`m8Z`k3zeFbkIV(~n}_gxRjqS7SG02+xBJSp{B;2)uP93T7r)_3C}R<*!h&Z)|mQ1ck)wIZ1xTQG) z--_m}2y+pvD!IwBBDWp${3~Za9vyBaiM?2r%N8bHesRF6*C9p`ZSVFpmt&sc_nqBc z1gk2RIAF~i8RI!9--O2w>us(EQTOKe23wd2>3Yz5`XS15KoV=PuXYV)ycU&e>LOUR zZs6>(hP_o}rR>zP5n*9iB3hudQcri*gV0 zJqB6Q(iSosfOv|kBuucXa7)Yb*D-mTrjY5>F`4bHXt0F|zGEOKdELUM2Sn#x1ziNI zn(f_ht<4bQ=^)<+Yh%Yt4V+ahs;jVt3BJeRyEAsx)C6$~`*N6I)#|4Qtc=l7p7zqm zranc?aOC$1o0ZXE3ln^gvF#7tikjm=Mfs=%;yMWLwsUc8VS?{5$iMTbn0XaMg*{tb z1gk!*JY)?N6+G=^Th+o2z4z$BY1pyH7AD+xpW7pgn<=obsO~QjE`n7{%O_gx=B4qp zl|DYheu=esS8G14r7IFS#&`r{t=gL!=5HX@VOIxRm{@vmzZF$AM%_zFCSqp-R;y>; z)51ltibt?*4-9D|iQd@z!xkov*FI?7xfA7iBJVy^ac5|cJ40LC8JJ)dk6=_@Jk!VQ z45IJ-G6q|iNH-+Gy4NwnvtQmz2KO0iu0oY#Z>~x%f>rK2L)O*9%mpBB-3&I^!o++0 zek|$I)iXriOHQG6FW_BmRG#VvUoE#Tk2Kr9Sob^gI*4o2O1KDCRmgYHT9Fv#Su1C8 zs({#o9{dsnTbSUHhTJ09-{q_XZ24yv7s0CaWfH8K-$Z!UNFQ%OOan0<1Y4Nkv1!}y zvFmImh?p1eUGSNAogWF=^|KF z;q)OZre6i+<1`o`|6mgFNGyXU^fF1kC|U&L|6{m+q) zDlyohR{_Kqy$Ts@VPa^D1S@Z7gy*pwgG(`@-u$t_IE)d+1gkjmQB^m2KQkG!O_x5J z)nE$~JzF2LIyda9#$aA#q)78isBzhN!33+^k@&w+ zBg{k)UzJRZV+#|%?@P4&wE@q+>1P)CYlCqu=w%$M_^dbG9R{3XH->pJlA@F z8H9aa)j+U?362HZ9uz;o%nsrrDo8THs!B}`TmCAQZOs8@xy$&@`DMX4wlLw2lHhD3 z&Fp(ZjaoTo#oa7;*h0-xS@)6qfLjE6$wrPa^MF`ZEYWr4OmIJ8k9+o!=5DNEIT7sk z!GD*p&$eHV8)-TMo&*tBYV2w}@?fUyL=AB}+E$ zWTLKYDKJI2u z@{!@}Zy`+hjvZBjk%?Al#eClS@;aDcOCaJ;c^%EFjB)xS+3UJbLYVL!JF3J@hpgPm zTX<_qA55?%5OGTS_&)P!>Ep+cFEu87$Bt_E`UJ~LnB?_HA55?%5OGraNWW^7^zl=% zsu~l%V@FlB_d#oX*A?Cn>4OQj1R_pIAEh6RkUrx6YO68fJ9bn%p6$1mo{9CAlRlVW zOCaKR>EqSCVbaIfO~-0X_>LXblrH_tP z21p-w?rqVS@Etpz%K0a@IRb#?; z?5L72-EQq#U*5_reK5h6K*T}mqgVM((#P#>k2NNI$Byckur1b+<-$rQeK5h6K*WCO zj+&Z0BnJ9bnbPOPy0S9E~&TKZsuErAGA`bhP@uJkeHT~3_|-?5{*yLqVMp2y! z-?5|8@6NXhcqdyAqz@+85{QVEK8}gX(nrRqQaTg9V@Fk~`fTf)P1BVRCfE{)Nb=Fu zQ%?HWeCS)93E#1!8aH^FwP@fR>xR4zCfE{)*dwpw^YmX!AB$tF=uG&I9o5LuldPBN ze^EY|U`rq($w&WHg{2QM!lN_cJ9bnH+K;zhj#_N}C9i`Cwge(}%j?k6=aoLbw7=7t z@Etp<$cn?Q#>O)1qV&N8TLKZgq>s}zzmz^o*ZW>)!guVbLVNYKPW%yVos~YAU`rq( zM*0}jIFs}-woN0Q3E#1!>e#%KrR`p0{ULoY!InV8PU&NGx%ARUt1``WCVa<^Dou*! z*66;!Dj!U+B@mJ1W86O}rH_|~TIo#qjvdvk0rjlW|8BI7$?IT(ErEy~@;c&DyfvKX z-Jf!|*O~AgJF40%b*pmqt=19gg9)|-BDPB(yRJQuK313StTW*|c2rTzzOmvu?od9M zU`rq($w$#qm!*$#>AUMp_>LV_+HQrdufE@9CCKYwf-QlFZSp!coH-_a{JyN0&V=vS zQDuDpr8Vi3y_O|?Fu|5U#8&Ae#q)jAN93cvIupKQN7bJ9aYLH_q@F>$6JPM zD<;?yh}a_A>Ur>V>7#Dtp*j=3V@I`T)Cuq27)$wJf-QlFBpLXb z;BR(%541R7?UmQT1X}_To8@(69MV+!XxL$-&V=vSQJsug>l`#f7F@q9XqPQpN;cYe43zqFu|5UM3RqvdxNBpr(H(tO!$r+Re>>ez1Qy^Qa+eq zOCTc2N0Tyt$2qaPZp0X!3E#1!I=d#b_u%S8<%0>f1R|1r)ZDaK`Z!Tztj>h**imJz z6Boa!$YJG!3AO|xl6=HIFD`vlOc<*(;X8IzV{+z;9~kEI!30|Z5lKESEl;!0X{#;o z$LdV@jvdwfBCYgK#`%0O!InTol8?cCj#qVjlzA{#XTo>vsJ@szx!Mmu_6Aqch<q1$wQkbK z{;&}`6TV|dHGQb%IXQE`8iP!*B@mJ1Bkvy*rH|j*4bz$M9XqN6D=vHHp7g5U4<^_W zh)DYVh-^Dw`pB1Zh|YxX*iluT@xs&iqN#psnP5vGBI&objj>AlIM`{R&V=vSQN?Bd zR4m^Rr+hHMmOw<3kM)mtNFU8c_1Bs39XqOs{h39s+Of(96Kn}YB>AZE@PPDjD725x zgzwlLXbtobFy*eg5LvnUg62}C44 ziykb0Q~KCkw5!g9@7Pf-+g?fhdw!ep!30|Z5lKG29raB5sQ*nzoeAHuqe{KBrr5E3 zv+}_NTLKYDJ{DK~M0f62f4yy^GvPaSR6o>jB=&r}LA~QJ!InTo(mT$MUp|#SLVs$Z zGvPaSR7JgQ#D5FdDIZL*B@mJ1<4ocg(#NRdO>`!F$BwGZ^X_8g(N*f5lL@v2B9h)Y ze>s&^`e=G7RA<6>?5N7#9w^!$U#{MrnP5vGBI(_E)uykckFgu-=uG&I9aV}sqs8&) zCCUdAYzagp`Ow=HkUr{Fuc0&HJ9bpHUr!XT>MT@q8BDMx5Ro*O(ebZh(nre`n$Cpp z*ik)95g~FPoTq#+!InTol8>4t%SazzCsx#%@Etp;-Mx zgKJliK7#j_)tT@eJF5S!m@9s(I#tbIF~OEVMAH0KwNfF{$FX50bS8Yqj%sV^1>#hd zaO<(W4kp+Vh}b8uBh%kP`goP1kj{kf*imhsA1Q`r9;fCLnP5vGB56KxRkPaCM|MvsCFKW66IzOQFE_Muq6f1R|1r zME=rP`UsvKq%+|=c2t=*trZ`pw^wuFOt2*oku(?nzIAiyBSVk0IupKQN0q<%Z{k{! zACwO!*b<0H@=^XqYw6>5wiG%OzGFwV`S>O=aB^++ZGs851R|2YOKgbQ9Hw3jS1heqpDkQrzpO-wEB+21X}_T zN#AjnzvwP~oLzKYW5Rdrs3s-fEh;rFpuTxA!InTo(l@Ws!+T2~$8IKSO!$r+)z81~ z700e-Q$CnrOCTc2N4uDQ(ns6pyEP_!$Bt@SaGV%bEuH#4$OKyg5lP<%^KK54K8l=L zr!nC>c2vb%nBvUicj{Xz6Kn}YBz;TOI}MgT?2!vKCVa<^s#zPaSeE66^1%dK0uf0* z1|A zxwyuJ@7PiGt8_^Gd~%>#Gr7)7fG15n5*5e^e_>LV_){}|ie6`eSeF+n62}JxUePrx2R{BUYIU2}GQiKCom- zUWfC3z=ZGEQK@4+$wvS}S^^PCKIp9C_;2}+9hEvmxn|0?nP5vGLawZ`eXW~%azq>x zzGFw_wDg5)sXhH?Jr`6mZ@hDskyuq6=jm-OKqwW}%@H<<7p{~uxJ9Tvsag>hr=y^CFA!-5hK zVeW;oH|&Zf_O7v)hzdkM6^yaR-YY0}1Qm9N9UGR|V(%?hY}k!D-2^nRCz8UHTb3zSx4miAD@0P;p1xGGe%XeOR^@b|hTKx=Z{L1x_|%Ac2ZI z;^ef!O=buCjBv5fjIAg%o*^Y$kSa<1H>WKl_IUS-5U0u^_}LnB7GxWBUBOSU87I@VqKom1WRkB!d(cdvFNT*tagzmv@q<1cS9VjzKv zJK~8E_9SPU5?h<$8GSx__7Y7Mc+z}~840xJQkZ>LAF7ad`Q_X>5Ac2ZI z;+YWxo{AJCT*tagJRyk~NTA}5aK?bAI|T{XvF;L2dNTDF(dR${6?eo7<8#1MDova+ zo?nfB%XO@~#1pHCfdne<2xpAl;`uxS&2U4)b*#JeC+~6j!{ub-b0C3=J0jKi98fh- zkZ>LAF1>WSUz)mM;k9qTSpDU|8jPM-q_RNN8o zjn9#|%~=;664OLM!gZ{>^onPXldDAxBv5fjIAcr__1*qggA^oO$GS^YZe_YA(&s<| z6?eo3<8wS0b?Sj9+bT%7j&+w_fqt_%N`7R-Kmrwa#785>5>apO{=Z-a3D>di5|wlj z0|`{z5zZL#;=RGif4eG3xQ=y~{zf2f^>+EC@i~w{#U1g<_#7WXobNw=uGLdP!gZ{> z#G4Hf0|`{z5zZL!Rz^X>b*#I@8yXP<2~^w>&KU4^NkPJOth>aUCYjE8$}1#LaYuYM zzN=~Cz1qH@Aqo<%W8I~{F)P_PfhI@lF_1vT9r4A80dM;hBwWY3OMmmXCdMXWAc2ZI z!WpBGc+YvJ*GL5k*Rk#rZ!kp+Bv5fjIAg%uR|N^zvF;LYVrgF){kuW}6?cSYd{^)m zSwX^eth>Y;W!eEukAVa#?g)C$rn(Qj4OftG9qTUfW?aNT0u^_JGX}iXSCDWW>n`zz zU&KHH6?cR)26QJVNVtx5m*`XwF_1vT9pQ`tT^0%wu4COLIxa*EBv5fjIAa97clMVI zc^Il7;X2k`dgsW*XUQT45~#Q%oH5>Rb@s^|oE4@Z;X2k`q60?6Kmrwagfj+o?n_nDCSo9giaWv?Lv*)=Q$L)7gzH#$iB2~W0|`{z5zZK* zOD~-I`V=Hw$GS^&?1>mipyG~j#t_|x;nbg~AmKXJU83_)#6SWScZ4&B=$Z_tK1&4& z*Rkfcq6a2@L|(U~i*wMd}ij&NRUMOSe+^&u-rxQ=y~=r9&B zkU+&9;fx`=qr<76T0z2fth+>~w1|NOD((np4AJEsPJQ7D60T$2B|5&vJsc9KxFekR zaF0Wb{`T;C+50OA;k*}p?d;PJ|Fd>)1qs)&?h+mNA_fwu zxFeh~COg*~gfA%BT|vTith@A;1fegt%1@1ZA0$w5NBm1PO&E8sn+U&uq_cvA>sWV* z6%pbY2MJW%5zc2Ev6>^C)_*8SxQ=y~SlJaD zA^Do|H%9^$cf>oQHBGE`3a9l^3KFhk-6d8&iCP8{sJJ7XwG6RpE1cGODM+}Eb(dJd zC1N0fiaWv?L##dvr}b(I60T$2C03$|`V|tWxFekPE3t|$oYvhbNVtx5msn9JVjzKv zJHi>`pmY6Tc#ry(6eL{7x=UXfcq3-As3#(UiaWwtPt5FG2N`}NzKnu|>sWW`D;(GT z6Cxip@(Kx5+!0inpuGC>$ym=BKK)ZM1qs)&?$TFkW~ww?)LxN5#U0_Sy*_ZROATL> zzkq^->sWV*6{j-wd(rbC5~#Q%o*SRzmUDe=c%L6~DoD7Fb(g+!_Vk@jq85$>D((np zEqv{!P71va4qtFEqk@F%Sa*pP!18Y6b0C3=JA$qT^!Lc@T<;uS=)e~{60T$2rLSZ@ zzFHRVCXhhI9pQX8Ay#3B)4FXt60T$2rLV}|8(mwx$3X%WcZBmjPK0y)dAQc~mK_P# zvF;Kp%jI>(cZCEh?g*+5(sw0R#fQ^6dOH%XW8EcI$cuMgNTA}5aK7{U?3@P>Uf^|- z9SPU5?$THKKln3`ct3~)D((p9`@!DMxd!1^AMLOs;X2k`Vq$@afdne<2xp98&iM@C zrD9gwk#HUBE`9RCfNU?syHq4laYs1cr3N_XOoX52bL>dCj&+xqAQ3pj_?shviaX*i z(VF(bIWHr;eETpv60T$2rBA|Gem+6G+eQKvcZBoZcJ(LYjr07_ji2pExQ=y~nCKz; z0FXe%9ihMBr^!an`6c0#D*M}!a2@L|eKLvT@U*}X3CJ zJj;bGHY8lfx=WvU;}dpC^vNKBiaX+p5kpMt32)Xp$cBXLSa<1@dtCF2Gz|$<+!4+g zdM^=OKJ?s5qg^_pzA6zMkfN(KW+aqen{*z<%|E_7e(?y_yM2$~Jp-#QTOQ7QDlw6T`T*lYEZ8PH!)B_ zV(DO2{+`$`ul7a)T~%X~)UGqmJMLS)E1f_EiAwvEM_j2jYu=6GJCZL89l8c=^8xbj5v&RR?FS>?Q^(NbF3zNB*98 z@t3DJ66mU!ZkIZ!N^SM7<-5`eRFEj2WtaRtA)TpiA<(t#{5G{#Az8g+iJ=pyAhGc3 zHu-x(|8|i;*T18;sEv-b_$G!~> zc(_Uap7`rZT?>J($tBjShkxy(-m=8d2~>~>Ew^6&p3pxz66iWzd9^z8mto(;& zn?P5-cLUY+p0qQf<#XsUP(dPFxr`LpT;%2z34Qs*$?1>Q?o#H3ku=AW=@@nxI~?{LOU&6(m|c z%_@IS=zl>Z(6zMwCr5;8`zD4?pn^nX*H3}p6LV(&@Dmc~Iy3Q(!#i0~FIql_PN0HB z(t|U8ov}T(5+c8~#Lx*;kPwv@llb~wA%QNv64Lls3zML~g!3Fk1qr?K@;$McDlAB#OH@MS zcb3ng6R02|YBk>wiBw@h0$q9~=6UaPSXUt=JFE>Q__69W|_M6JdozQ#ZTU7`|V5??(R4gF1l<5~5b~4RMqzEJ&bBuY@eCx>f#SiJ=pyAfZ=YEX3FE3JG+H zO2{`c=nG4O3KF7LV-jCuAb~DX2{8%!*PXwKs30L~H74;j1`_DfD@%3{cfi6)AF^R9= z6)H%G%F8!|USUB3U7`{qr%AIKdJS{}6(mIE#U#Fd4kXYeDj_EE^>d(tgs9b+#Mc-| zpi5LjOyX+{RFDw08k6`M0||7AN{C5(je!ahqE=%PUt=JFE>Q_FiLWtGK|<7OOyX+{ zB+w-)Atv!P1}aF1T8&A3je!KZL?y%|zQ#ZW2~n#tiLWt`K$ob5n8eo@s30L~H74;j z1`_BJ6&92D8Uqz1M6E^;6K{tpH+G%&?>0Bm-?i&kd+Oy9d#xpv`@OB=+N11eqsMDN z-!P>HO-@?bX`nwUNTdrns21)OPIwZrrPIJfB+#YP?TXh4@YLgJx#L2VZu5iK zt2})ZQ9&YbfHOwI@QOtAj}1{mb_cN|)vW}&^j+VI=BN{Jz#vw>9Igzx7Q^P&>zarP z5>hi~jQw9UyQW1E@e>iA-w^21_taaI>JxC>AS!k1sYD!3Ww|m2C8C1FwX)6_ZSTfW zjI%v@Dw`8iS-|TS76M(@a~@S!ob(BB61AQ*RgPx&;1!4ZCZd8wyI0A^-(%S9VH6|7 z!=}oU+#bB`BrAcg;2X(my|q38a}45mTTkV6Gl~BcSv(OHB#IgPz=`2Q~8~U zCDW}0y2@@$R&NjW2`E)fC!X(3uk^UznNQr9nt%!t_a-`HZ236WrfD;YSV6?*C@X=k z*Zq^#thIdtoW%KIQT7hX2!8qFk_1$cSXkE?WvOn zJ{LSCWr?UJ;dzH=u-G9n$-_9K_R!vd6$>5MUzhdMp2d;hh!LMROqsi~XX3pxTO?GF(7PMWy#YhxCn{6@)36JNj#&tF>3f4V zviXP@ReVB~LqmKMvov}kp@M|orD^UB=v959(&k=@^!(?v3<-3Jy>lJejn7db-z0@z zZTKDaFUn9sLhm*;_Xg~Jbb_*EY=X4e2x*pdvk|svWoL#I&9_Y~8#coi~wk-uhdD$GjB~*|YT5zXY z@@`!b)zKAhD zO@eLDyigwXyrYFcm#Y`g8DnJ46SkvGLix4cLnTy@I6ZcY`rBVYDv#E`t9EA;+s$F2 z{OxTkfv(TPqtsWEgVkD_bfQT5+4ioKC1Z=#WT+sqaQhbZeV&%;A8+*Bz4&F8J%q03 z(H9 zwpIdNMXyJxk8*SpM4x7Pm31xXJg*VQP(dO?ff%*<%$8~<qmB&|O*fN`yK-Zz6(Q4_Voz$KNQR_lG zE16>yA=o%G1Qd}l-yyyiT-=aa8!`c*QlC1dVZNMEBOwlNEg+z76M)E z>n&DSzMP`&H@+(^dw??QqTO$9y-FMvB*a=v=Hce7dJ)in0~R^!uU$g@A z?eea&?|RsoM}?hZNT6%h*1>8G@3rcLRQ>AQ?!{vJP9oaBzQj;LqFd`;>cQ|0f+$#0 zwilx7`KRrX76M&UGxkz5H{GDVTdv;d?1iD;3w`+?mp!=&Ie(GcEy)l&k-DQV_3KFiK+r?gsiKy4+f41NAhw=(j z&Pk{s5tkgKp89o*_`lk7vZHOo%x(*TE>{Qb>?X@8#-dUoww}d9c{}-ngbEUw z9@bY+b>1doH2)N2OISv`v5nbpA<*UOxpl_qnB316<{Qd0wfkE_1qt69b=CfbcZwLd zM>Mfr2@mC~uN|}y=yLVkI%5ne)XLVmPbiP}J|UrkMDMLN)C@a!ix@>~HMafRHk7xo z__u{X*Vc|dswKjqWVF-nA0w z8ma!MrdvW!Mg|cQHQz2bk$4+>F^&ongIjs2Cp*NdrHx+(pN;eF`I<|7Xo8hMSEZLf zs+CW~sXrLR<11V3f9Lez{kr>bRFDXm;H7q*9IJX7zljI0ZngWIj8N}|Q4*S#nsmyx3I(BlWMQcHd_gF)v8-TE$tDn zPBDnM5hv~E=xPvT@5C(%{JV?ez0`e5tXk2y;!GZS(!Tk046`X#0$nZIR8XhXju*uE zzb@EU#0RkxvwLw=kZ5?sOWkrRR-J2H&!-Y$i=|rlHw3!!^sJz6Z5S_zTW7D>3wDo` zqWbeU!=_UlDXNsm4cwh-w0Ts5!S*O8z`8lU{_>qL9mO8fWEqhQ01@ zCD66yhYyb6Rf>p_Y3_1+sX28LTkajjQ9(jX=n{Jzwy3+%-r!}5^zXBg76M(q>F+v1 z+c-pwHnb0KXyXHZp1xx_DoBV)V8*L%bb^p~WN1^_Q)KbP-TfDfh{TLD32an~bAd%Q1 z((%vO!)jrJ@O$WGUvoW%9shfXg+SLUInvRh^I>(A@mo?lxuAU)5w+6{<)|RxDBRZ( z8E`}pZL;RDH?*g+>#Mq12y{Jp(#J8k$PqQ0@tYV@^ntB55kqEl=cpiYzN3#L`vn*A zGVf_yVfx)YU9X9SK-at~K92Jnj;Ob0>UWl>e^_fPK*XDrCL9$cYER7K7+EJ-5IYw{ z+HTSHBkzPN76M&++h=hMPLr$-H?C2);_KUP6LI~16^;rL4?W|PN)B`pKZh5x#nF{> zP4Dy;0$l}P$0en!lB^DUp{&xPk5f?lp~K zNT4feY3-yb6_V9+3-x=3xo?*w=tQoeQ4AF%+D%dXhWNV(rOv(mMGJ-UiJL!2NTAEr zTR(C9db)?xU+>PQdSXPMGZHFDxVrA0grm;Ax~>?gAR%}52{1p$l|g;{JlBTu;og5s zNT5r+k5-*AA_i~ryIzHAuccl~s36g(P<+5y+I8CbT~&yG?3Za)DF1Tml7&E*Yqf$i z#-pPd{F}56<&Dogl2AcnWz{T!J;Plw5`t^{7waF&TQ$0CA<*?+Z#Svx+X)RPEhxs^cI@aMGyE7x!lzo)d7M$%i$9eLAp zRFGIaHA|p*eiVG(Ryt32ecSU{33OGd=o9$vmm}hgIA($B#>bPl3|M4^~0f#z8| zkBIbCfqWcdCD1jhi%+2W%aAV3S}8p}bH+Vx!cjq@?O#~}PYy^HzgIodt(83Jx8w=^ zmLP$y_~|}@=I>R3SG%R*d-Zx^4~_~F4IgF+%ruAIz#6~1Pg8eGhlz;$hCtVfEk1!2 zKf8W+xA#brKAekTtqu+2s31}1QNA8^oKG-z zVZ%3n^tAoMIAyxyrc`MAXod75iaff>C;~nu1@=3)3%E>b^tbUc>ECjmn%^&@?*XgI+B;slJSqv2< z-VayQZfD<%caVcSc2qX#ogAK1Ed;vo%^&qlbZ)P#Cn9*zT!sn~6-L<9%QZ65j5z(R zWn}&UWj~#RJ0DNB5a_};f7E4Bnkg|vB%c3+p@PJxzy!7bnLOehWLbKn=tFfMncgTO zfi8UWr)eoWODcXuY+L&qLj{So|Lj#eH}+6J7;jACKD@ENq~FBLF^wz)y70}Prq#;$ z%AQI@rSE`)6rLd z`%tQj?q1d2LZAz?l6noUKDQ4fLLJnbp@PKR$Gg?*DK*sG##{Y7zKe}F?q}NOwh-vD zX8YnI3+*4M;&tk6VTKA4_(qxb;8{9GsXb~~;v>H~3^QDxrPnXp3uC8H%t}o=ylbTL zrq*Z4qtHTz3KHX1C~EcWAH?~QamFy^(cU2Tma-iQbYWIfU9{~l%0eQRI@T~$keId8 zrk?DUNu6w*9}_6s-=C*li9X_#TT>YrOqYZETz$C5{$Xey0lLust&@1iCOQHEp@AnDQqPe?`w{ zs36g=OssmKtd}@H{=N3x{(_$F0*3Uq5a`0J)U@6IOR+yAVnn793>75uwce?wE$t^d z2PPC;XkS9t55HH1Ed;u(*?#@veET9I28}7rP(cE_AvEnwu2IVI<0%P0Y+21P!^J#H zV@F`jN=-|=K3wtJbW<8#Wj#X$iKa9+A!$%1)p`ARLfNjrSIeWWu@LCOtkkrdPX;M< zh$zjsGgOdxu`NOM`!TOLKb{}%sjQ-_!G$4F76M(Em9%?ZqwY!s5h;8RLj{QegZ8Pj z_j;&4#`R<9NR*95p5yRg;}X-=Q{=|Wr%3mcMn4ai5_p`)F~w@sEToa<$1(c z@t|z4(0ZMPKo@4Erv1~+M=3%?u4`KvDo9*y7pwMc?WrkrP!NOw*Qf3goQvCW+nA4eR^nbKt$BY zP=*Q;v*&G7^Hpmg&X080=G*ObHJBVy+Creqn(aM9=h|&V{BpGtLj?)!VM?!}>!oX*cQI6un4~1ArEBF?pBVR7Kc);) z)XhO`CS^Mk=)$bjw5)9hC?AN(vN(~Uf<&pQ`_%HMJk${5`Z2Ugccse781^`DkA*-N zW+h#tmUUHX5V7F7gQ0?iSJ8O24zHkAFwTz~ld36 zgQ0@N!0=f0r*L}DVw@i>y89@T=*`az%625sg;}X-OHO+$VMJ`Gx0j)U#JPPt)jwwY ziSy$vWxEe$`*X^6B+!LfscES4BTRv{$EWe@oep z1iCOQHEpH*kG&QV6aSvdP(cDa#5ApJ_*{Dr%JzNND_ID1S+hOQ?IBA4Hyxx;O_CVq z66S8$pZnB*uX(6|npV$3SIwP=eIC(q9$=UH1C% zYW{u|M2x5Qfl8NINq!{`pJu2aA!b#pg^d*>^AGh^yr@rR?3K$F0$uz6idB72c&S&6 z&#|v?Kc(GE-^4DRZZTAl&}VMPN7q*K8!@!zy_BugN&eHy`xXLSuWIa419SL`7*A^S zQu5n+Cg$7voS}k*K0Ex_YFW)@#P~aVcg3;zt(0T&D+__HcSED!A0$tc4MynwH?4*Q_JnbK{FC#|<3GDaM zwC4Wa%HD~i{Aa2^aqQR;yA`N+zl15+Wus};_f=DTmfe)H{NT$`LE>252=&YG1!}bM z7ko$EJDGO{vGUZtg9N&;%SO`%-2PEXq`QnQrTjQ5NZ9XAQ8Uz8Ec$(Z=v_+bO_jTO zmuguEbYYhbz16Qyca}ty>0F1Sg2dYMq3S>9m#MKvJ+XgW3z)M8D6O{-5kAR2NNtQo=%@3%hJItz6w#c8!SDW6E$; zkoc?45H;O`wW@5qqu(;;qyE;(!;K}5*)>>L#&mM-e0mWbUT z`hBveF1GKX-^4=iE-@s~gZW~WS_pJu&kR)u^VGD*5s~rBEQSga*a1V&I9aPH`3pZy2;T3w6;{13{+1`(8mTM{7kw6z_CGBx|t$`8)WIs>DsvG4wDoEtL*h`JLvq796d6yrychjFzZ)Ud;=)$a|r_>2{doLok zZOp|{LBcajC$+>)>R314b9RiKXRkr;aaJ_A&X7PCW+i1}+nM%qMBM6jo1ub4jT|l2 z#XGl%o}xg?_M?>T8$Zvo5a_aI`-i_P*-sELef(U83KH18rD>N}RZ!N24NH7CDv)D_ zi(Pxv8+84^tkkqZOUf$QDu0&3gJq5i64!Evsl`4nQ`Z>Rk4u#8v#2I>n6e!SbYWI% z+P;)x$`c~WbgIu$LE_W9F>1;1RcamMF8mkD_HBQ~u>NuW76M(El^R{7aw~rjG2(Fm zM+J$ptB0s1udY?s8`qDJe3_K@RFi2r(%V9y3$v2$^l$v2*ojc<*5RliaWhA6bxGEZ z;`~T^@sWKq)%0^;D{mptg;_~EH8r?pUqHl)(v>(WNPKM2NgbRsTAUwu$J_1i>7KgM zhFlf`U6_@cHoRt>{V5SVC@)6^iBT36!h6K7WE9q~3 zcB*|15v;*K3>75&D>YCf7i<&f$CWFU>|t~l?ioJULZHi?_qPbbeq~YFf2`63WAQH>C=V8gW#R*qLLjT4UBK zaemySZ0}EZOOq+vkw6z_rKXJxEU2U-V*lR892F#(Iz(NPx>lSYYX98IWLoc>{$YTH zKo@4ErY*dXRf!;C#H;!o6(m~M?X4E6vQeBLr>_5?9HVE>*1mNt1iCOQH7%j&2m1*k zW?uEDNGwJGM=nAHSWNYCl3X z{U_`nh6K7WD>cn`NT@-)eE*Q4f`o^MpPH@hPH}#Ck1cI)PgjF>m*-mubXl{#%d5in zc0|-DypW-S1a{48+PJ`?N`slB{0B5>&N0Kq?se(~IzKQgHLdfL!b-7n>!p-N%{eMa zl)5-XeV=BXI6u}>wm;n%#QgU)wh-vTtkksM$L3b<5@CDRoTGw7t}eaRZ1py(HH_=W z=!;pE!F0FO;7xrCfiBES>Y=ZcLHQpM+b%Zds34JLLnpOIaI`o-9u@mwe@AZt_FnU| z5a`0Jq`YeQ%zl!H;~hCi1&Iy&TB`E`V#N6o8F9g0mhP5zHuSU*=)$a|s`IiF_6kHK z*00V{K_Y%d19i*4+r;^?gR;GnUX!_;-$I}Zvr^MK*4$vPOhoSng*Ylmcy{npbI;f* zdYxa62(>%tYVhgHLxu#pFe^1}Pv#N!BqEfE6ov{C*p01e>s}YO=cH_3U1Xt!K$kV! ze{Gge>5`$N^dz+v$6T`H?y%nKp4J;h?#}edr$n77D*aTuH7^AU5@I(=^(>t$^m}z9 zyK=r`g5>jSI}3rX6&E|H`@*8tCC2^Ltyn?ErFNbXBVsg7Nw4fZSU0iVLAvJ!1qpq3&q*)0swa%k(IiV6MXr{H4eH#* zLZGW^nTBfW@a>`xdBx|CcBx#i#C%1&b5xKJyOgTOj2Nr_d}VLE`K?qvhm}BA*UbLv z!I%E}dv^tr>%2TUDo9k%?UVFjldHFO>4QCq3O#ey zUzy%QpbI-%X`al=)C8UQcVBvr3KDv^>HbhxZ|$(uB?~%+f>sk?WkqvogXI*$}o{*hKs$)jq?MuQqz{cEn%-OeU>^u4B@CCktV3GTg?+*Mo2G-_$~&3$s$ws$|b*5Iqx{a#WC*Q_m-<+AY`l(a$R- zaR${a>(}tK5a`0J)U=AziYMxGig-IujtUZbjyLo%27c=&z{O}T<6Cjn#QHi@uGQN z76M(Em710`wYa~FKn01Nr+fm;>&M{@seby^;3HiPkU$q^CA~|1y2oE9>d_Sk6(laU zjSnzabNqh4pZ_0Jlc~}=iXnk6YqnPiN-~JcS)&*#NMM&gb);0kY1>isX~OGqp&T>( z!p8iLLmQHf^8>SzZW$^Zw{@6(Q>s>L5=RAz!I!c)%r5VHm6L6wsV{sB^@SsWF3d_z z^C>*r7D_}!!4QrL5_yitCw(e#RNP;AOpmmcr@N)AU4~l-bYWJ~{F2h;ZRLmapn^ocbaevE>qqs7;{N*8fTq`32y|gqYFe9W zDF)Git~jV5v1Mj_fVp<5{M|kN@$}9sBdtV20$rGuRILpyBg~Q=6Ln(l>){*~B=n5Q*TR+U%|5h9{N;EmyVSL(g+LeP zn5GSV-ojreE)#(Y62DZh6JTBq_6+v*Pom%Uo%Gv|1iCQC=x!-zHc7u4w4v(h7n2rX77Y2*lJ z9@AO-VnE`E5($#ugHQ{BF8y1-G{F@^UY#XT-DUS%@F~prd$<%N7F6uae+YNQSkP&J zf1j8Xsj*BG7vSGQSB20z0p{mOJMg6cyJCKcPwt0tRFKFuXL>-pcCHw=b5@fwdZuB| zk|tRQbY=J38(^M;_6@_Om(P17E{h1`s37rj_p5+O&zx5{P5V2;Tq)ndx6;XplPm*Tq-{D~>M+FI7W29-`Tg$NRS}U49*<_2 z<~}W@qc@6+0-IP?>LD@nUZ22ej}D7j#mTy1q}~&7FtEv)Zg(JEU~9sI}^p0i3>U5TslSu6P zxldq|(TBwf&{;(zqziQSnrVZTKo_p_)UuxnI zK7&6i-{X{&w`B;&^A6A8*F{zbnrrokEv?U<`aAY-_n*K~L84r~sK6Qd4;kmbrtQcd z%re;CN>|$cY9Y|Ib5UHNIYA(^UqAMyVUNTkgU54JkeE4E4Lm*TfQT`~do=s0RT`E* za;$|wSF7hI0?kPXpH59-*Ot~v+}L>>M+J$4Ypw;(JM9qD7JhCP!LB??ksKdKTL^Sj z^tc;nPIP$Qbpd;|R`tu2ZVX2S3I9Ld2DZ7Ph{+U>mn~$&yC+EJW{$ED=vrFjLtyaN z$rQC$uV*ori%NrPkL0KzVJnGl4VIj~pWke>~oUqX~co)kY zxL#^ka2Q7gi8sD^WpnPwX=yvlzA}h;J{@Es(3QJtUis3F1ToQJ^TI?HNJPeV12`&3 zWWC@aXPZtdw~Tjpn*;W+D#v2jn5Nw=1iD5m9&-C3`^0pZ3eOy@BN5TdyK+>JsM4^4 zY|fKu(`yeKLeDtQIs{n=bd4@wK{lt{lql?Ay@(h_Giy*m!e_ddY);b2b9F20MR$ER zn!SSrx_Wo@lFj)({_POW=-PfRNH%9|t;$`K-6NtDbyJ~&M2#82GRz8V z^FJw)=6EfpIbKMh%eDKhbMjZo+I^(%G%HN$xYOh2ipFj3Us2~wJf3z&kU8$y9rBB%Sv~r%* zs5woDU9;Chplfi%B>C^O%LGwnYHKFbU$E_yDGU`P{&#P*tQ=Y?Cd!p2q8zd-n_M1D%6mAFKqrf<}hQ<`lt-{XVhF^ge1PO%X%| ziD5g&$Y$qqy1t*-GrH?bePkuj<=7r7o3jneSIN%DA53NEs9zKnB&OXOBbyzjd5O45 zMAA0|x|ZDzmCc^*oYxBQY}94(jJjA+LE=riv9j3-n2iVzB2vB~(A6fC-EhNx&&Ld1VdmwGSO7O8X<^TD}MjRC+ z(#@SDpIp1#=qb~*#jVQm8rx6%f38{ILZGYhhbi*=CX0I~n2Xj=AxN+A*HfM!BT9C*FQ)lMWHUlgKy6`Hh zX&Db6WyOi;5!sicf<(h^6=ZX++SU{Y+d+T9-4Y7hXlF4>?q2*NC`Yq$WoNiS5x1WV07%wbup~Nxvn+dk|B8(ZeHG-b{JjtUZ)f2kmw^ZFK1wx@0nVsVu1NT3U|Qqx}j zb%9+XqSTyT92F#HAMldRNriJpoMbTdfvkf>ZNDR5$Kz?3+yEs35e^c2h zx<;KXR?|YD3$s$w@-8{S&JiKW)j29iOqkzNHhVdzAKJ=hQk|g#b!H-gF3d_zbJU7s zvx!(n-Jhr+QK3L5*<1@Sk!Hj9qiiojo&89l3$s$wevO^SMiVii{&j{55^aC(C7ZKx z(^sp@3RAY{rb)L*pv#)=MN7&|pQigSP18jM3A{Vgv<{okvCeykCI0W?0FD_xdqGt> z?D`&~9}2UQc6L~Mna!*4S-L&5FGmFl_P3X8PQa`~*`ABm%Iu{Hm`I=tvr^LrZo12w z5OJqpca91Y_H_Pojk3GMT+S~iudpYM7^d#+U?I?jSxN5={=Lt9)fhHma$AlH66Mk~ zlzkd+7w1RUte03%>Re9zyMcv37iJ~RlnuDcS`pDNTBhG#^E^Oe*`b!Q*~@un*$K9l zIx~H#GZP7PVOCNVC*lIzMnrk){zL_d)YhG3b1lGP%J%J)?V*(INT3U|l6DN4U}sy2 z=tyg2P(fnux?Zxmmh9uUdCZrd?kY;x84~Eitkkr3FBY@9SL+{R%%+Q)-Tv0BG%>V z%27cg#-pJ;zUOw)>#V)I&q|z)VLst)Ed;tSD>W_dbt>~FBB6LIjtUZup0$*l_KFd` z&R?XvtRGzsZfue*1iCOQHLXRxXDoz>+U+?<1&LwPI?3i*fL*^`VE*}O;t6&3BY`f= zN}A~;-(tQ*G^Eu7s34K`ZZFwfOV*UK{S0Nh4`n+N=)$a|KICPG4dTs>>>L#&Hm4mT zo3qt7Q?~2#eS9g~kw6z_CB1RayNV4UVr}?2h6)n+#Hwk7?>Auqlyn-C+iedEhi*5GCgdsM8Ig+LePn5Km# zd|`e>WS-TWqk_Z_J3Gl{XMfqo&zSGNR8}{bTL^Svj!`BS|G)x?D0$tFqk_b_BE4mE zWmtHlTkHna`X-mDWFgRnIYw*4FFj(niD-JgJVynI1NDc<=E~w-OAoW(>DizICjnHDz`6$Yau!;}8dAL^NwrG-FOp}Rw5b9K$rzY6lIw9{X! z3qc$eBx>FtDR)1)T2v;kHY?0KM!l5|j%;Qj(1mpkniR6FIN$Tcv42EN6OIZJSl6J{ z%cm>zpYxybA3c}xlys4D$wTvvD#zh~2-!86z*_y-mZmaq|3{>hYYpS5Ao25?DYCh4 zd-J4n{16e_`q#4%=)zhJO`7_(G=E5yq7i4fr6z+!!lNm&IoIIDxYGO^KdVE zi=2HpT{)rNhD2)O6xrPQB>BfY{2!{^tr}`2(1kTX`U~zz%Ma48Pu_rHmg*o9l~+uW zqi!w|JD=7nsc(_Eoo0!;Yx>Rd!D4%>O%0i$EYyH$Ma_y+d533k!mydL zxtEYnRWF`3-_iZ0lIw6(kob824|#Th+3Evh&CkT$wfM*dZzZqTS{4FbJ${=bn>!q3 zuJ6MiJ?)WrVoyzu3KALC%#*kH&k(yPHQ!K&H*ArH9qd!hLZIv7=moO5Q&VM6ni~1C zPU5H0o*Wel&Bpxxfuhn|xgWLAf77;Cvb&xWDE@2_itu6ZvK_R} zc{Kg*M#}{)1iB*Lu9dGI9-?+M-UwaZY!A_7Wc$66mVy z7cHB+@a>|NpZ-LgqdoOdL1Iq*7}?zEuY5gEzLtJPFVjwcNLXA&V`Ovx!2*HR`Box^ zFFnCDP>|TFZIkD&ZJ<^#=0LtapP%b{9LA|zEd;vuoZKdxQ@Iug7UI!F_|(|IP(h-= ztevts=dPvpkPW6^(H>($Ed;u9cibtPQymLOrm*2eq+}bxP(k947rSM1PU==#`KeDm zok&wpkw90DJ-cOd576wihmgLP>3y24iV6~yE5^y@UZ(zeZc9^WpHa0>dkG12?M%Bz z9-OtZ*vmBi5QlV#_A=o*{fCYw9= zZk@`SX`vd;7exh$l-LB>oJiX5NKdZM->pvbcacEXjCh-D z&iLK(WDp-i?`uD@?FAf5TVaWO-qv_kw90&WSeZxVy#wuD9=0Vt+ajh zPKF8+yF6_2gn(?uY)jf_bo&V2`+f5MVrQZ(1iGpOEAsj0pNwhBnl@=x3+`w=+W%N& zVUAbJIp@~NzwH=gT#@k#M{E23ZOPNe-jw#Q%*#Uz6(o{IN6Y4(tncU@YCC!#b*fSZ3xO`Y!qF2X)neKcky-h| zP(h+`zZluvjrLFn&ePH}&ReR@Ab~Et!qMA4s?6)VJI2U&87fG;sI*;fdbWX>nR$uc zLsg_Rs_^m?76M&(g`+n=9yPfi5h+tth6)m=m7TIVGjnylLVPu?V<}K`gM~mBUg2oH z+Uz2HIT8Pxw49-WM9+$`vN?0P+Vm8bhkoH$))5v0U3i6~9^sqMS#Bcc4DHQOL1KKL zIN6-pe~Yf1=jh7$XS>`M0$q5$q7De(rR;Aa;%MJ+RFJ@{53P{?vkmvU^CY3%>^vMZ zJm0oW@|T(2)pRtM5wlXChS-*OXz*ED+cP^y1&N(gqGfZhUk7FTxb;D7E@e9s=)$bj zw6ho6@xerdM5O1aAWj z6cL|kN;4`*l1`pmAc1#IG|j3*NA49oG_iG`tQ<4E zY{xC~?TYP;^8>SzraEru$g4E}EY)q4k)wh{hgmVQxqJ3n%JwW#L2L+RI}+%^tkkp~ zRLeiKiB^W4_{2~_VnW~T^6v#2ie12~(0i!X^gim3x2YBaU6_@c79Q4?2M{s!BfaT` z^8kstId;j5Zu^Ou%ih$-kdtN`?xQ!oNT3U|lHLzeuY?~FYp7EQ6(sshibWPZhR)00=w#`YEhU6_?LS@qK!mW_xN+Zr)ckia`~swWm) z&bm{!UmWmRLIPdZYQJOj-P(dOgI#zzQ)=Omj`Lm7rDe6{lPq~W(x-iFR zCz|MH{0kA|iaHo7NOb!YCz})aOLX<&=c&7`+m)>r0$rG6G*#uGFaL*#sX^-)Do6}0 zxlcBCa5+x7`+#ycQ|t^2fiBE3O{=-9Bu^ot+`8WwDoEgS8_leF^M(b`6XcWVMiv5H zn3c41R=FNLWB<|qNB!S1%%#2gcFDP8{MFoaUxI&s%J#S2c}4H_(&dG(87fFTtG!D$ zXJB8Wyo#lnXKN_0kU$sy{Wa~E{Dh{Wi-3>73C2V&(v61_ww-ihnLr_lP^WXdZf z(1m}0O{<*LiFYER!kCi`6(p*aikHn<_kF1&b0YOwHui8>2z24!pC*!a3gVN9I7ZX) zQ9+_q^L?_pSIUM%zIUQzd!9CmC2v~M#O@(^sXK<4hekn*0kQcOY&r@ z0X(6+LIPcwF`AYyxi^oj*irglsfP^z2KYDM^LMOl&Q|}NsShuFrYP+w_<*5;MAPzn zLgCRoy<@{;?K?dG@JTrX-~ZzeWzInborcCRN1S7T@%%Ao>|j2Vh%5J+GgOc` z7Ia8{_+XV|yg`g*U3on9Ca-ejxvTG~w{_~zyaf@SgMVbGAQ9zr zSZ+`&QV?f0!Ca z@jil>SEn-XPkV;F-f_`FpzDXY!*by7eH^x`St!OMTJzeMh;s2eBvg>_7Bv=Hd(GyRC%Tf3Ole8Eq&tM1!e=cLmsLwVVJF@C5Z@$Zcz@~aZTNh7_>6Vci; zRq9+Tl!p}A=!Xgt(N&V=5g%$N#oP4H(Y^Ck=>g5kX#L~Ux=5g_#-}54d#{|{&KLpX zY29|0P#zcYcU@GFm>ZC65C;@JhKuMo>+k(Ypi8GmeW)GaB#a4cbcg)=%Owe@AaQfD zGsc#W`ro|g@F>QJIQz;*psQ3&vV41}Pe7?^dbUq)@5%en9hoDdcp@rDwEEzTG0Zpz^@(5ltd|$R zSqXHtzn3i6Tk8`r#~_x|ERHMm9F;i6HxU&iE>}8g{5{$lza<$THsw#~Em`1TD}k=7 z`H#vgPWl8mi3#0%@(olk$@r>8A}UDuwsywYZ~VfQ>D7}TiBDxavIJQObb0$9l^3Pb zgfW9yNPFF9pt@+r`dt%ILBfBiGe&~(OTC(ilQgAZ(l-RUygMD0i{_{kaKIpb-4nu( z(u!P1jlPMfAfbghW0d>7EzK|;5F5hB?+#*r7PAuQdN=5(+^%??08fMXEo~^zQRn|$ zopnGJ>G#I5K#aA;z%En_3=m=NFe75uT9{bag<`C6Z3RWq6+2Mu76Vk6dAXwkDk^q& zD|TVv{LT!szx&L0|9zg1v)noFynRj*N>mPsmJ4VI$4c3XX$0zc^|4{Gzet`vh%k6F_#j`(B^@_LH!_j>luSxs` z|BGD6vrr2vNX%|_O5D9L&X!C6JAU>X&tKZ#-r__RZ;?P3_HdL1%3%Wkl?baxR|_gg zG#znT{PZW<=xbL~&pC*C&b!oeB7rXK;b_(Q>PUVH5gD&MET|wcu5YqfxqY}TT#u`= zVSV@x+P*XOoJgPxdpMdqZ|^!OU-291`fl z9*%M$QGN+0B3@9w2~?2yu`5Lk5xtDQ_FYCTelmR-qN(RZ0$td{(KvBhZQe@6hSlL5 zDo8BPohm*U>1?~Nf8nAF<>uSaH*qah14jZ~*u$ynt^v9EwnT)_aN$rvqGr8R@nz-s zBscv_y@j$rwW2R|bju`PB+!NZm8yPen@z~~2m7Le1ol3vI`#8p{?$Zw;#16M3r2Wk z;wka|mi@LS)QT`FDX$u3a**S{aa&6UT2Mh^>$KBi;ewlt_EDLleH`r-&828Z0$muD zs>+X?$d4f6c{y(jDo8j@O%`AE54Ua6zgMx>M)C@+_5Gn}M*>|Kl~nOI=V<;C5w*{j zw4j2-KK~Rks9vzqJ~nRb%ipAtWk-s3B+!LXNi+KJApQywFI``7s36hcc8Yj(w3n@t z-s8B7t@t{$!@H599SL+{RMM*Rn^t^nBDPU=c2tm9S?+9WulIuzMSCZT_FWY1 zNT3U&lCqJ!tj+&T#HADd94bh(pfN*2ulS_w5r79pdlW_cSc-Ne(1lS+_i@(Hn1P7j zPmlVdf`m5u$m{8qlszul)NZGxHnorC6zxc$%N*@#H1^SmVjtJ|pn?RBoM>O|>=b@p zo&kw19NSqi!Z)}ii&M%***Iz+7?pH(F!~>UWkUzc{CPeWRFDXdNEV$(huaG1{l~)* z6ZzipG*>I{Z6eTxQAxEqwoc+(5^?F7s|6J#g8S15xnr==K9)L+=G)Qx9<8$x5z8x-wGpbMi?Rp(L$HjN1O$nZr432jvSaI}}vK8jQJ!2L8r_NQn^0$muD zs(OaT)EcpB%_kpJkiZc+)l1c~GgGv8{=CLSpvxTX<@-2 zUfYTIHou%NDoB(x%?JORL5_<4JvvYW#$V zP41~2DoB)wO%(?}akd@SBe4s`)fviFT$kbs33TE6r!4=J)%XGt&f(!4DkdT;RUG&r zK54i9-EDulAD=*T&Q}yyNYn)vzJFS$uHT=x5fL-K42KF5#_Tmo)W5sODXy+iT$QCP zl}Mlq-@mGsqPg>BBBqb`_C*B=oOx%j0R+=mH2>^!CIVd;F{+w2*UG<0D8qgFaGt~W zTrxdXyy@p;Ye!Ln??zSKgRFe9gl^oK(rFwjNSskp#ij3^jVQS^ z3*U{Z#=1=56(SClj^t25qDq-F;=>>DN!d|yh2HsoI#oO-EZjt(3*U{Zjl!q7Hda{t zM|ztGbm7~ieVheW{*VLJciy~=!`}zr$Aj8uMAv-Bl3evxdwI|d{-1B-eJjri=TJey zSOZAvO7CA)ExuO%-p&Wy`u=rI1iG}7DD!}LDxY+hy}(51bnW$&GZ>}O~# zDhIWw%cavKRFKfxO@QQO5V`3q`i#D!73-v$2y_|WO5v*h6)j9(>ia}Irs@l*AYt_L z2GNm5uajx?TCCW22?=y*W7IzNf`vEwS9Ar9kcSfCb*7|@3KH6^uTuMPgQ!cZAD*;c z@;QG&6M-&cjYF8Le?^Oi_0jJFIF70=qk@FCXR$doT8Pq#F_b$ff>u8gu9Ywm=!(fa zB^Hf|7Cz~-ySr@y_$5Rvk8qb!L85cgNpVNvIHA~5Z8u}sa5w%S?OOJVC~6|m6&Zd~ zjJtPK*rKo2zHM8Bk0s*aiE1(`NGNWK=v*;PIH?m`Z#eK#wA1jHzbYYtuGJYf@$|!U zLeng5o%)4MwX7iGMw`E6RFFsQ64W!= zdV7wKn=Hj?ggm8Cii8Rh+sDgd(5&x5{xpqfx8N<;s;rfN^0cUlK-Z{rSFqWEM{ZZVr^_Wda*G`8|J3%N?DAYq)87qkDbas^!A zo>E_!Gp&?~K$muY-`T5(SZsI-{a;1byU8&+r$457B?%QIw39VG+Y}L9E@*%Gih4J= zmUI_j#QwS_0$tjPw02L+idE7z;sKrB@upvQ&G0M<6(o!^6XMA~+B^3!PPeTIHWTR5 z&H=q~aW#lpbS|SOtr}d~*+NDI31i1y%u`R>Y4|{=knT|)mPZH71iFkfAqHWgUHvB% z?K!v3l2Jjz*x?tu=q<{d&X>HQkxb4lW&&Nt`2cZ(PI%_^<mQ*QwZqK>x(1CsE=C@66}fDpMUcM3o5mlNQ9(jGf$v+rsQ6X?w#O0SLF?4_|A#K9$bES)$>dC2@}r=jAiL>Uz%jNN{5u-*@*b{@+AT1&ebtIY(uj57!Zp`A5Y zn0?kjMgbJ|v8pjKJxCd4@4}j-j3t33Oo(N41w}ZAqJ-*Lv zUCZD8{5c|=DmRl+L85AqB6{{nGy2-Lt!wa&Xjgwqd^Hn+F6`k{HPg8|??FUarHPCR z5~HG%#3ZlBMqledJ?8^$SD$)LB+!LD9IfJP%(6TtqW(=+85Jas9FoOOSH2s4?V?Yc zEa&JPKthoe2?=yze?|FyCPZ7#5>Y1TmV^ot*!yI!0VunePXSM786#X<4~R-1CrqUF zfl-;g8dZ%}qZX8}AftkWw&s*~bhyx5Zy(bs+SB5wjyqKXLjqkGm8zOStF;=jr<}Kp z3KGT+gwZ}G&`z9|lks;aHlj=Sfbc-gDAj1jJ_-2PKGN|;9N z1EZ2^jL_ahN7|d1HP1&z1qox%!e}2&X(w&~?ZmYy?`}LE}nt5@Hdzc7xVN}wo z;)jAx{5dy9Mg@tURhW1zI8$h-j}u=|w6~^cpG?t?1iCOPX>X!(6}|%zasB$rs34); zJ{|ko(HQTxZvM;SL(#rftZgFDg;7cKDC4&5?}gqnDoEgnoU#bg9bO-b_Kc}-BqY#f zj&^M)ZdbkmiM(Sw8ROO1l@n%Dv}25A?^N%go$75R17%c@F!rN`HhOQ+m||C@a~Ufs zc9B3A#+a%)(W%KhL{xJLkx@ayI8A9p`>a>Pc*}*omSJ&2Oa!_x#^_F5&7nL`MD5zM zWK@tiQPU>6-+nB(>b*giYCZV(bSq`|rVtZ>E{ri%t52y|goW}lh3o_%IQ##l1WPYClV z67l_KpDB7qXNtx@3zbnp!Z%S6Nm&zDg_ zBC@$ny!-R9kfDEfT`8^_(v6Y0TC+?9y72we+1e(9`36Kd_FE#Og2dN}Oboi5X+&aB z_wM{f8fEbA^GpP~@cq-djGkTj3))C#_%az4B(!_!x9dBJ*^wAi!jCUYb7%F~B+!NLhVGJ4&VgJ+xGmfuqk;skYtZ=;%AIhQ-gyOj z=SZLn-=?Y#p>z7l^gd?3S}Ei2gYQE-@$XUKhw(lh(_Mh9ob=8|ua;3kLc14mk0G~B1iG{vF-_AvjAv+f zWlChGS8=Ory4v!G=Debq63KH5a+JbpH ziY0U+p6-VKq}`0&Up|=#bZK|SOT6eHj@HKvFBZ4u3*X&qDJ1`qQ9(k>sc>pn4}<7U zd5RXC_+(kr>Ya%|mzIsF!Hgc_H+{^|fN~+NCgO7WA2KRPEdFb|7+!Rs==4;(%`v%R zO};jb8Mqb?O$558KHnxvcLsRV&|LM3jI^cBv*`xmp=n#RFHVteU&)2;v9pRw*DA5!HaHM3|l85 zfi8=@N-QbN7Gp|`pq+-r_qTGtW?T71g(9HWY~x z-#=O)mR_dq_RU%K)1u`TIkeAApewcFQnAQi5u&$FbP6xVSEE(VR)P5$Do6x1juKhU zFtLW-YFC66|Be#-mJ6fR zb8T;8?cFN;7|Kpr@uZnR*Oj29Vz)LC2GOT}J^me?thqa(8bbw%q#;q_uliwPUHvOM zi-;IH6;@!PnLyX((52$ypa_F#+|rYuLb-}F+}s%|NNBkNRo^gimEM2sB;qO6$URik zOrT54VEA@Kgh5QDOoe@$J6Jvps>@J8!pK1=rt7_0DawZE=h;6o?q~xOfi5jG;?fe4 z;$@u}MYor|&V~A3@%=7iPiEX?77vgMdmlQTK=X+ z#>fGYO1&EXTj;{xhek_Ao{0%zxfv=*7`ao7e(*hIRhdHX{2BWrBY`gLeN=VY^_F}f z5r1mtVW=Qsf`>5*qCQbMhA{O1x!B9b>F^dtWP8=z^ z=ecSwcqJo&F6@2ij^en=d^izHntYZ~L1J8uXi*t8!T2)l%XH?y(%kv< zzZXmdy0G_A)qwAg{7)hp_Ps8nf<(jN>%=`(tj71s@9{;;ANnS)aoJ`f(1pDZ?NpaI zXZfUkMZfKqQ9&Zt!d2p(Hgk-AF!|w3%RTy1Fa8~9BG83>iKKU_;N+5vVT2nwC&YMa9~hN%SBA2xJonGy`nGU1DM%Q(Q;hZ@8##p5Qncg0 zg)WRrRo!mnDLTF+A43HRBU_hPUjM=sqkNW6FYdKO)XHNb(1lS+8M7#7=5HbrZsudC zAW`T+jHqlKDbCQp)Pi>tem;HMzfiOzfi8?nRgE0mh#x>itKv=!6(pXtix!=BO)%QW zwDFbs{&d=qd4HCXKo>?Oi*eR-=71p=d8aJ!ff(b|lb+ zQAsC$Z{^~15)qtrPeug^r{k-{RiSf?_92u!XW38D{*$5|33Opps_LK$$(9{N9FILH zqk;sEIOt|EMf*i+9}6kkkwBL@+98J!!+16F3F*;}F{Y|@DaTewc8)EE3KB*pEpfiy z8#FaC$~B?bMFL$IV>I5StaU4Br=jhn!VDE8j6ASLv^!GlR;Db1MJRTWKo`asjly60 z@qZDqVpw5@3KE4!MT_NbO)#RpBE@bLecK-tb21U=!Wg3+UaE|@nTQzo0t^)-IwY(U z+wHU((cX<>_dUh#{K3CvB+!L1rmD`AU;8N$xen%Js30-_$trR9nmIL9zSr z_dOX2bYYCqS((1lT%o$ak@cD6T$v1DX^ z6O-t>i|;=>8{&t<54ePlMNJA4M$SVc67y0X;SH2W_y)xl{#)q6_fKPL%2hm_i05KS zh6)n-=0=N)eoqjq>)%}uimTFeBR7QN3JG-K`&ZTRM|}BQL`=I|f}w)MnOp0`s<*9T zr2gHVIlDf8i|!lLu2aB7pbOtWos=Ep&R-_Np=J?=3KE`qSBnjgQ!aXaT(X8M%O9js z#_|I>O$55|{nIYMI2V2^5$g&&F;tMinT4u4Y;@oY(;O%FuxBz7=)#D}&Y2mPoimf+ zdp7cC>QRF4Mpeg9e(L1x{L~B;B#gY(MwC2>Z^=KSmDIxY&XGVDz8h5y4fN;V5+T1W z%TPhW@?o9$_>a|ylCt#9uhU9u8G7ePpbOs(-D3%C!dIZ3QLp-C87fG8t+rbHeR+-% zB?ZU2^AqV5>pgnsNT3Vf4Xqk9apPl&aC0ijP(cFcZFF`p)P?t^8Ket+6Olj{zD-rt zGK@FN&M?mK_rdpJ74_jOLSy&lFSjInG(il)kcG0{6zf zs)<0Ck#pUcc{QYL>{b3!e7tj2XQ&{dWoEzZGfzy@pW&a(@$v&Yk;2zB5$M8s8!eu@ zbNnsNJF(ydcZLcQIB%mF3uVV2McMHi9BF8p-QkQ*%d@|D`cg4k|E;tP{Epcf_!%ll zXxaEHo?b5A)c+1G%YQRkr=D5U+eDyC%l@y9jWV7A)jSv~NN6=Xeo(&q>}O1+Y922) zhI7uFEhYk8M%4{*hyHggqiP;0(c#?EAqLwGrLIVoVq4I8xNSZB87fFT4pMXce_a z{Hc_puy|j|rdV3)gfiA6nT!jZa#kTde^SdLB>U9wviZWD?Fe)+{L@ZS%Jw+#e z8}xZ3BY`fXVyXBjm$s71QT0Di(#mL9n3S`jaO8T7h(w*fpDoA*|ZYmBb6)UcLsu6xEgSk20R=#rQD-sgu;_LZ} zX`u(jCi|B(R#l&nR@}XrRzB;_DG3!Mdb-sYL&6RlL_*1qT%SR7F12BrgbEV9j@K9S z#2z;Ouf{iM$^GeU<@eUOVj|GBWngu&V%0cVF7y88w;3k2(=F?t*0xo%ju6 zJs2uT7?nQ7?)rB(gouxH)?nuU5a=>0;TnXM>Wns~s)*Yn2QXBSFzPFc$MpVVHxaj} z4sU~{W&&MC#ZoazCw5Ww({0(+PZ=sm7A(p_x-D(Kf|8PsFo!@Bp3ERbkl+=jSIyta*xKfFeylAHMl&ML>v8J2c!OZ>7M>3 z0$teqsOny!B>y+famF5R$xuO}@r9A%noluefc^&iQmr_epBq$y5qx8LBgoc zXY_-E{U2IpQby8x6>FLZbYbtKs^{ihw@f8sgy_ytLBgoKYV?C+saM-W{oqpS)sR3J z_CB=sN>z?`5D{>@I70;qqjIX(1lS+Gf1kP;7GTAlW(+S zs34(Llk6Y3%V;0>%Kor)qZxhcyFMlYT^N;A&nw`aC5VX7?mR;U39a(#a=*ReFuljw zPgRGyQy&%3+}%W=3!_q1hp$bu^dX`~vw92_B(%!idw=aW+Q(0-I+T-cL43YZ+(e)Y zqmnX=Q`Mo|M67G(!cak?$^aj+@WNQ5eXI_(T3*r!AT-A-83}Y@RH|xUsyg(9h-Qm2 zWK@vA5r?W?{8Y*^oTB}-%Ssc0E_1YBqFRmlKJ`!Rd%Zowcr|J@ichIGz!;-9*sUmk zv$2E4e^m#Qf`nFCGOp8hBiaj4>`tPd^UmA0CIVd;V{}U>A|GFgh)J0p87fHhN$(-1 zj@@NM`y`6p+Z65RDRz-S7seQ!R;Nk`kBA6a+Lob$gi)*2i1sZ1cb4fVX{VtpZz9lz zF{Y{l|HRUrh?6@-h6)l!9d0AqV<~n&()el|#V!))!Wg4$Rs)R6;h@AhHW~d;6<5E?P$Qz=Mkn@LS$Vi|I zqmnXnQ)SYwl6T_Uvz-~nl2)1Y>*}52D~d#X|CB?Bs-O0IoWUJ_*V&{XVboDIBJuCV z`S@v6HzVptM-zcAeE+mRxF9z_l!%@;yD(IcFsk?(kys=#yVmcW#cfRly72we81B<2 zO8`{|jw{=dp@M`_Bik4uf26poL1XGAyF?R#E`0y0n&o`c;z`8QE6o`yNW4DjBOZGm zYmD35&r~e=X(jbfnFb~TUHJZ0)y?mi@g zs{UG$m;W$V@d=(2$nZTIHFEVR!FQvoAE^%Su74dioV9U{RqADTa=x0E4_0h z(1q`YYNee0ZOJ5J(V{?x3KB+bX|aPodj0kJlcfvISl*QDXd=*s??zQ`WInf8i1;?6 zGeZT5JuiL423}}3!QV|)W2jp5WVIW&mc0y+I zUdxMFolOL~@OM+yR_AY9P7u-bST}|W5;$X}eS__37Av*d%&RR;1iJ8-ru}oOn7+I6 zRxaaP5X1j>{H=_-=*DmL7gc3%oG;Wj)4e}K1&NJ^y~U3=4;gdL)B-OoU1J__&WQs| z1iEm>N_9*cKebpFzfGv>7R*pV0%xrBcZ^B1Ost&6%~?9sG_S?E?ENRM;_y|+jk$Bf zH>WJU{(hTKrQJw|3KHQbi;ERnCWt@unQ%S&pZUE10eAh(2or&>uiiz)!L|hB8M9v> zvCQrf>N_uV3_}G8sZ?HZ^Ipk#M(@Bwmb}7Nu1iTXfv!0rPGa3tRQXMx8#K$}USym9S&TS||1&Jh< zCgeM)7)0kyA(jSoemBOghlxPfu~lip_i#mAsLu@wB?MYLi5PXRCqo5^ZLQ*jDQ`|1 z#P)K{EMKXQ`um5!i9pw$a&bb##FNGv*^MxFOC}NhS_LpvkodkoTA20al=w$qRV%Zw zs3o4xE%hJfW+KqlW_Gj?ES(aU=xcqKrv2d#6A?YICPM{@<(XkZ%e2!5vF6W7t{bgD z?g-6kBG6UkLYVM-3Egwgt*ttzm)*{FA);29TnrT?4)qx%v z1iBg(9VF~(kSrd4sjVTOKjF^ZC&I7T4jC0BejM@?+PwRZSQ;?VH_pe(@AiBrA%U({ zX}-daf0M;Y-%d27+1-SOzRYUncdfZAp@KxXvy-q|NHK_nKu_PYL#%wq7EdHpkl0wq zS?E7A#rQj3oyp_ds*{y(dFhpjKvxTwc)!ap|0A^g^8qyTI^wufMg@sny_|&*CB^u4 z&$dqT)lU50&1WXib)$2~$8#HAyw1{TmS-D0UCNG85>^n-uRy zX@?9VYU2>jfliC;9oCwmf<))@&ccPEsp49_omYq+!bQ@G*Wn>%0$qJF;{A?a`j41G z+3G@$eX?A-+K-`vM8HdD!D(r#n8U$=R#L|kQICkn|3jdwbKzrtj+7@poA^9GoV!hD zIbC{>WvC!g`M0z1j&gGj(Z8bQ7ld;veG?z|G85>!QtO!C?-FMW;z6lM?ki<`JLocn zp@Kxay!nI}Io0S5m`fy=OecQ3lrj_OD&TX>?^um92C+QvGVaOQZ`{6V(-|sAd_4Tw zZ`!+5kuqP(b?nLA;ONYT;=Ae7xs4hCP|@;%~y= zx0&8sV(&wFIoGYU{2P?OU5yyeP(i}Y^@(8p+h+V7jj2})SV3ndBF2~qbYbs9JEMc< zTXGVyU}*?L1qtC^nov4TG5WzS)T`~H6A<@n3^ftx!rn(!t%rtKHW0D>#W02n5`T}1 z6D}7yWyDnv>eUKTB<4)(X(G^ty^pE}ZsRRl_PrpXH$w%9dDo(aqE$~DEvn%{cguJh zw-;?2U?R|ky${tmr1~Y}h}c290H`4GwtTp7AXl={&Pz}K!;PdbLk9I~NT3UQA3AGr z;08CGh>J~YF;tM4w{?(kFE-iu!ZoK}O{Q<+w9>gu1iG;Ip)8wJzeFP*Eo}q%o>IHE^@w%ss_Mt`ldL!DAKo>@(st$PE))Gs^-iad^DoC9B z5-sd%ecEUr0b6-XbJ~?zVd-rm(1lT{s#Atmx3nSR!n{5V6(sWdg$r{UCL8UeDnZ3}8v@j9q!l+c$B~-0v77@ipw`8aw5%F}8F#pwm?W6Gi8(eehYg3xkG7;#)sHB@n zM-Ot%h;YfM#ZW<_wwssmeN>9kKJHVrU#B(XeA{xF2y|go(kc#B>$yfmY_Z%76(n%P zp{nJkIC3qheFSdUAtQk|80C$s+tt#5h`Bi?FjSDZk$;om zGUT)o?MEnf$I%*c_~a2L0$mtms@nUdhowIe1Fw%{s37sAXSmR=XR;CPm4{Wgh;$x~ z59?zh(1kHZkw_H;8WX{7?#oa?;(Xa)VOi-EBic_&7rg!d1r@WWv7;PfZh3|$k=@kCXc@xp@_h^O+5*zk-32s^cMadR= z=czP$eYz;fM4$`bjjHCN`V7fL#I@+hP(cFcZFGm1-g$2N`W$-Q%0!?G-=?ZI+E>|f zEZ=3{7rUl0d(6#Wh2@209b3s*;{7;i9<-bcBW z?Jb`4K9E2c{%-W^Qf~NyM3mk$nW2J2@nkRIcj^CTkTr^Y=Zf6lYkBx{w243${%#Z{ zK}lQzB4SUDVW=R1Ggehqsph~~dLQTMeIS7@{H3WD#HXB=F7#U+>o}d^|2zIx0oT2R z7+TB7Ub7UpI9OhWrTdP2GM%A<#Ie+RLS*~@=A5THo#Qs=yU3*vHxuZ>87rOg&P?Rq z7n4u)dTC{-Ab~Sh+Fi<9m-BAoV2MmJ&xCOnRFEj;7H+f8 zSZaRBl2+0;F*l9jkU-aO$8ei{em>_?33(L}&NRnC1qr8B(Kh?a_PS|*ByF8~6V2$6 zKv%Ef(Kh?awz#mUtgVFy(ONhvNSwQT)HZtFNn^&+DDIJ@gbEUuCw{jr86z8KoxfbpA#I7Y@)Mq3FcIil>;KyprbyzZK4s|4wvRf)zk9A4#@GGna#>l!I00$qWR@+srzB^b~6vaYVQtfZBnSM0Tf z3KES2iYU^m6UH;%{Z&ee*lFbpl|5-9&~jx4lNbKugU9q1% z&(YXh>KtL^k5)NtBG5I!wZ39M5nrcaOX(M#Z*T5)MM4FMf&1z!_7m|VT{=oV=?wj@ zMrkGjUEcSbD)y88FF%!%wNqh?PKBX@#LE};75j75Q4IYa9L_D`GO&&n`6VvEi1`_Bx zbk|3*pZ#z$4{@vB_9?Efc#Ml$gapAU{K&KP()9C~x(3Sk%N3oxP z=(yvFe3RgxZlv~~Ve+YE-&g-kZY;edR9QYUVqvjX6 zp>GE;RFH_?*ie!CA2CiRJbm;=?r32r=6Mb@5$I~Ug;$z3i#3S5yVgoiB0_z`I67el zW1Q>Ti`!09?KW-C1IG`ls#HBEZ8$`?ej7|TDM$?3?q#!&cfD(-N?L8F!c+e-5$MA4 z1LfbPoa$Otl9Ib8GgOdB_71k$XLrkrewV7!T&)$&)sR3JjvrL@cWOzw3=vCcK8Oku zpT%&SeKpFRs*z}GOP;j0gao>9{6M#UDW|$XL<3sCLIsJHQnby!H{pGyguIB_;1b$t zKmuJjexQtti`?Z%B0jbWV5lIGkSES&-__p`UR37jHu>eDZYBaBgcg=>Aw!9<`7#}AZWlya&^Yv07vs*DN}zn(v`#RMf8 zBblNrjz~@EOC3bx5+u-t;|E&PFOVW>xpBLH*d(KZ1dawM(`~&6QbL)x3122z8AfvqIo5|mZ7)qyJP(fm3`!t(VFU2_ZvgU9#IiA*DuePjVBG83VN!g~QCh`#?BJ);f zs31|S&SP8WbxB71NNn|&yokmOT@+PD0$muDl!5<-tGs}SiP2dyDoCWJez$GdFN=fp zQ!jfd+8a=`&!=cd0$t{4Z%#SY8xrwre6)-T5;&5j`#5n$WQQ7~6HE1-&M?A53(mAP z`INmnh*7Dk`M#Ey3v|rl%DHuYv)T8ymF>J7 zOFPwlXr~$pbYWD|3G9SGSs|hr?S`X*#Mv2XHv6eC|4Pl|A5<5hK$gFWKo>@(s^+Jh z>dv%=e0feYh6)m)BOlxRFC`i6W8JAH@-I5MJh5PP6M-&_N;>OIIo0#gSaj0vstgq* z4wlHYop~i2?IZe%tDJ}O_1#{ZB_n|@j7rK1%-5Fl67fg;C8L7G$OK0v^;)9QKHB%Y zB?Zwbq~OWXCIVgNX#acW8)+aBqi=7JQ9%M{VN|pDU_-fe&({gV^GstH;puT}ZAFyq zJr;~gs#1B+N4~Q80hdWGT!nU+A+CKJ0?h=3!{>51J>y(uOQ+K z?aH8n#Lh8sHv8Uo=|^qlpR`jQOFPv_pbMjtcKfJ;zd~DcajnwAZ9)M*>|Km8yDop10hd2)DRQ85JZtO)R1;xOT#5AL^tx zQd{Z`)?eFTBG6@y_US{iq;^CcExBGs1qob1ps&xEuJVu$<9#hXrZ9}~(1u5Crvgvu z<136xI#2yQP`xc^4ns?5B!5Yz&d} z)BV~z)q9u-bYWDgYA>oekcWsV-MTYWkf^&V(>AOfGiLP9&W@26Q*RLRNH7uT!ln@wh@AaQ)^McauuML$_Z85g&N$w$W}a2wZ5FcIkT&i%w@KW+H8YlLiV zdD6$-dm=*xiQHkYY{Ty+8P90fbfw(^5DEHmMPAqymilKr;(X2Ac{2V8Y zXY`F^@~09Pxo24;Oa!`K+;COw_dm9sN|QSzr2Dp8G@PM=M83f_lyYt3#jiADrR;l) z&&yZ)hI8Yu4KoqwD$>7(vM(UsxSR3t@@=_fP&l{q{9uL(61Xx&r`yh7r_pPB%SFl> zfdsm6y^J!-4ZSN*9C*q1edb_>|1PdyAx$IX6`$pnyT5Vu3I>^0yl|DPPGy>7jy+(k zstwKhDZf3_Ke0xcAchJOkz?B^){pzdxB72Y(b<7%JEPTl_A(LZ+EBEk(sSWn;~B#; zad8<+!Z}xWW%{Vy`mH^hO$>Ept#@Z|E$((V5$M`*qla>Q#xCPN=fj2t zSVS-8GopSsh6)n>yAMz-$F>{Kh`C>Ytqw@wCQj~RBG6TF%s|C{dwH!_F;-%G8Lp*g zCx!|V?T3$2E?$n&Z%eD{!ZyX&&->lDJfAz72y|7vF;cPT1DN=x6dPJ(D_68-TZRe} zu>~h8_6!?;3nf{u*!GsoltBOqbp8H5L9yqJ`j%0a4IyGIWtu_-iM~Iriaj^gk~<~X zBs#6$kupsofv%WqR^{2Xbw;MCIrYl29YkdHXu?oIA}M{2;!=6Fcu>#Wa>1<#TTi3c zr(@ks1iHS*%~1k#uNGVCcLAC>mSp;P*V~Pug2Y0HFlC-cl#%`WP!T8An^p&Rg}Rss zbj3edpqwrkCHB;B@NDXqpUom-TzD~t3KEa=M=0N1mm0)^0~vA;n%(VL|5HW+U9nFW zDcin8im&x-?BC_jRO^Lu4zSNMDoFhEDN?a#W1o2>L7q#uIhr3$FcIjwdpc6F=ZOFG zJ4q+@G>?-}L89-G<%&HI{hbe?a%md9mgqjjM4)T#oaKr=JATt~Q)O2o0{!~Qs34Ki zX_aEn^50^b{uJlHDzpe+BFD9b-8NQlQ)DfYSmR7pVk zuaW>NNStt3r`W3%mE)FXtRFJU# z-mLfz8eu%+^Tgd!#x^V8o&CQA{bmH%>Lj$~5c-_07k zQ~5kQQ1rQ~J>%*XNqRTQ%D>+>(nO%^SLhz4<=J*((C+Q@jL<7gx<1CrUw%4TLIsKR ziF=e;=i3|4h@(AJ){6FP2b&3WT@Bo?Jjn1jh;+)pwu45mKkw9(Q9)wmfj!F4A|1pt zs#bNn7ZDN>v;T)cSLDC@m11?98^q6M&t&a}g8S8Zbk@MGAaVEU9;NBu9mFB}w=r*fCEadAI-(S z*?kn<(f@URuVvErPckYIIE>@oE8z6zM@1qYW_R2u*zV>2|GcRz@201WPkf>8^ zpRysSy?9t3^?m=VFYB`T)QQ|D|Hw$7Yh}nm<=iGwuh~F(2Zb`M+UW7V)0($sIC@#v zWU|s(-l%6!!Vw3pGx(Kf?yDYfd0Mn!s338-@C>Ew&viz2vAmSw_A345(`h7w1iEm< zLC=_6iR~f6iSlxyf`t5Jj*_RzYSB|aDZ7hCGArnAU%8%5Oa!`c#G$IW2UcVQiCB8G zAwvZTx3XbMSo


    {BgINmh%_0UT}OW+KpqBM!>)Pt{1?(W$V-_p2~ekcg`jp`7NI z8e^ZhuK8I>TDjX2R?I}83r8Guhj)4*R)&bV)Ts18CHQ3KESUFIVifYwG<QIOzOt*<{(Dh}QcL z%BUcbckU|1UfF?#OqFZVNaicw&qSaL#}BGH;lWJVod|cTaD)mHI2xdwXZb6!!*kvy z9Lx$}7~!jeW+~sNt`+Z6yThoYyyt7Gu#?c>vcitGVJ`)rDKB+!LXsj4qS ztFeznh#vJADo9jo6`|zlz0_zQb12%w=}Uc%q8$lzVN_Dqy8abd2oXU8Dlk-#*uX7S z?3IBkPb=0BbS$=nSQ_h-rjDB9yQ15E_F%+cQP^&FizFt3x03KBSyRn=S3HQ4bPV-mlQ z7Z^tPl_cB#=m7ErV=zOmQxqkcUTfi8?nRedqA78^k33Opps%n>eRoFwyCzC`i3l$^=){9c?wYF|9D8_0~ zZ!m>s#7LkEqmp8GoD1tn#C)1{qk_bud#ecf0>*-rO&30+V4FpTh-p^KC? z?OW#Dh^!CDcq zxs3-y1&M8=mn!y3X89<}lj!6?!NIjm1iCOPRkafJ8%K#4PSw&-K_a+qlwz;pcAldB z7>$-npDJS_(1lS+xx&2MSSk^2w8n%A65csiEA|Q%Psh8kCA3o1wWyPcKo>?OeM|VV zY(5dWV{u={`m#8;5`RAUD1iCOPRkd-ZBfCPx+o0<*DoA|zvQe>D zkZk$nqO8?}Tub#Jkw6zlC5?UNUX`_)lRK&ABq~T$X%M5-KQzLqIhk>DzPy{Fz3a19 zCIVgNXuq~MTqjn#iZUul;F<%i>H9Wf^0#rm%aq0pBiy^$Ql;Vk2)$w*My0AojcLTZ z-L`VBV;eD4kQg|1sba5?cY>n40PT$Wwe>I&=)$N})xW4Ett8?ZRpCPgiPQa~6nkwz zxn4bXhjvD-R80^GbYWDgYR(%C*&8ClX&!o&k>A5Qzj<&o4rN|hH)gvkZ#WmI=5I6@vx zMA=h*MS8PhB+RAVxX4GS-Ai=+k zQmWb(81*1m3l=uiErBbrzov;mSJ!5%m5m?g7?n@n7Vu*`|7AW~n$={eAYmD>M!COt zwozT>$^wz)xst&hQL2~-bmhuir}Ql`!>HhLeq(c1uC{k#IeF zU;Q}wG=S~$cd$JAT+T$Gt3pJy!WW%rRP8B}*_!oU+domxEXz4RO1<-s3F}M*x-!QyCFpXd;Hs}W5Azz#RuRDkEs;?{LaJg@+;2ZNh;4!0*>0NR$p!lw}LkgeaZJPiF>?(CqHk z!X739T{U_rif4~Bp_sl4Q2QrkS|s9Lg=R7;NOU`KQrS^B&LDcy4GT{?=`{aXH4}lZ zWphp{arcf2Tk2|6d*bL8M-w6(BZ|tXAh9UnlrnTev@lyIt{u$58qw;YeDslo1iJpU zo>Klaix%R4Yx_8hLUJ;#diJ86ibOP(dQSezNj8bD(hNq(Y{7ku^nmT-;f> zXw&}keTnIkNOwk`_9wJ>BG_>-aN^eh4K|x|)wNz#N z4^QJ6D;kYu`(wxZ-h6sc#&6W$KC+VIQEvS^h~E`eJ#%j?>$c?qH@)^&x@%(pk|8l^ z15-Q-{1Ce8-^2*|UL88t-g1e)S4f}>zbkYWXWNDrriDcSjf=7 ziHtJCHlT_+E9iTL1iJ9MLbd2>4rL9Acv5SYj0zHU_AAP|Luo<*{hR1mqX!#AJ0^=` zLQDj@@Vi3Q9nbb;1BrM-=c-XbV#BMGO0;jB@rAoj->dU9|7csWnTbFbepgiWdFudn zjR=Wup`n7rwoj*&qA}6Jr^qq%z1la@jYZK}=PpZ%nh12^cZDh<46ex{iD*CPkAw;m zqtBjJ(%*y`U%10sW>}h^pHWYm2z23hMO8g0Gi+;Z4WQh12^Azl#w9Cb{Rat+^l#$e zLEGiCw70$W>fa^;UHFxtj3<;CRwHUk?h-0UV4J7AWQE4F(GN2c3hvn?V}yJ6N>YaA z{~#=(u?R*bWn(`yjyW{S;#}#zGb%`I>S$A*{Po0WA1lMhu(P)ImRO2*B+!LXNw?1y zhp_8J3=Wi9`*E7lKGG>;hQHJa-9^Q9+`K`zdAllsKb(40=ho255hXyNxCtrF&Zx?|~2r$vTr<4pv*Fe+)zN%uJ05|N8;F{6USE{|lT zdBbpFu0BG}P1#he6z$;@?MR>tqmue4%GffSh{~B+5-LdSf03-TI5)^>A1x@_uTiuY zr)Wn4T^NcA1ER#|}!UAW?B-ic+_bm(X7yA*-8nv4eD`Xp2jji9i=dCC!}+ z=hlf=?>bAUAh9kfMQJHI8|`BkWsLNs5%RC;jwS+K=4dbOv{NTWwMt4v1qmE$(K&#Z zlbH9^HwhCu&yX>~k9J_}2a0wi(1lS+` zg;7Z-&#sMRDcUoKRW}jn!l4r4r0xV2KzLMz@DoFgQ7r~SciaR*HVx-cqL^$X>g{7S^^mEjU9NUZ#mqC6PsEcof|V;kj|oIs8LRe4c4-mk9Se|*ckQ+`bSN5R%fiAbQ!9PKSS zWD~dV4^Bh{3G@7;@Y8=-o=Ks;<8StnF~WUEoK|K9Zx*Ie`@pDF)eyRMRx1BiZsd5lhZxU^+dRp_m)vXBL9SB+7y%_ig$=_UeQ7?pIp|4l2_oQVB7VOEY-(XuPE9b==A4IigqN>g;A-h$EhBGM%+B+FQI}&t0AdMLa%tg?DmmN zH3v3Q|1p@N9SL+{RH|y-b=kzZ7e^COLE;NNBcG?2-=3e^_^NTcow9}ckA4pZn+SB7 zqrHbPm0e2f#(j`|WsD_^-H7?gN?yvYnjO2(CroA6a+T$NIr++{AaQJ0vSLe~FHE7f zLKzp&Ol4ChCU86FRxlCh%A&q@{h(lh)7wXlV$<1%1jQ%Kw~UMm5~=%Bl=3+Pg^Btz z8q}M{zCFp{-uKCABG8pa-;w~yOK7Y=qqdio1rGC0EYjkGgbET>r=%(!np74>>(7`T zKaK76b+Ft&ebz*v>wIFWvh2OH@r?MQGnjQ#|HONj_DHB8u{8e~#cRe*zrp%5N=={6 zUhn(H70bWOM4;8`((-&6Cfi9lDd<4L8(u%pH^E@xblmaee!lZPZEqJqT6U`6RLAi;P>9?$pEg(_D5 z;kOJEfvzdrZAz~V=Zt5}*>FypO!p1$JieTW3KDgWBq_ZYUK3JlzNB;dy$XMnoM^4j zrGle`1iC7fPg34(eyGO}N(5&x5{xt0wQ&Y}J7dOy-gKCZvDoFg?nW#Kjlv~XHI~sj_D)nq^il2AcnaK{shvsV$Z*zgqkt+u+~l+N|F@}A8q znFw@UU2#I`*`|o-azXn$HoM=Dy7aK}dG^+oP(eZ*b4+RXw5(VqT_eiT-CgZQ?uL^U^+%ysB!g~m+dNlm3q=Z@d$g|ZXe9wby z@ye$YxD>t49+QHu(=a4%F8MZvuQ z6_Ue=BDnY7dsOSLT1S3&j^WLn>-xQa^?L8`$8eH6>&f$cZ?~8D*dQ0V_f4f+ZHH80 zN@Il;CaRZB&~|mJXu2f1{z|ng?zO2{zs&?!@v+hM@;=MmMB(4^sjM)u;OQRi=CfLI zGxu7VOgCPrFY(M!Wk_Ee!Bu>0bbbBwXX-y7c4r@{vcg1(uw7b#-+fJ&T%TXu*$&72 zG0bp2eDqR#Fh{`@IMWrYb|--3DiCF?kI;f;RtUz&~JDn6P>J{jp!c158N zAi!DSk)kS==G@8qz^wg^Bz-_GsOA*D{Y_@rKLYXYHPL z`BWyjiuW6y!iz6;k6%UpTTEqziGpo+X<58{&9zHQW;|1kr@oo!2gw9i@qR;3j!%!( zl^{|^I#gDe;1x=`{y;A3Y>9WZ{k3Ck1XuB%*7cVj$;xotKR%3Wpz!{woOQQ0s9Jrw zVa~+*{F`(==)_GW7Wb&{^Y&F(VPaU3U0RuYjpUkVjjN~=y)r{_eq?)FOl5+r_&4FY zixl%2Af&NgDl1Iz`Y&Dg{PI|>iGB5Al*2}F74HRIulo0Xr76C|HSuqz@ZTPJVY~KI zQQ5t6j<=`ltyf)APFHkD>bSuQD@^dpH(men`XW`u-JsM&FO>&PsJ3~=B6Ax#x6M@+!Mk^=uT)rJ!t3aC zEq2-xx#7|(_#HdDY*Z?s|L(r912%%I>Xi=Bav5oovtX4)X)N75ojaO?ID!#usq?sG`*$A$h9~!KQ3)aXXw~cMIcoM2S9paGEBH|TRm{{F& zur}xGI+G9|w@^R9yUO*MDid5aZ`)w4R^4d%S{5Tm@mLwzeHER&GhAhbi5_kHXosf8 zm_*R)CL9y z3VW&G`+?d9?`XGQ`S@cVa$>mR!cOSMb$j_=*Xx;^U9W19%d90HR2#I!;!Yuyt0}&wYPc^+nI+ElAI1f~(ju zx}N7&uu^`xLt5};hr-8s^z9zn3H6Y7e+%uRc#@g^5~uT5HR9Z83W~eQGmDJ&JMa7G3Yy z2(IE|qw7!3&QOy;IGa3BSz%&G|E5~P(e0*7a$^+ycm_4;k6D+|$|!8z@`!U_`!>4Dm*@mn&EVE#Jl1{{yUU+1Yza24-2j1--(qHY4w zcj5w-6(;C(|Z)&KlR=;*CMNLb9de6-=yo6ye29=OF5)3 z@bGJOSLkQbkS0{d_IDE-=AW{F`*W-2^Z75Qv(1ie-ff?oW>= z16s7f7rZ#j) zr`w%VSYd)Y^Xq!rXfJoq{w3)b%?fTPRnjI;6GN4=Mcbat;C0y545& z^W+(m9a5FRi?+OpOQX_VmzTKQIToCCq3gZ+K1_Zh;LU5vV_OOa6J2}6yX5Z=nzn=6YMw23K)r2d)f$5z12#o~t+5(ma@W*&xa_bm}3qYxcp!J4$z4ukIjY zg#RtB;p<8JFOVGean#B#|je{I{CP)M7IA*K2p+< z26YR0UQBQmXWHOx`}H0rBhQN!Ci?Ho;j*%q5A;e=j^Imm=hWf0d>pRgY#v>gLc^64 zAc`S-nH47TA4^QJl9c_5M<}VtMQ($hvP^IlXAEI%>0~wKAc&7s?dd~Ia8?p#I{lfR z+;auy)@DAfu*2Kd*zS5&^`QIwU{|7R#K^PBo60z(Kd-z}SYe`BwkX#qMT+XXQyD@^>95azP7;`hVt#@xaEa61!R#jeD&sOLt- zm^;`2a|l^sVtsIs%S!J3y7iJGU=-&((odP-Dt4u=pNik9_<`_5`Y9_+EUf0^vN9(_ z3!PSq;i=C^6J&y`*p;|mWsO#ffH2YoSz%)2>KraBn>^>6JxT=5k5r_kF~L>rO7sNW zFjWZ!aSTc0tT3@)XJU$#G=6qwxZ;7FhC9d&XM(HPl^7%Qte|8AF)n3r3=Y_5tyE??hW>7!#aVrt6!s#U)?B^VP03Cotc~ zIwu|`EOKQJJ>)(=*p2S z+4oFv6}wW`mz?}f`3=Nq%)V!Zi8IxMTrGkRoA-~`m@{Z}XmTKRnhCCASEA!du`o9g zu|BJl6((AJsPD3pd&lnGsTg^wO)-~+39e#S>iWXP;YvncDl1IXpPa)rszJJ$$(k!u zwDKM^2VBTeWP+>MmB`^;H^5Eo9N5yy3KJ{mB&O^?lWu0qhQjSN;r6?5I}=>RuGIBu z!6g)L5FhIFcCy06!$m$Rc^e!tlSwa>sh~8$O!C&Q5jKLW*p<5O-LPA7GZ1Uu;Eba4 zfCf-?irho#`$3C0~~J?=QHFp=ALpTCtL>076N^1PJ}DRbO8g&n?km7ilNBcBH}*-XaXaJusF^pH;=;G> z-<&ON1Xr;u@jC`LOilr@>q$!|D@+*f*;OIq{J03W$H48A;C3dsid~5=1+RYf%OF@` z;*WL>{H^;(mKxpsn&WN|g}VV0T*a=$Y>`qGgr7mQ!5xPcCeBse=Wo4#ZlTeLG;J{gB2#)<=f|Py-f&ZDhQczZ6Aww117kNU5V9B zN4`sL(bggLJo7~1axNL69aCpOX-mC&BvI} zFnCkajcN{Q;*W1_1Xrc3te+B6Dc#)0wLw8i-q8+ec-?afD@-i?cII-{_{MC7B(lC=$2gZqs#w!s8f$z6T?t>1BV zP>`?jJ4WDlu);(YG1}kSS7C!U`5OCb3icHfT-Cg2qQ7-KDkVPkHIBzu91m8Q2+xr{ zAmh5C>uu}w_cQLb`EjpZcHA!@{fuYPmv|Osg^8zY z!vd^#wY{f)69RE9nSnPiCb+8H$*=%xWTIX2csDT(Z+EOPal1`afHl^);Ojxb7`a=6 zu?!}-s?}dn0aj-5_{2McF*Qmt5F zqDa!+04o`&PSi-z=qPs_=_*Wc)#yie1FSrjFI8rUM!HHE(p6Yt;>fKJ0oO-4k+x~9 z!D`WCo;U}0&O2By%mi0OXZ;v3dY;ovCQS;C6eodLUM$GT3KNU^WtYe7QB2}t$~v*& z+(5BV$DuZYt3pO*m#q|x!Qu{40`ckjASWwKylaRa6RspP3nF*HxqdbAuJ#Mw)!5+| zPc90`7|UQ+BB$Z(KEE)GWfa3$1}jX|_lyd##`@Z*;{{`^uOmk8nBXdQrLI@^i*OSM zFgnNz6Ww>m2UzLZ3li=KM&7nJ+|C47u`96_K+**xZ@Uljwpn4KX7%F%Rubl4dn<^c z7|ZyCG(je~ie0Jejhzid2Z)_W6J&*npy_u5tVFi@v$}}GFtXhm9V(dMDt0Bt0Mdtx zgF$pbsue3tl-cniz)A+13b%j8H{tpnI@t)WVpn3W^MD276A-03cW|=8M1kM3%Vn1< z=K0YcZZ|TKenZC)Cb)`SiIlOyvEptJb<%n}Sz#hy^#byhok`~T(F$(QgOQ2Ca61!R zWp{gnrOBcUqE!1ooUAZ$^PZ<{<*{I_&o5)Fj~yP+YVLg4oMI6wUG<%bEbVpn1u?!R@y0}!q7b%_-wo;^PnU}eQmlyzYnMkX2}#gz%J zVpn4JXREy8P7t|~;>rpW-!;7(U?pJ=IoLoTGg^4vj+2!1$6*D<&E8Je> z;A`;)+|C47u`6}Gci3w20oF(5soBoS3KQ9i6_8IYNixrm9&q~_xV=8y&IDJnD|P*V z7%$EOQQ+sEPF9%6dC^nO9lGBzx2Af%tNZyy8~e4Q{%08^KlVN?rfu zqNkfE67@x8g^8%@9|Dg2FA4LHxK`o?biYVKnjjNg#je!#`+a(d7eRDKnjkAod@Yh) zwi4Mc!tE3Av{V@xZcK0$yHeL1U7Rb1f*4v}bh5(4$WQs@G9#1B^P@Z5o(1QJ2i(pC zSFtN~{q@W^(Gx_ID{Y*tFcIwZlsgRBZ=N5)QoQJmKB>tqdfEuCVprmLJa>sLK-`J! z=46G5W<4s&A@vi@^J5d-{u=%Ccf;*WaFyNdbH+aRn~s?SoiKBN{hG4)Zb031r+X}e zJ%&DzU*7n6401>-n_p8{VWQUFI|12#OflX55Z*Q1-Vokpf~(kL$R^L7=61U`(t%lF zBJuY704q

    UmGm$Yec)Ojahiian<5`=n~3k;$65@h6oPChETOkgZ(Hwmo`?5AimU zqii`R6I{g}Ll5l7BgA_kwjvvl6($;9&M!Y~oMh$?>hNw%E>G!P1<^)u6?+VG)z&W; z_kf7b<>zFDi4$u*<@`VIH{G5iEKZz~^jZwK*2YF~6?;tAcLc?YGeE5A66j=wiE7O% z$zGm`rrQg`yQlDOFdW`xf~(k-cv^apQ#cstkp76gt?+SXU%BSJ512Pxl_T#PUliY- z%`B{sa7bhBpHx_3BD~w@fH1@Xt?gc-p000sR!S&a)gd)Xd}JfI>fA~Xxzn;_a~sbe z=Mp|*4B%p=G=&u=+C0xGkDifaZsToa4PgOhdCw^L)JAYs_22T#%CZCIHvY+5OqheQ zj2}uKR9Io+Xh>0cQU3kz8A-^H-r_5q!g$H~+K+4mSJn8tq+DaqWoj|1aljC>NgZx&v8gv`Ba4! zCc0LxC65f-V{Rk=mq1}3=3jlq{41%ZpPVu0s)pWN&X{@j^-UAmnn%{5>_njpW}bOB zxu~$h#E$cUvNf--@cAmD3s;}?2@6yvxTZW-HkD4U!B%%f+f7?!CLLvckmX zEa<)4KiXWI@oeQ`aX7w`4M3746I{iv)b)Z3Pm04p#C^=+WQB>!W5&qg<)Y+C?)NWk0wa-V1ldcZr@VLTj~JfqLJo7=K&K*!{^9WBEspqK|&wQTgujL zr@{^&`mBeXF|(gtsq4j-hY9z8bVwhwom5z1Vq$?lvbFxBW%Wj)v6|x~R&y}HRqRU4 zbSf>oiTzkH!U_|i`v=R`+NIksmy2!S_K9#i6I{iv#M-`sQKFHUzIp0-l@%r?)*2&c zeZNM|H`I z`gds?!By-^tRLKwMe+f08~x~6Vd8aih-~GIZmgVNibOK0$4GA*!By-^9CME%(k&3F zNG4^4iE>_HvXuZ93b&8P$V4`zC^5lR>`Kf%53V2?T?C&XSB4cPy7ooR!T*wI3Rm`) z{Nn<}SY!||!Buv*=V?`2ss|zkIR~sT(Q6u3G!C9)_HUnXFIXswl`pHG?NHd^xv~zD zGuB73E3tlXU${`*-yxOhaZq7}iA944%hpQ0&ZT6r1I~|!=#tL_SFtPMs|PK_&LDoc zHdAGViRt%)WoPOdbEV$JB2i*9JS{avw|^$Mid~7moJC{YPh>t1PN}RgQKp(hZqq-~ zJU<%syeJmJ^HtbK4<{2`#jeB{+1DGQ7YNt2tWH*#sJc2tj=iYm zk>Vp4(n38&W%@CVIq7{uxzbl z4Sw80e2#JIyfiDZ zfOi7{-erQT*kkDS)~k&42*d`YbFsq2xt{Z7E6-~lyu0Y!R&fEck(l5rb|qFEMlBSY zV}F+Jzcg|tk3*?qfi`U8D6sw*a)sV@<*s_t%{$t zb*``!V;L2(DxMW41{?{Ot(Etut85YWVC8+hZ@i7*D$fP8WovbRhsleDb!#0`$?uja ztS~WVr&?5($r+i~t@EyuGqR}@JR)T)**a#5CN%RzcbKs&6;_z2xMYoNsl1>)5tRb_>VpaOC7o|auq;#27=(t6}UUT<>SMsQUl-#EF>lrCmwv0s3Mge)zAI6%2vv8?>JeKK`cbdF)K_o{AGu1r5yiI zs*Pl17XO3HVkWq1QokLtm03J_N;}CP#6qm6XN8Fdm3GV9KKq&}$N&7$O?r=!iFfT^ z+6b=tr~Yo)N>}MMpr_=q0iz$A@2RXX5r1y4Y-OdmTrt9V%*)8!daA+>KVECCoRO=} zuEeVN9_d0d#xe@%OB7a^n3yG6wldZ~UYjXq!;|HLCoNPaxQbngE;l>E#mpcoddVs) zOe9W^k*zeSJRdKM(Rdae@@~0};3{?{`hNJ|5Z8ccgjN2mFj3@Qto$TT7xVo14{i^K z+bd00Z3I`bE75T=uz(Z^;xShFv%-X4VykTBhJTg4r6fFA=0^7jCb)`SiB%8*HKoHK z3SyPNO`(7HWtAPWl>)vsR+hps3u!7+z?tAGb|pr(&o!0igGk7AS!IQZ1$lPM%kTKg zf$n)ri{bXw_|lLFw==<2>`Gn#C%&UJ0mPXTS5;P+a2?z$&r7Z?f9Fn}9@M|5v@JPM zjE}u%Be=@$_JD{!Qf?(s9DVYl$_f+vS|-X?&d-~%n}uiS*Vo|97=<0~D8E5Y8y_TZ zc{-y$yAr90`;Q2n%Q~cc_2wz8F!A}<7`b+?K63Mm#ut-GaC=d>ecq3<$^=)jD=~i6 ze~wrT#7{LFsjM*J+8!%!Jla|QC6m$1B0AuPD8ub9;dUmt%H~SF^zV1X<{&Pirv)oa zTza}iZuDDgd4T)=k@iagsUFstT&$g7BWzXVO3YijR7mm%(HuQ3*x^iU)3?hDqMOPI z?jCe0a!si+W?2kgb=*d96}wW`M|swfjE-`dr)w%JOejxx$yN`#muH$vLFn>d8@*DP z;3{?{(rC~AEd2%Ik4?u_R+vbN+bh3~u5F$l#}hhAe;wN@mOgdWMsO9o5@Y%)U8F7` z@{BpDvcg0}qeQuFr%LAeQG9+M>EBI(;=iXZ+6b<)yM0c0Kj|ch!AFj$tS~V#a=&b4 zRBe=Z3-^~gBv+f^3On5Y@g~_npo=`C<N?q@<^{_Bkc1W=YLKIe*_&7FJe)Csn z+4sD0eoW{$N9+Q(2cv@v6I{ivL_acpo}2J4Tt{VviG}f72^o_8?%sR zwwq%kxQbng8NbaQh(=$7^%rKStS}LOa=YAka8t9FUZ#tMqz#y*H&5GUBe;rPiH>ps zMWt8}-=UiaD@>er?vkyJi|lqLxQbngb;76XN=A>yS?JNo3KKyy_saFA)|M~cGrle@ zh1>s5do6z2c-%&C6}wW`SH`uHa-_c&=M{IUtT0jI$3(e-RLML)n#1kN(XC<)xSa{E zVpr;Vu2tQny&%@Vbg8T`QF``%x#B5L`HQD2vU3M)(;o4iGyb|TPpd%?^R;#a&I zgcPl#GQm~sF=VX&xj@W>^CR=sDk>{X%wE1-E?A?f>Gs@BABe`B?PKR>*a)s-k0Cch ze=K$Yp`n`xD@+ugw@bDPWf;-kk#Pc7u1B;41bQzF_tAk^TfB+}NhF!bFeH335p3N~YUeZfzyCNq#N9^mN$> zu40ejcytMr+Jh+7KVD^piJ%et<%oTrvfzGNy0W61m_zgFSc2R#(SCPxcF~&_D5!*i2!Ci3&M(%NboHb^Y4On?f`?M^^u#uZ`fUJn?&E zt1oBe?8(9~jAiUXcS=^6*p($-&gcWG>pvB`BaB7w&m99g*a)twS~)?sy0>}_a|sIi zi)yEU(XY`9MT|Py&IzeyB{Yofe^yMt&p|HZl zxUDYP>QDV=t7x%0t|c+c_Sy)pTK>!>r`|pm(CCZN-FV6L^OAliL==c%U15vhoQ}-h(eyy-qVFuCb%lr=dj%L ze`z-#2K_881F`Mp7ljoj_LfSMt^AM8YkEjmFypsmjyx(8T(zx9nrx*mc!l?rj0}Z` zo{tn(m}rwZU0%J=C*Ybp$7KKKVNw^2q|Pt$-bQehSLt-Q;5MIt^X@z6^3>s2$+1-& z(I*A{!Yze~!n@Mte)n<&9Cs6ECQguUV#e`JV!^?4zrqkns~_s^19VWL;=gR<2l zUI|$*c7)qEeO#w7!By-^ysNF;;3jtZMkuT>F>m@I*~-rByF0Ta0 zyL5f{&ytZ{PFrLKS1xP@e7*DOVv2P;g}xtbq0C}-p*uq)At?bpY`J7g%VEPpha6($xoJ|tT?4P{ns5DVh`Xf8x3 zOmG#u66>Sp$GC~nuJH;hOq5=fDqBghTY|GlM)xGY%!h0QSFtOxcBw>G$>`8DyYxnd z6(%w#9G0!TyR{9fO1+G+j2-AQMrRIJu`4n6{O_t#4-lJ>qQnXlALG(wD|e}++(I(4 zYd#h{Z6mmfU5T;RzgtK~c1^`>(F!X}yc?1(FWs9Xps)K~ZA!CVQXO>1@A-C*jo>PF zC3?4=>m}6%u{UO_!itUfk}mhXmFR!Weg8NEw{JhaRSXRew-Gg{ie0JegIpt|-5_R^ zuAs2OMBOe&~3E&^|~-?j6)iFG$xt-x~E*KoRRO# z9z(yrmN$eXq>^0q+nCG>6X|VJWh;Sr-P{;)9o+6f7bPaRiamx^jXgKIiO^HODXcIt zZ2V!_N)6ppJgc+>-rbL!Q6{*GJ%*Va>$6HLK-5ED8CIC^9F-

    2+D2SC#tW&8r*o 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 diff --git a/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg b/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg deleted file mode 100644 index 082fc11ee9..0000000000 --- a/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json index 940d7a6530..9a7b7fdc0c 100644 --- a/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json @@ -1,100 +1,178 @@ { - "type": "machine", - "setting_id": "GM003", - "name": "FLSun S1 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "printer_model": "FLSun S1", - "default_print_profile": "0.20mm PLA_HS_S1_FLSUN @FLSUN", - "gcode_flavor": "klipper", - "nozzle_diameter": [ - "0.4" - ], - "bed_exclude_area": [ - "0x0" - ], - "printable_area": [ - "159.392x13.945", - "157.57x27.7838", - "154.549x41.4112", - "150.351x54.7234", - "145.01x67.6191", - "138.564x80.0002", - "131.065x91.7725", - "122.567x102.846", - "113.137x113.137", - "102.846x122.567", - "91.7725x131.065", - "80.0003x138.564", - "67.6191x145.01", - "54.7234x150.351", - "41.4112x154.549", - "27.7838x157.57", - "13.945x159.392", - "9.79721e-15x160", - "-13.945x159.392", - "-27.7838x157.57", - "-41.4112x154.549", - "-54.7234x150.351", - "-67.6191x145.01", - "-80.0002x138.564", - "-91.7725x131.065", - "-102.846x122.567", - "-113.137x113.137", - "-122.567x102.846", - "-131.065x91.7725", - "-138.564x80.0003", - "-145.01x67.6191", - "-150.351x54.7234", - "-154.549x41.4112", - "-157.57x27.7838", - "-159.392x13.945", - "-160x1.95944e-14", - "-159.392x-13.945", - "-157.57x-27.7838", - "-154.549x-41.4112", - "-150.351x-54.7234", - "-145.01x-67.6191", - "-138.564x-80.0003", - "-131.065x-91.7725", - "-122.567x-102.846", - "-113.137x-113.137", - "-102.846x-122.567", - "-91.7725x-131.065", - "-80.0003x-138.564", - "-67.6191x-145.01", - "-54.7234x-150.351", - "-41.4112x-154.549", - "-27.7838x-157.57", - "-13.945x-159.392", - "-2.93916e-14x-160", - "13.945x-159.392", - "27.7838x-157.57", - "41.4112x-154.549", - "54.7234x-150.351", - "67.6191x-145.01", - "80.0002x-138.564", - "91.7725x-131.065", - "102.846x-122.567", - "113.137x-113.137", - "122.567x-102.846", - "131.065x-91.7725", - "138.564x-80.0002", - "145.01x-67.6191", - "150.351x-54.7234", - "154.549x-41.4112", - "157.57x-27.7838", - "159.392x-13.945", - "160x-3.91888e-14" - ], - "printable_height": "430", - "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning", - "machine_start_gcode": "G21\nG90\nM82\nG28 ; home all axes\nM140 S[first_layer_bed_temperature] is_AB\nM104 S[first_layer_temperature] T0\nG1 F3000 Z1\nG1 X-155 Y0 Z0.4\nM107 T0\nM109 S[first_layer_temperature] T0\nM190 S[first_layer_bed_temperature] is_AB\nG92 E0\nG3 X0 Y-155 I155 Z0.3 E30 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", - "layer_change_gcode": "", - "machine_pause_gcode": "M600", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0" -} - + "type": "machine", + "setting_id": "GM003", + "name": "FLSun S1 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "FLSun S1", + "default_print_profile": "0.20mm Standard @FLSun S1", + "gcode_flavor": "klipper", + "printer_structure": "delta", + "nozzle_diameter": [ + "0.4" + ], + "bed_exclude_area": [ + "0x0" + ], + "thumbnails": [ + "48x48/PNG, 300x300/PNG" + ], + "deretraction_speed": [ + "80" + ], + "max_layer_height": [ + "0.3" + ], + "retract_before_wipe": [ + "30%" + ], + "retract_length_toolchange": [ + "1" + ], + "retract_restart_extra": [ + "-0.05" + ], + "retract_restart_extra_toolchange": [ + "-0.05" + ], + "retraction_length": [ + "1" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "80" + ], + "machine_max_acceleration_e": [ + "40000" + ], + "machine_max_acceleration_extruding": [ + "40000" + ], + "machine_max_acceleration_retracting": [ + "40000" + ], + "machine_max_acceleration_x": [ + "40000" + ], + "machine_max_acceleration_y": [ + "40000" + ], + "machine_max_acceleration_z": [ + "40000" + ], + "machine_max_jerk_e": [ + "100" + ], + "machine_max_jerk_x": [ + "20000" + ], + "machine_max_jerk_y": [ + "20000" + ], + "machine_max_jerk_z": [ + "10000" + ], + "machine_max_speed_e": [ + "1200" + ], + "machine_max_speed_x": [ + "1200" + ], + "machine_max_speed_y": [ + "1200" + ], + "machine_max_speed_z": [ + "1200" + ], + "printable_area": [ + "159.391x13.9449", + "157.569x27.7837", + "154.548x41.411", + "150.351x54.7232", + "145.009x67.6189", + "138.564x80", + "131.064x91.7722", + "122.567x102.846", + "113.137x113.137", + "102.846x122.567", + "91.7722x131.064", + "80x138.564", + "67.6189x145.009", + "54.7232x150.351", + "41.411x154.548", + "27.7837x157.569", + "13.9449x159.391", + "9.79717e-15x160", + "-13.9449x159.391", + "-27.7837x157.569", + "-41.411x154.548", + "-54.7232x150.351", + "-67.6189x145.009", + "-80x138.564", + "-91.7722x131.064", + "-102.846x122.567", + "-113.137x113.137", + "-122.567x102.846", + "-131.064x91.7722", + "-138.564x80", + "-145.009x67.6189", + "-150.351x54.7232", + "-154.548x41.411", + "-157.569x27.7837", + "-159.391x13.9449", + "-160x1.95943e-14", + "-159.391x-13.9449", + "-157.569x-27.7837", + "-154.548x-41.411", + "-150.351x-54.7232", + "-145.009x-67.6189", + "-138.564x-80", + "-131.064x-91.7722", + "-122.567x-102.846", + "-113.137x-113.137", + "-102.846x-122.567", + "-91.7722x-131.064", + "-80x-138.564", + "-67.6189x-145.009", + "-54.7232x-150.351", + "-41.411x-154.548", + "-27.7837x-157.569", + "-13.9449x-159.391", + "-2.93915e-14x-160", + "13.9449x-159.391", + "27.7837x-157.569", + "41.411x-154.548", + "54.7232x-150.351", + "67.6189x-145.009", + "80x-138.564", + "91.7722x-131.064", + "102.846x-122.567", + "113.137x-113.137", + "122.567x-102.846", + "131.064x-91.7722", + "138.564x-80", + "145.009x-67.6189", + "150.351x-54.7232", + "154.548x-41.411", + "157.569x-27.7837", + "159.391x-13.9449", + "160x-3.91887e-14" + ], + "support_air_filtration": "1", + "printable_height": "430", + "machine_end_gcode": "M107 T0\nM104 S0\nM140 S0\nM104 S0 T1\nG92 E0\nG91\nG1 E-1 F2100\nG1 Z+0.5 F6000\nG28\nG90", + "machine_start_gcode": "G90\nM82\nG28\n{if (first_layer_print_min[0] > 100 || first_layer_print_max[0] > 100 || first_layer_print_min[1] > 100 || first_layer_print_max[1] > 100 || first_layer_print_min[0] < -100 || first_layer_print_max[0] < -100 || first_layer_print_min[1] < -100 || first_layer_print_max[1] < -100)}M140 S[first_layer_bed_temperature] A1 B1{else}M140 S[first_layer_bed_temperature] A1 B0{endif}\nM104 S[first_layer_temperature] T0\nM107 T0\nM109 S[first_layer_temperature] T0\n{if (first_layer_print_min[0] > 100 || first_layer_print_max[0] > 100 || first_layer_print_min[1] > 100 || first_layer_print_max[1] > 100 || first_layer_print_min[0] < -100 || first_layer_print_max[0] < -100 || first_layer_print_min[1] < -100 || first_layer_print_max[1] < -100)}M190 S[first_layer_bed_temperature] A1 B1{else}M190 S[first_layer_bed_temperature] A1 B0{endif}\nG1 Z150 F6000\nG1 X-160 Y0 Z0.4 F4000\nG92 E0\nG3 X0 Y-160 I160 J0 Z0.3 E30 F2000\nG1 Z2 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", + "change_filament_gcode": "PAUSE", + "machine_pause_gcode": "PAUSE", + "layer_change_gcode": "", + "support_chamber_temp_control": "0", + "scan_first_layer": "0", + "nozzle_type": "hardened_steel", + "adaptive_bed_mesh_margin": "0", + "emit_machine_limits_to_gcode": "0", + "auxiliary_fan": "0" + } + \ No newline at end of file diff --git a/resources/profiles/FLSun/machine/FLSun S1.json b/resources/profiles/FLSun/machine/FLSun S1.json index bb824ef906..99a240d128 100644 --- a/resources/profiles/FLSun/machine/FLSun S1.json +++ b/resources/profiles/FLSun/machine/FLSun S1.json @@ -1,12 +1,12 @@ { - "type": "machine_model", - "name": "FLSun S1", - "model_id": "FLSun_S1", - "nozzle_diameter": "0.4", - "machine_tech": "FFF", - "family": "FLSun", - "bed_model": "flsun_s1_buildplate_model.stl", - "bed_texture": "flsun_s1_buildplate_texture.svg", - "hotend_model": "", - "default_materials": "FLSun Generic PLA-HS-S1" + "type": "machine_model", + "name": "FLSun S1", + "model_id": "FLSun_S1", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "FLSun_S1_buildplate_model.stl", + "bed_texture": "FLSun_S1_buildplate_texture.png", + "hotend_model": "", + "default_materials": "FLSun S1 PLA High Speed;FLSun S1 PLA Silk;FLSun S1 PLA Generic;FLSun S1 PETG;FLSun S1 ASA;FLSun S1 TPU;FLSun S1 ABS" } diff --git a/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json index fe098bd2bc..9a8c9c283f 100644 --- a/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json @@ -6,14 +6,87 @@ "instantiation": "true", "inherits": "fdm_machine_common", "printer_model": "FLSun T1", - "default_print_profile": "0.20mm PLA_HS_T1_FLSUN @FLSUN", + "default_print_profile": "0.20mm Standard @FLSun T1", "gcode_flavor": "klipper", + "printer_structure": "delta", "nozzle_diameter": [ "0.4" ], "bed_exclude_area": [ "0x0" ], + "thumbnails": [ + "48x48/PNG, 300x300/PNG" + ], + "deretraction_speed": [ + "70" + ], + "max_layer_height": [ + "0.3" + ], + "retract_before_wipe": [ + "30%" + ], + "retract_length_toolchange": [ + "1" + ], + "retract_restart_extra": [ + "-0.05" + ], + "retract_restart_extra_toolchange": [ + "-0.05" + ], + "retraction_length": [ + "1" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "70" + ], + "machine_max_acceleration_e": [ + "30000" + ], + "machine_max_acceleration_extruding": [ + "30000" + ], + "machine_max_acceleration_retracting": [ + "30000" + ], + "machine_max_acceleration_x": [ + "30000" + ], + "machine_max_acceleration_y": [ + "30000" + ], + "machine_max_acceleration_z": [ + "30000" + ], + "machine_max_jerk_e": [ + "100" + ], + "machine_max_jerk_x": [ + "20000" + ], + "machine_max_jerk_y": [ + "20000" + ], + "machine_max_jerk_z": [ + "10000" + ], + "machine_max_speed_e": [ + "1000" + ], + "machine_max_speed_x": [ + "1000" + ], + "machine_max_speed_y": [ + "1000" + ], + "machine_max_speed_z": [ + "1000" + ], "printable_area": [ "129.505x11.3302", "128.025x22.5743", @@ -88,13 +161,18 @@ "129.505x-11.3302", "130x-3.18408e-14" ], + "support_air_filtration": "1", "printable_height": "330", - "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning\nTIMELAPSE_RENDER", - "machine_start_gcode": "G21\nG90\nM82\nG28 ; home all axes\nM140 S[first_layer_bed_temperature]\nM104 S[first_layer_temperature] T0\nG1 F3000 Z1\nG1 X-125 Y0 Z0.4\nM109 S[first_layer_temperature] T0\nM190 S[first_layer_bed_temperature]\nM107 T0\nG92 E0\nG3 X0 Y-125 I125 Z0.3 E30 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", + "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 E-1 F2100\nG1 Z+0.5 F6000\nG28\nG90", + "machine_start_gcode": "G21\nG90\nM82\nG28\nM140 S[first_layer_bed_temperature]\nM104 S[first_layer_temperature] T0\nM109 S[first_layer_temperature] T0\nM190 S[first_layer_bed_temperature]\nG1 Z150 F3000\nG1 X-130 Y0 Z0.4\nM107 T0\nG92 E0\nG3 X0 Y-130 I130 J0 Z0.3 E30 F2000\nG1 Z2 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", + "change_filament_gcode": "PAUSE", + "machine_pause_gcode": "PAUSE", "layer_change_gcode": "", - "machine_pause_gcode": "M600", + "support_chamber_temp_control": "0", "scan_first_layer": "0", "nozzle_type": "hardened_steel", + "adaptive_bed_mesh_margin": "0", + "emit_machine_limits_to_gcode": "0", "auxiliary_fan": "0" } diff --git a/resources/profiles/FLSun/machine/FLSun T1.json b/resources/profiles/FLSun/machine/FLSun T1.json index 65ea1a3737..663970ea87 100644 --- a/resources/profiles/FLSun/machine/FLSun T1.json +++ b/resources/profiles/FLSun/machine/FLSun T1.json @@ -1,12 +1,12 @@ { - "type": "machine_model", - "name": "FLSun T1", - "model_id": "FLSun_T1", - "nozzle_diameter": "0.4", - "machine_tech": "FFF", - "family": "FLSun", - "bed_model": "flsun_T1_buildplate_model.stl", - "bed_texture": "flsun_T1_buildplate_texture.svg", - "hotend_model": "", - "default_materials": "FLSun Generic PLA-HS-T1" + "type": "machine_model", + "name": "FLSun T1", + "model_id": "FLSun_T1", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "FLSun_T1_buildplate_model.stl", + "bed_texture": "FLSun_T1_buildplate_texture.png", + "hotend_model": "", + "default_materials": "FLSun T1 PLA High Speed;FLSun T1 PLA Silk;FLSun T1 PLA Generic;FLSun T1 PETG;FLSun T1 ASA;FLSun T1 TPU;FLSun T1 ABS" } diff --git a/resources/profiles/FLSun/process/0.12mm Fine @FLSun S1.json b/resources/profiles/FLSun/process/0.12mm Fine @FLSun S1.json new file mode 100644 index 0000000000..6a4b71cd37 --- /dev/null +++ b/resources/profiles/FLSun/process/0.12mm Fine @FLSun S1.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Fine @FLSun S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.12", + "bottom_shell_layers": "7", + "bottom_shell_thickness": "0.84", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "450", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "550", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "800", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_bottom_z_distance": "0.12", + "support_threshold_angle": "20", + "support_top_z_distance": "0.12", + "top_shell_layers": "7", + "top_surface_acceleration": "12000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "top_shell_thickness": "0.84", + "travel_acceleration": "32000", + "travel_jerk": "600", + "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.12mm Fine @FLSun T1.json b/resources/profiles/FLSun/process/0.12mm Fine @FLSun T1.json new file mode 100644 index 0000000000..74e7a2616f --- /dev/null +++ b/resources/profiles/FLSun/process/0.12mm Fine @FLSun T1.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Fine @FLSun T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.12", + "bottom_shell_layers": "7", + "bottom_shell_thickness": "0.84", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "450", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "550", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "600", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_bottom_z_distance": "0.12", + "support_threshold_angle": "20", + "support_top_z_distance": "0.12", + "top_shell_layers": "7", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "top_shell_thickness": "0.84", + "travel_acceleration": "20000", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun S1.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun S1.json new file mode 100644 index 0000000000..88bd17f7e3 --- /dev/null +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun S1.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @FLSun S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.16", + "bottom_shell_layers": "6", + "bottom_shell_thickness": "0.96", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "400", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "500", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "800", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_bottom_z_distance": "0.16", + "support_threshold_angle": "25", + "support_top_z_distance": "0.16", + "top_shell_layers": "6", + "top_surface_acceleration": "12000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "top_shell_thickness": "0.96", + "travel_acceleration": "32000", + "travel_jerk": "600", + "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun T1.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun T1.json new file mode 100644 index 0000000000..1f406fe36c --- /dev/null +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun T1.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @FLSun T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.16", + "bottom_shell_layers": "6", + "bottom_shell_thickness": "0.96", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "400", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "500", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "600", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_bottom_z_distance": "0.16", + "support_threshold_angle": "25", + "support_top_z_distance": "0.16", + "top_shell_layers": "6", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "top_shell_thickness": "0.96", + "travel_acceleration": "20000", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json index 0d528e7387..a772514af3 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json @@ -1,30 +1,64 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm PLA_HS_S1_FLSUN @FLSUN", + "name": "0.20mm Standard @FLSun S1", "from": "system", "instantiation": "true", "inherits": "fdm_process_common", - "outer_wall_speed": "400", - "inner_wall_speed": "500", - "sparse_infill_speed": "800", - "internal_solid_infill_speed": "500", - "default_acceleration": "30000", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.8", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", "default_jerk": "200", - "gap_infill_speed": "400", - "initial_layer_acceleration": "5000", - "initial_layer_infill_speed": "80", - "initial_layer_speed": "50", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "350", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "500", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", "is_custom_defined": "0", - "outer_wall_acceleration": "8000", - "overhang_2_4_speed": "1234", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "800", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "top_shell_layers": "5", "top_surface_acceleration": "12000", - "top_surface_speed": "400", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", "travel_acceleration": "32000", + "travel_jerk": "600", "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", "compatible_printers": [ "FLSun S1 0.4 nozzle" ], - "exclude_object": "1" + "exclude_object": "1" } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json index 90caef323d..90c63838e0 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json @@ -1,30 +1,64 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm PLA_HS_T1_FLSUN @FLSUN", + "name": "0.20mm Standard @FLSun T1", "from": "system", "instantiation": "true", "inherits": "fdm_process_common", - "outer_wall_speed": "120", - "inner_wall_speed": "260", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "260", - "default_acceleration": "8000", - "default_jerk": "20", - "gap_infill_speed": "250", - "initial_layer_acceleration": "1000", - "initial_layer_infill_speed": "60", - "initial_layer_speed": "30", - "inner_wall_acceleration": "8000", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.8", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "350", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "500", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", "is_custom_defined": "0", - "outer_wall_acceleration": "8000", - "overhang_1_4_speed": "80", - "top_surface_acceleration": "12000", - "top_surface_speed": "300", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "600", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "top_shell_layers": "5", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", "travel_acceleration": "20000", - "travel_speed": "800", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", "compatible_printers": [ "FLSun T1 0.4 nozzle" ], - "exclude_object": "1" + "exclude_object": "1" } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun S1.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun S1.json new file mode 100644 index 0000000000..0376014755 --- /dev/null +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun S1.json @@ -0,0 +1,65 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @FLSun S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.8", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "330", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "450", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "450", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "750", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_threshold_angle": "35", + "top_shell_layers": "5", + "top_surface_acceleration": "12000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "travel_acceleration": "32000", + "travel_jerk": "600", + "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun T1.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun T1.json new file mode 100644 index 0000000000..a75bd2c3fc --- /dev/null +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun T1.json @@ -0,0 +1,65 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @FLSun T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.8", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "330", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "450", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "450", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "550", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_threshold_angle": "35", + "top_shell_layers": "5", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "travel_acceleration": "20000", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun S1.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun S1.json new file mode 100644 index 0000000000..6232a5b7f3 --- /dev/null +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun S1.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Extra Draft @FLSun S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.3", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "1.2", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "300", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "450", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "450", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "650", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_threshold_angle": "40", + "top_shell_layers": "4", + "top_shell_thickness": "1.2", + "top_surface_acceleration": "12000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "travel_acceleration": "32000", + "travel_jerk": "600", + "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun T1.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun T1.json new file mode 100644 index 0000000000..9c14d74651 --- /dev/null +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun T1.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Extra Draft @FLSun T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.3", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "1.2", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "300", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "450", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "450", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "500", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_threshold_angle": "40", + "top_shell_layers": "4", + "top_shell_thickness": "1.2", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "travel_acceleration": "20000", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file From 24caa6834efa768fab81ad1510bcac16e000c04f Mon Sep 17 00:00:00 2001 From: Heiko Liebscher Date: Sun, 11 Aug 2024 17:00:24 +0200 Subject: [PATCH 113/151] add de translation for new features (#6380) * translation for new features * fix typo --- localization/i18n/de/OrcaSlicer_de.po | 157 +++++++++++++++++++++----- 1 file changed, 129 insertions(+), 28 deletions(-) diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 2dd0c93dbc..7547eaeee6 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -6236,6 +6236,8 @@ msgid "" "Your object appears to be too large. It will be scaled down to fit the heat " "bed automatically." msgstr "" +"Ihr Objekt scheint zu groß zu sein. Es wird automatisch verkleinert, um auf " +"das Druckbett zu passen." msgid "Object too large" msgstr "Objekt zu groß" @@ -6825,10 +6827,10 @@ msgstr "" "mehrere Geräte senden und mehrere Geräte verwalten." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "Druckplatte nach dem Klonen automatisch anordnen" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Druckplatte nach dem Klonen von Objekten automatisch anordnen" msgid "Network" msgstr "Netzwerk" @@ -7860,10 +7862,10 @@ msgid "Prime tower" msgstr "Reinigungsturm" msgid "Filament for Features" -msgstr "" +msgstr "Filament für Funktionen" msgid "Ooze prevention" -msgstr "" +msgstr "Ooze-Prävention" msgid "Skirt" msgstr "Saum" @@ -7922,7 +7924,7 @@ msgstr "" "gesetzt" msgid "Flow ratio and Pressure Advance" -msgstr "" +msgstr "Flussverhältnis und Pressure Advance" msgid "Print chamber temperature" msgstr "Druckkammertemperatur" @@ -8125,7 +8127,7 @@ msgid "Single extruder multimaterial setup" msgstr "Single-Extruder-Multimaterial-Einstellung" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Anzahl der Extruder des Druckers." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8133,6 +8135,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"Single-Extruder-Multimaterial ist ausgewählt, \n" +"und alle Extruder müssen denselben Durchmesser haben.\n" +"Möchten Sie den Durchmesser für alle Extruder auf den Wert des ersten " +"Extruder-Düsendurchmessers ändern?" msgid "Nozzle diameter" msgstr "Düsendurchmesser" @@ -8147,6 +8153,8 @@ msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" +"Dies ist ein Single-Extruder-Multimaterial-Drucker, die Durchmesser aller " +"Extruder werden auf den neuen Wert gesetzt. Möchten Sie fortfahren?" msgid "Layer height limits" msgstr "Höhenbegrenzungen für Schichten" @@ -8667,7 +8675,7 @@ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importiere Geometriedaten aus STL/STEP/3MF/OBJ/AMF-Dateien" msgid "Shift+G" -msgstr "" +msgstr "Umschalt+G" msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" @@ -8719,7 +8727,7 @@ msgid "Collapse/Expand the sidebar" msgstr "Seitenleiste zu-/aufklappen" msgid "Any arrow" -msgstr "" +msgstr "Beliebiger Pfeil" msgid "Movement in camera space" msgstr "Bewegung im Kameraraum" @@ -9159,6 +9167,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"Ihr Druck ist sehr nahe an den Priming-Regionen. Stellen Sie sicher, dass es " +"keine Kollision gibt." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9412,6 +9422,9 @@ msgid "" "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" +"Unterschiedliche Düsendurchmesser und unterschiedliche Filamentdurchmesser " +"funktionieren möglicherweise nicht gut, wenn der Reinigungsturm aktiviert " +"ist. Es ist sehr experimentell, also gehen Sie bitte vorsichtig vor." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9424,6 +9437,8 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" +"Ooze-Prävention wird nur mit dem Reinigungsturm unterstützt, wenn " +"'single_extruder_multi_material' ausgeschaltet ist." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10946,9 +10961,30 @@ msgid "" "and for when tool changing.\n" "\n" msgstr "" +"Mit zunehmender Druckgeschwindigkeit (und damit zunehmendem Volumenstrom " +"durch die Düse) und zunehmenden Beschleunigungen wurde beobachtet, dass der " +"effektive PA-Wert in der Regel abnimmt. Dies bedeutet, dass ein einzelner PA-" +"Wert nicht immer zu 100% optimal für alle Funktionen ist und in der Regel " +"ein Kompromisswert verwendet wird, der keine zu starke Ausbeulung bei " +"Funktionen mit niedrigerer Fließgeschwindigkeit und Beschleunigungen " +"verursacht, während er auch keine Lücken bei schnelleren Funktionen " +"verursacht.\n" +"\n" +"Dieses Feature zielt darauf ab, diese Einschränkung zu beheben, indem die " +"Reaktion des Extrusionssystems Ihres Druckers in Abhängigkeit von der " +"Volumenfließgeschwindigkeit und Beschleunigung, mit der gedruckt wird, " +"modelliert wird. Intern wird ein angepasstes Modell generiert, das den " +"benötigten Druckvorschub für eine beliebige gegebene Volumenfließgeschwindig-" +"keit und Beschleunigung extrapolieren kann, der dann je nach den aktuellen " +"Druckbedingungen an den Drucker ausgegeben wird.\n" +"\n" +"Wenn diese Option aktiviert ist, wird der obige Druckvorschubwert überschrie-" +"ben. Es wird jedoch dringend empfohlen, einen vernünftigen Standardwert " +"oben zu verwenden, um als Fallback und für den Werkzeugwechsel zu dienen.\n" +"\n" msgid "Adaptive pressure advance measurements (beta)" -msgstr "" +msgstr "Adaptive Pressure Advance Messung (experimentell)" msgid "" "Add sets of pressure advance (PA) values, the volumetric flow speeds and " @@ -10979,9 +11015,38 @@ msgid "" "your filament profile\n" "\n" msgstr "" +"Fügen Sie Sätze von Druckvorschub (PA)-Werten, den Volumenfließgeschwindig-" +"keiten und Beschleunigungen, bei denen sie gemessen wurden, durch ein Komma " +"getrennt hinzu. Ein Satz von Werten pro Zeile. Zum Beispiel\n" +"0,04,3,96,3000\n" +"0,033,3,96,10000\n" +"0,029,7,91,3000\n" +"0,026,7,91,10000\n" +"\n" +"Wie einstellen?\n" +"1. PA Test für mindestens 3 Geschwindigkeiten pro Beschleunigung " +"durchführen. Es wird empfohlen, dass der Test mindestens für die Geschwindig-" +"keit der äußeren Umfänge, die Geschwindigkeit der inneren Umfänge und die " +"schnellste Funktionendruckgeschwindigkeit in Ihrem Profil (normalerweise ist " +"es das dünne oder massive Infill) durchgeführt wird. Führen Sie sie dann für " +"die gleichen Geschwindigkeiten für die langsamsten und schnellsten " +"Druckbeschleunigungen durch und nicht schneller als die empfohlene maximale " +"Beschleunigung, wie sie vom Klipper-Eingabe-Shaper angegeben wird.\n" +"2. Notieren Sie den optimalen PA-Wert für jede Volumenfließgeschwindigkeit " +"und Beschleunigung. Sie können die Fließzahl auswählen, indem Sie Fluss aus" +"dem Farbschema-Dropdown auswählen und den horizontalen Schieberegler über den " +"PA-Musterlinien bewegen. Die Zahl sollte am unteren Rand der Seite sichtbar " +"sein. Der ideale PA-Wert sollte abnehmen, je höher die Volumenfließgeschwin-" +"digkeit ist. Wenn dies nicht der Fall ist, bestätigen Sie, dass Ihr Extruder " +"korrekt funktioniert. Je langsamer und mit weniger Beschleunigung Sie drucken, " +"desto größer ist der Bereich der akzeptablen PA-Werte. Wenn kein Unterschied " +"sichtbar ist, verwenden Sie den PA-Wert aus dem schnelleren Test.3. Geben Sie " +"die Triplets von PA-Werten, Fluss und Beschleunigungen im Textfeld hier ein " +"und speichern Sie Ihr Filamentprofil\n" +"\n" msgid "Enable adaptive pressure advance for overhangs (beta)" -msgstr "" +msgstr "Adaptives PA für Überhänge aktivieren (experimentell)" msgid "" "Enable adaptive PA for overhangs as well as when flow changes within the " @@ -10989,9 +11054,13 @@ msgid "" "set accurately, it will cause uniformity issues on the external surfaces " "before and after overhangs.\n" msgstr "" +"Adaptives PA für Überhänge aktivieren, sowie wenn der Fluss innerhalb der " +"gleichen Funktion geändert wird. Dies ist eine experimentelle Option, da bei " +"einer ungenauen Einstellung des PA-Profils Gleichmäßigkeitsprobleme auf den " +"externen Oberflächen vor und nach Überhängen verursacht werden.\n" msgid "Pressure advance for bridges" -msgstr "" +msgstr "Pressure Advance für Brücken" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" @@ -11001,6 +11070,12 @@ msgid "" "pressure drop in the nozzle when printing in the air and a lower PA helps " "counteract this." msgstr "" +"Pressure Advance-Wert für Brücken. Auf 0 setzen, um zu deaktivieren.\n" +"\n" +"Ein niedrigerer PA-Wert beim Drucken von Brücken hilft, das Auftreten einer " +"leichten Unterextrusion unmittelbar nach Brücken zu reduzieren. Dies wird " +"durch den Druckabfall in der Düse beim Drucken in der Luft verursacht, und " +"ein niedrigerer PA hilft, dem entgegenzuwirken." msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " @@ -11211,19 +11286,23 @@ msgstr "" "wird. Geben Sie die gewünschte Anzahl dieser Bewegungen an." msgid "Stamping loading speed" -msgstr "" +msgstr "Lade-Geschwindigkeit für das Stamping" msgid "Speed used for stamping." -msgstr "" +msgstr "Geschwindigkeit, die für das Stamping verwendet wird." msgid "Stamping distance measured from the center of the cooling tube" -msgstr "" +msgstr "Stamping-Abstand, gemessen vom Zentrum des Kühlrohrs" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " "individual cooling moves (\"stamping\"). This option configures how long " "this movement should be before the filament is retracted again." msgstr "" +"Wenn ein Wert ungleich Null eingestellt ist, wird das Filament zwischen den " +"einzelnen Kühlbewegungen (\"Stamping\") in Richtung der Düse bewegt. Diese " +"Option konfiguriert, wie lange diese Bewegung sein soll, bevor das Filament " +"wieder zurückgezogen wird." msgid "Speed of the first cooling move" msgstr "Geschwindigkeit der ersten Kühlbewegung" @@ -12086,6 +12165,7 @@ msgid "" "\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" + msgid "Use beam interlocking" msgstr "Verwende Interlock-Strukturen" @@ -12603,6 +12683,8 @@ msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing." msgstr "" +"Diese Option senkt die Temperatur der inaktiven Extruder, um das Herauslaufen " +"des Filaments zu verhindern." msgid "Filename format" msgstr "Format des Dateinamens" @@ -12656,7 +12738,7 @@ msgstr "" "100%% Überhang wird die Brückengeschwindigkeit verwendet." msgid "Filament to print walls" -msgstr "" +msgstr "Filament für den Druck der Wände" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -12709,10 +12791,10 @@ msgstr "" "Konfigurationseinstellungen durch Lesen von Umgebungsvariablen abrufen." msgid "Printer type" -msgstr "" +msgstr "Druckertyp" msgid "Type of the printer" -msgstr "" +msgstr "Typ des Druckers" msgid "Printer notes" msgstr "Druckernotizen" @@ -12721,7 +12803,7 @@ msgid "You can put your notes regarding the printer here." msgstr "Sie können hier Ihre Notizen zum Drucker eintragen." msgid "Printer variant" -msgstr "" +msgstr "Druckervariante" msgid "Raft contact Z distance" msgstr "Z Abstand Objekt Druckbasis " @@ -13308,10 +13390,10 @@ msgstr "" "Füllungen ersetzt." msgid "Solid infill" -msgstr "" +msgstr "Massive Füllung" msgid "Filament to print solid infill" -msgstr "" +msgstr "Filament für den Druck der massiven Füllung" msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -13389,9 +13471,12 @@ msgid "" "value is not used when 'idle_temperature' in filament settings is set to non " "zero value." msgstr "" +"Temperaturunterschied, der angewendet wird, wenn ein Extruder nicht aktiv " +"ist. Der Wert wird nicht verwendet, wenn 'idle_temperature' in den " +"Filament-Einstellungen auf einen Wert ungleich Null gesetzt ist." msgid "Preheat time" -msgstr "" +msgstr "Vorheizzeit" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13399,14 +13484,21 @@ msgid "" "seconds to preheat the next tool. Orca will insert a M104 command to preheat " "the tool in advance." msgstr "" +"Um die Wartezeit nach dem Werkzeugwechsel zu reduzieren, kann Orca das " +"nächste Werkzeug vorheizen, während das aktuelle Werkzeug noch in Gebrauch " +"ist. Diese Einstellung gibt die Zeit in Sekunden an, um das nächste Werkzeug " +"vorzuheizen. Orca fügt einen M104-Befehl ein, um das Werkzeug im Voraus zu " +"vorzuheizen." msgid "Preheat steps" -msgstr "" +msgstr "Vorheizschritte" msgid "" "Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " "other printers, please set it to 1." msgstr "" +"Fügen Sie mehrere Vorheizbefehle ein (z.B. M104.1). Nur nützlich für Prusa " +"XL. Für andere Drucker bitte auf 1 setzen." msgid "Start G-code" msgstr "Start G-Code" @@ -14209,22 +14301,28 @@ msgid "Spacing of purge lines on the wipe tower." msgstr "Abstand der Reinigungsturmpurges." msgid "Extra flow for purging" -msgstr "" +msgstr "Zusätzlicher Fluss für Reinigung" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " "purging lines thicker or narrower than they normally would be. The spacing " "is adjusted automatically." msgstr "" +"Zusätzlicher Fluss, der für die Reinigungslinien auf dem Reinigungsturm " +"verwendet wird. Dadurch werden die Reinigungslinien dicker oder schmaler, " +"als sie normalerweise wären. Der Abstand wird automatisch angepasst." msgid "Idle temperature" -msgstr "" +msgstr "Leerlauftemperatur" msgid "" "Nozzle temperature when the tool is currently not used in multi-tool setups." "This is only used when 'Ooze prevention' is active in Print Settings. Set to " "0 to disable." msgstr "" +"Düsentemperatur, wenn das Werkzeug in Mehrwerkzeug-Setups derzeit nicht " +"verwendet wird. Dies wird nur verwendet, wenn die „Ausflussverhinderung“ in " +"den Druckeinstellungen aktiviert ist. Auf 0 setzen, um zu deaktivieren." msgid "X-Y hole compensation" msgstr "X-Y-Loch-Kompensation" @@ -14582,12 +14680,13 @@ msgid "Currently planned extra extruder priming after deretraction." msgstr "Derzeit geplantes zusätzliches Extruder-Priming nach dem Rückzug." msgid "Absolute E position" -msgstr "" +msgstr "Absolute E-Position" msgid "" "Current position of the extruder axis. Only used with absolute extruder " "addressing." msgstr "" +"Aktuelle Position der Extruderachse. Wird nur bei absoluter Extruderadressierung verwendet." msgid "Current extruder" msgstr "Aktueller Extruder" @@ -14640,10 +14739,10 @@ msgstr "" "Druck verwendet wird." msgid "Has single extruder MM priming" -msgstr "" +msgstr "Hat einzelnes Extruder-MM-Priming" msgid "Are the extra multi-material priming regions used in this print?" -msgstr "" +msgstr "Werden die zusätzlichen Multi-Material-Priming-Regionen in diesem Druck verwendet?" msgid "Volume per extruder" msgstr "Volumen pro Extruder" @@ -14807,12 +14906,14 @@ msgid "Name of the physical printer used for slicing." msgstr "Name des physischen Druckers, der zum Slicen verwendet wird." msgid "Number of extruders" -msgstr "" +msgstr "Anzahl der Extruder" msgid "" "Total number of extruders, regardless of whether they are used in the " "current print." msgstr "" +"Gesamtanzahl der Extruder, unabhängig davon, ob sie im aktuellen Druck " +"verwendet werden." msgid "Layer number" msgstr "Schichtnummer" From 8d07f59ab03aa905fbee0c28b135f0d5684a774f Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 11 Aug 2024 17:00:47 +0200 Subject: [PATCH 114/151] French translations (#6403) * Added missing strings. * Added missing translations * Fixed boost format --- localization/i18n/fr/OrcaSlicer_fr.po | 1119 +++++++++++++------------ 1 file changed, 575 insertions(+), 544 deletions(-) diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index c495ac4ca6..1f2edeab23 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -1315,7 +1315,7 @@ msgid "ShiftLeft mouse button" msgstr "ShiftLeft mouse button" msgid "Select feature" -msgstr "Sélectionner une fonctionnalité" +msgstr "Sélectionner un trait" msgid "Select point" msgstr "Sélectionner un point" @@ -4452,7 +4452,7 @@ msgstr "Le volume:" msgid "Size:" msgstr "Taille:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5915,7 +5915,7 @@ msgid "View all object's settings" msgstr "Afficher tous les paramètres de l'objet" msgid "Material settings" -msgstr "" +msgstr "Réglages des matériaux" msgid "Remove current plate (if not last one)" msgstr "Retirer la plaque actuelle (si elle n'est pas la dernière)" @@ -5994,7 +5994,7 @@ msgid "Search plate, object and part." msgstr "Recherche de plaque, d'objet et de pièce." msgid "Pellets" -msgstr "" +msgstr "Pellets" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." @@ -6218,6 +6218,8 @@ msgid "" "Your object appears to be too large. It will be scaled down to fit the heat " "bed automatically." msgstr "" +"Votre objet est trop grand. Il sera automatiquement réduit pour s’adapter au " +"plateau." msgid "Object too large" msgstr "Objet trop grand" @@ -6638,19 +6640,19 @@ msgid "Choose Download Directory" msgstr "Choisissez le répertoire de téléchargement" msgid "Associate" -msgstr "" +msgstr "Associé" msgid "with OrcaSlicer so that Orca can open models from" -msgstr "" +msgstr "avec OrcaSlicer afin qu’Orca puisse ouvrir des modèles à partir de" msgid "Current Association: " -msgstr "" +msgstr "Association actuelle : " msgid "Current Instance" -msgstr "" +msgstr "Instance courante" msgid "Current Instance Path: " -msgstr "" +msgstr "Chemin d’accès à l’instance courante : " msgid "General Settings" msgstr "Paramètres généraux" @@ -6825,10 +6827,10 @@ msgstr "" "appareils en même temps et gérer plusieurs appareils." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "Arrangement automatique de la plaque après le clonage" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Arrangement automatique de la plaque après le clonage de l’objet" msgid "Network" msgstr "Réseau" @@ -7790,8 +7792,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Lorsque vous enregistrez un timelapse sans tête d’outil, il est recommandé " "d’ajouter une \"Tour d’essuyage timelapse\".\n" @@ -7875,10 +7877,10 @@ msgid "Prime tower" msgstr "Tour de purge" msgid "Filament for Features" -msgstr "" +msgstr "Filament pour les caractéristiques" msgid "Ooze prevention" -msgstr "" +msgstr "Prévention des suintements" msgid "Skirt" msgstr "Jupe" @@ -7937,7 +7939,7 @@ msgstr "" "d'ensemble" msgid "Flow ratio and Pressure Advance" -msgstr "" +msgstr "Rapport de débit et avance de pression" msgid "Print chamber temperature" msgstr "Température du caisson d’impression" @@ -7958,9 +7960,9 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool plate" -"\") est installé. Une valeur à 0 signifie que ce filament ne peut pas être " -"imprimé sur le plateau froid." +"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool " +"plate\") est installé. Une valeur à 0 signifie que ce filament ne peut pas " +"être imprimé sur le plateau froid." msgid "Engineering plate" msgstr "Plaque Engineering" @@ -8145,7 +8147,7 @@ msgid "Single extruder multimaterial setup" msgstr "Configuration multi-matériaux pour extrudeur unique" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Nombre d’extrudeurs de l’imprimante." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8153,6 +8155,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" +"Extrudeur unique multi-matériaux est sélectionné, \n" +"et tous les extrudeurs doivent avoir le même diamètre.\n" +"Souhaitez-vous modifier le diamètre de tous les extrudeurs pour qu’il " +"corresponde à la première valeur du diamètre de la buse de l’extrudeur ?" msgid "Nozzle diameter" msgstr "Diamètre de la buse" @@ -8167,6 +8173,9 @@ msgid "" "This is a single extruder multimaterial printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" +"Il s’agit d’une imprimante mono extrudeur multimatériaux, les diamètres de " +"tous les extrudeurs seront réglés sur la nouvelle valeur. Voulez-vous " +"continuer ?" msgid "Layer height limits" msgstr "Limites de hauteur de couche" @@ -8697,7 +8706,7 @@ msgstr "" "Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF." msgid "Shift+G" -msgstr "" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" @@ -8750,7 +8759,7 @@ msgid "Collapse/Expand the sidebar" msgstr "Réduire/développer la barre latérale" msgid "Any arrow" -msgstr "" +msgstr "Toutes les flèches" msgid "Movement in camera space" msgstr "Mouvement dans l'espace de la caméra" @@ -8873,7 +8882,7 @@ msgid "Gizmo" msgstr "Gizmo" msgid "Set extruder number for the objects and parts" -msgstr "Définir le numéro d'extrudeuse pour les objets et les pièces" +msgstr "Définir le numéro d'extrudeur pour les objets et les pièces" msgid "Delete objects, parts, modifiers " msgstr "Supprimer des objets, des pièces, des modificateurs " @@ -9193,6 +9202,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" +"Votre impression est très proche des régions d’amorçage. Assurez-vous qu’il " +"n’y a pas de collision." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9394,8 +9405,8 @@ msgid "" "during printing" msgstr "" "Impossible d'imprimer plusieurs filaments qui ont une grande différence de " -"température ensemble. Sinon, l'extrudeuse et la buse peuvent être bloquées " -"ou endommagées pendant l'impression" +"température ensemble. Sinon, l'extrudeur et la buse peuvent être bloquées ou " +"endommagées pendant l'impression" msgid "No extrusions under current settings." msgstr "Aucune extrusion dans les paramètres actuels." @@ -9450,6 +9461,9 @@ msgid "" "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" +"Différents diamètres de buses et de filaments peuvent ne pas fonctionner " +"correctement lorsque la tour d’amorçage est activée. Il s’agit d’un projet " +"très expérimental, il convient donc de procéder avec prudence." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9462,6 +9476,8 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" +"La prévention du suintement n’est possible qu’avec la tour d’essuyage " +"lorsque l’option ‘single_extruder_multi_material’ est désactivée." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10867,7 +10883,7 @@ msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " "printing." msgstr "" -"Rayon de dégagement autour de l'extrudeuse : utilisé pour éviter les " +"Rayon de dégagement autour de l'extrudeur : utilisé pour éviter les " "collisions lors de l'impression par objets." msgid "Nozzle height" @@ -10985,14 +11001,14 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure Advance (Klipper) AKA Linear Advance (Marlin)" msgid "Enable adaptive pressure advance (beta)" -msgstr "" +msgstr "Activer l’avance de pression adaptative (beta)" #, c-format, boost-format msgid "" "With increasing print speeds (and hence increasing volumetric flow through " "the nozzle) and increasing accelerations, it has been observed that the " "effective PA value typically decreases. This means that a single PA value is " -"not always 100% optimal for all features and a compromise value is usually " +"not always 100%% optimal for all features and a compromise value is usually " "used that does not cause too much bulging on features with lower flow speed " "and accelerations while also not causing gaps on faster features.\n" "\n" @@ -11008,9 +11024,30 @@ msgid "" "and for when tool changing.\n" "\n" msgstr "" +"Avec l’augmentation des vitesses d’impression (et donc du débit volumétrique " +"à travers la buse) et des accélérations, il a été observé que la valeur " +"effective de PA diminue généralement. Cela signifie qu’une valeur PA unique " +"n’est pas toujours optimale à 100%% pour toutes les caractéristiques et " +"qu’une valeur de compromis est généralement utilisée pour éviter de trop " +"gonfler les caractéristiques avec une vitesse d’écoulement et des " +"accélérations plus faibles, tout en évitant de créer des interstices sur les " +"traits plus rapides.\n" +"\n" +"Cette fonction vise à remédier à cette limitation en modélisant la réponse " +"du système d’extrusion de votre imprimante en fonction de la vitesse du flux " +"volumétrique et de l’accélération de l’impression. En interne, elle génère " +"un modèle ajusté qui peut extrapoler l’avance de pression nécessaire pour " +"une vitesse de débit volumétrique et une accélération données, qui est " +"ensuite émise à l’imprimante en fonction des conditions d’impression " +"actuelles.\n" +"\n" +"Lorsqu’elle est activée, la valeur de l’avance de pression ci-dessus est " +"annulée. Cependant, une valeur par défaut raisonnable est fortement " +"recommandée pour servir de solution de secours et en cas de changement " +"d’outil.\n" msgid "Adaptive pressure advance measurements (beta)" -msgstr "" +msgstr "Mesures adaptatives de l’avance de pression (beta)" msgid "" "Add sets of pressure advance (PA) values, the volumetric flow speeds and " @@ -11041,9 +11078,38 @@ msgid "" "your filament profile\n" "\n" msgstr "" +"Ajouter des séries de valeurs d'avance de pression (PA), les vitesses de " +"débit volumétrique et les accélérations auxquelles elles ont été mesurées, " +"séparées par une virgule. Un ensemble de valeurs par ligne. Par exemple\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"Comment calibrer :\n" +"1. Effectuer le test d’avance de pression pour au moins 3 vitesses par " +"valeur d’accélération. Il est recommandé d’effectuer le test pour au moins " +"la vitesse des périmètres externes, la vitesse des périmètres internes et la " +"vitesse d’impression de la caractéristique la plus rapide de votre profil " +"(en général, il s’agit du remplissage clairsemé ou plein). Ensuite, il faut " +"les exécuter aux mêmes vitesses pour les accélérations d’impression les plus " +"lentes et les plus rapides, et pas plus vite que l’accélération maximale " +"recommandée par le modeleur d’entrée de klipper.\n" +"2. Notez la valeur optimale de PA pour chaque vitesse de flux volumétrique " +"et accélération. Vous pouvez trouver le numéro de débit en sélectionnant le " +"débit dans le menu déroulant du schéma de couleurs et en déplaçant le " +"curseur horizontal sur les lignes du schéma PA. Le chiffre doit être visible " +"en bas de la page. La valeur idéale du PA devrait diminuer au fur et à " +"mesure que le débit volumétrique augmente. Si ce n’est pas le cas, vérifiez " +"que votre extrudeur fonctionne correctement. Plus vous imprimez lentement et " +"avec peu d’accélération, plus la plage des valeurs PA acceptables est " +"grande. Si aucune différence n’est visible, utilisez la valeur PA du test le " +"plus rapide.3 Entrez les triplets de valeurs PA, de débit et d’accélérations " +"dans la zone de texte ici et sauvegardez votre profil de filament.\n" msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "" +"Activation de l’avance de pression adaptative pour les surplombs (beta)" msgid "" "Enable adaptive PA for overhangs as well as when flow changes within the " @@ -11051,9 +11117,13 @@ msgid "" "set accurately, it will cause uniformity issues on the external surfaces " "before and after overhangs.\n" msgstr "" +"Activer le PA adaptatif pour les surplombs ainsi que pour les changements de " +"débit au sein d’un même élément. Il s’agit d’une option expérimentale, car " +"si le profil PA n’est pas défini avec précision, il entraînera des problèmes " +"d’uniformité sur les surfaces externes avant et après les surplombs.\n" msgid "Pressure advance for bridges" -msgstr "" +msgstr "Avance de pression pour les ponts" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" @@ -11063,6 +11133,12 @@ msgid "" "pressure drop in the nozzle when printing in the air and a lower PA helps " "counteract this." msgstr "" +"Valeur de l’avance de pression pour les ponts. Régler à 0 pour désactiver. \n" +"\n" +" Une valeur PA plus faible lors de l’impression de ponts permet de réduire " +"l’apparition d’une légère sous-extrusion immédiatement après les ponts. Ce " +"phénomène est dû à la chute de pression dans la buse lors de l’impression " +"dans l’air et une valeur PA plus faible permet d’y remédier." msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " @@ -11180,7 +11256,7 @@ msgstr "" "dans le G-code, il est donc important qu'il soit exact et précis." msgid "Pellet flow coefficient" -msgstr "" +msgstr "Coefficient d’écoulement des pellets" msgid "" "Pellet flow coefficient is emperically derived and allows for volume " @@ -11191,6 +11267,13 @@ msgid "" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" +"Le coefficient d’écoulement des pellets est dérivé de manière empirique et " +"permet de calculer le volume des imprimantes à pellets.\n" +"\n" +"En interne, il est converti en diamètre de filament. Tous les autres calculs " +"de volume restent inchangés.\n" +"\n" +"filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgid "Shrinkage" msgstr "Pourcentage de retrait" @@ -11264,19 +11347,24 @@ msgstr "" "de refroidissement. Précisez le nombre souhaité de ces mouvements." msgid "Stamping loading speed" -msgstr "" +msgstr "Vitesse de chargement du marquage" msgid "Speed used for stamping." -msgstr "" +msgstr "Vitesse utilisée pour le marquage." msgid "Stamping distance measured from the center of the cooling tube" msgstr "" +"Distance de marquage mesurée à partir du centre du tube de refroidissement" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " "individual cooling moves (\"stamping\"). This option configures how long " "this movement should be before the filament is retracted again." msgstr "" +"Si la valeur est différente de zéro, le filament est déplacé vers la buse " +"entre les différents mouvements de refroidissement («  marquage »). Cette " +"option permet de configurer la durée de ce mouvement avant que le filament " +"ne soit à nouveau rétracté." msgid "Speed of the first cooling move" msgstr "Vitesse du premier mouvement de refroidissement" @@ -11714,10 +11802,10 @@ msgstr "Ventilateur à pleine vitesse à la couche" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " "la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " @@ -12009,10 +12097,12 @@ msgid "Klipper" msgstr "Klipper" msgid "Pellet Modded Printer" -msgstr "" +msgstr "Imprimante à pellets" msgid "Enable this option if your printer uses pellets instead of filaments" msgstr "" +"Activez cette option si votre imprimante utilise des pellets au lieu de " +"filaments." msgid "Support multi bed types" msgstr "Prise en charge de plusieurs types de plateaux" @@ -12141,51 +12231,67 @@ msgid "" "\"mmu_segmented_region_interlocking_depth\"is bigger then " "\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" +"Profondeur d’imbrication d’une région segmentée. Elle sera ignorée si " +"« mmu_segmented_region_max_width » est égal à zéro ou si " +"« mmu_segmented_region_interlocking_depth » est supérieur à " +"« mmu_segmented_region_max_width ». La valeur zéro désactive cette " +"fonctionnalité." msgid "Use beam interlocking" -msgstr "" +msgstr "Utiliser l’emboîtement des poutres" msgid "" "Generate interlocking beam structure at the locations where different " "filaments touch. This improves the adhesion between filaments, especially " "models printed in different materials." msgstr "" +"Génère une structure de poutres imbriquées aux endroits où les différents " +"filaments se touchent. Cela améliore l’adhérence entre les filaments, en " +"particulier pour les modèles imprimés dans des matériaux différents." msgid "Interlocking beam width" -msgstr "" +msgstr "Largeur du faisceau d’emboîtement" msgid "The width of the interlocking structure beams." -msgstr "" +msgstr "La largeur des poutres de la structure d’emboîtement." msgid "Interlocking direction" -msgstr "" +msgstr "Sens d’emboîtement" msgid "Orientation of interlock beams." -msgstr "" +msgstr "Orientation des poutres de verrouillage." msgid "Interlocking beam layers" -msgstr "" +msgstr "Couches de poutres emboîtées" msgid "" "The height of the beams of the interlocking structure, measured in number of " "layers. Less layers is stronger, but more prone to defects." msgstr "" +"La hauteur des poutres de la structure d’emboîtement, mesurée en nombre de " +"couches. Moins il y a de couches, plus la structure est solide, mais plus " +"elle est sujette à des défauts." msgid "Interlocking depth" -msgstr "" +msgstr "Profondeur d’emboîtement" msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" +"La distance de la limite entre les filaments pour générer une structure " +"imbriquée, mesurée en cellules. Un nombre insuffisant de cellules entraîne " +"une mauvaise adhérence." msgid "Interlocking boundary avoidance" -msgstr "" +msgstr "Évitement des limites de l’imbrication" msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" +"La distance à partir de l’extérieur d’un modèle où les structures imbriquées " +"ne seront pas générées, mesurée en cellules." msgid "Ironing Type" msgstr "Type de lissage" @@ -12430,7 +12536,7 @@ msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " "layer hight when enable adaptive layer height" msgstr "" -"La plus grande hauteur de couche imprimable pour l'extrudeuse. Utilisé tp " +"La plus grande hauteur de couche imprimable pour l'extrudeur. Utilisé tp " "limite la hauteur de couche maximale lorsque la hauteur de couche adaptative " "est activée" @@ -12544,7 +12650,7 @@ msgid "" "The lowest printable layer height for extruder. Used tp limits the minimum " "layer hight when enable adaptive layer height" msgstr "" -"La hauteur de couche imprimable la plus basse pour l'extrudeuse. Utilisé tp " +"La hauteur de couche imprimable la plus basse pour l'extrudeur. Utilisé tp " "limite la hauteur de couche minimale lorsque la hauteur de couche adaptative " "est activée" @@ -12670,6 +12776,8 @@ msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing." msgstr "" +"Cette option permet d’abaisser la température des extrudeurs inactifs afin " +"d’éviter le suintement." msgid "Filename format" msgstr "Format du nom de fichier" @@ -12725,7 +12833,7 @@ msgstr "" "vitesse du pont est utilisée." msgid "Filament to print walls" -msgstr "" +msgstr "Filament pour imprimer les parois" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -12778,10 +12886,10 @@ msgstr "" "configuration Orca Slicer en lisant les variables d’environnement." msgid "Printer type" -msgstr "" +msgstr "Type d’imprimante" msgid "Type of the printer" -msgstr "" +msgstr "Type de l’imprimante" msgid "Printer notes" msgstr "Notes de l’mprimante" @@ -12790,7 +12898,7 @@ msgid "You can put your notes regarding the printer here." msgstr "Vous pouvez mettre vos notes concernant l’imprimante ici." msgid "Printer variant" -msgstr "" +msgstr "Variante de l’imprimante" msgid "Raft contact Z distance" msgstr "Distance Z de contact du radeau" @@ -12870,7 +12978,7 @@ msgid "" "Some amount of material in extruder is pulled back to avoid ooze during long " "travel. Set zero to disable retraction" msgstr "" -"Une certaine quantité de matériau dans l'extrudeuse est retirée pour éviter " +"Une certaine quantité de matériau dans l'extrudeur est retirée pour éviter " "le suintement pendant les longs trajets. Définir zéro pour désactiver la " "rétraction" @@ -12942,12 +13050,14 @@ msgid "Spiral" msgstr "Spirale" msgid "Traveling angle" -msgstr "" +msgstr "Angle de déplacement" msgid "" "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " "in Normal Lift" msgstr "" +"Angle de déplacement pour les sauts en Z en pente et en spirale. En le " +"réglant sur 90°, on obtient une levée normale." msgid "Only lift Z above" msgstr "Décalage en Z au-dessus uniquement" @@ -13022,7 +13132,7 @@ msgid "" "Speed for reloading filament into extruder. Zero means same speed with " "retraction" msgstr "" -"Vitesse de rechargement du filament dans l'extrudeuse. Zéro signifie même " +"Vitesse de rechargement du filament dans l'extrudeur. Zéro signifie même " "vitesse avec rétraction" msgid "Use firmware retraction" @@ -13377,10 +13487,10 @@ msgstr "" "remplissage plein interne" msgid "Solid infill" -msgstr "" +msgstr "Remplissage solide" msgid "Filament to print solid infill" -msgstr "" +msgstr "Filament pour l’impression de remplissage solide" msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -13456,9 +13566,12 @@ msgid "" "value is not used when 'idle_temperature' in filament settings is set to non " "zero value." msgstr "" +"Différence de température à appliquer lorsqu’un extrudeur n’est pas actif. " +"La valeur n’est pas utilisée lorsque ‘idle_temperature’ dans les paramètres " +"du filament est réglé sur une valeur non nulle." msgid "Preheat time" -msgstr "" +msgstr "Durée du préchauffage" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13466,14 +13579,22 @@ msgid "" "seconds to preheat the next tool. Orca will insert a M104 command to preheat " "the tool in advance." msgstr "" +"Pour réduire le temps d’attente après un changement d’outil, Orca peut " +"préchauffer l’outil suivant pendant que l’outil actuel est encore en cours " +"d’utilisation. Ce paramètre spécifie le temps en secondes pour préchauffer " +"l’outil suivant. Orca insère une commande M104 pour préchauffer l’outil à " +"l’avance." msgid "Preheat steps" -msgstr "" +msgstr "Étapes de préchauffage" msgid "" "Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " "other printers, please set it to 1." msgstr "" +"Insérer plusieurs commandes de préchauffage (par exemple M104.1). Uniquement " +"utile pour la Prusa XL. Pour les autres imprimantes, veuillez le régler sur " +"1." msgid "Start G-code" msgstr "G-code de démarrage" @@ -13560,8 +13681,8 @@ msgid "" "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " "close all holes in the model." msgstr "" -"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez « " -"Fermer les trous » pour fermer tous les trous du modèle." +"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez " +"« Fermer les trous » pour fermer tous les trous du modèle." msgid "Regular" msgstr "Standard" @@ -14144,7 +14265,7 @@ msgid "Prime volume" msgstr "Premier volume" msgid "The volume of material to prime extruder on tower." -msgstr "Le volume de matériau à amorcer l'extrudeuse sur la tour." +msgstr "Le volume de matériau pour amorcer l'extrudeur sur la tour." msgid "Width of prime tower" msgstr "Largeur de la tour de purge." @@ -14275,22 +14396,29 @@ msgid "Spacing of purge lines on the wipe tower." msgstr "Espacement des lignes de purge sur la tour d’essuyage." msgid "Extra flow for purging" -msgstr "" +msgstr "Débit supplémentaire pour purger" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " "purging lines thicker or narrower than they normally would be. The spacing " "is adjusted automatically." msgstr "" +"Débit supplémentaire utilisé pour les lignes de purge de la tour d’essuyage. " +"Cela rend les lignes de purge plus épaisses ou plus étroites qu’elles ne le " +"seraient normalement. L’espacement est ajusté automatiquement." msgid "Idle temperature" -msgstr "" +msgstr "Température au repos" msgid "" "Nozzle temperature when the tool is currently not used in multi-tool setups." "This is only used when 'Ooze prevention' is active in Print Settings. Set to " "0 to disable." msgstr "" +"Température de la buse lorsque l’outil n’est pas utilisé dans les " +"configurations multi-outils. Cette fonction n’est utilisée que lorsque la " +"fonction « Prévention des suintements » est activée dans les paramètres " +"d’impression. Régler à 0 pour désactiver." msgid "X-Y hole compensation" msgstr "Compensation de trou X-Y" @@ -14385,8 +14513,8 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked" msgstr "" -"L’extrusion relative est recommandée lors de l’utilisation de l’option « " -"label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " +"L’extrusion relative est recommandée lors de l’utilisation de l’option " +"« label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " "non verrouillée (mode d’extrusion absolu). La tour d’essuyage n’est " "compatible qu’avec le mode relatif. Il est recommandé sur la plupart des " "imprimantes. L’option par défaut est cochée" @@ -14651,12 +14779,14 @@ msgstr "" "actuellement prévu." msgid "Absolute E position" -msgstr "" +msgstr "Position E absolue" msgid "" "Current position of the extruder axis. Only used with absolute extruder " "addressing." msgstr "" +"Position actuelle de l’axe de l’extrudeuse. Utilisé uniquement avec " +"l’adressage absolu de de I’extrudeur." msgid "Current extruder" msgstr "Extrudeur actuel" @@ -14709,17 +14839,19 @@ msgstr "" "l’impression." msgid "Has single extruder MM priming" -msgstr "" +msgstr "Dispose d’un seul extrudeur MM d’amorçage" msgid "Are the extra multi-material priming regions used in this print?" msgstr "" +"Les régions d’amorçage multimatériaux supplémentaires sont-elles utilisées " +"dans cette impression ?" msgid "Volume per extruder" msgstr "Volume par extrudeur" msgid "Total filament volume extruded per extruder during the entire print." msgstr "" -"Volume total de filament extrudé par extrudeuse pendant toute la durée de " +"Volume total de filament extrudé par extrudeur pendant toute la durée de " "l’impression." msgid "Total toolchanges" @@ -14867,7 +14999,7 @@ msgid "" "containing one name for each extruder." msgstr "" "Noms des préréglages de filaments utilisés pour le découpage. La variable " -"est un vecteur contenant un nom pour chaque extrudeuse." +"est un vecteur contenant un nom pour chaque extrudeur." msgid "Printer preset name" msgstr "Nom du préréglage de l’imprimante" @@ -14882,12 +15014,14 @@ msgid "Name of the physical printer used for slicing." msgstr "Nom de l’imprimante physique utilisé pour la découpe." msgid "Number of extruders" -msgstr "" +msgstr "Nombre d’extrudeurs" msgid "" "Total number of extruders, regardless of whether they are used in the " "current print." msgstr "" +"Nombre total d’extrudeurs, qu’ils soient ou non utilisées dans l’impression " +"en cours." msgid "Layer number" msgstr "Numéro de couche" @@ -16039,8 +16173,8 @@ msgstr "" "Voulez-vous le réécrire ?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Nous renommerions les préréglages en « Vendor Type Serial @printer you " @@ -16984,7 +17118,7 @@ msgid "Could not connect to SimplyPrint" msgstr "Impossible de se connecter à SimplyPrint" msgid "Internal error" -msgstr "" +msgstr "Erreur interne" msgid "Unknown error" msgstr "Erreur inconnue" @@ -17016,474 +17150,6 @@ msgstr "" msgid "User cancelled." msgstr "L’utilisateur a annulé." -#: resources/data/hints.ini: [hint:Precise wall] -msgid "" -"Precise wall\n" -"Did you know that turning on precise wall can improve precision and layer " -"consistency?" -msgstr "" -"Paroi précise\n" -"Saviez-vous que l’activation de la paroi précise peut améliorer la précision " -"et l’homogénéité des couches ?" - -#: resources/data/hints.ini: [hint:Sandwich mode] -msgid "" -"Sandwich mode\n" -"Did you know that you can use sandwich mode (inner-outer-inner) to improve " -"precision and layer consistency if your model doesn't have very steep " -"overhangs?" -msgstr "" -"Mode sandwich\n" -"Saviez-vous que vous pouvez utiliser le mode sandwich (intérieur-extérieur-" -"intérieur) pour améliorer la précision et la cohérence des couches si votre " -"modèle n’a pas de porte-à-faux très prononcés ?" - -#: resources/data/hints.ini: [hint:Chamber temperature] -msgid "" -"Chamber temperature\n" -"Did you know that OrcaSlicer supports chamber temperature?" -msgstr "" -"Température du caisson\n" -"Saviez-vous qu’OrcaSlicer prend en charge la température du caisson ?" - -#: resources/data/hints.ini: [hint:Calibration] -msgid "" -"Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our " -"beloved calibration solution in OrcaSlicer." -msgstr "" -"Calibrage\n" -"Saviez-vous que le calibrage de votre imprimante peut faire des merveilles ? " -"Découvrez notre solution de calibrage bien-aimée dans OrcaSlicer." - -#: resources/data/hints.ini: [hint:Auxiliary fan] -msgid "" -"Auxiliary fan\n" -"Did you know that OrcaSlicer supports Auxiliary part cooling fan?" -msgstr "" -"Ventilateur auxiliaire\n" -"Saviez-vous qu’OrcaSlicer prend en charge le ventilateur auxiliaire de " -"refroidissement des pièces ?" - -#: resources/data/hints.ini: [hint:Air filtration] -msgid "" -"Air filtration/Exhaust Fan\n" -"Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" -msgstr "" -"Filtration de l’air/ventilateur d’extraction\n" -"Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/le " -"ventilateur d’extraction ?" - -#: resources/data/hints.ini: [hint:G-code window] -msgid "" -"G-code window\n" -"You can turn on/off the G-code window by pressing the C key." -msgstr "" -"Fenêtre de G-code\n" -"Vous pouvez activer/désactiver la fenêtre G-code en appuyant sur la touche " -"C." - -#: resources/data/hints.ini: [hint:Switch workspaces] -msgid "" -"Switch workspaces\n" -"You can switch between Prepare and Preview workspaces by " -"pressing the Tab key." -msgstr "" -"Changer les espaces de travail\n" -"Vous pouvez alterner entre l’espace de travail Préparer et Aperçu en appuyant sur la touche Tab." - -#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] -msgid "" -"How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " -"3D scene operations." -msgstr "" -"Comment utiliser les raccourcis clavier\n" -"Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " -"d’opérations sur les scènes 3D." - -#: resources/data/hints.ini: [hint:Reverse on odd] -msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" -msgstr "" -"Parois inversées sur couches impaires\n" -"Saviez-vous que la fonction Parois inversées sur couches impaires " -"peut améliorer de manière significative la qualité de la surface de vos " -"surplombs ?" - -#: resources/data/hints.ini: [hint:Cut Tool] -msgid "" -"Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" -msgstr "" -"Outil de découpe\n" -"Saviez-vous que vous pouvez découper un modèle à n'importe quel angle et " -"dans n'importe quelle position avec l'outil de découpe ?" - -#: resources/data/hints.ini: [hint:Fix Model] -msgid "" -"Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -"problems on the Windows system?" -msgstr "" -"Réparer un modèle\n" -"Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " -"nombreux problèmes de découpage sur le système Windows ?" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" -"Timelapse\n" -"Saviez-vous que vous pouvez générer une vidéo en timelapse à chaque " -"impression ?" - -#: resources/data/hints.ini: [hint:Auto-Arrange] -msgid "" -"Auto-Arrange\n" -"Did you know that you can auto-arrange all objects in your project?" -msgstr "" -"Agencement Automatique\n" -"Saviez-vous que vous pouvez agencement automatiquement tous les objets de " -"votre projet ?" - -#: resources/data/hints.ini: [hint:Auto-Orient] -msgid "" -"Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" -msgstr "" -"Orientation Automatique\n" -"Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " -"optimale pour l'impression d'un simple clic ?" - -#: resources/data/hints.ini: [hint:Lay on Face] -msgid "" -"Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." -msgstr "" -"Poser sur une face\n" -"Saviez-vous qu'il est possible d'orienter rapidement un modèle de manière à " -"ce que l'une de ses faces repose sur le plateau d'impression ? Sélectionnez " -"la fonction « Placer sur la face » ou appuyez sur la touche F." - -#: resources/data/hints.ini: [hint:Object List] -msgid "" -"Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" -msgstr "" -"Liste d'objets\n" -"Saviez-vous que vous pouvez afficher tous les objets/pièces dans une liste " -"et modifier les paramètres de chaque objet/pièce ?" - -#: resources/data/hints.ini: [hint:Search Functionality] -msgid "" -"Search Functionality\n" -"Did you know that you use the Search tool to quickly find a specific Orca " -"Slicer setting?" -msgstr "" -"Fonctionnalité de recherche\n" -"Saviez-vous que vous pouvez utiliser l’outil de recherche pour trouver " -"rapidement un paramètre spécifique de l’Orca Slicer ?" - -#: resources/data/hints.ini: [hint:Simplify Model] -msgid "" -"Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the " -"Simplify mesh feature? Right-click the model and select Simplify model." -msgstr "" -"Simplifier le modèle\n" -"Saviez-vous que vous pouviez réduire le nombre de triangles dans un maillage " -"à l’aide de la fonction Simplifier le maillage ? Cliquez avec le bouton " -"droit de la souris sur le modèle et sélectionnez Simplifier le modèle." - -#: resources/data/hints.ini: [hint:Slicing Parameter Table] -msgid "" -"Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" -msgstr "" -"Tableau des paramètres de découpe\n" -"Saviez-vous que vous pouvez afficher tous les objets/pièces sur un tableau " -"et modifier les paramètres de chaque objet/pièce ?" - -#: resources/data/hints.ini: [hint:Split to Objects/Parts] -msgid "" -"Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" -msgstr "" -"Séparer en objets/parties\n" -"Saviez-vous que vous pouvez séparer un gros objet en petits objets pour les " -"colorier ou les imprimer facilement ?" - -#: resources/data/hints.ini: [hint:Subtract a Part] -msgid "" -"Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer." -msgstr "" -"Soustraire une pièce\n" -"Saviez-vous que vous pouviez soustraire un maillage d’un autre à l’aide du " -"modificateur de partie négative ? De cette façon, vous pouvez, par exemple, " -"créer des trous facilement redimensionnables directement dans Orca Slicer." - -#: resources/data/hints.ini: [hint:STEP] -msgid "" -"STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file " -"instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" -msgstr "" -"STEP\n" -"Saviez-vous que vous pouvez améliorer votre qualité d'impression en " -"découpant un fichier .step au lieu d'un .stl ?\n" -"Orca Slicer prend en charge le découpage des fichiers .step, offrant des " -"résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" - -#: resources/data/hints.ini: [hint:Z seam location] -msgid "" -"Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" -msgstr "" -"Emplacement de la couture Z\n" -"Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, et " -"même la peindre manuelle sur votre impression pour le placer dans un endroit " -"moins visible ? Cela améliore l'aspect général de votre modèle. Jetez-y un " -"coup d'œil !" - -#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] -msgid "" -"Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." -msgstr "" -"Réglage fin du débit\n" -"Saviez-vous que le débit peut être réglé avec précision pour obtenir des " -"impressions encore plus belles ? En fonction du matériau, vous pouvez " -"améliorer la finition générale du modèle imprimé en procédant à un réglage " -"fin." - -#: resources/data/hints.ini: [hint:Split your prints into plates] -msgid "" -"Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." -msgstr "" -"Divisez vos impressions en plateaux\n" -"Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " -"pièces en plateaux individuels prêts à être imprimés ? Cela simplifie le " -"processus de suivi de toutes les pièces." - -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] -msgid "" -"Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" -msgstr "" -"Accélérez votre impression grâce à la Hauteur de Couche Adaptative\n" -"Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " -"utilisant l'option Adaptive Layer Height ? Jetez-y un coup d'œil !" - -#: resources/data/hints.ini: [hint:Support painting] -msgid "" -"Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." -msgstr "" -"Peinture de support\n" -"Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " -"caractéristique permet de placer facilement le matériau de support " -"uniquement sur les sections du modèle qui en ont réellement besoin." - -#: resources/data/hints.ini: [hint:Different types of supports] -msgid "" -"Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" -msgstr "" -"Différents types de supports\n" -"Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? Les " -"supports arborescents fonctionnent parfaitement pour les modèles organiques " -"tout en économisant du filament et en améliorant la vitesse d'impression. " -"Découvrez-les !" - -#: resources/data/hints.ini: [hint:Printing Silk Filament] -msgid "" -"Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." -msgstr "" -"Impression de filament Soie\n" -"Saviez-vous que le filament soie nécessite une attention particulière pour " -"une impression réussie ? Une température plus élevée et une vitesse plus " -"faible sont toujours recommandées pour obtenir les meilleurs résultats." - -#: resources/data/hints.ini: [hint:Brim for better adhesion] -msgid "" -"Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" -msgstr "" -"Bordure pour une meilleure adhésion\n" -"Saviez-vous que lorsque les modèles imprimés ont une faible interface de " -"contact avec la surface d'impression, il est recommandé d'utiliser une " -"bordure ?" - -#: resources/data/hints.ini: [hint:Set parameters for multiple objects] -msgid "" -"Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" -msgstr "" -"Définir les paramètres de plusieurs objets\n" -"Saviez-vous que vous pouvez définir des paramètres de découpe pour tous les " -"objets sélectionnés en une seule fois ?" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -msgstr "" -"Empiler des objets\n" -"Saviez-vous que vous pouvez empiler des objets pour n'en former qu'un?" - -#: resources/data/hints.ini: [hint:Flush into support/objects/infill] -msgid "" -"Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" -msgstr "" -"Purger dans les supports/les objets/le remplissage\n" -"Saviez-vous que vous pouvez réduire le filament gaspillé en le purgeant dans " -"les supports/les objets/le remplissage lors des changements de filament ?" - -#: resources/data/hints.ini: [hint:Improve strength] -msgid "" -"Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" -msgstr "" -"Améliorer la solidité\n" -"Saviez-vous que vous pouvez définir un plus grand nombre de périmètre et une " -"densité de remplissage plus élevée pour améliorer la résistance du modèle ?" - -#: resources/data/hints.ini: [hint:When need to print with the printer door -#: opened] -msgid "" -"When need to print with the printer door opened\n" -"Did you know that opening the printer door can reduce the probability of " -"extruder/hotend clogging when printing lower temperature filament with a " -"higher enclosure temperature. More info about this in the Wiki." -msgstr "" -"Quand il faut imprimer avec la porte de l’imprimante ouverte\n" -"Saviez-vous que l’ouverture de la porte de l’imprimante peut réduire la " -"probabilité de blocage de l’extrudeuse/du réchauffeur lors de l’impression " -"de filament à basse température avec une température de boîtier plus élevée. " -"Plus d’informations à ce sujet dans le Wiki." - -#: resources/data/hints.ini: [hint:Avoid warping] -msgid "" -"Avoid warping\n" -"Did you know that when printing materials that are prone to warping such as " -"ABS, appropriately increasing the heatbed temperature can reduce the " -"probability of warping." -msgstr "" -"Éviter la déformation\n" -"Saviez-vous que lors de l’impression de matériaux susceptibles de se " -"déformer, tels que l’ABS, une augmentation appropriée de la température du " -"plateau chauffant peut réduire la probabilité de déformation." - -#~ msgid "up to" -#~ msgstr "jusqu'à" - -#~ msgid "above" -#~ msgstr "au-dessus" - -#~ msgid "from" -#~ msgstr "de" - -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "" -#~ "Changer la langue de l'application pendant que certains préréglages sont " -#~ "modifiés." - -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Maj+G" - -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Maj+G" - -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+n'importe quelle flèche" - -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Bouton gauche de la souris" - -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Bouton gauche de la souris" - -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+n'importe quelle flèche" - -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Bouton gauche de la souris" - -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Bouton gauche de la souris" - -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Molette de la souris" - -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Molette de la souris" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Molette de la souris" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Molette de la souris" - -#~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." -#~ msgstr "" -#~ "L’utilisation de diamètres de buses et de filaments différents n’est pas " -#~ "autorisée lorsque l’option « prime tower » est activée." - -#~ msgid "" -#~ "Ooze prevention is currently not supported with the prime tower enabled." -#~ msgstr "" -#~ "La prévention des dépôts de boue n’est actuellement pas prise en charge " -#~ "lorsque la tour principale est activée." - -#~ msgid "" -#~ "Interlocking depth of a segmented region. Zero disables this feature." -#~ msgstr "" -#~ "Profondeur d’imbrication d’une région segmentée. Zéro désactive cette " -#~ "fonction." - -#~ msgid "Wipe tower extruder" -#~ msgstr "Extrudeur de tour d’essuyage" - #~ msgid "Current association: " #~ msgstr "Association actuelle : " @@ -17523,6 +17189,371 @@ msgstr "" #~ msgid "Internel error" #~ msgstr "Erreur interne" +#~ msgid "" +#~ "Precise wall\n" +#~ "Did you know that turning on precise wall can improve precision and layer " +#~ "consistency?" +#~ msgstr "" +#~ "Paroi précise\n" +#~ "Saviez-vous que l’activation de la paroi précise peut améliorer la " +#~ "précision et l’homogénéité des couches ?" + +#~ msgid "" +#~ "Sandwich mode\n" +#~ "Did you know that you can use sandwich mode (inner-outer-inner) to " +#~ "improve precision and layer consistency if your model doesn't have very " +#~ "steep overhangs?" +#~ msgstr "" +#~ "Mode sandwich\n" +#~ "Saviez-vous que vous pouvez utiliser le mode sandwich (intérieur-" +#~ "extérieur-intérieur) pour améliorer la précision et la cohérence des " +#~ "couches si votre modèle n’a pas de porte-à-faux très prononcés ?" + +#~ msgid "" +#~ "Chamber temperature\n" +#~ "Did you know that OrcaSlicer supports chamber temperature?" +#~ msgstr "" +#~ "Température du caisson\n" +#~ "Saviez-vous qu’OrcaSlicer prend en charge la température du caisson ?" + +#~ msgid "" +#~ "Calibration\n" +#~ "Did you know that calibrating your printer can do wonders? Check out our " +#~ "beloved calibration solution in OrcaSlicer." +#~ msgstr "" +#~ "Calibrage\n" +#~ "Saviez-vous que le calibrage de votre imprimante peut faire des " +#~ "merveilles ? Découvrez notre solution de calibrage bien-aimée dans " +#~ "OrcaSlicer." + +#~ msgid "" +#~ "Auxiliary fan\n" +#~ "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" +#~ msgstr "" +#~ "Ventilateur auxiliaire\n" +#~ "Saviez-vous qu’OrcaSlicer prend en charge le ventilateur auxiliaire de " +#~ "refroidissement des pièces ?" + +#~ msgid "" +#~ "Air filtration/Exhaust Fan\n" +#~ "Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" +#~ msgstr "" +#~ "Filtration de l’air/ventilateur d’extraction\n" +#~ "Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/" +#~ "le ventilateur d’extraction ?" + +#~ msgid "" +#~ "G-code window\n" +#~ "You can turn on/off the G-code window by pressing the C key." +#~ msgstr "" +#~ "Fenêtre de G-code\n" +#~ "Vous pouvez activer/désactiver la fenêtre G-code en appuyant sur la " +#~ "touche C." + +#~ msgid "" +#~ "Switch workspaces\n" +#~ "You can switch between Prepare and Preview workspaces by " +#~ "pressing the Tab key." +#~ msgstr "" +#~ "Changer les espaces de travail\n" +#~ "Vous pouvez alterner entre l’espace de travail Préparer et " +#~ "Aperçu en appuyant sur la touche Tab." + +#~ msgid "" +#~ "How to use keyboard shortcuts\n" +#~ "Did you know that Orca Slicer offers a wide range of keyboard shortcuts " +#~ "and 3D scene operations." +#~ msgstr "" +#~ "Comment utiliser les raccourcis clavier\n" +#~ "Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " +#~ "d’opérations sur les scènes 3D." + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Parois inversées sur couches impaires\n" +#~ "Saviez-vous que la fonction Parois inversées sur couches impaires " +#~ "peut améliorer de manière significative la qualité de la surface de vos " +#~ "surplombs ?" + +#~ msgid "" +#~ "Cut Tool\n" +#~ "Did you know that you can cut a model at any angle and position with the " +#~ "cutting tool?" +#~ msgstr "" +#~ "Outil de découpe\n" +#~ "Saviez-vous que vous pouvez découper un modèle à n'importe quel angle et " +#~ "dans n'importe quelle position avec l'outil de découpe ?" + +#~ msgid "" +#~ "Fix Model\n" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems on the Windows system?" +#~ msgstr "" +#~ "Réparer un modèle\n" +#~ "Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " +#~ "nombreux problèmes de découpage sur le système Windows ?" + +#~ msgid "" +#~ "Timelapse\n" +#~ "Did you know that you can generate a timelapse video during each print?" +#~ msgstr "" +#~ "Timelapse\n" +#~ "Saviez-vous que vous pouvez générer une vidéo en timelapse à chaque " +#~ "impression ?" + +#~ msgid "" +#~ "Auto-Arrange\n" +#~ "Did you know that you can auto-arrange all objects in your project?" +#~ msgstr "" +#~ "Agencement Automatique\n" +#~ "Saviez-vous que vous pouvez agencement automatiquement tous les objets de " +#~ "votre projet ?" + +#~ msgid "" +#~ "Auto-Orient\n" +#~ "Did you know that you can rotate objects to an optimal orientation for " +#~ "printing by a simple click?" +#~ msgstr "" +#~ "Orientation Automatique\n" +#~ "Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " +#~ "optimale pour l'impression d'un simple clic ?" + +#~ msgid "" +#~ "Lay on Face\n" +#~ "Did you know that you can quickly orient a model so that one of its faces " +#~ "sits on the print bed? Select the \"Place on face\" function or press the " +#~ "F key." +#~ msgstr "" +#~ "Poser sur une face\n" +#~ "Saviez-vous qu'il est possible d'orienter rapidement un modèle de manière " +#~ "à ce que l'une de ses faces repose sur le plateau d'impression ? " +#~ "Sélectionnez la fonction « Placer sur la face » ou appuyez sur la touche " +#~ "F." + +#~ msgid "" +#~ "Object List\n" +#~ "Did you know that you can view all objects/parts in a list and change " +#~ "settings for each object/part?" +#~ msgstr "" +#~ "Liste d'objets\n" +#~ "Saviez-vous que vous pouvez afficher tous les objets/pièces dans une " +#~ "liste et modifier les paramètres de chaque objet/pièce ?" + +#~ msgid "" +#~ "Search Functionality\n" +#~ "Did you know that you use the Search tool to quickly find a specific Orca " +#~ "Slicer setting?" +#~ msgstr "" +#~ "Fonctionnalité de recherche\n" +#~ "Saviez-vous que vous pouvez utiliser l’outil de recherche pour trouver " +#~ "rapidement un paramètre spécifique de l’Orca Slicer ?" + +#~ msgid "" +#~ "Simplify Model\n" +#~ "Did you know that you can reduce the number of triangles in a mesh using " +#~ "the Simplify mesh feature? Right-click the model and select Simplify " +#~ "model." +#~ msgstr "" +#~ "Simplifier le modèle\n" +#~ "Saviez-vous que vous pouviez réduire le nombre de triangles dans un " +#~ "maillage à l’aide de la fonction Simplifier le maillage ? Cliquez avec le " +#~ "bouton droit de la souris sur le modèle et sélectionnez Simplifier le " +#~ "modèle." + +#~ msgid "" +#~ "Slicing Parameter Table\n" +#~ "Did you know that you can view all objects/parts on a table and change " +#~ "settings for each object/part?" +#~ msgstr "" +#~ "Tableau des paramètres de découpe\n" +#~ "Saviez-vous que vous pouvez afficher tous les objets/pièces sur un " +#~ "tableau et modifier les paramètres de chaque objet/pièce ?" + +#~ msgid "" +#~ "Split to Objects/Parts\n" +#~ "Did you know that you can split a big object into small ones for easy " +#~ "colorizing or printing?" +#~ msgstr "" +#~ "Séparer en objets/parties\n" +#~ "Saviez-vous que vous pouvez séparer un gros objet en petits objets pour " +#~ "les colorier ou les imprimer facilement ?" + +#~ msgid "" +#~ "Subtract a Part\n" +#~ "Did you know that you can subtract one mesh from another using the " +#~ "Negative part modifier? That way you can, for example, create easily " +#~ "resizable holes directly in Orca Slicer." +#~ msgstr "" +#~ "Soustraire une pièce\n" +#~ "Saviez-vous que vous pouviez soustraire un maillage d’un autre à l’aide " +#~ "du modificateur de partie négative ? De cette façon, vous pouvez, par " +#~ "exemple, créer des trous facilement redimensionnables directement dans " +#~ "Orca Slicer." + +#~ msgid "" +#~ "STEP\n" +#~ "Did you know that you can improve your print quality by slicing a STEP " +#~ "file instead of an STL?\n" +#~ "Orca Slicer supports slicing STEP files, providing smoother results than " +#~ "a lower resolution STL. Give it a try!" +#~ msgstr "" +#~ "STEP\n" +#~ "Saviez-vous que vous pouvez améliorer votre qualité d'impression en " +#~ "découpant un fichier .step au lieu d'un .stl ?\n" +#~ "Orca Slicer prend en charge le découpage des fichiers .step, offrant des " +#~ "résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" + +#~ msgid "" +#~ "Z seam location\n" +#~ "Did you know that you can customize the location of the Z seam, and even " +#~ "paint it on your print, to have it in a less visible location? This " +#~ "improves the overall look of your model. Check it out!" +#~ msgstr "" +#~ "Emplacement de la couture Z\n" +#~ "Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, " +#~ "et même la peindre manuelle sur votre impression pour le placer dans un " +#~ "endroit moins visible ? Cela améliore l'aspect général de votre modèle. " +#~ "Jetez-y un coup d'œil !" + +#~ msgid "" +#~ "Fine-tuning for flow rate\n" +#~ "Did you know that flow rate can be fine-tuned for even better-looking " +#~ "prints? Depending on the material, you can improve the overall finish of " +#~ "the printed model by doing some fine-tuning." +#~ msgstr "" +#~ "Réglage fin du débit\n" +#~ "Saviez-vous que le débit peut être réglé avec précision pour obtenir des " +#~ "impressions encore plus belles ? En fonction du matériau, vous pouvez " +#~ "améliorer la finition générale du modèle imprimé en procédant à un " +#~ "réglage fin." + +#~ msgid "" +#~ "Split your prints into plates\n" +#~ "Did you know that you can split a model that has a lot of parts into " +#~ "individual plates ready to print? This will simplify the process of " +#~ "keeping track of all the parts." +#~ msgstr "" +#~ "Divisez vos impressions en plateaux\n" +#~ "Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " +#~ "pièces en plateaux individuels prêts à être imprimés ? Cela simplifie le " +#~ "processus de suivi de toutes les pièces." + +#~ msgid "" +#~ "Speed up your print with Adaptive Layer Height\n" +#~ "Did you know that you can print a model even faster, by using the " +#~ "Adaptive Layer Height option? Check it out!" +#~ msgstr "" +#~ "Accélérez votre impression grâce à la Hauteur de Couche Adaptative\n" +#~ "Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " +#~ "utilisant l'option Adaptive Layer Height ? Jetez-y un coup d'œil !" + +#~ msgid "" +#~ "Support painting\n" +#~ "Did you know that you can paint the location of your supports? This " +#~ "feature makes it easy to place the support material only on the sections " +#~ "of the model that actually need it." +#~ msgstr "" +#~ "Peinture de support\n" +#~ "Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " +#~ "caractéristique permet de placer facilement le matériau de support " +#~ "uniquement sur les sections du modèle qui en ont réellement besoin." + +#~ msgid "" +#~ "Different types of supports\n" +#~ "Did you know that you can choose from multiple types of supports? Tree " +#~ "supports work great for organic models, while saving filament and " +#~ "improving print speed. Check them out!" +#~ msgstr "" +#~ "Différents types de supports\n" +#~ "Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? " +#~ "Les supports arborescents fonctionnent parfaitement pour les modèles " +#~ "organiques tout en économisant du filament et en améliorant la vitesse " +#~ "d'impression. Découvrez-les !" + +#~ msgid "" +#~ "Printing Silk Filament\n" +#~ "Did you know that Silk filament needs special consideration to print it " +#~ "successfully? Higher temperature and lower speed are always recommended " +#~ "for the best results." +#~ msgstr "" +#~ "Impression de filament Soie\n" +#~ "Saviez-vous que le filament soie nécessite une attention particulière " +#~ "pour une impression réussie ? Une température plus élevée et une vitesse " +#~ "plus faible sont toujours recommandées pour obtenir les meilleurs " +#~ "résultats." + +#~ msgid "" +#~ "Brim for better adhesion\n" +#~ "Did you know that when printing models have a small contact interface " +#~ "with the printing surface, it's recommended to use a brim?" +#~ msgstr "" +#~ "Bordure pour une meilleure adhésion\n" +#~ "Saviez-vous que lorsque les modèles imprimés ont une faible interface de " +#~ "contact avec la surface d'impression, il est recommandé d'utiliser une " +#~ "bordure ?" + +#~ msgid "" +#~ "Set parameters for multiple objects\n" +#~ "Did you know that you can set slicing parameters for all selected objects " +#~ "at one time?" +#~ msgstr "" +#~ "Définir les paramètres de plusieurs objets\n" +#~ "Saviez-vous que vous pouvez définir des paramètres de découpe pour tous " +#~ "les objets sélectionnés en une seule fois ?" + +#~ msgid "" +#~ "Stack objects\n" +#~ "Did you know that you can stack objects as a whole one?" +#~ msgstr "" +#~ "Empiler des objets\n" +#~ "Saviez-vous que vous pouvez empiler des objets pour n'en former qu'un?" + +#~ msgid "" +#~ "Flush into support/objects/infill\n" +#~ "Did you know that you can save the wasted filament by flushing them into " +#~ "support/objects/infill during filament change?" +#~ msgstr "" +#~ "Purger dans les supports/les objets/le remplissage\n" +#~ "Saviez-vous que vous pouvez réduire le filament gaspillé en le purgeant " +#~ "dans les supports/les objets/le remplissage lors des changements de " +#~ "filament ?" + +#~ msgid "" +#~ "Improve strength\n" +#~ "Did you know that you can use more wall loops and higher sparse infill " +#~ "density to improve the strength of the model?" +#~ msgstr "" +#~ "Améliorer la solidité\n" +#~ "Saviez-vous que vous pouvez définir un plus grand nombre de périmètre et " +#~ "une densité de remplissage plus élevée pour améliorer la résistance du " +#~ "modèle ?" + +#~ msgid "" +#~ "When need to print with the printer door opened\n" +#~ "Did you know that opening the printer door can reduce the probability of " +#~ "extruder/hotend clogging when printing lower temperature filament with a " +#~ "higher enclosure temperature. More info about this in the Wiki." +#~ msgstr "" +#~ "Quand il faut imprimer avec la porte de l’imprimante ouverte\n" +#~ "Saviez-vous que l’ouverture de la porte de l’imprimante peut réduire la " +#~ "probabilité de blocage de l’extrudeuse/du réchauffeur lors de " +#~ "l’impression de filament à basse température avec une température de " +#~ "boîtier plus élevée. Plus d’informations à ce sujet dans le Wiki." + +#~ msgid "" +#~ "Avoid warping\n" +#~ "Did you know that when printing materials that are prone to warping such " +#~ "as ABS, appropriately increasing the heatbed temperature can reduce the " +#~ "probability of warping." +#~ msgstr "" +#~ "Éviter la déformation\n" +#~ "Saviez-vous que lors de l’impression de matériaux susceptibles de se " +#~ "déformer, tels que l’ABS, une augmentation appropriée de la température " +#~ "du plateau chauffant peut réduire la probabilité de déformation." + #~ msgid "" #~ "File size exceeds the 100MB upload limit. Please upload your file through " #~ "the panel." @@ -18071,8 +18102,8 @@ msgstr "" #~ "thickness (top+bottom solid layers)" #~ msgstr "" #~ "Ajoutez du remplissage solide à proximité des surfaces inclinées pour " -#~ "garantir l'épaisseur verticale de la coque (couches solides supérieure" -#~ "+inférieure)." +#~ "garantir l'épaisseur verticale de la coque (couches solides " +#~ "supérieure+inférieure)." #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Réduire davantage le remplissage solide des parois (expérimental)" From ebcdd28e28b9420809f37af3c8f84abbdb6cba83 Mon Sep 17 00:00:00 2001 From: Duan Gauche Date: Sun, 11 Aug 2024 17:03:02 +0200 Subject: [PATCH 115/151] Styrene Butadiene Styrene (SBS) - Template and profiles for Bambu (#6278) * Added SBS to filament_info.json * Added SBS to Print.cpp * added SBS to PrintConfig.cpp * Added SBS to BBL * Added SBS Template and also specified SBS as type in fdm_filament_sbs.json * Updated settings for SBS in filament_sbs_template.json * Applied SBS settings to fdm_filament_sbs.json * added settings to Generic SBS @base.json --------- Co-authored-by: Duan Gauche Co-authored-by: SoftFever --- resources/info/filament_info.json | 3 +- resources/profiles/BBL.json | 12 ++ .../BBL/filament/Generic SBS @base.json | 17 ++ .../profiles/BBL/filament/Generic SBS.json | 25 +++ .../BBL/filament/fdm_filament_sbs.json | 85 +++++++++ .../filament/filament_sbs_template.json | 168 ++++++++++++++++++ src/libslic3r/Print.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 1 + 8 files changed, 311 insertions(+), 2 deletions(-) create mode 100644 resources/profiles/BBL/filament/Generic SBS @base.json create mode 100644 resources/profiles/BBL/filament/Generic SBS.json create mode 100644 resources/profiles/BBL/filament/fdm_filament_sbs.json create mode 100644 resources/profiles_template/Template/filament/filament_sbs_template.json diff --git a/resources/info/filament_info.json b/resources/info/filament_info.json index 8472e66462..158d78654a 100644 --- a/resources/info/filament_info.json +++ b/resources/info/filament_info.json @@ -22,7 +22,8 @@ "PLA-CF", "PLA-AERO", "PVA", - "BVOH" + "BVOH", + "SBS" ], "high_low_compatible_filament":[ "HIPS", diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 3cd51ed347..e37da6dc42 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -673,6 +673,10 @@ "name": "fdm_filament_bvoh", "sub_path": "filament/fdm_filament_bvoh.json" }, + { + "name": "fdm_filament_sbs", + "sub_path": "filament/fdm_filament_sbs.json" + }, { "name": "Bambu PLA Matte @base", "sub_path": "filament/Bambu PLA Matte @base.json" @@ -733,6 +737,10 @@ "name": "Generic PLA-CF @base", "sub_path": "filament/Generic PLA-CF @base.json" }, + { + "name": "Generic SBS @base", + "sub_path": "filament/Generic SBS @base.json" + }, { "name": "Bambu PLA-CF @base", "sub_path": "filament/Bambu PLA-CF @base.json" @@ -1389,6 +1397,10 @@ "name": "Generic PLA-CF @BBL A1", "sub_path": "filament/Generic PLA-CF @BBL A1.json" }, + { + "name": "Generic SBS", + "sub_path": "filament/Generic SBS.json" + }, { "name": "Bambu PLA-CF @BBL X1C 0.8 nozzle", "sub_path": "filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json" diff --git a/resources/profiles/BBL/filament/Generic SBS @base.json b/resources/profiles/BBL/filament/Generic SBS @base.json new file mode 100644 index 0000000000..dffe348812 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic SBS @base.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic SBS @base", + "inherits": "fdm_filament_sbs", + "from": "system", + "filament_id": "GFL99", + "instantiation": "false", + "filament_flow_ratio": [ + "0.98" + ], + "slow_down_layer_time": [ + "4" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif};Prevent PLA from jamming\n\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic SBS.json b/resources/profiles/BBL/filament/Generic SBS.json new file mode 100644 index 0000000000..4309d0407a --- /dev/null +++ b/resources/profiles/BBL/filament/Generic SBS.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Generic SBS", + "inherits": "Generic SBS @base", + "from": "system", + "setting_id": "GFSL99", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1E 0.4 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_sbs.json b/resources/profiles/BBL/filament/fdm_filament_sbs.json new file mode 100644 index 0000000000..c73ab5bb95 --- /dev/null +++ b/resources/profiles/BBL/filament/fdm_filament_sbs.json @@ -0,0 +1,85 @@ +{ + "type": "filament", + "name": "fdm_filament_sbs", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_type": [ + "SBS" + ], + "filament_density": [ + "1.02" + ], + "filament_cost": [ + "15" + ], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ + "70" + ], + "hot_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "nozzle_temperature": [ + "235" + ], + "temperature_vitrification": [ + "70" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles_template/Template/filament/filament_sbs_template.json b/resources/profiles_template/Template/filament/filament_sbs_template.json new file mode 100644 index 0000000000..2cc7bd22c6 --- /dev/null +++ b/resources/profiles_template/Template/filament/filament_sbs_template.json @@ -0,0 +1,168 @@ +{ + "type": "filament", + "name": "Generic SBS template", + "instantiation": "false", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "40" + ], + "chamber_temperatures": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "70" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "70" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "0" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.02" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "SBS" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "5705" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "235" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "compatible_printers": [], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \nM106 P3 S0\n" + ] +} \ No newline at end of file diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 702214eca5..df7f01dbd2 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2463,7 +2463,7 @@ FilamentTempType Print::get_filament_temp_type(const std::string& filament_type) in.close(); BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse " << file_path.string() << " got a nlohmann::detail::parse_error, reason = " << err.what(); filament_temp_type_map[HighTempFilamentStr] = {"ABS","ASA","PC","PA","PA-CF","PA-GF","PA6-CF","PET-CF","PPS","PPS-CF","PPA-GF","PPA-CF","ABS-Aero","ABS-GF"}; - filament_temp_type_map[LowTempFilamentStr] = {"PLA","TPU","PLA-CF","PLA-AERO","PVA","BVOH"}; + filament_temp_type_map[LowTempFilamentStr] = {"PLA","TPU","PLA-CF","PLA-AERO","PVA","BVOH","SBS"}; filament_temp_type_map[HighLowCompatibleFilamentStr] = { "HIPS","PETG","PCTG","PE","PP","EVA","PE-CF","PP-CF","PP-GF","PHA"}; } } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 773966804f..0d2ba95692 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2070,6 +2070,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("PPS-CF"); def->enum_values.push_back("PVA"); def->enum_values.push_back("PVB"); + def->enum_values.push_back("SBS"); def->enum_values.push_back("TPU"); def->mode = comSimple; def->set_default_value(new ConfigOptionStrings { "PLA" }); From 0214bd527034aac29d7af2bffbeeb24e97b71789 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Sun, 11 Aug 2024 18:23:20 +0300 Subject: [PATCH 116/151] Stagger concentric infill seams. (#6184) --- src/libslic3r/Fill/FillConcentric.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Fill/FillConcentric.cpp b/src/libslic3r/Fill/FillConcentric.cpp index 93a54a0739..f7fe82ad5f 100644 --- a/src/libslic3r/Fill/FillConcentric.cpp +++ b/src/libslic3r/Fill/FillConcentric.cpp @@ -9,6 +9,20 @@ namespace Slic3r { +template +int stagger_seam_index(int ind, LINE_T line) +{ + Point const *point = &line.points[ind]; + double dist = 0; + while (dist < 0.5 / SCALING_FACTOR) { + ind = (ind + 1) % line.points.size(); + Point const &next = line.points[ind]; + dist += point->distance_to(next); + point = &next; + }; + return ind; +} + void FillConcentric::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, @@ -42,7 +56,7 @@ void FillConcentric::_fill_surface_single( size_t iPathFirst = polylines_out.size(); Point last_pos(0, 0); for (const Polygon &loop : loops) { - polylines_out.emplace_back(loop.split_at_index(last_pos.nearest_point_index(loop.points))); + polylines_out.emplace_back(loop.split_at_index(stagger_seam_index(last_pos.nearest_point_index(loop.points), loop))); last_pos = polylines_out.back().last_point(); } @@ -110,7 +124,7 @@ void FillConcentric::_fill_surface_single(const FillParams& params, ThickPolyline thick_polyline = Arachne::to_thick_polyline(*extrusion); if (extrusion->is_closed) - thick_polyline.start_at_index(last_pos.nearest_point_index(thick_polyline.points)); + thick_polyline.start_at_index(stagger_seam_index(last_pos.nearest_point_index(thick_polyline.points), thick_polyline)); thick_polylines_out.emplace_back(std::move(thick_polyline)); last_pos = thick_polylines_out.back().last_point(); } From ab3d04312bf1c5bc17fe73cbaf32439ae203e8ab Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 12 Aug 2024 00:00:20 +0800 Subject: [PATCH 117/151] Revert "Fix Compile Warnings (#5963)" This reverts commit b83e16dbddecc8cb80d7b58f82476c8aec825b11. Found regressions like auto orientation didn't work anymore after this change, revert it --- src/BaseException.cpp | 2 +- src/OrcaSlicer.cpp | 29 ++++--- src/admesh/connect.cpp | 2 +- src/admesh/normals.cpp | 2 +- src/imgui/imgui_widgets.cpp | 10 ++- src/imguizmo/ImGuizmo.cpp | 2 + .../include/libnest2d/geometry_traits_nfp.hpp | 1 + .../include/libnest2d/placers/nfpplacer.hpp | 1 + src/libslic3r/AppConfig.cpp | 2 + .../BeadingStrategy/BeadingStrategy.cpp | 1 + .../BeadingStrategyFactory.cpp | 1 + .../RedistributeBeadingStrategy.cpp | 1 + .../Arachne/SkeletalTrapezoidation.cpp | 3 +- .../Arachne/SkeletalTrapezoidationGraph.cpp | 3 + src/libslic3r/Arachne/utils/ExtrusionLine.cpp | 1 + src/libslic3r/Arachne/utils/SquareGrid.cpp | 1 + src/libslic3r/Arrange.cpp | 12 ++- src/libslic3r/BlacklistedLibraryCheck.cpp | 1 + src/libslic3r/Brim.cpp | 3 + src/libslic3r/CSGMesh/ModelToCSGMesh.hpp | 2 +- src/libslic3r/Config.cpp | 3 +- src/libslic3r/ExtrusionEntityCollection.cpp | 1 + src/libslic3r/Fill/FillConcentricInternal.cpp | 3 + src/libslic3r/Fill/FillCrossHatch.cpp | 3 + src/libslic3r/Fill/Lightning/Generator.cpp | 3 +- src/libslic3r/FlushVolCalc.cpp | 1 + src/libslic3r/Format/3mf.cpp | 1 + src/libslic3r/Format/OBJ.cpp | 1 + src/libslic3r/Format/bbs_3mf.cpp | 18 ++-- src/libslic3r/Format/svg.cpp | 6 ++ src/libslic3r/GCode.cpp | 27 +++--- src/libslic3r/GCode/ConflictChecker.cpp | 1 + src/libslic3r/GCode/GCodeProcessor.cpp | 1 + .../GCode/RetractWhenCrossingPerimeters.cpp | 1 + src/libslic3r/GCode/ToolOrdering.cpp | 4 + src/libslic3r/GCode/WipeTower.cpp | 5 ++ src/libslic3r/Geometry.cpp | 7 ++ src/libslic3r/Geometry/Circle.cpp | 2 + src/libslic3r/Geometry/Voronoi.cpp | 1 + src/libslic3r/JumpPointSearch.cpp | 8 ++ src/libslic3r/Line.cpp | 2 + src/libslic3r/MeshBoolean.cpp | 4 +- src/libslic3r/Model.cpp | 8 +- src/libslic3r/ModelArrange.cpp | 1 + src/libslic3r/MultiMaterialSegmentation.cpp | 2 + src/libslic3r/Orient.cpp | 15 ++-- src/libslic3r/PerimeterGenerator.cpp | 6 ++ src/libslic3r/Polygon.cpp | 2 + src/libslic3r/Polyline.cpp | 2 + src/libslic3r/Preset.cpp | 1 + src/libslic3r/PresetBundle.cpp | 9 +- src/libslic3r/Print.cpp | 49 ++++++----- src/libslic3r/PrintObject.cpp | 14 +-- src/libslic3r/PrintObjectSlice.cpp | 9 +- src/libslic3r/Shape/TextShape.cpp | 2 + src/libslic3r/ShortEdgeCollapse.cpp | 1 + src/libslic3r/SlicesToTriangleMesh.cpp | 3 + src/libslic3r/Support/OrganicSupport.cpp | 6 ++ src/libslic3r/Support/SupportParameters.cpp | 2 + src/libslic3r/SupportMaterial.cpp | 24 +++-- src/libslic3r/TreeSupport.cpp | 25 +++++- src/libslic3r/TriangleMeshSlicer.cpp | 4 +- src/libslic3r/TriangleSetSampling.cpp | 1 + src/libslic3r/TriangulateWall.cpp | 4 +- src/libslic3r/Triangulation.cpp | 4 - src/libslic3r/calib.cpp | 5 +- src/libslic3r/utils.cpp | 11 ++- src/slic3r/GUI/3DScene.cpp | 4 +- src/slic3r/GUI/AMSMaterialsSetting.cpp | 3 +- src/slic3r/GUI/AmsMappingPopup.cpp | 5 ++ src/slic3r/GUI/Auxiliary.cpp | 2 +- src/slic3r/GUI/AuxiliaryDataViewModel.cpp | 2 +- src/slic3r/GUI/BBLStatusBar.cpp | 2 + src/slic3r/GUI/BBLTopbar.cpp | 14 +-- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 9 ++ src/slic3r/GUI/BindDialog.cpp | 1 + src/slic3r/GUI/CalibrationPanel.cpp | 17 ++-- src/slic3r/GUI/CalibrationPanel.hpp | 4 +- src/slic3r/GUI/CalibrationWizard.cpp | 3 + .../GUI/CalibrationWizardPresetPage.cpp | 1 + src/slic3r/GUI/ConfigManipulation.cpp | 4 + src/slic3r/GUI/ConfigWizard.cpp | 7 +- src/slic3r/GUI/CreatePresetsDialog.cpp | 9 +- src/slic3r/GUI/DailyTips.cpp | 6 ++ src/slic3r/GUI/DeviceManager.cpp | 13 ++- src/slic3r/GUI/DownloadProgressDialog.cpp | 1 + src/slic3r/GUI/ExtrusionCalibration.cpp | 1 + src/slic3r/GUI/FileArchiveDialog.cpp | 1 + src/slic3r/GUI/GCodeViewer.cpp | 62 +++++++++---- src/slic3r/GUI/GLCanvas3D.cpp | 40 +++++---- src/slic3r/GUI/GLTexture.cpp | 1 + src/slic3r/GUI/GLToolbar.cpp | 1 + src/slic3r/GUI/GUI_App.cpp | 36 ++++---- src/slic3r/GUI/GUI_AuxiliaryList.cpp | 2 + src/slic3r/GUI/GUI_Factories.cpp | 44 ++++++---- src/slic3r/GUI/GUI_ObjectList.cpp | 55 +++++++----- src/slic3r/GUI/GUI_ObjectSettings.cpp | 8 +- src/slic3r/GUI/GUI_ObjectTable.cpp | 31 +++++-- src/slic3r/GUI/GUI_ObjectTableSettings.cpp | 2 + src/slic3r/GUI/GUI_Preview.cpp | 10 +++ src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp | 3 +- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 10 +++ src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp | 6 ++ .../GUI/Gizmos/GLGizmoMmuSegmentation.cpp | 2 + src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp | 14 ++- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 6 +- .../GUI/Gizmos/GizmoObjectManipulation.cpp | 13 +++ src/slic3r/GUI/HintNotification.cpp | 3 +- src/slic3r/GUI/IMSlider.cpp | 8 +- src/slic3r/GUI/ImGuiWrapper.cpp | 8 +- src/slic3r/GUI/Jobs/ArrangeJob.cpp | 4 + src/slic3r/GUI/Jobs/FillBedJob.cpp | 8 +- src/slic3r/GUI/Jobs/OrientJob.cpp | 1 + src/slic3r/GUI/Jobs/PrintJob.cpp | 11 ++- src/slic3r/GUI/Jobs/RotoptimizeJob.cpp | 3 +- src/slic3r/GUI/Jobs/SendJob.cpp | 5 ++ src/slic3r/GUI/KBShortcutsDialog.cpp | 37 ++++++-- src/slic3r/GUI/MainFrame.cpp | 23 +++-- src/slic3r/GUI/MediaFilePanel.cpp | 3 +- src/slic3r/GUI/MediaPlayCtrl.cpp | 6 +- src/slic3r/GUI/ModelMall.cpp | 2 +- src/slic3r/GUI/Monitor.cpp | 13 ++- src/slic3r/GUI/Monitor.hpp | 2 +- src/slic3r/GUI/MonitorBasePanel.cpp | 5 +- src/slic3r/GUI/MultiMachine.hpp | 8 +- src/slic3r/GUI/MultiMachineManagerPage.cpp | 14 +-- src/slic3r/GUI/MultiMachineManagerPage.hpp | 2 +- src/slic3r/GUI/MultiMachinePage.cpp | 6 +- src/slic3r/GUI/MultiMachinePage.hpp | 2 +- src/slic3r/GUI/MultiTaskManagerPage.cpp | 31 +++---- src/slic3r/GUI/MultiTaskManagerPage.hpp | 2 +- src/slic3r/GUI/Notebook.hpp | 2 + src/slic3r/GUI/NotificationManager.cpp | 2 +- src/slic3r/GUI/OG_CustomCtrl.cpp | 1 + src/slic3r/GUI/ObjColorDialog.cpp | 5 ++ src/slic3r/GUI/OptionsGroup.cpp | 4 + src/slic3r/GUI/PartPlate.cpp | 52 +++++++---- src/slic3r/GUI/Plater.cpp | 76 ++++++++++------ src/slic3r/GUI/Preferences.cpp | 4 +- src/slic3r/GUI/PresetComboBoxes.cpp | 9 +- src/slic3r/GUI/Printer/PrinterFileSystem.cpp | 1 + src/slic3r/GUI/PrinterWebView.cpp | 2 + src/slic3r/GUI/Project.cpp | 2 +- src/slic3r/GUI/RecenterDialog.cpp | 2 + src/slic3r/GUI/ReleaseNote.cpp | 1 + src/slic3r/GUI/RemovableDriveManager.cpp | 4 + src/slic3r/GUI/Search.cpp | 8 +- src/slic3r/GUI/SelectMachine.cpp | 32 +++++-- src/slic3r/GUI/SelectMachine.hpp | 2 +- src/slic3r/GUI/Selection.cpp | 11 +-- src/slic3r/GUI/SendMultiMachinePage.cpp | 36 +++++--- src/slic3r/GUI/SendMultiMachinePage.hpp | 2 +- src/slic3r/GUI/SendSystemInfoDialog.cpp | 2 +- src/slic3r/GUI/SendToPrinter.cpp | 6 ++ .../GUI/SlicingProgressNotification.cpp | 4 +- src/slic3r/GUI/StatusPanel.cpp | 8 +- src/slic3r/GUI/Tab.cpp | 26 +++++- src/slic3r/GUI/Tabbook.hpp | 2 + src/slic3r/GUI/UnsavedChangesDialog.cpp | 2 +- src/slic3r/GUI/UpdateDialogs.cpp | 11 +-- src/slic3r/GUI/UpgradePanel.cpp | 2 + src/slic3r/GUI/UserManager.cpp | 3 +- src/slic3r/GUI/WebDownPluginDlg.cpp | 12 ++- src/slic3r/GUI/WebGuideDialog.cpp | 14 +-- src/slic3r/GUI/WebUserLoginDialog.cpp | 3 + src/slic3r/GUI/WebViewDialog.cpp | 1 + src/slic3r/GUI/Widgets/AMSControl.cpp | 87 ++++++++++--------- src/slic3r/GUI/Widgets/AMSControl.hpp | 2 +- src/slic3r/GUI/Widgets/ComboBox.cpp | 2 +- src/slic3r/GUI/Widgets/FanControl.cpp | 2 +- src/slic3r/GUI/Widgets/ImageSwitchButton.cpp | 2 + src/slic3r/GUI/Widgets/RoundedRectangle.cpp | 1 + src/slic3r/GUI/Widgets/SpinInput.cpp | 2 + src/slic3r/GUI/Widgets/StepCtrl.cpp | 1 + src/slic3r/GUI/Widgets/TempInput.cpp | 1 + src/slic3r/GUI/Widgets/WebView.cpp | 2 +- src/slic3r/GUI/WipeTowerDialog.cpp | 4 + src/slic3r/GUI/wxExtensions.cpp | 1 + src/slic3r/Utils/ASCIIFolding.cpp | 5 +- src/slic3r/Utils/CalibUtils.cpp | 11 +-- src/slic3r/Utils/ESP3D.cpp | 9 ++ src/slic3r/Utils/Obico.cpp | 4 + src/slic3r/Utils/PresetUpdater.cpp | 1 + src/slic3r/Utils/UndoRedo.cpp | 6 +- 184 files changed, 1091 insertions(+), 461 deletions(-) diff --git a/src/BaseException.cpp b/src/BaseException.cpp index 705ac8f8c1..2443ebe4bb 100644 --- a/src/BaseException.cpp +++ b/src/BaseException.cpp @@ -358,7 +358,7 @@ void CBaseException::ShowExceptionInformation() OutputString(_T("Exception Flag :0x%x "), m_pEp->ExceptionRecord->ExceptionFlags); OutputString(_T("NumberParameters :%ld \n"), m_pEp->ExceptionRecord->NumberParameters); - for (unsigned int i = 0; i < m_pEp->ExceptionRecord->NumberParameters; i++) + for (int i = 0; i < m_pEp->ExceptionRecord->NumberParameters; i++) { OutputString(_T("Param %d :0x%x \n"), i, m_pEp->ExceptionRecord->ExceptionInformation[i]); } diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 71c39d874c..bb52a0aea1 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -1190,8 +1190,9 @@ int CLI::run(int argc, char **argv) //BBS: add plate data related logic PlateDataPtrs plate_data_src; std::vector plate_obj_size_infos; + int arrange_option; int plate_to_slice = 0, filament_count = 0, duplicate_count = 0, real_duplicate_count = 0; - bool first_file = true, is_bbl_3mf = false, need_arrange = true, up_config_to_date = false, normative_check = true, duplicate_single_object = false, use_first_fila_as_default = false, minimum_save = false, enable_timelapse = false; + bool first_file = true, is_bbl_3mf = false, need_arrange = true, has_thumbnails = false, up_config_to_date = false, normative_check = true, duplicate_single_object = false, use_first_fila_as_default = false, minimum_save = false, enable_timelapse = false; bool allow_rotations = true, skip_modified_gcodes = false, avoid_extrusion_cali_region = false, skip_useless_pick = false, allow_newer_file = false; Semver file_version; std::map orients_requirement; @@ -1545,7 +1546,7 @@ int CLI::run(int argc, char **argv) { ModelObject* object = model.objects[obj_index]; - for (int clone_index = 1; clone_index < clone_count; clone_index++) + for (unsigned int clone_index = 1; clone_index < clone_count; clone_index++) { ModelObject* newObj = model.add_object(*object); newObj->name = object->name +"_"+ std::to_string(clone_index+1); @@ -1618,7 +1619,7 @@ int CLI::run(int argc, char **argv) } } catch (std::exception& e) { - boost::nowide::cerr << "construct_assemble_list: " << e.what() << std::endl; + boost::nowide::cerr << construct_assemble_list << ": " << e.what() << std::endl; record_exit_reson(outfile_dir, CLI_DATA_FILE_ERROR, 0, cli_errors[CLI_DATA_FILE_ERROR], sliced_info); flush_and_exit(CLI_DATA_FILE_ERROR); } @@ -2102,7 +2103,7 @@ int CLI::run(int argc, char **argv) record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); flush_and_exit(CLI_INVALID_PARAMS); } - for (int index = 0; index < filament_count; index ++) + for (unsigned int index = 0; index < filament_count; index ++) { std::string file = uptodate_filaments[index]; DynamicPrintConfig config; @@ -2219,7 +2220,7 @@ int CLI::run(int argc, char **argv) } //upwards check - bool process_compatible = false, /* machine_upwards = false, */ machine_switch = false; + bool process_compatible = false, machine_upwards = false, machine_switch = false; BOOST_LOG_TRIVIAL(info) << boost::format("current printer %1%, new printer %2%, current process %3%, new process %4%")%current_printer_name %new_printer_name %current_process_name %new_process_name; BOOST_LOG_TRIVIAL(info) << boost::format("current printer inherits %1%, new printer inherits %2%, current process inherits %3%, new process inherits %4%") %current_printer_system_name %new_printer_system_name %current_process_system_name %new_process_system_name; @@ -2289,7 +2290,7 @@ int CLI::run(int argc, char **argv) for (int index = 0; index < upward_compatible_printers.size(); index++) { if (upward_compatible_printers[index] == new_printer_system_name) { process_compatible = true; - // machine_upwards = true; + machine_upwards = true; BOOST_LOG_TRIVIAL(info) << boost::format("new printer is upward_compatible"); break; } @@ -2899,8 +2900,7 @@ int CLI::run(int argc, char **argv) for (auto& model : m_models) for (ModelObject* o : model.objects) { - /* ModelObject* new_object = */ - m.add_object(*o); + ModelObject* new_object = m.add_object(*o); //BOOST_LOG_TRIVIAL(info) << "object "<name <<", id :" << o->id().id << "\n"; //orients_requirement.emplace(new_object->id().id, orients_requirement[o->id().id]); //orients_requirement.erase(o->id().id); @@ -3343,6 +3343,7 @@ int CLI::run(int argc, char **argv) BOOST_LOG_TRIVIAL(info) << boost::format("downward_check: all failed, size %1%")%downward_check_size; break; } + Slic3r::GUI::PartPlate* cur_plate = (Slic3r::GUI::PartPlate *)partplate_list.get_plate(index); Vec3d size = plate_obj_size_infos[index].obj_bbox.size(); for (int index2 = 0; index2 < downward_check_size; index2 ++) @@ -3392,6 +3393,7 @@ int CLI::run(int argc, char **argv) } // Loop through transform options. + bool user_center_specified = false; Points beds = get_bed_shape(m_print_config); ArrangeParams arrange_cfg; @@ -3415,6 +3417,7 @@ int CLI::run(int argc, char **argv) ModelObject* new_object = m.add_object(); new_object->name = _u8L("Assembly"); new_object->add_instance(); + int idx = 0; for (auto& model : m_models) for (ModelObject* o : model.objects) { for (auto volume : o->volumes) { @@ -3516,6 +3519,7 @@ int CLI::run(int argc, char **argv) } } } else if (opt_key == "center") { + user_center_specified = true; for (auto &model : m_models) { model.add_default_instances(); // this affects instances: @@ -3815,6 +3819,7 @@ int CLI::run(int argc, char **argv) { //do arrange for plate ArrangePolygons selected, unselected; + Model& model = m_models[0]; arrange_cfg = ArrangeParams(); // reset all params get_print_sequence(cur_plate, m_print_config, arrange_cfg.is_seq_print); @@ -3840,6 +3845,7 @@ int CLI::run(int argc, char **argv) if (!arrange_cfg.is_seq_print && assemble_plate.filaments_count > 1) { //prepare the wipe tower + int plate_count = partplate_list.get_plate_count(); auto printer_structure_opt = m_print_config.option>("printer_structure"); const float tower_brim_width = m_print_config.option("prime_tower_width", true)->value; @@ -4225,6 +4231,7 @@ int CLI::run(int argc, char **argv) //float depth = v * (filaments_cnt - 1) / (layer_height * w); Vec3d wipe_tower_size = cur_plate->estimate_wipe_tower_size(m_print_config, w, v, filaments_cnt); + Vec3d plate_origin = cur_plate->get_origin(); int plate_width, plate_depth, plate_height; partplate_list.get_plate_size(plate_width, plate_depth, plate_height); float depth = wipe_tower_size(1); @@ -4603,7 +4610,7 @@ int CLI::run(int argc, char **argv) } // loop through action options - bool export_to_3mf = false, load_slicedata = false, export_slicedata = false; + bool export_to_3mf = false, load_slicedata = false, export_slicedata = false, export_slicedata_error = false; bool no_check = false; std::string export_3mf_file, load_slice_data_dir, export_slice_data_dir, export_stls_dir; std::vector calibration_thumbnails; @@ -5092,6 +5099,7 @@ int CLI::run(int argc, char **argv) int ret = print->export_cached_data(plate_dir, with_space); if (ret) { BOOST_LOG_TRIVIAL(error) << "plate "<< index+1<< ": export Slicing data error, ret=" << ret; + export_slicedata_error = true; if (fs::exists(plate_dir)) fs::remove_all(plate_dir); record_exit_reson(outfile_dir, ret, index+1, cli_errors[ret], sliced_info); @@ -5218,7 +5226,8 @@ int CLI::run(int argc, char **argv) bool need_regenerate_top_thumbnail = oriented_or_arranged || regenerate_thumbnails; bool need_create_thumbnail_group = false, need_create_no_light_group = false, need_create_top_group = false; - // get color for platedata + // get type and color for platedata + auto* filament_types = dynamic_cast(m_print_config.option("filament_type")); const ConfigOptionStrings* filament_color = dynamic_cast(m_print_config.option("filament_colour")); auto* filament_id = dynamic_cast(m_print_config.option("filament_ids")); const ConfigOptionFloats* nozzle_diameter_option = dynamic_cast(m_print_config.option("nozzle_diameter")); diff --git a/src/admesh/connect.cpp b/src/admesh/connect.cpp index 4cf78f076a..30a199120d 100644 --- a/src/admesh/connect.cpp +++ b/src/admesh/connect.cpp @@ -216,7 +216,7 @@ private: // This is a match. Record result in neighbors list. match_neighbors(edge, *link->next); // Delete the matched edge from the list. - // HashEdge *temp = link->next; + HashEdge *temp = link->next; link->next = link->next->next; // pool.destroy(temp); #ifndef NDEBUG diff --git a/src/admesh/normals.cpp b/src/admesh/normals.cpp index 02fb16bb80..f74ba01b6d 100644 --- a/src/admesh/normals.cpp +++ b/src/admesh/normals.cpp @@ -193,7 +193,7 @@ void stl_fix_normal_directions(stl_file *stl) norm_sw[facet_num] = 1; // Record this one as being fixed. ++ checked; } - // stl_normal *temp = head->next; // Delete this facet from the list. + stl_normal *temp = head->next; // Delete this facet from the list. head->next = head->next->next; // pool.destroy(temp); } else { // If we ran out of facets to fix: All of the facets in this part have been fixed. diff --git a/src/imgui/imgui_widgets.cpp b/src/imgui/imgui_widgets.cpp index 054312cfc0..ded72f4178 100644 --- a/src/imgui/imgui_widgets.cpp +++ b/src/imgui/imgui_widgets.cpp @@ -768,9 +768,11 @@ bool ImGui::BBLButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFl bool hovered, held; bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags); + bool b_hover = false; if (hovered) { PushStyleColor(ImGuiCol_Text,GetColorU32(ImGuiCol_CheckMark)); + b_hover = true; } // Render @@ -4165,6 +4167,8 @@ bool ImGui::BBLInputScalar(const char *label, ImGuiDataType data_type, void *p_d const ImRect frame_bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2.0f)); // Tabbing or CTRL-clicking on Drag turns it into an InputText const bool hovered = ItemHoverable(frame_bb, id); + // We are only allowed to access the state if we are already the active widget. + ImGuiInputTextState *state = GetInputTextState(id); bool push_color_count = 0; if (hovered || g.ActiveId == id) { @@ -6294,9 +6298,9 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl RenderFrameBorder(bb.Min, bb.Max, rounding); else #ifdef __APPLE__ - window->DrawList->AddRect(bb.Min - ImVec2(3, 3), bb.Max + ImVec2(3, 3), GetColorU32(ImGuiCol_FrameBg), rounding * 2,0,4.0f);; // Color button are often in need of some sort of border + window->DrawList->AddRect(bb.Min - ImVec2(3, 3), bb.Max + ImVec2(3, 3), GetColorU32(ImGuiCol_FrameBg), rounding * 2,NULL,4.0f);; // Color button are often in need of some sort of border #else - window->DrawList->AddRect(bb.Min - ImVec2(2, 2), bb.Max + ImVec2(2, 2), GetColorU32(ImGuiCol_FrameBg), rounding * 2,0,3.0f); // Color button are often in need of some sort of border + window->DrawList->AddRect(bb.Min - ImVec2(2, 2), bb.Max + ImVec2(2, 2), GetColorU32(ImGuiCol_FrameBg), rounding * 2,NULL,3.0f); // Color button are often in need of some sort of border #endif } @@ -7093,6 +7097,7 @@ bool ImGui::BBLImageSelectable(ImTextureID user_texture_id, const ImVec2& size_a // Text stays at the submission position, but bounding box may be extended on both sides const float arrow_size = (flags & ImGuiComboFlags_NoArrowButton) ? 0.0f : GetFrameHeight(); + const ImVec2 text_min = ImVec2(pos.x + arrow_size, pos.y); const ImVec2 text_max(min_x + size.x, pos.y + size.y); // Selectables are meant to be tightly packed together with no click-gap, so we extend their box to cover spacing between selectable. @@ -7204,6 +7209,7 @@ bool ImGui::BBLImageSelectable(ImTextureID user_texture_id, const ImVec2& size_a if (flags & ImGuiSelectableFlags_Disabled) PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); // Render + const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button); ImVec2 p_min = bb.Min + ImVec2(style.ItemInnerSpacing.x, (bb.Max.y - bb.Min.y - font_size.y) / 2); ImVec2 p_max = p_min + font_size; window->DrawList->AddImage(user_texture_id, p_min, p_max, uv0, uv1, selected || (held && hovered) ? GetColorU32(ImVec4(1.f, 1.f, 1.f, 1.f)) : GetColorU32(tint_col)); diff --git a/src/imguizmo/ImGuizmo.cpp b/src/imguizmo/ImGuizmo.cpp index 0f717395f9..1acf8b63e4 100644 --- a/src/imguizmo/ImGuizmo.cpp +++ b/src/imguizmo/ImGuizmo.cpp @@ -2807,6 +2807,7 @@ namespace IMGUIZMO_NAMESPACE { static bool isDraging = false; static bool isClicking = false; + static bool isInside = false; static vec_t interpolationUp; static vec_t interpolationDir; static int interpolationFrames = 0; @@ -3054,6 +3055,7 @@ namespace IMGUIZMO_NAMESPACE LookAt(&newEye.x, &camTarget.x, &newUp.x, view); viewUpdated = true; } + isInside = gContext.mbMouseOver && ImRect(position, position + size).Contains(io.MousePos); if (io.MouseDown[0] && (fabsf(io.MouseDelta[0]) || fabsf(io.MouseDelta[1])) && isClicking) { diff --git a/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp b/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp index 4f8cf964b9..ab5f7678fd 100644 --- a/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp +++ b/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp @@ -182,6 +182,7 @@ inline TPoint referenceVertex(const RawShape& sh) template inline NfpResult nfpInnerRectBed(const RawBox &bed, const RawShape &other) { using Vertex = TPoint; + using Edge = _Segment; namespace sl = shapelike; auto sbox = sl::boundingBox(other); diff --git a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp index ebe3da6c5d..65a3344b04 100644 --- a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp @@ -1119,6 +1119,7 @@ private: for (const Item& item : items_) { if (!item.is_virt_object) { extruders.insert(item.extrude_ids.begin(), item.extrude_ids.end()); } } + bool need_wipe_tower = extruders.size() > 1; std::vector objs,excludes; for (const Item &item : items_) { diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 054a09c4f7..7d114b45fc 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -18,7 +18,9 @@ #include #include #include +#include #include +#include #include #include #include diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp index 6e344daf58..b57c84d639 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp @@ -1,6 +1,7 @@ //Copyright (c) 2022 Ultimaker B.V. //CuraEngine is released under the terms of the AGPLv3 or higher. +#include #include "BeadingStrategy.hpp" #include "Point.hpp" diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp index c42ef3d2f3..97acd271ac 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp @@ -9,6 +9,7 @@ #include "RedistributeBeadingStrategy.hpp" #include "OuterWallInsetBeadingStrategy.hpp" +#include #include namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp index 93ffdfb750..2b4dda0272 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp @@ -3,6 +3,7 @@ #include "RedistributeBeadingStrategy.hpp" +#include #include namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index 9278fb49b7..19d49c3e12 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -1595,6 +1595,7 @@ SkeletalTrapezoidation::edge_t* SkeletalTrapezoidation::getQuadMaxRedgeTo(edge_t void SkeletalTrapezoidation::propagateBeadingsUpward(std::vector& upward_quad_mids, ptr_vector_t& node_beadings) { + const auto _central_filter_dist = central_filter_dist(); for (auto upward_quad_mids_it = upward_quad_mids.rbegin(); upward_quad_mids_it != upward_quad_mids.rend(); ++upward_quad_mids_it) { edge_t* upward_edge = *upward_quad_mids_it; @@ -1611,7 +1612,7 @@ void SkeletalTrapezoidation::propagateBeadingsUpward(std::vector& upwar { // Only propagate to places where there is place continue; } - assert((upward_edge->from->data.distance_to_boundary != upward_edge->to->data.distance_to_boundary || shorter_then(upward_edge->to->p - upward_edge->from->p, central_filter_dist())) && "zero difference R edges should always be central"); + assert((upward_edge->from->data.distance_to_boundary != upward_edge->to->data.distance_to_boundary || shorter_then(upward_edge->to->p - upward_edge->from->p, _central_filter_dist)) && "zero difference R edges should always be central"); coord_t length = (upward_edge->to->p - upward_edge->from->p).cast().norm(); BeadingPropagation upper_beading = lower_beading; upper_beading.dist_to_bottom_source += length; diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp index e19fbc209b..c49340ec59 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp @@ -8,6 +8,9 @@ #include +#include "utils/linearAlg2D.hpp" +#include "../Line.hpp" + namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp index b671b80735..ac7b88af83 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp +++ b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp @@ -4,6 +4,7 @@ #include #include "ExtrusionLine.hpp" +#include "linearAlg2D.hpp" #include "../../VariableWidth.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/utils/SquareGrid.cpp b/src/libslic3r/Arachne/utils/SquareGrid.cpp index 856eb5968b..ae89965795 100644 --- a/src/libslic3r/Arachne/utils/SquareGrid.cpp +++ b/src/libslic3r/Arachne/utils/SquareGrid.cpp @@ -2,6 +2,7 @@ //CuraEngine is released under the terms of the AGPLv3 or higher. #include "SquareGrid.hpp" +#include "../../Point.hpp" using namespace Slic3r::Arachne; diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index f9559ede24..d82997aaa9 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -199,19 +199,23 @@ void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPr } if (std::abs(a00) > EPSILON) { - double db1_2, db1_6, db1_12, db1_24; - double m00, m10, m01, m20, m11, m02; + double db1_2, db1_6, db1_12, db1_24, db1_20, db1_60; + double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; if (a00 > 0) { db1_2 = 0.5; db1_6 = 0.16666666666666666666666666666667; db1_12 = 0.083333333333333333333333333333333; db1_24 = 0.041666666666666666666666666666667; + db1_20 = 0.05; + db1_60 = 0.016666666666666666666666666666667; } else { db1_2 = -0.5; db1_6 = -0.16666666666666666666666666666667; db1_12 = -0.083333333333333333333333333333333; db1_24 = -0.041666666666666666666666666666667; + db1_20 = -0.05; + db1_60 = -0.016666666666666666666666666666667; } m00 = a00 * db1_2; m10 = a10 * db1_6; @@ -219,6 +223,10 @@ void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPr m20 = a20 * db1_12; m11 = a11 * db1_24; m02 = a02 * db1_12; + m30 = a30 * db1_20; + m21 = a21 * db1_60; + m12 = a12 * db1_60; + m03 = a03 * db1_20; double cx = m10 / m00; double cy = m01 / m00; diff --git a/src/libslic3r/BlacklistedLibraryCheck.cpp b/src/libslic3r/BlacklistedLibraryCheck.cpp index 2c9bf9b8e9..938f542497 100644 --- a/src/libslic3r/BlacklistedLibraryCheck.cpp +++ b/src/libslic3r/BlacklistedLibraryCheck.cpp @@ -1,5 +1,6 @@ #include "BlacklistedLibraryCheck.hpp" +#include #include #ifdef WIN32 diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index 089761cd18..9690a92d00 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -576,6 +576,7 @@ double getadhesionCoeff(const PrintObject* printObject) auto& insts = printObject->instances(); auto objectVolumes = insts[0].model_instance->get_object()->volumes; + auto print = printObject->print(); std::vector extrudersFirstLayer; auto firstLayerRegions = printObject->layers().front()->regions(); if (!firstLayerRegions.empty()) { @@ -1583,6 +1584,7 @@ static void make_inner_brim(const Print& print, const ConstPrintObjectPtrs& top_ //BBS: generate out brim by offseting ExPolygons 'islands_area_ex' Polygons tryExPolygonOffset(const ExPolygons islandAreaEx, const Print& print) { + const auto scaled_resolution = scaled(print.config().resolution.value); Polygons loops; ExPolygons islands_ex; Flow flow = print.brim_flow(); @@ -1657,6 +1659,7 @@ void make_brim(const Print& print, PrintTryCancel try_cancel, Polygons& islands_ std::map brimAreaMap; std::map supportBrimAreaMap; Flow flow = print.brim_flow(); + const auto scaled_resolution = scaled(print.config().resolution.value); ExPolygons islands_area_ex = outer_inner_brim_area(print, float(flow.scaled_spacing()), brimAreaMap, supportBrimAreaMap, objPrintVec, printExtruders); diff --git a/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp b/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp index e5038df54b..5963b29109 100644 --- a/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp +++ b/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp @@ -28,7 +28,7 @@ bool model_to_csgmesh(const ModelObject &mo, { bool do_positives = parts_to_include & mpartsPositive; bool do_negatives = parts_to_include & mpartsNegative; - // bool do_drillholes = parts_to_include & mpartsDrillHoles; + bool do_drillholes = parts_to_include & mpartsDrillHoles; bool do_splits = parts_to_include & mpartsDoSplits; bool has_splitable_volume = false; diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index d74e5ef3bd..e826bb4c5b 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -775,9 +775,10 @@ ConfigSubstitutions ConfigBase::load(const std::string &file, ForwardCompatibili //BBS: add json support ConfigSubstitutions ConfigBase::load_from_json(const std::string &file, ForwardCompatibilitySubstitutionRule compatibility_rule, std::map& key_values, std::string& reason) { + int ret = 0; ConfigSubstitutionContext substitutions_ctxt(compatibility_rule); - load_from_json(file, substitutions_ctxt, true, key_values, reason); + ret = load_from_json(file, substitutions_ctxt, true, key_values, reason); return std::move(substitutions_ctxt.substitutions); } diff --git a/src/libslic3r/ExtrusionEntityCollection.cpp b/src/libslic3r/ExtrusionEntityCollection.cpp index 3383d0de34..9a37ff3ac1 100644 --- a/src/libslic3r/ExtrusionEntityCollection.cpp +++ b/src/libslic3r/ExtrusionEntityCollection.cpp @@ -2,6 +2,7 @@ #include "ShortestPath.hpp" #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/Fill/FillConcentricInternal.cpp b/src/libslic3r/Fill/FillConcentricInternal.cpp index 1deb99183a..d565992ea1 100644 --- a/src/libslic3r/Fill/FillConcentricInternal.cpp +++ b/src/libslic3r/Fill/FillConcentricInternal.cpp @@ -1,3 +1,6 @@ +#include "../ClipperUtils.hpp" +#include "../ExPolygon.hpp" +#include "../Surface.hpp" #include "../VariableWidth.hpp" #include "Arachne/WallToolPaths.hpp" diff --git a/src/libslic3r/Fill/FillCrossHatch.cpp b/src/libslic3r/Fill/FillCrossHatch.cpp index 7b9f96fa78..10f421bef3 100644 --- a/src/libslic3r/Fill/FillCrossHatch.cpp +++ b/src/libslic3r/Fill/FillCrossHatch.cpp @@ -1,5 +1,6 @@ #include "../ClipperUtils.hpp" #include "../ShortestPath.hpp" +#include "../Surface.hpp" #include #include "FillCrossHatch.hpp" @@ -64,6 +65,7 @@ static Polylines generate_transform_pattern(double inprogress, int direction, co odd_poly.points.reserve(num_of_cycle * one_cycle.size()); // replicate to odd line + Point translate = Point(0, 0); for (size_t i = 0; i < num_of_cycle; i++) { Polyline odd_points; odd_points = Polyline(one_cycle); @@ -150,6 +152,7 @@ static Polylines generate_infill_layers(coordf_t z_height, double repeat_ratio, coordf_t period = trans_layer_size + repeat_layer_size; coordf_t remains = z_height - std::floor(z_height / period) * period; coordf_t trans_z = remains - repeat_layer_size; // put repeat layer first. + coordf_t repeat_z = remains; int phase = fmod(z_height, period * 2) - (period - 1); // add epsilon int direction = phase <= 0 ? -1 : 1; diff --git a/src/libslic3r/Fill/Lightning/Generator.cpp b/src/libslic3r/Fill/Lightning/Generator.cpp index a0cbe2b21e..bf1142ee45 100644 --- a/src/libslic3r/Fill/Lightning/Generator.cpp +++ b/src/libslic3r/Fill/Lightning/Generator.cpp @@ -4,6 +4,7 @@ #include "Generator.hpp" #include "TreeNode.hpp" +#include "../../ClipperUtils.hpp" #include "../../Layer.hpp" #include "../../Print.hpp" @@ -34,7 +35,7 @@ static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag rand_init = true; } - // int rand_num = rand() % 1000000; + int rand_num = rand() % 1000000; //makedir("./SVG"); std::string prefix = "./SVG/"; std::string suffix = ".svg"; diff --git a/src/libslic3r/FlushVolCalc.cpp b/src/libslic3r/FlushVolCalc.cpp index c135b93948..29cbcbe401 100644 --- a/src/libslic3r/FlushVolCalc.cpp +++ b/src/libslic3r/FlushVolCalc.cpp @@ -1,4 +1,5 @@ #include +#include #include "slic3r/Utils/ColorSpaceConvert.hpp" #include "FlushVolCalc.hpp" diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 20007ee579..894de0549b 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -298,6 +298,7 @@ bool PrusaFileParser::check_3mf_from_prusa(const std::string filename) const std::string model_file = "3D/3dmodel.model"; int model_file_index = mz_zip_reader_locate_file(&archive, model_file.c_str(), nullptr, 0); if (model_file_index != -1) { + int depth = 0; m_parser = XML_ParserCreate(nullptr); XML_SetUserData(m_parser, (void *) this); XML_SetElementHandler(m_parser, start_element_handler, nullptr); diff --git a/src/libslic3r/Format/OBJ.cpp b/src/libslic3r/Format/OBJ.cpp index f9a19d7a1b..abaae3692b 100644 --- a/src/libslic3r/Format/OBJ.cpp +++ b/src/libslic3r/Format/OBJ.cpp @@ -100,6 +100,7 @@ bool load_obj(const char *path, TriangleMesh *meshptr, ObjInfo& obj_info, std::s obj_info.is_single_mtl = data.usemtls.size() == 1 && mtl_data.new_mtl_unmap.size() == 1; obj_info.face_colors.reserve(num_faces + num_quads); } + bool has_color = data.has_vertex_color; for (size_t i = 0; i < num_vertices; ++ i) { size_t j = i * OBJ_VERTEX_LENGTH; its.vertices.emplace_back(data.coordinates[j], data.coordinates[j + 1], data.coordinates[j + 2]); diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 191246af74..7df4fbca49 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -878,6 +878,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool extract_object_model() { mz_zip_archive archive; + mz_zip_archive_file_stat stat; mz_zip_zero_struct(&archive); if (!open_zip_reader(&archive, zip_path)) { @@ -1616,9 +1617,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } else { _extract_xml_from_archive(archive, sub_rels, _handle_start_relationships_element, _handle_end_relationships_element); + int index = 0; #if 0 - int index = 0; for (auto path : m_sub_model_paths) { if (proFn) { proFn(IMPORT_STAGE_READ_FILES, ++index, 3 + m_sub_model_paths.size(), cb_cancel); @@ -2218,6 +2219,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _BBS_3MF_Importer::_extract_from_archive(mz_zip_archive& archive, std::string const & path, std::function extract, bool restore) { + mz_uint num_entries = mz_zip_reader_get_num_files(&archive); mz_zip_archive_file_stat stat; std::string path2 = path; if (path2.front() == '/') path2 = path2.substr(1); @@ -3317,9 +3319,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Adjust backup object/volume id std::istringstream iss(m_curr_object->uuid); int backup_id; - // bool need_replace = false; + bool need_replace = false; if (iss >> std::hex >> backup_id) { - // need_replace = (m_curr_object->id != backup_id); + need_replace = (m_curr_object->id != backup_id); m_curr_object->id = backup_id; } if (!m_curr_object->components.empty()) @@ -4992,9 +4994,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (is_bbl_3mf && boost::ends_with(current_object->uuid, OBJECT_UUID_SUFFIX) && top_importer->m_load_restore) { std::istringstream iss(current_object->uuid); int backup_id; - // bool need_replace = false; + bool need_replace = false; if (iss >> std::hex >> backup_id) { - // need_replace = (current_object->id != backup_id); + need_replace = (current_object->id != backup_id); current_object->id = backup_id; } //if (need_replace) @@ -5989,6 +5991,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) auto src_gcode_file = plate_data->gcode_file; boost::filesystem::ifstream ifs(src_gcode_file, std::ios::binary); std::string buf(64 * 1024, 0); + const std::size_t & size = boost::filesystem::file_size(src_gcode_file); + std::size_t left_size = size; while (ifs) { ifs.read(buf.data(), buf.size()); int read_bytes = ifs.gcount(); @@ -6226,6 +6230,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _BBS_3MF_Exporter::_add_bbox_file_to_archive(mz_zip_archive& archive, const PlateBBoxData& id_bboxes, int index) { + bool res = false; nlohmann::json j; id_bboxes.to_json(j); std::string out = j.dump(); @@ -6615,6 +6620,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) auto iter = objects_data.find(objects[i]); ObjectToObjectDataMap objects_data2; objects_data2.insert(*iter); + auto & object = *iter->second.object; mz_zip_archive archive; mz_zip_zero_struct(&archive); mz_zip_writer_init_heap(&archive, 0, 1024 * 1024); @@ -7531,7 +7537,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (!m_skip_model && instance_size > 0) { - for (int j = 0; j < instance_size; ++j) + for (unsigned int j = 0; j < instance_size; ++j) { stream << " <" << INSTANCE_TAG << ">\n"; int obj_id = plate_data->objects_and_instances[j].first; diff --git a/src/libslic3r/Format/svg.cpp b/src/libslic3r/Format/svg.cpp index ed170cf570..4a96274b99 100644 --- a/src/libslic3r/Format/svg.cpp +++ b/src/libslic3r/Format/svg.cpp @@ -113,6 +113,9 @@ double get_profile_area(std::vector> profile_line_poin double area = 0; for (auto line_points : profile_line_points) { + bool flag = true; + if (line_points.second.Y() < line_points.first.Y()) flag = false; + area += (line_points.second.X() + line_points.first.X() - 2 * min_x) * (line_points.second.Y() - line_points.first.Y()) / 2; } @@ -134,6 +137,8 @@ bool get_svg_profile(const char *path, std::vector &element_infos, int name_index = 1; for (NSVGshape *shape = svg_data->shapes; shape; shape = shape->next) { + char * id = shape->id; + int interpolation_precision = 10; // Number of interpolation points float step = 1.0f / float(interpolation_precision - 1); @@ -379,6 +384,7 @@ bool load_svg(const char *path, Model *model, std::string &message) ModelObject *new_object = model->add_object(); // new_object->name ? new_object->input_file = path; + auto stage_unit3 = stl.size() / LOAD_STEP_STAGE_UNIT_NUM + 1; for (size_t i = 0; i < stl.size(); i++) { // BBS: maybe mesh is empty from step file. Don't add if (stl[i].stats.number_of_facets > 0) { diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index fc29347f9a..d95a7227c1 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -116,6 +116,7 @@ static std::vector get_path_of_change_filament(const Print& print) if (excluse_area.size() != 4) return out_points; + double cutter_area_x = excluse_area[2].x() + 2; double cutter_area_y = excluse_area[2].y() + 2; double start_x_position = start_point.x(); @@ -2491,6 +2492,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato m_avoid_crossing_perimeters.use_external_mp_once(); // BBS. change tool before moving to origin point. if (m_writer.need_toolchange(initial_extruder_id)) { + const PrintObjectConfig& object_config = object.config(); coordf_t initial_layer_print_height = print.config().initial_layer_print_height.value; file.write(this->set_extruder(initial_extruder_id, initial_layer_print_height, true)); prime_extruder = true; @@ -3275,17 +3277,14 @@ namespace ProcessLayer const PrintConfig &config) { std::string gcode; + // BBS + bool single_filament_print = config.filament_diameter.size() == 1; if (custom_gcode != nullptr) { // Extruder switches are processed by LayerTools, they should be filtered out. assert(custom_gcode->type != CustomGCode::ToolChange); CustomGCode::Type gcode_type = custom_gcode->type; - - //BBS: inserting color gcode is removed -#if 0 - // BBS - bool single_filament_print = config.filament_diameter.size() == 1; bool color_change = gcode_type == CustomGCode::ColorChange; bool tool_change = gcode_type == CustomGCode::ToolChange; // Tool Change is applied as Color Change for a single extruder printer only. @@ -3297,7 +3296,8 @@ namespace ProcessLayer m600_extruder_before_layer = custom_gcode->extruder - 1; else if (gcode_type == CustomGCode::PausePrint) pause_print_msg = custom_gcode->extra; - + //BBS: inserting color gcode is removed +#if 0 // we should add or not colorprint_change in respect to nozzle_diameter count instead of really used extruders count if (color_change || tool_change) { @@ -3360,8 +3360,8 @@ namespace Skirt { { // Prime all extruders printing over the 1st layer over the skirt lines. size_t n_loops = print.skirt().entities.size(); - // size_t n_tools = layer_tools.extruders.size(); - // size_t lines_per_extruder = (n_loops + n_tools - 1) / n_tools; + size_t n_tools = layer_tools.extruders.size(); + size_t lines_per_extruder = (n_loops + n_tools - 1) / n_tools; // BBS. Extrude skirt with first extruder if min_skirt_length is zero //ORCA: Always extrude skirt with first extruder, independantly of if the minimum skirt length is zero or not. The code below @@ -3717,8 +3717,7 @@ LayerResult GCode::process_layer( Skirt::make_skirt_loops_per_extruder_other_layers(print, layer_tools, m_skirt_done); // BBS: get next extruder according to flush and soluble - // Orca: Left unused due to removed code below -/* auto get_next_extruder = [&](int current_extruder,const std::vector&extruders) { + auto get_next_extruder = [&](int current_extruder,const std::vector&extruders) { std::vector flush_matrix(cast(m_config.flush_volumes_matrix.values)); const unsigned int number_of_extruders = (unsigned int)(sqrt(flush_matrix.size()) + EPSILON); // Extract purging volumes for each extruder pair: @@ -3736,7 +3735,7 @@ LayerResult GCode::process_layer( } } return next_extruder; - }; */ + }; if (m_config.enable_overhang_speed && !m_config.overhang_speed_classic) { for (const auto &layer_to_print : layers) { @@ -4871,8 +4870,8 @@ std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fill std::string gcode; if (! support_fills.entities.empty()) { - // const double support_speed = m_config.support_speed.value; - // const double support_interface_speed = m_config.get_abs_value("support_interface_speed"); + const double support_speed = m_config.support_speed.value; + const double support_interface_speed = m_config.get_abs_value("support_interface_speed"); for (const ExtrusionEntity *ee : support_fills.entities) { ExtrusionRole role = ee->role(); assert(role == erSupportMaterial || role == erSupportMaterialInterface || role == erSupportTransition); @@ -6041,6 +6040,7 @@ bool GCode::needs_retraction(const Polyline &travel, ExtrusionRole role, LiftTyp for (int i = 0; i < m_config.z_hop.size(); i++) max_z_hop = std::max(max_z_hop, (float)m_config.z_hop.get_at(i)); float travel_len_thresh = scale_(max_z_hop / tan(this->writer().extruder()->travel_slope())); + float accum_len = 0.f; Polyline clipped_travel; clipped_travel.append(Polyline(travel.points[0], travel.points[1])); @@ -6142,6 +6142,7 @@ std::string GCode::retract(bool toolchange, bool is_last_retraction, LiftType li } if (needs_lift && can_lift) { + size_t extruder_id = m_writer.extruder()->id(); gcode += m_writer.lift(!m_spiral_vase ? lift_type : LiftType::NormalLift); } diff --git a/src/libslic3r/GCode/ConflictChecker.cpp b/src/libslic3r/GCode/ConflictChecker.cpp index 8b8e43aea2..fb69372a9a 100644 --- a/src/libslic3r/GCode/ConflictChecker.cpp +++ b/src/libslic3r/GCode/ConflictChecker.cpp @@ -28,6 +28,7 @@ inline Grids line_rasterization(const Line &line, int64_t xdist = scale_(1), int Point rayStart = line.a; Point rayEnd = line.b; IndexPair currentVoxel = point_map_grid_index(rayStart, xdist, ydist); + IndexPair firstVoxel = currentVoxel; IndexPair lastVoxel = point_map_grid_index(rayEnd, xdist, ydist); Point ray = rayEnd - rayStart; diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index fce17c75b4..852bebda31 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -3451,6 +3451,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line) arc_length = ((int)line.p()) * 2 * PI * (start_point - m_arc_center).norm(); //BBS: Attention! arc_onterpolation does not support P mode while P is not 1. arc_interpolation(start_point, end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); + float radian = ArcSegment::calc_arc_radian(start_point, end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); Vec3f start_dir = Circle::calc_tangential_vector(start_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); Vec3f end_dir = Circle::calc_tangential_vector(end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); diff --git a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp index 3043e091b5..776091adfb 100644 --- a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp @@ -1,5 +1,6 @@ #include "../ClipperUtils.hpp" #include "../Layer.hpp" +#include "../Polyline.hpp" #include "RetractWhenCrossingPerimeters.hpp" diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 1f2aa13e7f..0abeedd58e 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -325,6 +325,7 @@ ToolOrdering::ToolOrdering(const Print &print, unsigned int first_extruder, bool std::vector ToolOrdering::generate_first_layer_tool_order(const Print& print) { std::vector tool_order; + int initial_extruder_id = -1; std::map min_areas_per_extruder; for (auto object : print.objects()) { @@ -353,6 +354,7 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr } } + double max_minimal_area = 0.; for (auto ape : min_areas_per_extruder) { auto iter = tool_order.begin(); for (; iter != tool_order.end(); iter++) { @@ -385,6 +387,7 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr std::vector ToolOrdering::generate_first_layer_tool_order(const PrintObject& object) { std::vector tool_order; + int initial_extruder_id = -1; std::map min_areas_per_extruder; auto first_layer = object.get_layer(0); for (auto layerm : first_layer->regions()) { @@ -409,6 +412,7 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr } } + double max_minimal_area = 0.; for (auto ape : min_areas_per_extruder) { auto iter = tool_order.begin(); for (; iter != tool_order.end(); iter++) { diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index f18afb5d30..39c603a470 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1072,6 +1072,8 @@ void WipeTower::toolchange_Wipe( const float target_speed = is_first_layer() ? std::min(m_first_layer_speed * 60.f, 4800.f) : 4800.f; float wipe_speed = 0.33f * target_speed; + float start_y = writer.y(); + #if 0 // if there is less than 2.5*m_perimeter_width to the edge, advance straightaway (there is likely a blob anyway) if ((m_left_to_right ? xr-writer.x() : writer.x()-xl) < 2.5f*m_perimeter_width) { @@ -1130,6 +1132,8 @@ void WipeTower::toolchange_Wipe( m_left_to_right = !m_left_to_right; } + float end_y = writer.y(); + // We may be going back to the model - wipe the nozzle. If this is followed // by finish_layer, this wipe path will be overwritten. //writer.add_wipe_point(writer.x(), writer.y()) @@ -1418,6 +1422,7 @@ void WipeTower::plan_tower() // If wipe tower height is between the current and next member, set the min_depth as linear interpolation between them auto next_height_to_depth = *iter; if (next_height_to_depth.first > m_wipe_tower_height) { + float height_base = curr_height_to_depth.first; float height_diff = next_height_to_depth.first - curr_height_to_depth.first; float min_depth_base = curr_height_to_depth.second; float depth_diff = next_height_to_depth.second - curr_height_to_depth.second; diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 62385a5018..54dcb14cca 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -4,14 +4,21 @@ #include "ClipperUtils.hpp" #include "ExPolygon.hpp" #include "Line.hpp" +#include "clipper.hpp" +#include #include #include +#include +#include +#include +#include #include #include #include #include #include +#include #if defined(_MSC_VER) && defined(__clang__) #define BOOST_NO_CXX17_HDR_STRING_VIEW diff --git a/src/libslic3r/Geometry/Circle.cpp b/src/libslic3r/Geometry/Circle.cpp index d7279c3b1b..6796671954 100644 --- a/src/libslic3r/Geometry/Circle.cpp +++ b/src/libslic3r/Geometry/Circle.cpp @@ -1,5 +1,7 @@ #include "Circle.hpp" +#include "../Polygon.hpp" + #include #include #include diff --git a/src/libslic3r/Geometry/Voronoi.cpp b/src/libslic3r/Geometry/Voronoi.cpp index f9ab6a6945..58923b9ada 100644 --- a/src/libslic3r/Geometry/Voronoi.cpp +++ b/src/libslic3r/Geometry/Voronoi.cpp @@ -2,6 +2,7 @@ #include "libslic3r/Arachne/utils/PolygonsSegmentIndex.hpp" #include "libslic3r/Geometry/VoronoiUtils.hpp" +#include "libslic3r/Geometry/VoronoiUtilsCgal.hpp" #include "libslic3r/MultiMaterialSegmentation.hpp" #include diff --git a/src/libslic3r/JumpPointSearch.cpp b/src/libslic3r/JumpPointSearch.cpp index a3b078127b..f8ef2ff100 100644 --- a/src/libslic3r/JumpPointSearch.cpp +++ b/src/libslic3r/JumpPointSearch.cpp @@ -1,18 +1,26 @@ #include "JumpPointSearch.hpp" #include "BoundingBox.hpp" +#include "ExPolygon.hpp" #include "Point.hpp" #include "libslic3r/AStar.hpp" #include "libslic3r/KDTreeIndirect.hpp" +#include "libslic3r/Polygon.hpp" #include "libslic3r/Polyline.hpp" #include "libslic3r/libslic3r.h" +#include +#include +#include #include #include #include #include #include +#include #include #include +#include + //#define DEBUG_FILES #ifdef DEBUG_FILES #include "libslic3r/SVG.hpp" diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index 51c84a16f7..7e75d56322 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -1,7 +1,9 @@ #include "Geometry.hpp" #include "Line.hpp" +#include "Polyline.hpp" #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index 3cd0771962..c412553a22 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -330,7 +330,7 @@ void segment(CGALMesh& src, std::vector& dst, double smoothing_alpha = // fill holes typedef boost::graph_traits<_EpicMesh>::halfedge_descriptor halfedge_descriptor; -// typedef boost::graph_traits<_EpicMesh>::vertex_descriptor vertex_descriptor; + typedef boost::graph_traits<_EpicMesh>::vertex_descriptor vertex_descriptor; std::vector border_cycles; CGAL::Polygon_mesh_processing::extract_boundary_cycles(out, std::back_inserter(border_cycles)); for (halfedge_descriptor h : border_cycles) @@ -693,7 +693,7 @@ bool do_boolean_single(McutMesh &srcMesh, const McutMesh &cutMesh, const std::st McutMesh outMesh; int N_vertices = 0; // traversal of all connected components - for (unsigned int n = 0; n < numConnComps; ++n) { + for (int n = 0; n < numConnComps; ++n) { // query the data of each connected component from MCUT McConnectedComponent connComp = connectedComponents[n]; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index ad63a21ee6..534777b6c1 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -442,7 +442,7 @@ ModelObject* Model::add_object(const ModelObject &other) this->objects.push_back(new_object); // BBS: backup if (need_backup) { - if (other.get_model()) { + if (auto model = other.get_model()) { auto iter = object_backup_id_map.find(other.id().id); if (iter != object_backup_id_map.end()) { object_backup_id_map.emplace(new_object->id().id, iter->second); @@ -2615,7 +2615,7 @@ size_t ModelVolume::split(unsigned int max_extruders) size_t ivolume = std::find(this->object->volumes.begin(), this->object->volumes.end(), this) - this->object->volumes.begin(); const std::string name = this->name; - // unsigned int extruder_counter = 0; + unsigned int extruder_counter = 0; const Vec3d offset = this->get_offset(); for (TriangleMesh &mesh : meshes) { @@ -2930,6 +2930,9 @@ bool Model::obj_import_vertex_color_deal(const std::vector &verte std::cout << "error"; } }; + auto calc_tri_area = [](const Vec3f &v0, const Vec3f &v1, const Vec3f &v2) { + return std::abs((v0 - v1).cross(v0 - v2).norm()) / 2; + }; auto volume = obj->volumes[0]; volume->config.set("extruder", first_extruder_id); auto face_count = volume->mesh().its.indices.size(); @@ -3029,6 +3032,7 @@ bool Model::obj_import_face_color_deal(const std::vector &face_fi volume->mmu_segmentation_facets.reserve(face_count); if (volume->mesh().its.indices.size() != face_filament_ids.size()) { return false; } for (size_t i = 0; i < volume->mesh().its.indices.size(); i++) { + auto face = volume->mesh().its.indices[i]; auto filament_id = face_filament_ids[i]; if (filament_id <= 1) { continue; } std::string result; diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index f1f926fe6d..477509e69e 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -167,6 +167,7 @@ ArrangePolygon get_instance_arrange_poly(ModelInstance* instance, const Slic3r:: auto support_type_ptr = obj->get_config_value>(config, "support_type"); auto support_type = support_type_ptr->value; auto enable_support = supp_type_ptr->getBool(); + int support_int = support_type_ptr->getInt(); if (enable_support && (support_type == stNormalAuto || support_type == stNormal)) ap.brim_width = 6.0; diff --git a/src/libslic3r/MultiMaterialSegmentation.cpp b/src/libslic3r/MultiMaterialSegmentation.cpp index c0476de6d9..4fe0d6b4b1 100644 --- a/src/libslic3r/MultiMaterialSegmentation.cpp +++ b/src/libslic3r/MultiMaterialSegmentation.cpp @@ -338,6 +338,7 @@ static std::vector> get_all_next_arcs( if (arc.type == MMU_Graph::ARC_TYPE::BORDER && arc.color != color) continue; + Vec2d arc_line = graph.nodes[arc.to_idx].point - graph.nodes[arc.from_idx].point; next_continue_arc.emplace_back(&arc); all_next_arcs.emplace_back(next_continue_arc); } @@ -1285,6 +1286,7 @@ static void cut_segmented_layers(const std::vector &input_exp const std::function &throw_on_cancel_callback) { BOOST_LOG_TRIVIAL(debug) << "MM segmentation - cutting segmented layers in parallel - begin"; + const float interlocking_cut_width = interlocking_depth > 0.f ? std::max(cut_width - interlocking_depth, 0.f) : 0.f; tbb::parallel_for(tbb::blocked_range(0, segmented_regions.size()), [&segmented_regions, &input_expolygons, &cut_width, &interlocking_depth, &throw_on_cancel_callback](const tbb::blocked_range &range) { for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index 2fcbb6389a..ce448fc7e6 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -138,6 +138,8 @@ public: auto cost_items = get_features(orientation, params.min_volume); + float unprintability = target_function(cost_items, params.min_volume); + results[orientation] = cost_items; BOOST_LOG_TRIVIAL(info) << std::fixed << std::setprecision(4) << "orientation:" << orientation.transpose() << ", cost:" << std::fixed << std::setprecision(4) << cost_items.field_values(); @@ -228,10 +230,10 @@ public: { std::unordered_map alignments; // init to 0 - for (Eigen::Index i = 0; i < areas_.size(); i++) + for (size_t i = 0; i < areas_.size(); i++) alignments.insert(std::pair(normals_.row(i), 0)); // cumulate areas - for (Eigen::Index i = 0; i < areas_.size(); i++) + for (size_t i = 0; i < areas_.size(); i++) { alignments[normals_.row(i)] += areas_(i); } @@ -255,11 +257,11 @@ public: Vec3f n1 = { 0, 0, 0 }; std::vector current_areas = {0, 0}; // init to 0 - for (Eigen::Index i = 0; i < areas_.size(); i++) { + for (size_t i = 0; i < areas_.size(); i++) { alignments_.insert(std::pair(quantize_normals_.row(i), std::pair(current_areas, n1))); } // cumulate areas - for (Eigen::Index i = 0; i < areas_.size(); i++) + for (size_t i = 0; i < areas_.size(); i++) { alignments_[quantize_normals_.row(i)].first[1] += areas_(i); if (areas_(i) > alignments_[quantize_normals_.row(i)].first[0]){ @@ -337,7 +339,7 @@ public: z_max_hull.resize(mesh_convex_hull.facets_count(), 1); its = mesh_convex_hull.its; - for (Eigen::Index i = 0; i < z_max_hull.rows(); i++) + for (size_t i = 0; i < z_max_hull.rows(); i++) { float z0 = its.get_vertex(i,0).dot(orientation); float z1 = its.get_vertex(i,1).dot(orientation); @@ -391,7 +393,7 @@ public: // filter overhang Eigen::VectorXf normal_projection(normals.rows(), 1);// = this->normals.dot(orientation); - for (Eigen::Index i = 0; i < normals.rows(); i++) + for (size_t i = 0; i < normals.rows(); i++) { normal_projection(i) = normals.row(i).dot(orientation); } @@ -457,6 +459,7 @@ public: cost = params.TAR_A * (overhang + params.TAR_B) + params.RELATIVE_F * (/*costs.volume/100*/overhang*params.TAR_C + params.TAR_D + params.TAR_LAF * costs.area_laf * params.use_low_angle_face) / (params.TAR_D + params.CONTOUR_F * costs.contour + params.BOTTOM_F * bottom + params.BOTTOM_HULL_F * bottom_hull + params.TAR_E * overhang + params.TAR_PROJ_AREA * costs.area_projected); } else { + float overhang = costs.overhang; cost = params.RELATIVE_F * (costs.overhang * params.TAR_C + params.TAR_D + params.TAR_LAF * costs.area_laf * params.use_low_angle_face) / (params.TAR_D + params.CONTOUR_F * costs.contour + params.BOTTOM_F * bottom + params.BOTTOM_HULL_F * bottom_hull + params.TAR_PROJ_AREA * costs.area_projected); } cost += (costs.bottom < params.BOTTOM_MIN) * 100;// +(costs.height_to_bottom_hull_ratio > params.height_to_bottom_hull_ratio_MIN) * 110; diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 941cdf8f42..439ef57874 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -242,10 +242,12 @@ static std::deque split_polyline_by_degree(const Polyline &p Polyline right; Polyline temp_copy = polyline_with_insert_points; + size_t poly_size = polyline_with_insert_points.size(); // BBS: merge degree in limited range //find first degee base double degree_base = int(points_overhang[points_overhang.size() - 1] / min_degree_gap) * min_degree_gap + min_degree_gap; degree_base = degree_base > max_overhang_degree ? max_overhang_degree : degree_base; + double short_poly_len = 0; for (int point_idx = points_overhang.size() - 2; point_idx > 0; --point_idx) { double degree = points_overhang[point_idx]; @@ -938,6 +940,7 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator& p if (perimeter_generator.config->overhang_speed_classic && perimeter_generator.config->enable_overhang_speed && perimeter_generator.config->fuzzy_skin == FuzzySkinType::None) { + Flow flow = is_external ? perimeter_generator.ext_perimeter_flow : perimeter_generator.perimeter_flow; std::map> clipper_serise; std::map recognization_paths; @@ -2250,6 +2253,7 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim if (!unsupported.empty()) { //only consider the part that can be bridged (really, by the bridge algorithm) //first, separate into islands (ie, each ExPlolygon) + int numploy = 0; //only consider the bottom layer that intersect unsupported, to be sure it's only on our island. ExPolygonCollection lower_island(support); //a detector per island @@ -2367,6 +2371,7 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim //ExPolygons no_bridge = diff_ex(offset_ex(unbridgeable, ext_perimeter_width * 3 / 2), last); //bridges_temp = diff_ex(bridges_temp, no_bridge); coordf_t offset_to_do = bridged_infill_margin; + bool first = true; unbridgeable = diff_ex(unbridgeable, offset_ex(bridges_temp, ext_perimeter_width)); while (offset_to_do > ext_perimeter_width * 1.5) { unbridgeable = offset2_ex(unbridgeable, -ext_perimeter_width / 4, ext_perimeter_width * 2.25, ClipperLib::jtSquare); @@ -2374,6 +2379,7 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim bridges_temp = offset_ex(bridges_temp, ext_perimeter_width, ClipperLib::jtMiter, 6.); unbridgeable = diff_ex(unbridgeable, offset_ex(bridges_temp, ext_perimeter_width)); offset_to_do -= ext_perimeter_width; + first = false; } unbridgeable = offset_ex(unbridgeable, ext_perimeter_width + offset_to_do, ClipperLib::jtSquare); bridges_temp = diff_ex(bridges_temp, unbridgeable); diff --git a/src/libslic3r/Polygon.cpp b/src/libslic3r/Polygon.cpp index 1d93458166..5d3d643349 100644 --- a/src/libslic3r/Polygon.cpp +++ b/src/libslic3r/Polygon.cpp @@ -355,6 +355,8 @@ Polygon Polygon::transform(const Transform3d& trafo) const if (vertices_count == 0) return dstpoly; + unsigned int data_size = 3 * vertices_count * sizeof(float); + Eigen::MatrixXd src(3, vertices_count); for (size_t i = 0; i < vertices_count; i++) { diff --git a/src/libslic3r/Polyline.cpp b/src/libslic3r/Polyline.cpp index 8a650c926b..b30564f3c1 100644 --- a/src/libslic3r/Polyline.cpp +++ b/src/libslic3r/Polyline.cpp @@ -51,6 +51,7 @@ void Polyline::reverse() // removes the given distance from the end of the polyline void Polyline::clip_end(double distance) { + bool last_point_inserted = false; size_t remove_after_index = MultiPoint::size(); while (distance > 0) { Vec2d last_point = this->last_point().cast(); @@ -64,6 +65,7 @@ void Polyline::clip_end(double distance) double lsqr = v.squaredNorm(); if (lsqr > distance * distance) { this->points.emplace_back((last_point + v * (distance / sqrt(lsqr))).cast()); + last_point_inserted = true; break; } distance -= sqrt(lsqr); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 9c4d533e6e..98a3a61155 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1570,6 +1570,7 @@ bool PresetCollection::load_user_preset(std::string name, std::map presets_loaded; + int count = 0; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, name %1% , total value counts %2%")%name %preset_values.size(); diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index a6f55a9bfe..92a8069e6e 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1853,7 +1853,7 @@ void PresetBundle::export_selections(AppConfig &config) // BBS void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) { - size_t old_filament_count = this->filament_presets.size(); + int old_filament_count = this->filament_presets.size(); if (n > old_filament_count && old_filament_count != 0) filament_presets.resize(n, filament_presets.back()); else { @@ -1867,7 +1867,7 @@ void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) //BBS set new filament color to new_color if (old_filament_count < n) { if (!new_color.empty()) { - for (size_t i = old_filament_count; i < n; i++) { + for (int i = old_filament_count; i < n; i++) { filament_color->values[i] = new_color; } } @@ -2054,7 +2054,7 @@ bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_m //BBS: check whether this is the only edited filament bool PresetBundle::is_the_only_edited_filament(unsigned int filament_index) { - size_t n = this->filament_presets.size(); + int n = this->filament_presets.size(); if (filament_index >= n) return false; @@ -2117,6 +2117,7 @@ DynamicPrintConfig PresetBundle::full_fff_config() const // BBS size_t num_filaments = this->filament_presets.size(); + auto* extruder_diameter = dynamic_cast(out.option("nozzle_diameter")); // Collect the "compatible_printers_condition" and "inherits" values over all presets (print, filaments, printers) into a single vector. std::vector compatible_printers_condition; std::vector compatible_prints_condition; @@ -2479,7 +2480,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool std::vector filament_ids = std::move(config.option("filament_ids", true)->values); std::vector print_compatible_printers = std::move(config.option("print_compatible_printers", true)->values); //BBS: add different settings check logic - // bool has_different_settings_to_system = config.option("different_settings_to_system")?true:false; + bool has_different_settings_to_system = config.option("different_settings_to_system")?true:false; std::vector different_values = std::move(config.option("different_settings_to_system", true)->values); std::string &compatible_printers_condition = Preset::compatible_printers_condition(config); std::string &compatible_prints_condition = Preset::compatible_prints_condition(config); diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index df7f01dbd2..dfec7089dc 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -831,6 +831,7 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print for (int i = k+1; i < print_instance_count; i++) { + auto& p = print_instance_with_bounding_box[i].print_instance; auto bbox2 = print_instance_with_bounding_box[i].bounding_box; auto py1 = bbox2.min.y(); auto py2 = bbox2.max.y(); @@ -1401,30 +1402,32 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* const ConfigOptionDef* bed_type_def = print_config_def.get("curr_bed_type"); assert(bed_type_def != nullptr); - if (is_BBL_printer()) { + if (is_BBL_printer()) { const t_config_enum_values* bed_type_keys_map = bed_type_def->enum_keys_map; - const ConfigOptionInts* bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); for (unsigned int extruder_id : extruders) { - int curr_bed_temp = bed_temp_opt->get_at(extruder_id); - if (curr_bed_temp == 0 && bed_type_keys_map != nullptr) { - std::string bed_type_name; - for (auto item : *bed_type_keys_map) { - if (item.second == m_config.curr_bed_type) { - bed_type_name = item.first; - break; + const ConfigOptionInts* bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); + for (unsigned int extruder_id : extruders) { + int curr_bed_temp = bed_temp_opt->get_at(extruder_id); + if (curr_bed_temp == 0 && bed_type_keys_map != nullptr) { + std::string bed_type_name; + for (auto item : *bed_type_keys_map) { + if (item.second == m_config.curr_bed_type) { + bed_type_name = item.first; + break; + } } - } - StringObjectException except; - except.string = Slic3r::format(L("Plate %d: %s does not support filament %s"), this->get_plate_index() + 1, L(bed_type_name), extruder_id + 1); - except.string += "\n"; - except.type = STRING_EXCEPT_FILAMENT_NOT_MATCH_BED_TYPE; - except.params.push_back(std::to_string(this->get_plate_index() + 1)); - except.params.push_back(L(bed_type_name)); - except.params.push_back(std::to_string(extruder_id+1)); - except.object = nullptr; - return except; - } + StringObjectException except; + except.string = Slic3r::format(L("Plate %d: %s does not support filament %s"), this->get_plate_index() + 1, L(bed_type_name), extruder_id + 1); + except.string += "\n"; + except.type = STRING_EXCEPT_FILAMENT_NOT_MATCH_BED_TYPE; + except.params.push_back(std::to_string(this->get_plate_index() + 1)); + except.params.push_back(L(bed_type_name)); + except.params.push_back(std::to_string(extruder_id+1)); + except.object = nullptr; + return except; + } + } } } @@ -1441,7 +1444,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* } return warning_key; }; - /* auto check_motion_ability_region_setting = [&](const std::vector& keys_to_check, double limit) -> std::string { + auto check_motion_ability_region_setting = [&](const std::vector& keys_to_check, double limit) -> std::string { std::string warning_key; for (const auto& key : keys_to_check) { if (m_default_region_config.get_abs_value(key) > limit) { @@ -1450,7 +1453,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* } } return warning_key; - }; */ + }; std::string warning_key; // check jerk @@ -2666,7 +2669,7 @@ void Print::_make_wipe_tower() for (auto &layer_tools : m_wipe_tower_data.tool_ordering.layer_tools()) { // for all layers if (!layer_tools.has_wipe_tower) continue; - // bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); + bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); wipe_tower.plan_toolchange((float) layer_tools.print_z, (float) layer_tools.wipe_tower_layer_height, current_extruder_id, current_extruder_id); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 30b267c151..8674c1a4ea 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -680,6 +680,7 @@ void PrintObject::estimate_curled_extrusions() [](const PrintRegion *region) { return region->config().enable_overhang_speed.getBool(); })) { // Estimate curling of support material and add it to the malformaition lines of each layer + float support_flow_width = support_material_flow(this, this->config().layer_height).width(); SupportSpotsGenerator::Params params{this->print()->m_config.filament_type.values, float(this->print()->default_object_config().inner_wall_acceleration.getFloat()), this->config().raft_layers.getInt(), this->config().brim_type.value, @@ -2951,16 +2952,16 @@ struct POProfiler void PrintObject::generate_support_preview() { - // POProfiler profiler; + POProfiler profiler; - // boost::posix_time::ptime ts1 = boost::posix_time::microsec_clock::local_time(); + boost::posix_time::ptime ts1 = boost::posix_time::microsec_clock::local_time(); this->slice(); - // boost::posix_time::ptime ts2 = boost::posix_time::microsec_clock::local_time(); - // profiler.duration1 = (ts2 - ts1).total_milliseconds(); + boost::posix_time::ptime ts2 = boost::posix_time::microsec_clock::local_time(); + profiler.duration1 = (ts2 - ts1).total_milliseconds(); this->generate_support_material(); - // boost::posix_time::ptime ts3 = boost::posix_time::microsec_clock::local_time(); - // profiler.duration2 = (ts3 - ts2).total_milliseconds(); + boost::posix_time::ptime ts3 = boost::posix_time::microsec_clock::local_time(); + profiler.duration2 = (ts3 - ts2).total_milliseconds(); } void PrintObject::update_slicing_parameters() @@ -3670,6 +3671,7 @@ template void PrintObject::remove_bridges_from_contacts( SupportNecessaryType PrintObject::is_support_necessary() { + static const double super_overhang_area_threshold = SQ(scale_(5.0)); const double cantilevel_dist_thresh = scale_(6); #if 0 double threshold_rad = (m_config.support_threshold_angle.value < EPSILON ? 30 : m_config.support_threshold_angle.value + 1) * M_PI / 180.; diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index fd467e076f..98f7d8b20e 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -151,8 +151,8 @@ static std::vector slice_volumes_inner( params_base.mode_below = params_base.mode; // BBS - // const size_t num_extruders = print_config.filament_diameter.size(); - // const bool is_mm_painted = num_extruders > 1 && std::any_of(model_volumes.cbegin(), model_volumes.cend(), [](const ModelVolume *mv) { return mv->is_mm_painted(); }); + const size_t num_extruders = print_config.filament_diameter.size(); + const bool is_mm_painted = num_extruders > 1 && std::any_of(model_volumes.cbegin(), model_volumes.cend(), [](const ModelVolume *mv) { return mv->is_mm_painted(); }); // BBS: don't do size compensation when slice volume. // Will handle contour and hole size compensation seperately later. //const auto extra_offset = is_mm_painted ? 0.f : std::max(0.f, float(print_object_config.xy_contour_compensation.value)); @@ -336,8 +336,7 @@ static std::vector> slices_to_regions( }; // BBS - // Orca: unused -/* auto trim_overlap = [](ExPolygons& expolys_a, ExPolygons& expolys_b) { + auto trim_overlap = [](ExPolygons& expolys_a, ExPolygons& expolys_b) { ExPolygons trimming_a; ExPolygons trimming_b; @@ -362,7 +361,7 @@ static std::vector> slices_to_regions( expolys_a = diff_ex(expolys_a, trimming_a); expolys_b = diff_ex(expolys_b, trimming_b); - }; */ + }; std::vector temp_slices; for (size_t zs_complex_idx = range.begin(); zs_complex_idx < range.end(); ++ zs_complex_idx) { diff --git a/src/libslic3r/Shape/TextShape.cpp b/src/libslic3r/Shape/TextShape.cpp index 58df800a51..dce731af19 100644 --- a/src/libslic3r/Shape/TextShape.cpp +++ b/src/libslic3r/Shape/TextShape.cpp @@ -99,6 +99,8 @@ std::vector init_occt_fonts() static bool TextToBRep(const char* text, const char* font, const float theTextHeight, Font_FontAspect& theFontAspect, TopoDS_Shape& theShape, double& text_width) { + Standard_Integer anArgIt = 1; + Standard_CString aName = "text_shape"; Standard_CString aText = text; Font_BRepFont aFont; diff --git a/src/libslic3r/ShortEdgeCollapse.cpp b/src/libslic3r/ShortEdgeCollapse.cpp index f19ff9f22e..3397daf55c 100644 --- a/src/libslic3r/ShortEdgeCollapse.cpp +++ b/src/libslic3r/ShortEdgeCollapse.cpp @@ -2,6 +2,7 @@ #include "libslic3r/NormalUtils.hpp" #include +#include #include #include diff --git a/src/libslic3r/SlicesToTriangleMesh.cpp b/src/libslic3r/SlicesToTriangleMesh.cpp index 5740665ae2..3b55cf066b 100644 --- a/src/libslic3r/SlicesToTriangleMesh.cpp +++ b/src/libslic3r/SlicesToTriangleMesh.cpp @@ -1,5 +1,8 @@ +#include + #include "SlicesToTriangleMesh.hpp" +//#include "libslic3r/MTUtils.hpp" #include "libslic3r/Execution/ExecutionTBB.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/Tesselate.hpp" diff --git a/src/libslic3r/Support/OrganicSupport.cpp b/src/libslic3r/Support/OrganicSupport.cpp index 5543f76fd5..05e515d94e 100644 --- a/src/libslic3r/Support/OrganicSupport.cpp +++ b/src/libslic3r/Support/OrganicSupport.cpp @@ -1,6 +1,12 @@ #include "OrganicSupport.hpp" #include "SupportCommon.hpp" + +#include "../AABBTreeLines.hpp" +#include "../ClipperUtils.hpp" +#include "../Polygon.hpp" +#include "../Polyline.hpp" #include "../MutablePolygon.hpp" +#include "../TriangleMeshSlicer.hpp" #include diff --git a/src/libslic3r/Support/SupportParameters.cpp b/src/libslic3r/Support/SupportParameters.cpp index 4af36e05ae..8508206cb9 100644 --- a/src/libslic3r/Support/SupportParameters.cpp +++ b/src/libslic3r/Support/SupportParameters.cpp @@ -1,4 +1,6 @@ #include "../Print.hpp" +#include "../PrintConfig.hpp" +#include "../Slicing.hpp" #include "SupportParameters.hpp" namespace Slic3r::FFFSupport { diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index e1c6c97cc1..b022607bf7 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -338,7 +338,7 @@ static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag rand_init = true; } - // int rand_num = rand() % 1000000; + int rand_num = rand() % 1000000; //makedir("./SVG"); std::string prefix = "./SVG/"; std::string suffix = ".svg"; @@ -1554,6 +1554,7 @@ static inline ExPolygons detect_overhangs( double thresh_angle = object_config.support_threshold_angle.value > 0 ? object_config.support_threshold_angle.value + 1 : 0; thresh_angle = std::min(thresh_angle, 89.); // BBS should be smaller than 90 const double threshold_rad = Geometry::deg2rad(thresh_angle); + const coordf_t max_bridge_length = scale_(object_config.max_bridge_length.value); const bool bridge_no_support = object_config.bridge_no_support.value; const coordf_t xy_expansion = scale_(object_config.support_expansion.value); @@ -1576,6 +1577,7 @@ static inline ExPolygons detect_overhangs( { // Generate overhang / contact_polygons for non-raft layers. const Layer &lower_layer = *layer.lower_layer; + const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); // Can't directly use lower_layer.lslices, or we'll miss some very sharp tails. // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! // FIXME if there are multiple regions with different extrusion width, the following code may not be right. @@ -1687,6 +1689,7 @@ static inline ExPolygons detect_overhangs( // check cantilever if (layer.lower_layer) { for (ExPolygon& poly : overhang_areas) { + float fw = float(layer.regions().front()->flow(frExternalPerimeter).scaled_width()); auto cluster_boundary_ex = intersection_ex(poly, offset_ex(layer.lower_layer->lslices, scale_(0.5))); Polygons cluster_boundary = to_polygons(cluster_boundary_ex); if (cluster_boundary.empty()) continue; @@ -1731,6 +1734,7 @@ static inline std::tuple detect_contacts( Polygons enforcer_polygons; // BBS. + const bool auto_normal_support = object_config.support_type.value == stNormalAuto; const bool buildplate_only = !annotations.buildplate_covered.empty(); float no_interface_offset = 0.f; @@ -1744,6 +1748,8 @@ static inline std::tuple detect_contacts( // Generate overhang / contact_polygons for non-raft layers. const Layer& lower_layer = *layer.lower_layer; const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); + const ExPolygons& lower_layer_expolys = lower_layer.lslices; + const ExPolygons& lower_layer_sharptails = lower_layer.sharp_tails; // Cache support trimming polygons derived from lower layer polygons, possible merged with "on build plate only" trimming polygons. auto slices_margin_update = @@ -2181,6 +2187,7 @@ struct OverhangCluster { static OverhangCluster* add_overhang(std::vector& clusters, ExPolygon* overhang, int layer_nr, coordf_t offset_scaled) { OverhangCluster* cluster = nullptr; + bool found = false; for (int i = 0; i < clusters.size(); i++) { auto cluster_i = &clusters[i]; if (cluster_i->intersects(*overhang, layer_nr)) { @@ -3539,13 +3546,13 @@ std::pair 1. // Contact layer needs a base_interface layer, therefore run the following block if support_interface_top_layers > 0, has soluble support and extruders are different. -// bool soluble_interface_non_soluble_base = -// // Zero z-gap between the overhangs and the support interface. -// m_slicing_params.soluble_interface && -// // Interface extruder soluble. -// m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && -// // Base extruder: Either "print with active extruder" not soluble. -// (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); + bool soluble_interface_non_soluble_base = + // Zero z-gap between the overhangs and the support interface. + m_slicing_params.soluble_interface && + // Interface extruder soluble. + m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && + // Base extruder: Either "print with active extruder" not soluble. + (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); bool snug_supports = m_object_config->support_style.value == smsSnug; // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion bool differnt_support_interface_filament = m_object_config->support_interface_filament.value != m_object_config->support_filament.value; @@ -4621,6 +4628,7 @@ void PrintObjectSupportMaterial::generate_toolpaths( if (object_layer != nullptr) { float biggest_bridge_area = 0.f; + const Polygons& top_contact_polys = top_contact_layer.polygons_to_extrude(); for (auto layerm : object_layer->regions()) { for (auto bridge_surface : layerm->fill_surfaces.filter_by_type(stBottomBridge)) { float bs_area = bridge_surface->area(); diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index 364e1f37eb..c588409ac1 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -5,6 +5,7 @@ #include "Print.hpp" #include "Layer.hpp" #include "Fill/FillBase.hpp" +#include "Fill/FillConcentric.hpp" #include "CurveAnalyzer.hpp" #include "SVG.hpp" #include "ShortestPath.hpp" @@ -12,6 +13,7 @@ #include #include +#include #include #define _L(s) Slic3r::I18N::translate(s) @@ -467,6 +469,7 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double Point ret = from; std::vector valid_pts; double bestDist2 = std::numeric_limits::max(); + unsigned int bestPoly = NO_INDEX; bool is_already_on_correct_side_of_boundary = false; // whether [from] is already on the right side of the boundary Point inward_dir; for (unsigned int poly_idx = 0; poly_idx < polygons.size(); poly_idx++) @@ -507,6 +510,7 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double if (dist2 < bestDist2) { bestDist2 = dist2; + bestPoly = poly_idx; if (distance == 0) { ret = x; } else { @@ -543,6 +547,7 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double if (dist2 < bestDist2) { bestDist2 = dist2; + bestPoly = poly_idx; if (distance == 0) { ret = x; } else { @@ -627,6 +632,7 @@ static bool is_inside_ex(const ExPolygons &polygons, const Point &pt) static bool move_out_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) { + Point from0 = from; ExPolygons polys_dilated = union_ex(offset_ex(polygons, scale_(distance))); Point pt = projection_onto(polys_dilated, from);// find_closest_ex(from, polys_dilated); Point outward_dir = pt - from; @@ -728,12 +734,16 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) const coordf_t extrusion_width = config.get_abs_value("line_width", nozzle_diameter); const coordf_t extrusion_width_scaled = scale_(extrusion_width); const coordf_t max_bridge_length = scale_(config.max_bridge_length.value); + const bool bridge_no_support = max_bridge_length > 0; const bool support_critical_regions_only = config.support_critical_regions_only.value; const bool config_remove_small_overhangs = config.support_remove_small_overhang.value; const int enforce_support_layers = config.enforce_support_layers.value; const double area_thresh_well_supported = SQ(scale_(6)); const double length_thresh_well_supported = scale_(6); static const double sharp_tail_max_support_height = 16.f; + // a region is considered well supported if the number of layers below it exceeds this threshold + const int thresh_layers_below = 10 / config.layer_height; + double obj_height = m_object->size().z(); // +1 makes the threshold inclusive double thresh_angle = config.support_threshold_angle.value > EPSILON ? config.support_threshold_angle.value + 1 : 30; thresh_angle = std::min(thresh_angle, 89.); // should be smaller than 90 @@ -1396,6 +1406,7 @@ void TreeSupport::generate_toolpaths() const PrintObjectConfig &object_config = m_object->config(); coordf_t support_extrusion_width = m_support_params.support_extrusion_width; coordf_t nozzle_diameter = print_config.nozzle_diameter.get_at(object_config.support_filament - 1); + coordf_t layer_height = object_config.layer_height.value; const size_t wall_count = object_config.tree_support_wall_count.value; // Check if set to zero, use default if so. @@ -1409,6 +1420,8 @@ void TreeSupport::generate_toolpaths() coordf_t interface_density = std::min(1., m_support_material_interface_flow.spacing() / interface_spacing); coordf_t bottom_interface_density = std::min(1., m_support_material_interface_flow.spacing() / bottom_interface_spacing); + const coordf_t branch_radius = object_config.tree_support_branch_diameter.value / 2; + const coordf_t branch_radius_scaled = scale_(branch_radius); if (m_object->support_layers().empty()) return; @@ -2113,6 +2126,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no const bool with_lightning_infill = m_support_params.base_fill_pattern == ipLightning; coordf_t support_extrusion_width = m_support_params.support_extrusion_width; + const size_t wall_count = config.tree_support_wall_count.value; const PrintObjectConfig& object_config = m_object->config(); BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; @@ -2363,7 +2377,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no ExPolygons& base_areas = ts_layer->base_areas; int layer_nr_lower = layer_nr - 1; - for (;layer_nr_lower >= 0; layer_nr_lower--) { + for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; } if (layer_nr_lower <= 0) continue; @@ -2453,7 +2467,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no if (ts_layer->area_groups.empty()) continue; int layer_nr_lower = layer_nr - 1; - for (;layer_nr_lower >= 0; layer_nr_lower--) { + for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; } if (layer_nr_lower < 0) continue; @@ -2568,10 +2582,15 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) const coordf_t radius_sample_resolution = m_ts_data->m_radius_sample_resolution; const bool support_on_buildplate_only = config.support_on_build_plate_only.value; const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; + const size_t top_interface_layers = config.support_interface_top_layers.value; float DO_NOT_MOVER_UNDER_MM = is_slim ? 0 : 5; // do not move contact points under 5mm const auto nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(m_object->config().support_interface_filament-1); const auto support_line_width = config.support_line_width.get_abs_value(nozzle_diameter); + auto get_branch_angle = [this,&config](coordf_t radius) { + if (config.tree_support_branch_angle.value < 30.0) return config.tree_support_branch_angle.value; + return (radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; + }; auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const Node *node, int power = 1) { double move_dist = node->max_move_dist; if (node->max_move_dist == 0) { @@ -3183,6 +3202,7 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ const coordf_t layer_height = config.layer_height.value; const coordf_t max_layer_height = m_slicing_params.max_layer_height; const size_t bot_intf_layers = config.support_interface_bottom_layers.value; + const size_t top_intf_layers = config.support_interface_top_layers.value; // if already using max layer height, no need to adjust if (layer_height == max_layer_height) return; @@ -3304,6 +3324,7 @@ std::vector TreeSupport::plan_layer_heights(std::vector #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/TriangulateWall.cpp b/src/libslic3r/TriangulateWall.cpp index 133ca8236c..b8746ef0d2 100644 --- a/src/libslic3r/TriangulateWall.cpp +++ b/src/libslic3r/TriangulateWall.cpp @@ -1,5 +1,5 @@ -//#include "TriangulateWall.hpp" -//#include "MTUtils.hpp" +#include "TriangulateWall.hpp" +#include "MTUtils.hpp" namespace Slic3r { diff --git a/src/libslic3r/Triangulation.cpp b/src/libslic3r/Triangulation.cpp index 782553e2a7..f290442bf1 100644 --- a/src/libslic3r/Triangulation.cpp +++ b/src/libslic3r/Triangulation.cpp @@ -1,10 +1,6 @@ #include "Triangulation.hpp" #include "IntersectionPoints.hpp" - -#ifndef _WIN32 -// On linux and macOS, this include is required #include -#endif // _WIN32 #include #include #include diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index a00c8dd904..44b44160ed 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -471,9 +471,8 @@ std::string CalibPressureAdvanceLine::print_pa_lines(double start_x, double star const double e_per_mm = CalibPressureAdvance::e_per_mm(m_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, print_flow_ratio); - // Orca: Unused due to skip drawing indicator lines - // const double thin_e_per_mm = CalibPressureAdvance::e_per_mm(m_thin_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, - // print_flow_ratio); + const double thin_e_per_mm = CalibPressureAdvance::e_per_mm(m_thin_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, + print_flow_ratio); const double number_e_per_mm = CalibPressureAdvance::e_per_mm(m_number_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, print_flow_ratio); diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index d7a4a653e7..733ac626f4 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -3,12 +3,19 @@ #include #include +#include #include #include #include "format.hpp" +#include "Platform.hpp" +#include "Time.hpp" #include "libslic3r.h" +#ifdef __APPLE__ +#include "MacUtils.hpp" +#endif + #ifdef WIN32 #include #include @@ -25,7 +32,6 @@ #ifdef __APPLE__ #include #include - #include "MacUtils.hpp" #endif #ifdef __linux__ #include @@ -33,7 +39,6 @@ #include #include #include - #include "Platform.hpp" #endif #endif @@ -1484,6 +1489,8 @@ bool bbl_calc_md5(std::string &filename, std::string &md5_out) MD5_Init(&ctx); boost::nowide::ifstream ifs(filename, std::ios::binary); std::string buf(64 * 1024, 0); + const std::size_t & size = boost::filesystem::file_size(filename); + std::size_t left_size = size; while (ifs) { ifs.read(buf.data(), buf.size()); int read_bytes = ifs.gcount(); diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index e58b5c7eff..86ab5d2239 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -241,7 +241,7 @@ float GLVolume::last_explosion_ratio = 1.0; void GLVolume::set_render_color() { - // bool outside = is_outside || is_below_printbed(); + bool outside = is_outside || is_below_printbed(); if (force_native_color || force_neutral_color) { #ifdef ENABBLE_OUTSIDE_COLOR @@ -859,6 +859,7 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab return; GLShaderProgram* sink_shader = GUI::wxGetApp().get_shader("flat"); + GLShaderProgram* edges_shader = GUI::wxGetApp().get_shader("flat"); if (type == ERenderType::Transparent) { glsafe(::glEnable(GL_BLEND)); @@ -1022,6 +1023,7 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo GUI::PartPlate* curr_plate = GUI::wxGetApp().plater()->get_partplate_list().get_selected_plate(); const Pointfs& pp_bed_shape = curr_plate->get_shape(); BuildVolume plate_build_volume(pp_bed_shape, build_volume.printable_height()); + const std::vector& exclude_areas = curr_plate->get_exclude_areas(); for (GLVolume* volume : this->volumes) { diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index b4c5e95646..f44dc19917 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -331,6 +331,7 @@ void AMSMaterialsSetting::create_panel_kn(wxWindow* parent) kn_val_sizer->Add(m_input_k_val, 0, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(0)); // n params input + wxBoxSizer* n_sizer = new wxBoxSizer(wxHORIZONTAL); m_n_param = new wxStaticText(parent, wxID_ANY, _L("Factor N"), wxDefaultPosition, wxDefaultSize, 0); m_n_param->SetFont(::Label::Body_13); m_n_param->SetForegroundColour(wxColour(50, 58, 61)); @@ -356,7 +357,7 @@ void AMSMaterialsSetting::paintEvent(wxPaintEvent &evt) { auto size = GetSize(); wxPaintDC dc(this); - dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#000000")), 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#000000")), 1, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawRectangle(0, 0, size.x, size.y); } diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 41abe5a471..492926b952 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -366,6 +366,7 @@ void MaterialItem::doRender(wxDC &dc) wxString out_txt = m_msg; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_warning_text->GetTextExtent(count_txt); @@ -401,6 +402,7 @@ void AmsMapingPopup::on_left_down(wxMouseEvent &evt) auto pos = ClientToScreen(evt.GetPosition()); for (MappingItem *item : m_mapping_item_list) { auto p_rect = item->ClientToScreen(wxPoint(0, 0)); + auto left = item->GetSize(); if (pos.x > p_rect.x && pos.y > p_rect.y && pos.x < (p_rect.x + item->GetSize().x) && pos.y < (p_rect.y + item->GetSize().y)) { if (item->m_tray_data.type == TrayType::NORMAL && !is_match_material(item->m_tray_data.filament_type)) return; @@ -1522,6 +1524,9 @@ void AmsRMGroup::on_mouse_move(wxMouseEvent& evt) std::string tray_name = iter->first; wxColour tray_color = iter->second; + int x = size.x / 2; + int y = size.y / 2; + int radius = size.x / 2; endAngle += ev_angle; if (click_angle >= startAngle && click_angle < endAngle) { diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index 5bc3280e75..8d338edc21 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -989,7 +989,7 @@ void AuxiliaryPanel::create_folder(wxString name) fs::path bfs_path((m_root_dir + "/" + folder_name).ToStdWstring()); if (fs::exists(bfs_path)) { try { - fs::remove_all(bfs_path); + bool is_done = fs::remove_all(bfs_path); } catch (...) { BOOST_LOG_TRIVIAL(error) << "Failed removing the auxiliary directory " << m_root_dir.c_str(); } diff --git a/src/slic3r/GUI/AuxiliaryDataViewModel.cpp b/src/slic3r/GUI/AuxiliaryDataViewModel.cpp index cad5cf5455..50368b8544 100644 --- a/src/slic3r/GUI/AuxiliaryDataViewModel.cpp +++ b/src/slic3r/GUI/AuxiliaryDataViewModel.cpp @@ -337,7 +337,7 @@ wxDataViewItemArray AuxiliaryModel::ImportFile(AuxiliaryModelNode* sel, wxArrayS dir_path += "\\" + src_bfs_path.filename().generic_wstring(); boost::system::error_code ec; - if (!fs::copy_file(src_bfs_path, fs::path(dir_path.ToStdWstring()), fs::copy_options::overwrite_existing, ec)) + if (!fs::copy_file(src_bfs_path, fs::path(dir_path.ToStdWstring()), fs::copy_option::overwrite_if_exists, ec)) continue; // Update model data diff --git a/src/slic3r/GUI/BBLStatusBar.cpp b/src/slic3r/GUI/BBLStatusBar.cpp index b0d3513f59..7c3d640d6e 100644 --- a/src/slic3r/GUI/BBLStatusBar.cpp +++ b/src/slic3r/GUI/BBLStatusBar.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 30d4878ddf..0bf251d729 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -230,7 +230,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(10)); wxBitmap save_bitmap = create_scaled_bitmap("topbar_save", nullptr, TOPBAR_ICON_SIZE); - this->AddTool(wxID_SAVE, "", save_bitmap); + wxAuiToolBarItem* save_btn = this->AddTool(wxID_SAVE, "", save_bitmap); this->AddSpacer(FromDIP(10)); @@ -278,7 +278,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(4)); wxBitmap iconize_bitmap = create_scaled_bitmap("topbar_min", nullptr, TOPBAR_ICON_SIZE); - this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap); + wxAuiToolBarItem* iconize_btn = this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap); this->AddSpacer(FromDIP(4)); @@ -294,7 +294,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(4)); wxBitmap close_bitmap = create_scaled_bitmap("topbar_close", nullptr, TOPBAR_ICON_SIZE); - this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap); + wxAuiToolBarItem* close_btn = this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap); Realize(); // m_toolbar_h = this->GetSize().GetHeight(); @@ -466,6 +466,7 @@ void BBLTopbar::UpdateToolbarWidth(int width) } void BBLTopbar::Rescale() { + int em = em_unit(this); wxAuiToolBarItem* item; /*item = this->FindTool(ID_LOGO); @@ -495,7 +496,7 @@ void BBLTopbar::Rescale() { item->SetBitmap(create_scaled_bitmap("calib_sf", nullptr, TOPBAR_ICON_SIZE)); item->SetDisabledBitmap(create_scaled_bitmap("calib_sf_inactive", nullptr, TOPBAR_ICON_SIZE)); - // item = this->FindTool(ID_TITLE); + item = this->FindTool(ID_TITLE); /*item = this->FindTool(ID_PUBLISH); item->SetBitmap(create_scaled_bitmap("topbar_publish", this, TOPBAR_ICON_SIZE)); @@ -547,14 +548,14 @@ void BBLTopbar::OnCloseFrame(wxAuiToolBarEvent& event) void BBLTopbar::OnMouseLeftDClock(wxMouseEvent& mouse) { + wxPoint mouse_pos = ::wxGetMousePosition(); // check whether mouse is not on any tool item if (this->FindToolByCurrentPosition() != NULL && this->FindToolByCurrentPosition() != m_title_item) { mouse.Skip(); return; } -#ifdef __WXMSW__ - wxPoint mouse_pos = ::wxGetMousePosition(); +#ifdef __W1XMSW__ ::PostMessage((HWND) m_frame->GetHandle(), WM_NCLBUTTONDBLCLK, HTCAPTION, MAKELPARAM(mouse_pos.x, mouse_pos.y)); return; #endif // __WXMSW__ @@ -636,6 +637,7 @@ void BBLTopbar::OnMouseLeftDown(wxMouseEvent& event) void BBLTopbar::OnMouseLeftUp(wxMouseEvent& event) { + wxPoint mouse_pos = ::wxGetMousePosition(); if (HasCapture()) { ReleaseMouse(); diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 1f6c9e4b94..ca8c7a1663 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -5,9 +5,13 @@ #include "format.hpp" #include +#include +#include // For zipped archive creation +#include #include +#include #include @@ -16,18 +20,23 @@ #include "libslic3r/SLAPrint.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/GCode/PostProcessor.hpp" +#include "libslic3r/Format/SL1.hpp" #include "libslic3r/Thread.hpp" #include "libslic3r/libslic3r.h" #include #include +#include #include #include #include +#include #include "I18N.hpp" //#include "RemovableDriveManager.hpp" +#include "slic3r/GUI/Plater.hpp" + namespace Slic3r { bool SlicingProcessCompletedEvent::critical_error() const diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index 28360f0d7a..134d91e7c5 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -67,6 +67,7 @@ PingCodeBindDialog::PingCodeBindDialog(Plater* plater /*= nullptr*/) SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); SetBackgroundColour(*wxWHITE); + wxBoxSizer* m_sizer_main = new wxBoxSizer(wxVERTICAL); auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); diff --git a/src/slic3r/GUI/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp index 94a3186721..9a16c13322 100644 --- a/src/slic3r/GUI/CalibrationPanel.cpp +++ b/src/slic3r/GUI/CalibrationPanel.cpp @@ -226,7 +226,7 @@ SelectMObjectPopup::SelectMObjectPopup(wxWindow* parent) m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); Bind(EVT_UPDATE_USER_MLIST, &SelectMObjectPopup::update_machine_list, this); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &SelectMObjectPopup::on_timer, this); Bind(EVT_DISSMISS_MACHINE_LIST, &SelectMObjectPopup::on_dissmiss_win, this); } @@ -265,7 +265,7 @@ void SelectMObjectPopup::Popup(wxWindow* WXUNUSED(focus)) } } - on_timer(); + wxPostEvent(this, wxTimerEvent()); PopupWindow::Popup(); } @@ -304,7 +304,7 @@ bool SelectMObjectPopup::Show(bool show) { return PopupWindow::Show(show); } -void SelectMObjectPopup::on_timer() +void SelectMObjectPopup::on_timer(wxTimerEvent& event) { BOOST_LOG_TRIVIAL(trace) << "SelectMObjectPopup on_timer"; wxGetApp().reset_to_active(); @@ -459,7 +459,7 @@ CalibrationPanel::CalibrationPanel(wxWindow* parent, wxWindowID id, const wxPoin Layout(); init_timer(); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &CalibrationPanel::on_timer, this); } void CalibrationPanel::init_tabpanel() { @@ -502,10 +502,10 @@ void CalibrationPanel::init_timer() m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } -void CalibrationPanel::on_timer() { +void CalibrationPanel::on_timer(wxTimerEvent& event) { update_all(); } @@ -644,7 +644,7 @@ bool CalibrationPanel::Show(bool show) { m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - on_timer(); + wxPostEvent(this, wxTimerEvent()); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (dev) { @@ -670,6 +670,9 @@ bool CalibrationPanel::Show(bool show) { void CalibrationPanel::on_printer_clicked(wxMouseEvent& event) { + auto mouse_pos = ClientToScreen(event.GetPosition()); + wxPoint rect = m_side_tools->ClientToScreen(wxPoint(0, 0)); + if (!m_side_tools->is_in_interval()) { wxPoint pos = m_side_tools->ClientToScreen(wxPoint(0, 0)); pos.y += m_side_tools->GetRect().height; diff --git a/src/slic3r/GUI/CalibrationPanel.hpp b/src/slic3r/GUI/CalibrationPanel.hpp index 7b56abd8e7..a993ff2886 100644 --- a/src/slic3r/GUI/CalibrationPanel.hpp +++ b/src/slic3r/GUI/CalibrationPanel.hpp @@ -94,7 +94,7 @@ private: private: void OnLeftUp(wxMouseEvent& event); - void on_timer(); + void on_timer(wxTimerEvent& event); void update_user_devices(); void on_dissmiss_win(wxCommandEvent& event); }; @@ -117,7 +117,7 @@ public: protected: void init_tabpanel(); void init_timer(); - void on_timer(); + void on_timer(wxTimerEvent& event); int last_status; diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index 6280c96402..f6cbbc3065 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -1126,6 +1126,7 @@ void FlowRateWizard::on_cali_save() } std::string old_preset_name; + CalibrationPresetPage* preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; @@ -1172,6 +1173,7 @@ void FlowRateWizard::on_cali_save() return; std::string old_preset_name; + CalibrationPresetPage* preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; @@ -1441,6 +1443,7 @@ void MaxVolumetricSpeedWizard::on_cali_save() std::string old_preset_name; std::string new_preset_name; + CalibrationPresetPage *preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index f972d22988..482ce61a12 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -790,6 +790,7 @@ wxString CalibrationPresetPage::format_text(wxString& m_msg) wxString out_txt = m_msg; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_printer_msg->GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 9893ee5efc..a9fd41f8b8 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -282,6 +282,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con } double sparse_infill_density = config->option("sparse_infill_density")->value; + auto timelapse_type = config->opt_enum("timelapse_type"); if (!is_plate_config && config->opt_bool("spiral_mode") && @@ -297,6 +298,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con { DynamicPrintConfig new_conf = *config; auto answer = show_spiral_mode_settings_dialog(is_object_config); + bool support = true; if (answer == wxID_YES) { new_conf.set_key_value("wall_loops", new ConfigOptionInt(1)); new_conf.set_key_value("top_shell_layers", new ConfigOptionInt(0)); @@ -308,6 +310,8 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con new_conf.set_key_value("wall_direction", new ConfigOptionEnum(WallDirection::Auto)); new_conf.set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); sparse_infill_density = 0; + timelapse_type = TimelapseType::tlTraditional; + support = false; } else { new_conf.set_key_value("spiral_mode", new ConfigOptionBool(false)); diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index fd00db7f78..1768d8cd47 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -2438,7 +2438,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese header = _L_PLURAL("A new vendor was installed and one of its printers will be activated", "New vendors were installed and one of theirs printers will be activated", install_bundles.size()); // Decide whether to create snapshot based on run_reason and the reset profile checkbox - /*bool snapshot = true; + bool snapshot = true; Snapshot::Reason snapshot_reason = Snapshot::SNAPSHOT_UPGRADE; switch (run_reason) { case ConfigWizard::RR_DATA_EMPTY: @@ -2456,7 +2456,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese snapshot = false; snapshot_reason = Snapshot::SNAPSHOT_USER; break; - }*/ + } //BBS: remove snapshot logic /*if (snapshot && ! take_config_snapshot_cancel_on_error(*app_config, snapshot_reason, "", _u8L("Do you want to continue changing the configuration?"))) @@ -2701,7 +2701,8 @@ ConfigWizard::ConfigWizard(wxWindow *parent) //BBS: add BBL as default const auto bbl_it = p->bundles.find("BBL"); wxCHECK_RET(bbl_it != p->bundles.cend(), "Vendor BambooLab not found"); - + const VendorProfile * vendor_bbl = bbl_it->second.vendor_profile; + p->only_sla_mode = false; p->any_sla_selected = p->check_sla_selected(); if (p->only_sla_mode) diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 0166238cab..03aaef6b13 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -315,7 +315,7 @@ static wxBoxSizer *create_preset_tree(wxWindow *parent, std::pair preset : printer_and_preset.second) { wxString preset_name = wxString::FromUTF8(preset->name); - treeCtrl->AppendItem(rootId, preset_name); + wxTreeItemId childId1 = treeCtrl->AppendItem(rootId, preset_name); row++; } @@ -671,6 +671,8 @@ bool CreateFilamentPresetDialog::is_check_box_selected() wxBoxSizer *CreateFilamentPresetDialog::create_item(FilamentOptionType option_type) { + + wxSizer *item = nullptr; switch (option_type) { case VENDOR: return create_vendor_item(); case TYPE: return create_type_item(); @@ -3090,6 +3092,10 @@ bool CreatePrinterPresetDialog::check_printable_area() { if (x == 0 || y == 0) { return false; } + double x0 = 0.0; + double y0 = 0.0; + double x1 = x; + double y1 = y; if (dx >= x || dy >= y) { return false; } @@ -4627,6 +4633,7 @@ wxBoxSizer *EditFilamentPresetDialog::create_button_sizer() WarningDialog dlg(this, _L("All the filament presets belong to this filament would be deleted. \nIf you are using this filament on your printer, please reset the filament information for that slot."), _L("Delete filament"), wxYES | wxCANCEL | wxCANCEL_DEFAULT | wxCENTRE); int res = dlg.ShowModal(); if (wxID_YES == res) { + PresetBundle *preset_bundle = wxGetApp().preset_bundle; std::set> inherit_preset_names; std::set> root_preset_names; for (std::pair>> printer_and_preset : m_printer_compatible_presets) { diff --git a/src/slic3r/GUI/DailyTips.cpp b/src/slic3r/GUI/DailyTips.cpp index ba4427964e..2e5b99e8b2 100644 --- a/src/slic3r/GUI/DailyTips.cpp +++ b/src/slic3r/GUI/DailyTips.cpp @@ -89,6 +89,7 @@ void DailyTipsDataRenderer::open_wiki() const void DailyTipsDataRenderer::render(const ImVec2& pos, const ImVec2& size) const { + ImGuiWrapper& imgui = *wxGetApp().imgui(); ImGuiWindow* parent_window = ImGui::GetCurrentWindow(); int window_flags = parent_window->Flags; window_flags &= ~ImGuiWindowFlags_NoScrollbar; @@ -189,6 +190,7 @@ void DailyTipsDataRenderer::render_text(const ImVec2& start_pos, const ImVec2& s std::string tips_line = _u8L("For more information, please check out Wiki"); std::string wiki_part_text = _u8L("Wiki"); std::string first_part_text = tips_line.substr(0, tips_line.find(wiki_part_text)); + ImVec2 wiki_part_size = ImGui::CalcTextSize(wiki_part_text.c_str()); ImVec2 first_part_size = ImGui::CalcTextSize(first_part_text.c_str()); //text @@ -198,6 +200,7 @@ void DailyTipsDataRenderer::render_text(const ImVec2& start_pos, const ImVec2& s ImColor HyperColor = ImColor(31, 142, 234, (int)(255 * m_fade_opacity)).Value; ImVec2 wiki_part_rect_min = ImVec2(link_start_pos.x + first_part_size.x, link_start_pos.y); + ImVec2 wiki_part_rect_max = wiki_part_rect_min + wiki_part_size; ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value); ImGui::SetCursorScreenPos(wiki_part_rect_min); imgui.text(wiki_part_text.c_str()); @@ -261,6 +264,9 @@ ImVec2 DailyTipsPanel::get_size() void DailyTipsPanel::render() { + ImGuiWrapper& imgui = *wxGetApp().imgui(); + float scale = imgui.get_font_size() / 15.0f; + if (!m_first_enter) { retrieve_data_from_hint_database(HintDataNavigation::Curr); m_first_enter = true; diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 28a5523b22..a79dd0a027 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1007,17 +1007,17 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std reset_mapping_result(result); try { // try to use ordering ams mapping - // bool order_mapping_result = true; + bool order_mapping_result = true; for (int i = 0; i < filaments.size(); i++) { if (i >= tray_info_list.size()) { - // order_mapping_result = false; + order_mapping_result = false; break; } if (tray_info_list[i].tray_id == -1) { result[i].tray_id = tray_info_list[i].tray_id; } else { if (!tray_info_list[i].type.empty() && tray_info_list[i].type != filaments[i].type) { - // order_mapping_result = false; + order_mapping_result = false; break; } else { result[i].tray_id = tray_info_list[i].tray_id; @@ -1319,6 +1319,7 @@ wxString MachineObject::get_curr_stage() int MachineObject::get_curr_stage_idx() { + int result = -1; for (int i = 0; i < stage_list_info.size(); i++) { if (stage_list_info[i] == stage_curr) { return i; @@ -2348,6 +2349,8 @@ int MachineObject::command_xcam_control(std::string module_name, bool on_off, st int MachineObject::command_xcam_control_ai_monitoring(bool on_off, std::string lvl) { + bool print_halt = (lvl == "never_halt") ? false:true; + xcam_ai_monitoring = on_off; xcam_ai_monitoring_hold_count = HOLD_COUNT_MAX; xcam_ai_monitoring_sensitivity = lvl; @@ -5659,7 +5662,9 @@ void DeviceManager::parse_user_print_info(std::string body) } } } - catch (std::exception&) {} + catch (std::exception& e) { + ; + } } void DeviceManager::update_user_machine_list_info() diff --git a/src/slic3r/GUI/DownloadProgressDialog.cpp b/src/slic3r/GUI/DownloadProgressDialog.cpp index 425c2deb3b..542db08561 100644 --- a/src/slic3r/GUI/DownloadProgressDialog.cpp +++ b/src/slic3r/GUI/DownloadProgressDialog.cpp @@ -128,6 +128,7 @@ wxString DownloadProgressDialog::format_text(wxStaticText* st, wxString str, int wxString out_txt = str; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < str.length(); i++) { auto text_size = st->GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/ExtrusionCalibration.cpp b/src/slic3r/GUI/ExtrusionCalibration.cpp index eda9da5857..26216edc93 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.cpp +++ b/src/slic3r/GUI/ExtrusionCalibration.cpp @@ -626,6 +626,7 @@ void ExtrusionCalibration::update_combobox_filaments() { m_comboBox_filament->SetValue(wxEmptyString); user_filaments.clear(); + int selection_idx = -1; int filament_index = -1; int curr_selection = -1; wxArrayString filament_items; diff --git a/src/slic3r/GUI/FileArchiveDialog.cpp b/src/slic3r/GUI/FileArchiveDialog.cpp index 689b31598d..2cd84b6acd 100644 --- a/src/slic3r/GUI/FileArchiveDialog.cpp +++ b/src/slic3r/GUI/FileArchiveDialog.cpp @@ -2,6 +2,7 @@ #include "I18N.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" #include "MainFrame.hpp" #include "ExtraRenderers.hpp" #include "format.hpp" diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index b35ade0be4..0d649b9a6a 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -1447,6 +1447,9 @@ void GCodeViewer::_render_calibration_thumbnail_internal(ThumbnailData& thumbnai //shader->set_uniform("emission_factor", 0.0f); } else { + switch (buffer.render_primitive_type) { + default: break; + } int uniform_color = shader->get_uniform_location("uniform_color"); auto it_path = buffer.render_paths.begin(); for (unsigned int ibuffer_id = 0; ibuffer_id < static_cast(buffer.indices.size()); ++ibuffer_id) { @@ -1744,10 +1747,10 @@ void GCodeViewer::update_layers_slider_mode() // true -> single-extruder printer profile OR // multi-extruder printer profile , but whole model is printed by only one extruder // false -> multi-extruder printer profile , and model is printed by several extruders - // bool one_extruder_printed_model = true; + bool one_extruder_printed_model = true; // extruder used for whole model for multi-extruder printer profile - // int only_extruder = -1; + int only_extruder = -1; // BBS if (wxGetApp().filaments_cnt() > 1) { @@ -1770,10 +1773,10 @@ void GCodeViewer::update_layers_slider_mode() return true; }; - // if (is_one_extruder_printed_model()) - // only_extruder = extruder; - // else - // one_extruder_printed_model = false; + if (is_one_extruder_printed_model()) + only_extruder = extruder; + else + one_extruder_printed_model = false; } } @@ -3244,6 +3247,12 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool return in_layers_range(path.sub_paths.front().first.s_id) && in_layers_range(path.sub_paths.back().last.s_id); }; + //BBS + auto is_extruder_in_layer_range = [this](const Path& path, size_t extruder_id) { + return path.extruder_id == extruder_id; + }; + + auto is_travel_in_layers_range = [this](size_t path_id, size_t min_id, size_t max_id) { const TBuffer& buffer = m_buffers[buffer_id(EMoveType::Travel)]; if (path_id >= buffer.paths.size()) @@ -4088,6 +4097,7 @@ void GCodeViewer::render_all_plates_stats(const std::vector support_used_filaments_g_all_plates; float total_time_all_plates = 0.0f; float total_cost_all_plates = 0.0f; + bool show_detailed_statistics_page = false; struct ColumnData { enum { Model = 1, @@ -4389,6 +4399,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv const float icon_size = ImGui::GetTextLineHeight() * 0.7; //BBS GUI refactor //const float percent_bar_size = 2.0f * ImGui::GetTextLineHeight(); + const float percent_bar_size = 0; bool imperial_units = wxGetApp().app_config->get("use_inches") == "1"; ImDrawList* draw_list = ImGui::GetWindowDrawList(); @@ -4500,6 +4511,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv append_range_item(0, range.min, decimals); } else { + const float step_size = range.step_size(); for (int i = static_cast(Range_Colors.size()) - 1; i >= 0; --i) { append_range_item(i, range.get_value_at_step(i), decimals); } @@ -4548,7 +4560,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return ret; }; - /*auto color_print_ranges = [this](unsigned char extruder_id, const std::vector& custom_gcode_per_print_z) { + auto color_print_ranges = [this](unsigned char extruder_id, const std::vector& custom_gcode_per_print_z) { std::vector>> ret; ret.reserve(custom_gcode_per_print_z.size()); @@ -4577,7 +4589,27 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv } return ret; - };*/ + }; + + auto upto_label = [](double z) { + char buf[64]; + ::sprintf(buf, "%.2f", z); + return _u8L("up to") + " " + std::string(buf) + " " + _u8L("mm"); + }; + + auto above_label = [](double z) { + char buf[64]; + ::sprintf(buf, "%.2f", z); + return _u8L("above") + " " + std::string(buf) + " " + _u8L("mm"); + }; + + auto fromto_label = [](double z1, double z2) { + char buf1[64]; + ::sprintf(buf1, "%.2f", z1); + char buf2[64]; + ::sprintf(buf2, "%.2f", z2); + return _u8L("from") + " " + std::string(buf1) + " " + _u8L("to") + " " + std::string(buf2) + " " + _u8L("mm"); + }; auto role_time_and_percent = [time_mode](ExtrusionRole role) { auto it = std::find_if(time_mode.roles_times.begin(), time_mode.roles_times.end(), [role](const std::pair& item) { return role == item.first; }); @@ -5074,7 +5106,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGuiWindow* window = ImGui::GetCurrentWindow(); const ImRect separator(ImVec2(window->Pos.x + window_padding * 3, window->DC.CursorPos.y), ImVec2(window->Pos.x + window->Size.x - window_padding * 3, window->DC.CursorPos.y + 1.0f)); ImGui::ItemSize(ImVec2(0.0f, 0.0f)); - ImGui::ItemAdd(separator, 0); + const bool item_visible = ImGui::ItemAdd(separator, 0); window->DrawList->AddLine(separator.Min, ImVec2(separator.Max.x, separator.Min.y), ImGui::GetColorU32(ImGuiCol_Separator)); std::vector> columns_offsets; @@ -5196,7 +5228,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return items; }; - /*auto append_color_change = [&imgui](const ColorRGBA& color1, const ColorRGBA& color2, const std::array& offsets, const Times& times) { + auto append_color_change = [&imgui](const ColorRGBA& color1, const ColorRGBA& color2, const std::array& offsets, const Times& times) { imgui.text(_u8L("Color change")); ImGui::SameLine(); @@ -5213,9 +5245,9 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGui::SameLine(offsets[0]); imgui.text(short_time(get_time_dhms(times.second - times.first))); - };*/ + }; - /*auto append_print = [&imgui, imperial_units](const ColorRGBA& color, const std::array& offsets, const Times& times, std::pair used_filament) { + auto append_print = [&imgui, imperial_units](const ColorRGBA& color, const std::array& offsets, const Times& times, std::pair used_filament) { imgui.text(_u8L("Print")); ImGui::SameLine(); @@ -5241,7 +5273,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ::sprintf(buffer, "%.2f g", used_filament.second); imgui.text(buffer); } - };*/ + }; PartialTimes partial_times = generate_partial_times(time_mode.custom_gcode_times, m_print_statistics.volumes_per_color_change); if (!partial_times.empty()) { @@ -5348,7 +5380,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv // } //} -/* auto any_option_available = [this]() { + auto any_option_available = [this]() { auto available = [this](EMoveType type) { const TBuffer& buffer = m_buffers[buffer_id(type)]; return buffer.visible && buffer.has_data(); @@ -5361,7 +5393,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv available(EMoveType::Tool_change) || available(EMoveType::Unretract) || available(EMoveType::Seam); - };*/ + }; //auto add_option = [this, append_item](EMoveType move_type, EOptionsColors color, const std::string& text) { // const TBuffer& buffer = m_buffers[buffer_id(move_type)]; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index b334bdf67e..6365b88a26 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2773,7 +2773,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re ModelInstanceEPrintVolumeState state; const bool contained_min_one = m_volumes.check_outside_state(m_bed.build_volume(), &state); const bool partlyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Partly_Outside); - // const bool fullyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Fully_Outside); + const bool fullyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Fully_Outside); _set_warning_notification(EWarning::ObjectClashed, partlyOut); //BBS: turn off the warning when fully outside @@ -4080,12 +4080,12 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // Set focus in order to remove it from sidebar fields if (m_canvas != nullptr) { // Only set focus, if the top level window of this canvas is active. -// auto p = dynamic_cast(evt.GetEventObject()); -// while (p->GetParent()) -// p = p->GetParent(); -// auto *top_level_wnd = dynamic_cast(p); -// if (top_level_wnd && top_level_wnd->IsActive() && !wxGetApp().get_side_menu_popup_status()) - // m_canvas->SetFocus(); + auto p = dynamic_cast(evt.GetEventObject()); + while (p->GetParent()) + p = p->GetParent(); + auto *top_level_wnd = dynamic_cast(p); + if (top_level_wnd && top_level_wnd->IsActive() && !wxGetApp().get_side_menu_popup_status()) + ;// m_canvas->SetFocus(); m_mouse.position = pos.cast(); m_tooltip_enabled = false; // 1) forces a frame render to ensure that m_hover_volume_idxs is updated even when the user right clicks while @@ -5093,6 +5093,7 @@ std::vector GLCanvas3D::get_empty_cells(const Vec2f start_point, const Ve } for (size_t i = 0; i < m_model->objects.size(); ++i) { ModelObject* model_object = m_model->objects[i]; + auto id = model_object->id().id; ModelInstance* model_instance0 = model_object->instances.front(); Polygon hull_2d = model_object->convex_hull_2d(Geometry::assemble_transform({ 0.0, 0.0, model_instance0->get_offset().z() }, model_instance0->get_rotation(), model_instance0->get_scaling_factor(), model_instance0->get_mirror())); @@ -5363,6 +5364,7 @@ void GLCanvas3D::update_sequential_clearance() for (int i = k+1; i < bounding_box_count; i++) { + Polygon& next_convex = convex_and_bounding_boxes[i].hull_polygon; BoundingBox& next_bbox = convex_and_bounding_boxes[i].bounding_box; auto py1 = next_bbox.min.y(); auto py2 = next_bbox.max.y(); @@ -5423,6 +5425,7 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa ImGuiWrapper* imgui = wxGetApp().imgui(); auto canvas_w = float(get_canvas_size().get_width()); + auto canvas_h = float(get_canvas_size().get_height()); //BBS: GUI refactor: move main toolbar to the right //original use center as {0.0}, and top is (canvas_h/2), bottom is (-canvas_h/2), also plus inv_camera //now change to left_up as {0,0}, and top is 0, bottom is canvas_h @@ -5431,7 +5434,6 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa ImGuiWrapper::push_toolbar_style(get_scale()); imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f); #else - auto canvas_h = float(get_canvas_size().get_height()); const float x = canvas_w - m_main_toolbar.get_width(); const float y = 0.5f * canvas_h - top * float(wxGetApp().plater()->get_camera().get_zoom()); imgui->set_next_window_pos(x, y, ImGuiCond_Always, 1.0f, 0.0f); @@ -5446,13 +5448,13 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa PrinterTechnology ptech = current_printer_technology(); bool settings_changed = false; - // float angle_min = 45.f; + float angle_min = 45.f; std::string angle_key = "overhang_angle", rot_key = "enable_rotation"; std::string key_min_area = "min_area"; std::string postfix = "_fff"; if (ptech == ptSLA) { - // angle_min = 45.f; + angle_min = 45.f; postfix = "_sla"; } @@ -5508,6 +5510,7 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo ImGuiWrapper *imgui = wxGetApp().imgui(); auto canvas_w = float(get_canvas_size().get_width()); + auto canvas_h = float(get_canvas_size().get_height()); //BBS: GUI refactor: move main toolbar to the right //original use center as {0.0}, and top is (canvas_h/2), bottom is (-canvas_h/2), also plus inv_camera //now change to left_up as {0,0}, and top is 0, bottom is canvas_h @@ -5515,8 +5518,8 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo float left_pos = m_main_toolbar.get_item("arrange")->render_left_pos; const float x = (1 + left_pos) * canvas_w / 2; imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.0f, 0.0f); + #else - auto canvas_h = float(get_canvas_size().get_height()); const float x = canvas_w - m_main_toolbar.get_width(); const float y = 0.5f * canvas_h - top * float(wxGetApp().plater()->get_camera().get_zoom()); imgui->set_next_window_pos(x, y, ImGuiCond_Always, 1.0f, 0.0f); @@ -8096,13 +8099,16 @@ void GLCanvas3D::_render_return_toolbar() const ImVec2 button_icon_size = ImVec2(font_size * 1.3, font_size * 1.3); ImGuiWrapper& imgui = *wxGetApp().imgui(); + Size cnv_size = get_canvas_size(); + auto canvas_w = float(cnv_size.get_width()); + auto canvas_h = float(cnv_size.get_height()); + float window_width = real_size.x + button_icon_size.x + imgui.scaled(2.0f); + float window_height = button_icon_size.y + imgui.scaled(2.0f); float window_pos_x = 30.0f + (is_collapse_toolbar_on_left() ? (get_collapse_toolbar_width() + 5.f) : 0); float window_pos_y = 14.0f; imgui.set_next_window_pos(window_pos_x, window_pos_y, ImGuiCond_Always, 0, 0); #ifdef __WINDOWS__ - float window_width = real_size.x + button_icon_size.x + imgui.scaled(2.0f); - float window_height = button_icon_size.y + imgui.scaled(2.0f); imgui.set_next_window_size(window_width, window_height, ImGuiCond_Always); #endif @@ -8116,6 +8122,9 @@ void GLCanvas3D::_render_return_toolbar() const imgui.begin(_L("Assembly Return"), ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse); + float button_width = 20; + float button_height = 20; + ImVec2 size = ImVec2(button_width, button_height); // Size of the image we want to make visible ImVec2 uv0 = ImVec2(0.0f, 0.0f); ImVec2 uv1 = ImVec2(1.0f, 1.0f); @@ -8391,11 +8400,11 @@ void GLCanvas3D::_render_assemble_control() const ImGui::SameLine(window_padding.x + 2 * text_size_x + slider_width + item_spacing * 7 + value_size); ImGui::PushItemWidth(slider_width); - imgui->bbl_slider_float_style("##ratio_slider", &m_explosion_ratio, 1.0f, 3.0f, "%1.2f"); + bool explosion_slider_changed = imgui->bbl_slider_float_style("##ratio_slider", &m_explosion_ratio, 1.0f, 3.0f, "%1.2f"); ImGui::SameLine(window_padding.x + 2 * text_size_x + 2 * slider_width + item_spacing * 8 + value_size); ImGui::PushItemWidth(value_size); - ImGui::BBLDragFloat("##ratio_input", &m_explosion_ratio, 0.1f, 1.0f, 3.0f, "%1.2f"); + bool explosion_input_changed = ImGui::BBLDragFloat("##ratio_input", &m_explosion_ratio, 0.1f, 1.0f, 3.0f, "%1.2f"); } imgui->end(); @@ -8425,6 +8434,7 @@ void GLCanvas3D::_render_assemble_info() const auto canvas_h = float(get_canvas_size().get_height()); float space_size = imgui->get_style_scaling() * 8.0f; float caption_max = imgui->calc_text_size(_L("Total Volume:")).x + 3 * space_size; + char buf[3][64]; ImGuiIO& io = ImGui::GetIO(); ImFont* font = io.Fonts->Fonts[0]; diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index be0b402653..79cbb77370 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -470,6 +470,7 @@ void GLTexture::reset() bool GLTexture::generate_from_text_string(const std::string& text_str, wxFont &font, wxColor background, wxColor foreground) { + int w,h,hl; return generate_from_text(text_str, font, background, foreground); } diff --git a/src/slic3r/GUI/GLToolbar.cpp b/src/slic3r/GUI/GLToolbar.cpp index 6b14f3cf2f..be97e52e84 100644 --- a/src/slic3r/GUI/GLToolbar.cpp +++ b/src/slic3r/GUI/GLToolbar.cpp @@ -1466,6 +1466,7 @@ void GLToolbar::render_vertical(const GLCanvas3D& parent) int tex_width, tex_height; if (item->is_action_with_text_image()) { float scaled_text_size = m_layout.text_size * m_layout.scale * inv_cnv_w; + float scaled_text_width = item->get_extra_size_ratio() * icons_size_x; float scaled_text_border = 2.5 * m_layout.scale * inv_cnv_h; float scaled_text_height = icons_size_y / 2.0f; item->render_text(left, left + scaled_text_size, top - scaled_text_border - scaled_text_height, top - scaled_text_border); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 7dc8f10271..eb5ae0c38a 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -301,6 +301,7 @@ public: memDC.SetTextForeground(StateColor::darkModeColorFor(wxColour(144, 144, 144))); int width = bitmap.GetWidth(); int text_height = memDC.GetTextExtent(text).GetHeight(); + int text_width = memDC.GetTextExtent(text).GetWidth(); wxRect text_rect(wxPoint(0, m_action_line_y_position), wxPoint(width, m_action_line_y_position + text_height)); memDC.DrawLabel(text, text_rect, wxALIGN_CENTER); @@ -962,7 +963,7 @@ void GUI_App::post_init() // Neither wxShowEvent nor wxWindowCreateEvent work reliably. if (this->preset_updater) { // G-Code Viewer does not initialize preset_updater. CallAfter([this] { - this->config_wizard_startup(); + bool cw_showed = this->config_wizard_startup(); std::string http_url = get_http_url(app_config->get_country_code()); std::string language = GUI::into_u8(current_language_code()); @@ -1025,7 +1026,8 @@ void GUI_App::post_init() try { std::time_t lw_t = boost::filesystem::last_write_time(temp_path) ; files_vec.push_back({ lw_t, temp_path.filename().string() }); - } catch (std::exception&) {} + } catch (const std::exception &ex) { + } } std::sort(files_vec.begin(), files_vec.end(), []( std::pair &a, std::pair &b) { @@ -1315,6 +1317,7 @@ int GUI_App::download_plugin(std::string name, std::string package_name, Install .on_complete([&pro_fn, tmp_path, target_file_path](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(info) << "[download_plugin 2] completed"; bool cancel = false; + int percent = 0; fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc); file.write(body.c_str(), body.size()); file.close(); @@ -1924,13 +1927,8 @@ void GUI_App::init_app_config() boost::filesystem::create_directory(data_dir_path); } - // Change current directory of application - auto path = encode_path((Slic3r::data_dir() + "/log").c_str()); -#ifdef _WIN32 - _chdir(path.c_str()); -#else - chdir(path.c_str()); -#endif + // Change current dirtory of application + chdir(encode_path((Slic3r::data_dir() + "/log").c_str()).c_str()); } else { m_datadir_redefined = true; } @@ -3367,7 +3365,7 @@ if (res) { mainframe->refresh_plugin_tips(); // BBS: remove SLA related message } - } catch (std::exception&) { + } catch (std::exception &e) { // wxMessageBox(e.what(), "", MB_OK); } } @@ -3381,7 +3379,9 @@ void GUI_App::ShowDownNetPluginDlg() { return; DownloadProgressDialog dlg(_L("Downloading Bambu Network Plug-in")); dlg.ShowModal(); - } catch (std::exception&) {} + } catch (std::exception &e) { + ; + } } void GUI_App::ShowUserLogin(bool show) @@ -3396,7 +3396,9 @@ void GUI_App::ShowUserLogin(bool show) login_dlg = new ZUserLogin(); } login_dlg->ShowModal(); - } catch (std::exception&) {} + } catch (std::exception &e) { + ; + } } else { if (login_dlg) login_dlg->EndModal(wxID_OK); @@ -3416,7 +3418,7 @@ void GUI_App::ShowOnlyFilament() { // BBS: remove SLA related message } - } catch (std::exception&) { + } catch (std::exception &e) { // wxMessageBox(e.what(), "", MB_OK); } } @@ -3828,10 +3830,10 @@ std::string GUI_App::handle_web_request(std::string cmd) auto keyCode = key_event_node.get("key"); auto ctrlKey = key_event_node.get("ctrl"); auto shiftKey = key_event_node.get("shift"); + auto cmdKey = key_event_node.get("cmd"); wxKeyEvent e(wxEVT_CHAR_HOOK); #ifdef __APPLE__ - auto cmdKey = key_event_node.get("cmd"); e.SetControlDown(cmdKey); e.SetRawControlDown(ctrlKey); #else @@ -4787,6 +4789,8 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) }); } + unsigned int http_code = 200; + /* get list witch need to be deleted*/ std::vector delete_cache_presets = get_delete_cache_presets_lock(); for (auto it = delete_cache_presets.begin(); it != delete_cache_presets.end();) { @@ -5470,7 +5474,7 @@ void GUI_App::show_ip_address_enter_dialog_handler(wxCommandEvent& evt) void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_option) { - // bool app_layout_changed = false; + bool app_layout_changed = false; { // the dialog needs to be destroyed before the call to recreate_GUI() // or sometimes the application crashes into wxDialogBase() destructor @@ -6503,6 +6507,8 @@ static bool del_win_registry(HKEY hkeyHive, const wchar_t *pszVar, const wchar_t return false; if (!bDidntExist) { + DWORD dwDisposition; + HKEY hkey; iRC = ::RegDeleteKeyExW(hkeyHive, pszVar, KEY_ALL_ACCESS, 0); if (iRC == ERROR_SUCCESS) { return true; diff --git a/src/slic3r/GUI/GUI_AuxiliaryList.cpp b/src/slic3r/GUI/GUI_AuxiliaryList.cpp index 5e0d0dcd21..1fa5b194ec 100644 --- a/src/slic3r/GUI/GUI_AuxiliaryList.cpp +++ b/src/slic3r/GUI/GUI_AuxiliaryList.cpp @@ -3,6 +3,8 @@ #include "I18N.hpp" #include "wxExtensions.hpp" +#include + #include "GUI_App.hpp" #include "Plater.hpp" #include "libslic3r/Model.hpp" diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 4ac0af51e4..ee19b25497 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -711,9 +711,9 @@ wxMenuItem* MenuFactory::append_menu_item_settings(wxMenu* menu_) // Create new items for settings popupmenu -// if (printer_technology() == ptFFF || -// (menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator())) - // menu->SetFirstSeparator(); + if (printer_technology() == ptFFF || + (menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator())) + ;// menu->SetFirstSeparator(); // detect itemm for adding of the setting ObjectList* object_list = obj_list(); @@ -1341,7 +1341,7 @@ void MenuFactory::create_extra_object_menu() m_object_menu.AppendSeparator(); // Set filament insert menu item here // Set Printable - append_menu_item_printable(&m_object_menu); + wxMenuItem* menu_item_printable = append_menu_item_printable(&m_object_menu); append_menu_item_per_object_process(&m_object_menu); // Enter per object parameters append_menu_item_per_object_settings(&m_object_menu); @@ -1496,6 +1496,8 @@ void MenuFactory::create_plate_menu() // arrange objects on current plate append_menu_item(menu, wxID_ANY, _L("Arrange"), _L("arrange current plate"), [](wxCommandEvent&) { + PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->arrange(); }, "", nullptr, @@ -1508,6 +1510,8 @@ void MenuFactory::create_plate_menu() append_menu_item( menu, wxID_ANY, _L("Reload All"), _L("reload all from disk"), [](wxCommandEvent&) { + PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->reload_all_from_disk(); }, @@ -1516,6 +1520,8 @@ void MenuFactory::create_plate_menu() // orient objects on current plate append_menu_item(menu, wxID_ANY, _L("Auto Rotate"), _L("auto rotate current plate"), [](wxCommandEvent&) { + PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); //BBS TODO call auto rotate for current plate plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->orient(); @@ -1800,7 +1806,7 @@ void MenuFactory::append_menu_item_clone(wxMenu* menu) void MenuFactory::append_menu_item_simplify(wxMenu* menu) { - append_menu_item(menu, wxID_ANY, _L("Simplify Model"), "", + wxMenuItem* menu_item = append_menu_item(menu, wxID_ANY, _L("Simplify Model"), "", [](wxCommandEvent&) { obj_list()->simplify(); }, "", menu, []() {return plater()->can_simplify(); }, m_parent); } @@ -1913,16 +1919,16 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) wxMenu* extruder_selection_menu = new wxMenu(); const wxString& name = sels.Count() == 1 ? names[0] : names[1]; - // int initial_extruder = -1; // negative value for multiple object/part selection - // if (sels.Count() == 1) { - // const ModelConfig& config = obj_list()->get_item_config(sels[0]); - // // BBS - // const auto sel_vol = obj_list()->get_selected_model_volume(); - // if (sel_vol && sel_vol->type() == ModelVolumeType::PARAMETER_MODIFIER) - // initial_extruder = config.has("extruder") ? config.extruder() : 0; - // else - // initial_extruder = config.has("extruder") ? config.extruder() : 1; - // } + int initial_extruder = -1; // negative value for multiple object/part selection + if (sels.Count() == 1) { + const ModelConfig& config = obj_list()->get_item_config(sels[0]); + // BBS + const auto sel_vol = obj_list()->get_selected_model_volume(); + if (sel_vol && sel_vol->type() == ModelVolumeType::PARAMETER_MODIFIER) + initial_extruder = config.has("extruder") ? config.extruder() : 0; + else + initial_extruder = config.has("extruder") ? config.extruder() : 1; + } // BBS bool has_modifier = false; @@ -1963,6 +1969,7 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) void MenuFactory::append_menu_item_set_printable(wxMenu* menu) { + const Selection& selection = plater()->canvas3D()->get_selection(); bool all_printable = true; ObjectList* list = obj_list(); wxDataViewItemArray sels; @@ -1970,6 +1977,7 @@ void MenuFactory::append_menu_item_set_printable(wxMenu* menu) for (wxDataViewItem item : sels) { ItemType type = list->GetModel()->GetItemType(item); + bool check; if (type != itInstance && type != itObject) continue; else { @@ -2012,8 +2020,8 @@ void MenuFactory::append_menu_item_locked(wxMenu* menu) }, "", nullptr, []() { return true; }, m_parent); m_parent->Bind(wxEVT_UPDATE_UI, [](wxUpdateUIEvent& evt) { - // PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); - // assert(plate); + PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); //bool check = plate->is_locked(); //evt.Check(check); plater()->set_current_canvas_as_dirty(); @@ -2049,6 +2057,8 @@ void MenuFactory::append_menu_item_plate_name(wxMenu *menu) m_parent->Bind( wxEVT_UPDATE_UI, [](wxUpdateUIEvent &evt) { + PartPlate *plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); plater()->set_current_canvas_as_dirty(); }, item->GetId()); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index d7d083f35f..30846abf51 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -713,6 +713,7 @@ void ObjectList::update_plate_values_for_items() Unselect(item); bool is_old_parent_expanded = IsExpanded(old_parent); + bool is_expanded = IsExpanded(item); m_objects_model->OnPlateChange(plate_idx, item); if (is_old_parent_expanded) Expand(old_parent); @@ -738,6 +739,7 @@ void ObjectList::object_config_options_changed(const ObjectVolumeID& ov_id) if (ov_id.object == nullptr) return; + ModelObjectPtrs& objects = wxGetApp().model().objects; ModelObject* mo = ov_id.object; ModelVolume* mv = ov_id.volume; @@ -844,6 +846,8 @@ void ObjectList::update_filament_colors() void ObjectList::update_name_column_width() const { wxSize client_size = this->GetClientSize(); + bool p_vbar = this->GetParent()->HasScrollbar(wxVERTICAL); + bool p_hbar = this->GetParent()->HasScrollbar(wxHORIZONTAL); auto em = em_unit(const_cast(this)); // BBS: walkaround for wxDataViewCtrl::HasScrollbar() does not return correct status @@ -932,6 +936,7 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const if (m_objects_model->GetItemType(item) & itPlate) { std::string name = m_objects_model->GetName(item).ToUTF8().data(); int plate_idx = -1; + const ItemType type0 = m_objects_model->GetItemType(item, plate_idx); if (plate_idx >= 0) { auto plate = wxGetApp().plater()->get_partplate_list().get_plate(plate_idx); if (plate->get_plate_name() != name) { @@ -1346,7 +1351,8 @@ void ObjectList::show_context_menu(const bool evt_context_menu) plater->SetPlateIndexByRightMenuInLeftUI(-1); if (type & itPlate) { int plate_idx = -1; - if (plate_idx >= 0) { + const ItemType type0 = m_objects_model->GetItemType(item, plate_idx); + if (plate_idx >= 0) { plater->SetPlateIndexByRightMenuInLeftUI(plate_idx); } } @@ -2000,7 +2006,7 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo try { model = Model::read_from_file(input_file, nullptr, nullptr, LoadStrategy::LoadModel); } - catch (std::exception&) { + catch (std::exception& e) { // auto msg = _L("Error!") + " " + input_file + " : " + e.what() + "."; auto msg = _L("Error!") + " " + _L("Failed to get the model data in the current file."); show_error(parent, msg); @@ -2899,7 +2905,7 @@ void ObjectList::boolean() new_object->config.assign_config(object->config); if (new_object->instances.empty()) new_object->add_instance(); - new_object->add_volume(mesh); + ModelVolume* new_volume = new_object->add_volume(mesh); // BBS: ensure on bed but no need to ensure locate in the center around origin new_object->ensure_on_bed(); @@ -2946,9 +2952,9 @@ DynamicPrintConfig ObjectList::get_default_layer_config(const int obj_idx) wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("layer_height"); config.set_key_value("layer_height",new ConfigOptionFloat(layer_height)); // BBS - // int extruder = object(obj_idx)->config.has("extruder") ? - // object(obj_idx)->config.opt_int("extruder") : - // wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("extruder"); + int extruder = object(obj_idx)->config.has("extruder") ? + object(obj_idx)->config.opt_int("extruder") : + wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("extruder"); config.set_key_value("extruder", new ConfigOptionInt(0)); return config; @@ -3170,8 +3176,8 @@ void ObjectList::part_selection_changed() bool update_and_show_settings = false; bool update_and_show_layers = false; - // bool enable_manipulation{true}; Orca: Removed because not used - // bool disable_ss_manipulation{false}; Orca: Removed because not used + bool enable_manipulation{true}; + bool disable_ss_manipulation{false}; bool disable_ununiform_scale{false}; const auto item = GetSelection(); @@ -3179,7 +3185,7 @@ void ObjectList::part_selection_changed() og_name = _L("Cut Connectors information"); update_and_show_manipulations = true; - // enable_manipulation = false; + enable_manipulation = false; disable_ununiform_scale = true; } else if (item && (m_objects_model->GetItemType(item) & itPlate)) { @@ -3196,7 +3202,7 @@ void ObjectList::part_selection_changed() obj_idx = selection.get_object_idx(); ModelObject *object = (*m_objects)[obj_idx]; m_config = &object->config; - // disable_ss_manipulation = object->is_cut(); + disable_ss_manipulation = object->is_cut(); } else { og_name = _L("Group manipulation"); @@ -3205,17 +3211,17 @@ void ObjectList::part_selection_changed() update_and_show_manipulations = !selection.is_single_full_instance(); if (int obj_idx = selection.get_object_idx(); obj_idx >= 0) { - // if (selection.is_any_volume() || selection.is_any_modifier()) - // enable_manipulation = !(*m_objects)[obj_idx]->is_cut(); - // else // if (item && m_objects_model->GetItemType(item) == itInstanceRoot) - // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + if (selection.is_any_volume() || selection.is_any_modifier()) + enable_manipulation = !(*m_objects)[obj_idx]->is_cut(); + else // if (item && m_objects_model->GetItemType(item) == itInstanceRoot) + disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else { wxDataViewItemArray sels; GetSelections(sels); if (selection.is_single_full_object() || selection.is_multiple_full_instance()) { - // int obj_idx = m_objects_model->GetObjectIdByItem(sels.front()); - // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + int obj_idx = m_objects_model->GetObjectIdByItem(sels.front()); + disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else if (selection.is_mixed() || selection.is_multiple_full_object()) { std::map> cut_objects; @@ -3234,7 +3240,7 @@ void ObjectList::part_selection_changed() // check if selected cut objects are "full selected" for (auto cut_object : cut_objects) if (cut_object.first.check_sum() != cut_object.second.size()) { - // disable_ss_manipulation = true; + disable_ss_manipulation = true; break; } disable_ununiform_scale = !cut_objects.empty(); @@ -3282,7 +3288,7 @@ void ObjectList::part_selection_changed() // BBS: select object to edit config m_config = &(*m_objects)[obj_idx]->config; update_and_show_settings = true; - // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } } else { @@ -3310,8 +3316,8 @@ void ObjectList::part_selection_changed() m_config = &(*m_objects)[obj_idx]->volumes[volume_id]->config; update_and_show_settings = true; - // const ModelVolume *volume = (*m_objects)[obj_idx]->volumes[volume_id]; - // enable_manipulation = !((*m_objects)[obj_idx]->is_cut() && (volume->is_cut_connector() || volume->is_model_part())); + const ModelVolume *volume = (*m_objects)[obj_idx]->volumes[volume_id]; + enable_manipulation = !((*m_objects)[obj_idx]->is_cut() && (volume->is_cut_connector() || volume->is_model_part())); } else if (type & itInstance) { og_name = _L("Instance manipulation"); @@ -3319,7 +3325,7 @@ void ObjectList::part_selection_changed() // fill m_config by object's values m_config = &(*m_objects)[obj_idx]->config; - // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else if (type & (itLayerRoot | itLayer)) { og_name = type & itLayerRoot ? _L("Height ranges") : _L("Settings for height range"); @@ -3362,7 +3368,7 @@ void ObjectList::part_selection_changed() if (printer_technology() == ptSLA) update_and_show_layers = false; else if (update_and_show_layers) { - //wxGetApp().obj_layers()->get_og()->set_name(" " + og_name + " "); + ;//wxGetApp().obj_layers()->get_og()->set_name(" " + og_name + " "); } update_min_height(); @@ -3394,6 +3400,7 @@ wxDataViewItem ObjectList::add_settings_item(wxDataViewItem parent_item, const D return ret; const bool is_object_settings = m_objects_model->GetItemType(parent_item) == itObject; + const bool is_volume_settings = m_objects_model->GetItemType(parent_item) == itVolume; const bool is_layer_settings = m_objects_model->GetItemType(parent_item) == itLayer; if (!is_object_settings) { ModelVolumeType volume_type = m_objects_model->GetVolumeType(parent_item); @@ -4682,6 +4689,8 @@ void ObjectList::select_item(const ObjectVolumeID& ov_id) void ObjectList::select_items(const std::vector& ov_ids) { + ModelObjectPtrs& objects = wxGetApp().model().objects; + wxDataViewItemArray sel_items; for (auto ov_id : ov_ids) { if (ov_id.object == nullptr) @@ -5686,7 +5695,7 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) void ObjectList::on_plate_added(PartPlate* part_plate) { - m_objects_model->AddPlate(part_plate); + wxDataViewItem plate_item = m_objects_model->AddPlate(part_plate); } void ObjectList::on_plate_deleted(int plate_idx) diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp index a0e0da3ea5..09ca8c64a8 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp @@ -205,7 +205,7 @@ bool ObjectSettings::update_settings_list() bool is_object_settings = false; bool is_volume_settings = false; bool is_layer_range_settings = false; - // bool is_layer_root = false; + bool is_layer_root = false; ModelObject * parent_object = nullptr; for (auto item : items) { auto type = objects_model->GetItemType(item); @@ -255,9 +255,9 @@ bool ObjectSettings::update_settings_list() t_layer_height_range height_range = objects_model->GetLayerRangeByItem(item); object_configs.emplace( (ObjectBase*)(&object->layer_config_ranges.at(height_range)), &object->layer_config_ranges.at(height_range) ); } - // else if (type == itLayerRoot) { - // is_layer_root = true; - // } + else if (type == itLayerRoot) { + is_layer_root = true; + } } auto tab_plate = dynamic_cast(wxGetApp().get_plate_tab()); diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 7bc925e284..56c1550c46 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -280,6 +280,7 @@ wxGridActivationResult GridCellFilamentsEditor::TryActivate(int row, int col, wx { ObjectGridTable *table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol* grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow* grid_row = table->get_grid_row(row - 1); if ( actSource.GetOrigin() == wxGridActivationSource::Key ) { const wxKeyEvent& key_event = actSource.GetKeyEvent(); @@ -315,6 +316,7 @@ void GridCellFilamentsEditor::DoActivate(int row, int col, wxGrid* grid) if (m_cached_value != -1) { ObjectGridTable *table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol* grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow* grid_row = table->get_grid_row(row - 1); if (m_cached_value <= grid_col->choice_count) { wxString choice = grid_col->choices[m_cached_value-1]; table->SetValue(row, col, choice); @@ -330,6 +332,7 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d wxRect text_rect = rect; if (table) { + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -469,6 +472,7 @@ wxGridActivationResult GridCellChoiceEditor::TryActivate(int row, int col, wxGri { ObjectGridTable * table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); if (actSource.GetOrigin() == wxGridActivationSource::Key) { const wxKeyEvent &key_event = actSource.GetKeyEvent(); @@ -501,6 +505,7 @@ void GridCellChoiceEditor::DoActivate(int row, int col, wxGrid *grid) if (m_cached_value != -1) { ObjectGridTable * table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); if (m_cached_value <= grid_col->choice_count) { wxString choice = grid_col->choices[m_cached_value - 1]; table->SetValue(row, col, choice); @@ -516,6 +521,7 @@ void GridCellComboBoxRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc wxRect text_rect = rect; if (table) { + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -555,6 +561,7 @@ wxString GridCellSupportEditor::ms_stringValues[2] = { wxT(""), wxT("") }; void GridCellSupportEditor::DoActivate(int row, int col, wxGrid* grid) { + ObjectGrid* local_table = dynamic_cast(grid); wxGridBlocks cell_array = grid->GetSelectedBlocks(); auto left_col = cell_array.begin()->GetLeftCol(); @@ -684,6 +691,7 @@ void GridCellSupportRenderer::Draw(wxGrid& grid, //wxGridCellBoolRenderer::Draw(grid, attr, dc, rect, row, col, isSelected); ObjectGridTable * table = dynamic_cast(grid.GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionBool & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -883,6 +891,7 @@ void ObjectGrid::OnKeyDown( wxKeyEvent& event ) // see include/wx/defs.h enum wxKeyCode int keyCode = event.GetKeyCode(); int ctrlMask = wxMOD_CONTROL; + int shiftMask = wxMOD_SHIFT; // Coordinates of the selected block to copy to clipboard. wxGridBlockCoords selection; wxTextDataObject text_data; @@ -1535,6 +1544,7 @@ void ObjectGridTable::SetValue( int row, int col, const wxString& value ) return; ObjectGridRow* grid_row = m_grid_data[row - 1]; ObjectGridCol* grid_col = m_col_data[col]; + ObjectList* obj_list = wxGetApp().obj_list(); if (grid_col->type == coEnum) { int enum_value = 0; for (int i = 0; i < grid_col->choice_count; i++) @@ -1802,6 +1812,9 @@ wxString ObjectGridTable::convert_filament_string(int index, wxString& filament_ void ObjectGridTable::init_cols(ObjectGrid *object_grid) { + const float font_size = 1.5f * wxGetApp().em_unit(); + + // printable for object ObjectGridCol *col = new ObjectGridCol(coBool, "printable", ObjectGridTable::category_all, true, false, true, false, wxALIGN_CENTRE); col->size = object_grid->GetTextExtent(L("Printable")).x; @@ -1897,6 +1910,7 @@ void ObjectGridTable::init_cols(ObjectGrid *object_grid) col = new ObjectGridCol(coFloat, "inner_wall_speed_reset", L("Speed"), false, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); + return; } void ObjectGridTable::construct_object_configs(ObjectGrid *object_grid) @@ -1915,8 +1929,8 @@ void ObjectGridTable::construct_object_configs(ObjectGrid *object_grid) int object_count = m_panel->m_model->objects.size(); PartPlateList& partplate_list = m_panel->m_plater->get_partplate_list(); DynamicPrintConfig& global_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - // const DynamicPrintConfig* plater_config = m_panel->m_plater->config(); - // const DynamicPrintConfig& filament_config = *plater_config; + const DynamicPrintConfig* plater_config = m_panel->m_plater->config(); + const DynamicPrintConfig& filament_config = *plater_config; for (int i = 0; i < object_count; i++) { @@ -2812,7 +2826,7 @@ int ObjectTablePanel::init_filaments_and_colors() BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", invalid color count:%1%, extruder count: %2%") %color_count %m_filaments_count; } - int i = 0; + unsigned int i = 0; ColorRGB rgb; while (i < m_filaments_count) { const std::string& txt_color = global_config->opt_string("filament_colour", i); @@ -3018,6 +3032,7 @@ void ObjectTablePanel::load_data() { ObjectGridTable::ObjectGridCol *grid_col = m_object_grid_table->get_grid_col(i); if (grid_col->size > 0) { + int fit_size1 = m_object_grid->GetColSize(i); m_object_grid->SetColSize(i, grid_col->size); } } @@ -3158,7 +3173,7 @@ void ObjectTablePanel::OnRowSize( wxGridSizeEvent& ev) g_dialog_max_height =(panel_size.GetHeight() > g_max_size_from_parent.GetHeight())?g_max_size_from_parent.GetHeight():panel_size.GetHeight(); this->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); - // wxSize current_size = GetParent()->GetSize(); + wxSize current_size = GetParent()->GetSize(); //if (current_size.GetHeight() < g_dialog_max_height) GetParent()->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); GetParent()->SetSize(wxSize(g_dialog_max_width, g_dialog_max_height)); @@ -3172,7 +3187,7 @@ void ObjectTablePanel::OnColSize( wxGridSizeEvent& ev) g_dialog_max_height =(panel_size.GetHeight() > g_max_size_from_parent.GetHeight())?g_max_size_from_parent.GetHeight():panel_size.GetHeight(); this->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); - // wxSize current_size = GetParent()->GetSize(); + wxSize current_size = GetParent()->GetSize(); //if (current_size.GetWidth() < g_dialog_max_width) GetParent()->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); GetParent()->SetSize(wxSize(g_dialog_max_width, g_dialog_max_height)); @@ -3456,6 +3471,8 @@ void GridCellTextEditor::SetSize(const wxRect &rect) { wxGridCellTextEditor::Set void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) { ObjectGridTable * table = dynamic_cast(grid->GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); auto val = table->GetValue(row, col); @@ -3489,6 +3506,10 @@ void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) bool GridCellTextEditor::EndEdit(int row, int col, const wxGrid *grid, const wxString &WXUNUSED(oldval), wxString *newval) { + ObjectGridTable * table = dynamic_cast(grid->GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + wxCHECK_MSG(m_control, false, "wxGridCellTextEditor must be created first!"); const wxString value = Text()->GetTextCtrl()->GetValue(); diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index 5e9dfd0f64..10578be691 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -108,6 +108,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ //SettingsFactory::Bundle cat_options = SettingsFactory::get_bundle(&config->get(), is_object); std::map> cat_options; std::vector category_settings = SettingsFactory::get_visible_options(category, !is_object); + bool display_multiple = false; auto is_option_modified = [this](std::string key) { ConfigOption* config_option1 = m_origin_config.option(key); ConfigOption* config_option2 = m_current_config.option(key); @@ -146,6 +147,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ else it1 = cat_options.erase(it1); } + display_multiple = true; } else { cat_options.emplace(category, category_settings); diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index f87f277ac8..25b333e281 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -6,6 +6,7 @@ #include "GUI_App.hpp" #include "GUI.hpp" #include "I18N.hpp" +#include "3DScene.hpp" #include "BackgroundSlicingProcess.hpp" #include "OpenGLManager.hpp" #include "GLCanvas3D.hpp" @@ -14,11 +15,19 @@ #include "MainFrame.hpp" #include "format.hpp" +#include +#include #include #include +#include +#include +#include +#include +#include // this include must follow the wxWidgets ones or it won't compile on Windows -> see http://trac.wxwidgets.org/ticket/2421 #include "libslic3r/Print.hpp" +#include "libslic3r/SLAPrint.hpp" #include "NotificationManager.hpp" #ifdef _WIN32 @@ -533,6 +542,7 @@ void Preview::update_layers_slider_from_canvas(wxKeyEvent &event) const auto key = event.GetKeyCode(); IMSlider *m_layers_slider = m_canvas->get_gcode_viewer().get_layers_slider(); + IMSlider *m_moves_slider = m_canvas->get_gcode_viewer().get_moves_slider(); if (key == 'L') { if(!m_layers_slider->switch_one_layer_mode()) event.Skip(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index c9c324222d..bee454af28 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -3057,7 +3057,7 @@ bool GLGizmoEmboss::choose_font_by_wxdialog() } #endif // ALLOW_ADD_FONT_BY_OS_SELECTOR -#if defined(ALLOW_ADD_FONT_BY_FILE) || defined(ALLOW_DEBUG_MODE) +#if defined ALLOW_ADD_FONT_BY_FILE or defined ALLOW_DEBUG_MODE namespace priv { static std::string get_file_name(const std::string &file_path) { @@ -3693,6 +3693,7 @@ GuiCfg create_gui_configuration() cfg.height_of_volume_type_selector = separator_height + line_height_with_spacing + input_height; int max_style_image_width = static_cast(std::round(cfg.max_style_name_width/2 - 2 * style.FramePadding.x)); + int max_style_image_height = static_cast(std::round(input_height)); cfg.max_style_image_size = Vec2i32(max_style_image_width, line_height); cfg.face_name_size = Vec2i32(cfg.input_width, line_height_with_spacing); cfg.face_name_texture_offset_x = cfg.face_name_size.x() + space; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 220032826a..338a5d8161 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -245,10 +245,17 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float gap_fill_slider_left = m_imgui->calc_text_size(m_desc.at("gap_fill")).x + m_imgui->scaled(1.5f); const float highlight_slider_left = m_imgui->calc_text_size(m_desc.at("highlight_by_angle")).x + m_imgui->scaled(1.5f); const float reset_button_slider_left = m_imgui->calc_text_size(m_desc.at("reset_direction")).x + m_imgui->scaled(1.5f) + ImGui::GetStyle().FramePadding.x * 2; + const float on_overhangs_only_width = m_imgui->calc_text_size(m_desc["on_overhangs_only"]).x + m_imgui->scaled(1.5f); + const float remove_btn_width = m_imgui->calc_text_size(m_desc.at("remove_all")).x + m_imgui->scaled(1.5f); + const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.5f); const float gap_area_txt_width = m_imgui->calc_text_size(m_desc.at("gap_area")).x + m_imgui->scaled(1.5f); const float smart_fill_angle_txt_width = m_imgui->calc_text_size(m_desc.at("smart_fill_angle")).x + m_imgui->scaled(1.5f); + const float buttons_width = remove_btn_width + filter_btn_width + m_imgui->scaled(1.5f); const float empty_button_width = m_imgui->calc_button_size("").x; + const float tips_width = m_imgui->calc_text_size(_L("Auto support threshold angle: ") + " 90 ").x + m_imgui->scaled(1.5f); + const float minimal_slider_width = m_imgui->scaled(4.f); + float caption_max = 0.f; float total_text_max = 0.f; for (const auto &t : std::array{"enforce", "block", "remove", "cursor_size", "clipping_of_view"}) { @@ -265,6 +272,8 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float sliders_width = m_imgui->scaled(7.0f); const float drag_left_width = ImGui::GetStyle().WindowPadding.x + sliders_left_width + sliders_width - space_size; + float drag_pos_times = 0.7; + ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc.at("tool_type")); std::array tool_ids = { ImGui::CircleButtonIcon, ImGui::SphereButtonIcon, ImGui::FillButtonIcon, ImGui::GapFillIcon }; @@ -688,6 +697,7 @@ wxString GLGizmoFdmSupports::handle_snapshot_action_name(bool shift_down, GLGizm void GLGizmoFdmSupports::init_print_instance() { const PrintObject* print_object = NULL; + PrintInstance print_instance = { 0 }; const Print *print = m_parent.fff_print(); if (!m_c->selection_info() || (m_print_instance.print_object)) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp index cb791597e6..ee9c779464 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp @@ -138,6 +138,8 @@ void GLGizmoMeshBoolean::on_render() BoundingBoxf3 src_bb; BoundingBoxf3 tool_bb; + const ModelObject* mo = m_c->selection_info()->model_object(); + const ModelInstance* mi = mo->instances[m_parent.get_selection().get_instance_idx()]; const Selection& selection = m_parent.get_selection(); const Selection::IndicesList& idxs = selection.get_volume_idxs(); for (unsigned int i : idxs) { @@ -161,12 +163,16 @@ void GLGizmoMeshBoolean::on_set_state() if (m_state == EState::On) { m_src.reset(); m_tool.reset(); + bool m_diff_delete_input = false; + bool m_inter_delete_input = false; m_operation_mode = MeshBooleanOperation::Union; m_selecting_state = MeshBooleanSelectingState::SelectSource; } else if (m_state == EState::Off) { m_src.reset(); m_tool.reset(); + bool m_diff_delete_input = false; + bool m_inter_delete_input = false; m_operation_mode = MeshBooleanOperation::Undef; m_selecting_state = MeshBooleanSelectingState::Undef; wxGetApp().notification_manager()->close_plater_warning_notification(warning_text); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 4193ba885f..3167266a5e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -403,6 +403,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.f); const float buttons_width = remove_btn_width + filter_btn_width + m_imgui->scaled(1.f); const float minimal_slider_width = m_imgui->scaled(4.f); + const float color_button_width = m_imgui->calc_text_size(std::string_view{""}).x + m_imgui->scaled(1.75f); float caption_max = 0.f; float total_text_max = 0.f; @@ -443,6 +444,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott float start_pos_x = ImGui::GetCursorPos().x; const ImVec2 max_label_size = ImGui::CalcTextSize("99", NULL, true); + const float item_spacing = m_imgui->scaled(0.8f); size_t n_extruder_colors = std::min((size_t)EnforcerBlockerType::ExtruderMax, m_extruders_colors.size()); for (int extruder_idx = 0; extruder_idx < n_extruder_colors; extruder_idx++) { const ColorRGBA &extruder_color = m_extruders_colors[extruder_idx]; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp index cf512cd88e..2dbf7778e0 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp @@ -527,10 +527,21 @@ std::vector GLGizmoPainterBase::get_pr if (m_rr.mesh_id == -1) return hit_triangles_by_mesh; + ProjectedMousePosition mesh_hit_point = { m_rr.hit, m_rr.mesh_id, m_rr.facet }; float z_bot_world= (trafo_matrices[m_rr.mesh_id] * Vec3d(m_rr.hit(0), m_rr.hit(1), m_rr.hit(2))).z(); float z_top_world = z_bot_world+ m_cursor_height; hit_triangles_by_mesh.push_back({ z_bot_world, m_rr.mesh_id, size_t(m_rr.facet) }); + const Selection& selection = m_parent.get_selection(); + const ModelObject* mo = m_c->selection_info()->model_object(); + const ModelInstance* mi = mo->instances[selection.get_instance_idx()]; + const Transform3d instance_trafo = m_parent.get_canvas_type() == GLCanvas3D::CanvasAssembleView ? + mi->get_assemble_transformation().get_matrix() : + mi->get_transformation().get_matrix(); + const Transform3d instance_trafo_not_translate = m_parent.get_canvas_type() == GLCanvas3D::CanvasAssembleView ? + mi->get_assemble_transformation().get_matrix_no_offset() : + mi->get_transformation().get_matrix_no_offset(); + for (int mesh_idx = 0; mesh_idx < part_volumes.size(); mesh_idx++) { if (mesh_idx == m_rr.mesh_id) continue; @@ -701,6 +712,7 @@ bool GLGizmoPainterBase::gizmo_event(SLAGizmoEventType action, const Vec2d& mous // The mouse button click detection is enabled when there is a valid hit. // Missing the object entirely // shall not capture the mouse. + const bool dragging_while_painting = (action == SLAGizmoEventType::Dragging && m_button_down != Button::None); if (mesh_idx != -1 && m_button_down == Button::None) m_button_down = ((action == SLAGizmoEventType::LeftDown) ? Button::Left : Button::Right); @@ -1051,7 +1063,7 @@ void GLGizmoPainterBase::on_set_state() if (m_state == On && m_old_state != On) { // the gizmo was just turned on on_opening(); - // const Selection& selection = m_parent.get_selection(); + const Selection& selection = m_parent.get_selection(); //Camera& camera = wxGetApp().plater()->get_camera(); //Vec3d rotate_target = selection.get_bounding_box().center(); //rotate_target(2) = 0.f; diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index cf8b560198..319c5c75f2 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -186,7 +186,7 @@ bool GLGizmosManager::init() // Order of gizmos in the vector must match order in EType! //BBS: GUI refactor: add obj manipulation m_gizmos.clear(); - // unsigned int sprite_id = 0; + unsigned int sprite_id = 0; m_gizmos.emplace_back(new GLGizmoMove3D(m_parent, m_is_dark ? "toolbar_move_dark.svg" : "toolbar_move.svg", EType::Move, &m_object_manipulation)); m_gizmos.emplace_back(new GLGizmoRotate3D(m_parent, m_is_dark ? "toolbar_rotate_dark.svg" : "toolbar_rotate.svg", EType::Rotate, &m_object_manipulation)); m_gizmos.emplace_back(new GLGizmoScale3D(m_parent, m_is_dark ? "toolbar_scale_dark.svg" : "toolbar_scale.svg", EType::Scale, &m_object_manipulation)); @@ -1042,7 +1042,11 @@ void GLGizmosManager::render_arrow(const GLCanvas3D& parent, EType highlighted_t for (size_t idx : selectable_idxs) { if (idx == highlighted_type) { + int tex_width = m_icons_texture.get_width(); + int tex_height = m_icons_texture.get_height(); unsigned int tex_id = m_arrow_texture.get_id(); + float inv_tex_width = (tex_width != 0.0f) ? 1.0f / tex_width : 0.0f; + float inv_tex_height = (tex_height != 0.0f) ? 1.0f / tex_height : 0.0f; const float left_uv = 0.0f; const float right_uv = 1.0f; diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index 57934b149d..a1490ebc70 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -591,6 +591,7 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, float World_size = imgui_wrapper->calc_text_size(position_title).x + space_size; float caption_max = std::max(position_size, World_size) + 2 * space_size; + float end_text_size = imgui_wrapper->calc_text_size(this->m_new_unit_string).x; // position Vec3d original_position; @@ -600,6 +601,8 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, original_position = this->m_new_position; Vec3d display_position = m_buffered_position; + // Rotation + Vec3d rotation = this->m_buffered_rotation; float unit_size = imgui_wrapper->calc_text_size(MAX_SIZE).x + space_size; int index = 1; int index_unit = 1; @@ -705,6 +708,13 @@ void GizmoObjectManipulation::do_render_rotate_window(ImGuiWrapper *imgui_wrappe float caption_max = std::max(position_size, World_size) + 2 * space_size; float end_text_size = imgui_wrapper->calc_text_size(this->m_new_unit_string).x; + // position + Vec3d original_position; + if (this->m_imperial_units) + original_position = this->m_new_position * this->mm_to_in; + else + original_position = this->m_new_position; + Vec3d display_position = m_buffered_position; // Rotation Vec3d rotation = this->m_buffered_rotation; @@ -825,7 +835,10 @@ void GizmoObjectManipulation::do_render_scale_input_window(ImGuiWrapper* imgui_w Vec3d scale = m_buffered_scale; Vec3d display_size = m_buffered_size; + Vec3d display_position = m_buffered_position; + float unit_size = imgui_wrapper->calc_text_size(MAX_SIZE).x + space_size; + bool imperial_units = this->m_imperial_units; int index = 2; int index_unit = 1; diff --git a/src/slic3r/GUI/HintNotification.cpp b/src/slic3r/GUI/HintNotification.cpp index a102f400e2..c431e0fafb 100644 --- a/src/slic3r/GUI/HintNotification.cpp +++ b/src/slic3r/GUI/HintNotification.cpp @@ -499,7 +499,8 @@ HintData* HintDatabase::get_hint(HintDataNavigation nav) m_hint_id = get_next_hint_id(); if(nav == HintDataNavigation::Prev) m_hint_id = get_prev_hint_id(); -// if (nav == HintDataNavigation::Curr) + if (nav == HintDataNavigation::Curr) + ; if (nav == HintDataNavigation::Random) init_random_hint_id(); } diff --git a/src/slic3r/GUI/IMSlider.cpp b/src/slic3r/GUI/IMSlider.cpp index 538166f1d8..a0f15066b1 100644 --- a/src/slic3r/GUI/IMSlider.cpp +++ b/src/slic3r/GUI/IMSlider.cpp @@ -231,7 +231,7 @@ void IMSlider::SetTicksValues(const Info &custom_gcode_per_print_z) static bool last_spiral_vase_status = false; - // const bool was_empty = m_ticks.empty(); + const bool was_empty = m_ticks.empty(); m_ticks.ticks.clear(); const std::vector &heights = custom_gcode_per_print_z.gcodes; @@ -240,9 +240,9 @@ void IMSlider::SetTicksValues(const Info &custom_gcode_per_print_z) if (tick >= 0) m_ticks.ticks.emplace(TickCode{tick, h.type, h.extruder, h.color, h.extra}); } -// if (!was_empty && m_ticks.empty()) + if (!was_empty && m_ticks.empty()) // Switch to the "Feature type"/"Tool" from the very beginning of a new object slicing after deleting of the old one - // post_ticks_changed_event(); + ;// post_ticks_changed_event(); if (m_ticks.has_tick_with_code(ToolChange) && !m_can_change_color) { if (!wxGetApp().plater()->only_gcode_mode() && !wxGetApp().plater()->using_exported_file()) @@ -1034,6 +1034,8 @@ bool IMSlider::vertical_slider(const char* str_id, int* higher_value, int* lower context.IO.MouseClicked[0]) m_show_menu = false; + ImVec2 bar_center = higher_handle.GetCenter(); + // draw ticks draw_ticks(one_slideable_region); // draw colored band diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index f6ba5270b6..2595d3804d 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -182,6 +182,8 @@ int ImGuiWrapper::TOOLBAR_WINDOW_FLAGS = ImGuiWindowFlags_AlwaysAutoResize bool get_data_from_svg(const std::string &filename, unsigned int max_size_px, ThumbnailData &thumbnail_data) { + bool compression_enabled = false; + NSVGimage *image = nsvgParseFromFile(filename.c_str(), "px", 96.0f); if (image == nullptr) { return false; } @@ -234,6 +236,7 @@ bool get_data_from_svg(const std::string &filename, unsigned int max_size_px, Th bool slider_behavior(ImGuiID id, const ImRect& region, const ImS32 v_min, const ImS32 v_max, ImS32* out_value, ImRect* out_handle, ImGuiSliderFlags flags/* = 0*/, const int fixed_value/* = -1*/, const ImVec4& fixed_rect/* = ImRect()*/) { ImGuiContext& context = *GImGui; + ImGuiIO& io = ImGui::GetIO(); const ImGuiAxis axis = (flags & ImGuiSliderFlags_Vertical) ? ImGuiAxis_Y : ImGuiAxis_X; @@ -1790,7 +1793,7 @@ void ImGuiWrapper::search_list(const ImVec2& size_, bool (*items_getter)(int, co ImGui::ListBoxFooter(); - /*auto check_box = [&edited, this](const wxString& label, bool& check) { + auto check_box = [&edited, this](const wxString& label, bool& check) { ImGui::SameLine(); bool ch = check; checkbox(label, ch); @@ -1798,7 +1801,7 @@ void ImGuiWrapper::search_list(const ImVec2& size_, bool (*items_getter)(int, co check = !check; edited = true; } - };*/ + }; ImGui::AlignTextToFramePadding(); @@ -3146,6 +3149,7 @@ bool IMTexture::load_from_svg_file(const std::string& filename, unsigned width, std::vector data(n_pixels * 4, 0); nsvgRasterize(rast, image, 0, 0, scale, data.data(), width, height, width * 4); + bool compress = false; GLint last_texture; unsigned m_image_texture{ 0 }; unsigned char* pixels = (unsigned char*)(&data[0]); diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index f0d82e3d30..6648b0e632 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -136,6 +136,7 @@ void ArrangeJob::prepare_selected() { inst_sel[size_t(inst_id)] = true; for (size_t i = 0; i < inst_sel.size(); ++i) { + ModelInstance* mi = mo->instances[i]; ArrangePolygon&& ap = prepare_arrange_polygon(mo->instances[i]); //BBS: partplate_list preprocess //remove the locked plate's instances, neither in selected, nor in un-selected @@ -207,6 +208,7 @@ void ArrangeJob::prepare_all() { ModelObject *mo = model.objects[oidx]; for (size_t i = 0; i < mo->instances.size(); ++i) { + ModelInstance * mi = mo->instances[i]; ArrangePolygon&& ap = prepare_arrange_polygon(mo->instances[i]); //BBS: partplate_list preprocess //remove the locked plate's instances, neither in selected, nor in un-selected @@ -322,6 +324,7 @@ void ArrangeJob::prepare_wipe_tower() wipe_tower_ap.name = "WipeTower"; wipe_tower_ap.is_virt_object = true; wipe_tower_ap.is_wipe_tower = true; + const GLCanvas3D* canvas3D = static_cast(m_plater->canvas3D()); std::set extruder_ids; PartPlateList& ppl = wxGetApp().plater()->get_partplate_list(); @@ -527,6 +530,7 @@ void ArrangeJob::process(Ctl &ctl) auto & partplate_list = m_plater->get_partplate_list(); const Slic3r::DynamicPrintConfig& global_config = wxGetApp().preset_bundle->full_config(); + PresetBundle* preset_bundle = wxGetApp().preset_bundle; const bool is_bbl = wxGetApp().preset_bundle->is_bbl_vendor(); if (is_bbl && params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer")) partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index d9af3631c7..e594f98ae1 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -127,8 +127,8 @@ void FillBedJob::prepare() m_bedpts = get_bed_shape(*m_plater->config()); - /*auto &objects = m_plater->model().objects; - BoundingBox bedbb = get_extents(m_bedpts); + auto &objects = m_plater->model().objects; + /*BoundingBox bedbb = get_extents(m_bedpts); for (size_t idx = 0; idx < objects.size(); ++idx) if (int(idx) != m_object_idx) @@ -209,7 +209,9 @@ void FillBedJob::process(Ctl &ctl) m_bedpts = get_shrink_bedpts(m_plater->config(), params); auto &partplate_list = m_plater->get_partplate_list(); + auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); const Slic3r::DynamicPrintConfig& global_config = wxGetApp().preset_bundle->full_config(); + PresetBundle* preset_bundle = wxGetApp().preset_bundle; const bool is_bbl = wxGetApp().preset_bundle->is_bbl_vendor(); if (is_bbl && params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer")) partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); @@ -273,6 +275,8 @@ void FillBedJob::finalize(bool canceled, std::exception_ptr &eptr) int plate_cols = plate_list.get_plate_cols(); int cur_plate = plate_list.get_curr_plate_index(); + size_t inst_cnt = model_object->instances.size(); + int added_cnt = std::accumulate(m_selected.begin(), m_selected.end(), 0, [](int s, auto &ap) { return s + int(ap.priority == 0 && ap.bed_idx == 0); }); diff --git a/src/slic3r/GUI/Jobs/OrientJob.cpp b/src/slic3r/GUI/Jobs/OrientJob.cpp index 27dac69b56..be59225d8d 100644 --- a/src/slic3r/GUI/Jobs/OrientJob.cpp +++ b/src/slic3r/GUI/Jobs/OrientJob.cpp @@ -46,6 +46,7 @@ void OrientJob::prepare_selection(std::vector obj_sel, bool only_one_plate ModelInstance* mi = mo->instances[inst_idx]; OrientMesh&& om = get_orient_mesh(mi); + bool locked = false; if (!only_one_plate) { int plate_index = plate_list.find_instance(oidx, inst_idx); if ((plate_index >= 0)&&(plate_index < plate_list.get_plate_count())) { diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 53fad3dbdd..a54310c234 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -103,6 +103,9 @@ wxString PrintJob::get_http_error_msg(unsigned int status, std::string body) if (!j["message"].is_null()) message = j["message"].get(); } + switch (status) { + ; + } } catch (...) { ; @@ -134,6 +137,7 @@ void PrintJob::process(Ctl &ctl) wxString error_str; int curr_percent = 10; NetworkAgent* m_agent = wxGetApp().getAgent(); + AppConfig* config = wxGetApp().app_config; if (this->connection_type == "lan") { msg = _u8L("Sending print job over LAN"); @@ -146,9 +150,12 @@ void PrintJob::process(Ctl &ctl) ctl.call_on_main_thread([this] { prepare(); }).wait(); int result = -1; + unsigned int http_code; std::string http_body; + int total_plate_num = plate_data.plate_count; if (!plate_data.is_valid) { + total_plate_num = m_plater->get_partplate_list().get_plate_count(); PartPlate *plate = m_plater->get_partplate_list().get_plate(job_data.plate_idx); if (plate == nullptr) { plate = m_plater->get_partplate_list().get_curr_plate(); @@ -305,7 +312,7 @@ void PrintJob::process(Ctl &ctl) try { stl_design_id = std::stoi(wxGetApp().model().stl_design_id); } - catch (std::exception&) { + catch (const std::exception& e) { stl_design_id = 0; } params.stl_design_id = stl_design_id; @@ -440,7 +447,7 @@ void PrintJob::process(Ctl &ctl) std::string curr_job_id; json job_info_j; try { - job_info_j = json::parse(job_info); + job_info_j.parse(job_info); if (job_info_j.contains("job_id")) { curr_job_id = job_info_j["job_id"].get(); } diff --git a/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp b/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp index 3fd2b375bf..263273984b 100644 --- a/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp +++ b/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp @@ -57,7 +57,8 @@ void RotoptimizeJob::process(Ctl &ctl) .print_config(&m_default_print_cfg) .statucb([this, &prev_status, &ctl/*, &statustxt*/](int s) { -// if (s > 0 && s < 100) + if (s > 0 && s < 100) + ; // ctl.update_status(prev_status + s / m_selected_object_ids.size(), // statustxt); diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index cb9f87e95a..6566060546 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -67,6 +67,9 @@ wxString SendJob::get_http_error_msg(unsigned int status, std::string body) if (!j["message"].is_null()) message = j["message"].get(); } + switch (status) { + ; + } } catch (...) { ; @@ -106,7 +109,9 @@ void SendJob::process(Ctl &ctl) std::string msg; int curr_percent = 10; NetworkAgent* m_agent = wxGetApp().getAgent(); + AppConfig* config = wxGetApp().app_config; int result = -1; + unsigned int http_code; std::string http_body; if (this->connection_type == "lan") { diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 56a575a350..9d368f9e86 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -183,7 +183,11 @@ void KBShortcutsDialog::fill_shortcuts() // Slice plate { ctrl + "R", L("Slice plate")}, // Send to Print - { ctrl + L("Shift+G"), L("Print plate")}, +#ifdef __APPLE__ + { L("⌘+Shift+G"), L("Print plate")}, +#else + { L("Ctrl+Shift+G"), L("Print plate")}, +#endif // __APPLE // Edit { ctrl + "X", L("Cut") }, @@ -222,9 +226,16 @@ void KBShortcutsDialog::fill_shortcuts() {L("Shift+R"), L("Auto orientates selected objects or all objects.If there are selected objects, it just orientates the selected ones.Otherwise, it will orientates all objects in the current disk.")}, {L("Shift+Tab"), L("Collapse/Expand the sidebar")}, - { ctrl + L("Any arrow"), L("Movement in camera space")}, - { alt + L("Left mouse button"), L("Select a part")}, - { ctrl + L("Left mouse button"), L("Select multiple objects")}, + #ifdef __APPLE__ + {L("⌘+Any arrow"), L("Movement in camera space")}, + {L("⌥+Left mouse button"), L("Select a part")}, + {L("⌘+Left mouse button"), L("Select multiple objects")}, + #else + {L("Ctrl+Any arrow"), L("Movement in camera space")}, + {L("Alt+Left mouse button"), L("Select a part")}, + {L("Ctrl+Left mouse button"), L("Select multiple objects")}, + + #endif {L("Shift+Left mouse button"), L("Select objects by rectangle")}, {L("Arrow Up"), L("Move selection 10 mm in positive Y direction")}, {L("Arrow Down"), L("Move selection 10 mm in negative Y direction")}, @@ -263,8 +274,13 @@ void KBShortcutsDialog::fill_shortcuts() Shortcuts gizmos_shortcuts = { {L("Esc"), L("Deselect all")}, {L("Shift+"), L("Move: press to snap by 1mm")}, - { ctrl + L("Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, - { alt + L("Mouse wheel"), L("Support/Color Painting: adjust section position")}, + #ifdef __APPLE__ + {L("⌘+Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, + {L("⌥+Mouse wheel"), L("Support/Color Painting: adjust section position")}, + #else + {L("Ctrl+Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, + {L("Alt+Mouse wheel"), L("Support/Color Painting: adjust section position")}, + #endif }; m_full_shortcuts.push_back({{_L("Gizmo"), ""}, gizmos_shortcuts}); @@ -295,8 +311,13 @@ void KBShortcutsDialog::fill_shortcuts() { "Tab", L("Switch between Prepare/Preview") }, {L("Shift+Any arrow"), L("Move slider 5x faster")}, {L("Shift+Mouse wheel"), L("Move slider 5x faster")}, - { ctrl + L("Any arrow"), L("Move slider 5x faster")}, - { ctrl + L("Mouse wheel"), L("Move slider 5x faster")}, + #ifdef __APPLE__ + {L("⌘+Any arrow"), L("Move slider 5x faster")}, + {L("⌘+Mouse wheel"), L("Move slider 5x faster")}, + #else + {L("Ctrl+Any arrow"), L("Move slider 5x faster")}, + {L("Ctrl+Mouse wheel"), L("Move slider 5x faster")}, + #endif { L("Home"), L("Horizontal slider - Move to start position")}, { L("End"), L("Horizontal slider - Move to last position")}, }; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 9a48e320d1..2f59daffbb 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -743,6 +743,7 @@ void MainFrame::update_layout() if (m_layout != ESettingsLayout::Unknown) restore_to_creation(); + ESettingsLayout old_layout = m_layout; m_layout = layout; // From the very beginning the Print settings should be selected @@ -1487,6 +1488,7 @@ bool MainFrame::can_reslice() const wxBoxSizer* MainFrame::create_side_tools() { enable_multi_machine = wxGetApp().is_enable_multi_machine(); + int em = em_unit(); wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); m_slice_select = eSlicePlate; @@ -1777,7 +1779,7 @@ wxBoxSizer* MainFrame::create_side_tools() aux_btn->Bind(wxEVT_BUTTON, [](auto e) { wxGetApp().sidebar().show_auxiliary_dialog(); }); - sizer->Add(aux_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 1 * em_unit() / 10); + sizer->Add(aux_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 1 * em / 10); */ sizer->Add(FromDIP(19), 0, 0, 0, 0); @@ -1922,6 +1924,9 @@ bool MainFrame::get_enable_print_status() void MainFrame::update_side_button_style() { + // BBS + int em = em_unit(); + /*m_slice_btn->SetLayoutStyle(1); m_slice_btn->SetTextLayout(SideButton::EHorizontalOrientation::HO_Center, FromDIP(15)); m_slice_btn->SetMinSize(wxSize(-1, FromDIP(24))); @@ -2183,6 +2188,9 @@ static void add_common_publish_menu_items(wxMenu* publish_menu, MainFrame* mainF return; } + json j; + NetworkAgent* agent = GUI::wxGetApp().getAgent(); + //if (GUI::wxGetApp().plater()->model().objects.empty()) return; wxGetApp().open_publish_page_dialog(); }); @@ -2580,13 +2588,13 @@ void MainFrame::init_menubar_as_editor() //BBS perspective view wxWindowID camera_id_base = wxWindow::NewControlId(int(wxID_CAMERA_COUNT)); - append_menu_radio_item(viewMenu, wxID_CAMERA_PERSPECTIVE + camera_id_base, _L("Use Perspective View"), _L("Use Perspective View"), + auto perspective_item = append_menu_radio_item(viewMenu, wxID_CAMERA_PERSPECTIVE + camera_id_base, _L("Use Perspective View"), _L("Use Perspective View"), [this](wxCommandEvent&) { wxGetApp().app_config->set_bool("use_perspective_camera", true); wxGetApp().update_ui_from_settings(); }, nullptr); //BBS orthogonal view - append_menu_radio_item(viewMenu, wxID_CAMERA_ORTHOGONAL + camera_id_base, _L("Use Orthogonal View"), _L("Use Orthogonal View"), + auto orthogonal_item = append_menu_radio_item(viewMenu, wxID_CAMERA_ORTHOGONAL + camera_id_base, _L("Use Orthogonal View"), _L("Use Orthogonal View"), [this](wxCommandEvent&) { wxGetApp().app_config->set_bool("use_perspective_camera", false); wxGetApp().update_ui_from_settings(); @@ -2661,8 +2669,7 @@ void MainFrame::init_menubar_as_editor() //auto preference_item = new wxMenuItem(parent_menu, OrcaSlicerMenuPreferences + bambu_studio_id_base, _L("Preferences") + "\tCtrl+,", ""); #else wxMenu* parent_menu = m_topbar->GetTopMenu(); - // auto preference_item = - new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\t" + ctrl + "P", ""); + auto preference_item = new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\t" + ctrl + "P", ""); #endif //auto printer_item = new wxMenuItem(parent_menu, ConfigMenuPrinter + config_id_base, _L("Printer"), ""); @@ -3093,6 +3100,10 @@ void MainFrame::init_menubar_as_gcodeviewer() void MainFrame::update_menubar() { + if (wxGetApp().is_gcode_viewer()) + return; + + const bool is_fff = plater()->printer_technology() == ptFFF; } void MainFrame::reslice_now() @@ -3168,6 +3179,7 @@ void MainFrame::load_config_file() cfiles.push_back(into_u8(file)); m_last_config = file; } + bool update = false; wxGetApp().preset_bundle->import_presets(cfiles, [this](std::string const & name) { ConfigsOverwriteConfirmDialog dlg(this, from_u8(name), false); int res = dlg.ShowModal(); @@ -3737,6 +3749,7 @@ void MainFrame::on_select_default_preset(SimpleEvent& evt) wxICON_INFORMATION); /* get setting list */ + NetworkAgent* agent = wxGetApp().getAgent(); switch ( dialog.ShowModal() ) { case wxID_YES: { diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index faa694090b..b2032b09ad 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -328,6 +328,7 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj) MessageDialog(this, m, _L("Download failed"), wxOK | wxICON_ERROR).ShowModal(); }); + NetworkAgent* agent = wxGetApp().getAgent(); if (result > 1 || result == 0) { json j; j["code"] = result; @@ -575,7 +576,7 @@ void MediaFilePanel::doAction(size_t index, int action) } else { MessageDialog dlg(this, _L("The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and export a new .gcode.3mf file."), wxEmptyString, wxICON_WARNING | wxOK); - dlg.ShowModal(); + auto res = dlg.ShowModal(); } }); diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index da70eeff65..36500f69fa 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -67,7 +67,7 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w auto ip = str.find(' ', ik); if (ip == wxString::npos) ip = str.Length(); auto v = str.Mid(ik, ip - ik); - if (strcmp(k, "T:") == 0 && v.Length() == 8) { + if (k == "T:" && v.Length() == 8) { long h = 0,m = 0,s = 0; v.Left(2).ToLong(&h); v.Mid(3, 2).ToLong(&m); @@ -389,7 +389,7 @@ void MediaPlayCtrl::Stop(wxString const &msg) } auto tunnel = m_url.empty() ? "" : into_u8(wxURI(m_url).GetPath()).substr(1); - if (auto n = tunnel.find_first_of("/_"); n != std::string::npos) + if (auto n = tunnel.find_first_of('/_'); n != std::string::npos) tunnel = tunnel.substr(0, n); if (last_state != wxMEDIASTATE_PLAYING && m_failed_code != 0 && m_last_failed_codes.find(m_failed_code) == m_last_failed_codes.end() @@ -734,7 +734,7 @@ bool MediaPlayCtrl::start_stream_service(bool *need_install) auto file_dll = tools_dir + dll; auto file_dll2 = plugins_dir + dll; if (!boost::filesystem::exists(file_dll) || boost::filesystem::last_write_time(file_dll) != boost::filesystem::last_write_time(file_dll2)) - boost::filesystem::copy_file(file_dll2, file_dll, boost::filesystem::copy_options::overwrite_existing); + boost::filesystem::copy_file(file_dll2, file_dll, boost::filesystem::copy_option::overwrite_if_exists); } boost::process::child process_source(file_source, file_url2.ToStdWstring(), boost::process::start_dir(tools_dir), boost::process::windows::create_no_window, diff --git a/src/slic3r/GUI/ModelMall.cpp b/src/slic3r/GUI/ModelMall.cpp index 45833ba80c..f14de1ebf0 100644 --- a/src/slic3r/GUI/ModelMall.cpp +++ b/src/slic3r/GUI/ModelMall.cpp @@ -133,7 +133,7 @@ namespace GUI { } } - catch (std::exception&) { + catch (std::exception& e) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 3bcc0ce224..333f4d3de0 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -114,7 +114,7 @@ AddMachinePanel::~AddMachinePanel() { m_side_tools->get_panel()->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(MonitorPanel::on_printer_clicked), NULL, this); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &MonitorPanel::on_timer, this); Bind(wxEVT_SIZE, &MonitorPanel::on_size, this); Bind(wxEVT_COMMAND_CHOICE_SELECTED, &MonitorPanel::on_select_printer, this); @@ -160,7 +160,7 @@ MonitorPanel::~MonitorPanel() m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - on_timer(); + wxPostEvent(this, wxTimerEvent()); Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return; @@ -272,7 +272,7 @@ void MonitorPanel::on_update_all(wxMouseEvent &event) } } -void MonitorPanel::on_timer() + void MonitorPanel::on_timer(wxTimerEvent& event) { if (update_flag) { update_all(); @@ -306,6 +306,9 @@ void MonitorPanel::on_timer() void MonitorPanel::on_printer_clicked(wxMouseEvent &event) { + auto mouse_pos = ClientToScreen(event.GetPosition()); + wxPoint rect = m_side_tools->ClientToScreen(wxPoint(0, 0)); + if (!m_side_tools->is_in_interval()) { wxPoint pos = m_side_tools->ClientToScreen(wxPoint(0, 0)); pos.y += m_side_tools->GetRect().height; @@ -431,6 +434,7 @@ bool MonitorPanel::Show(bool show) wxGetApp().mainframe->SetMinSize(wxGetApp().plater()->GetMinSize()); #endif + NetworkAgent* m_agent = wxGetApp().getAgent(); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (show) { start_update(); @@ -438,7 +442,7 @@ bool MonitorPanel::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - on_timer(); + wxPostEvent(this, wxTimerEvent()); if (dev) { //set a default machine when obj is null @@ -481,6 +485,7 @@ void MonitorPanel::show_status(int status) if (!m_initialized) return; if (last_status == status)return; if ((last_status & (int)MonitorStatus::MONITOR_CONNECTING) != 0) { + NetworkAgent* agent = wxGetApp().getAgent(); json j; j["dev_id"] = obj ? obj->dev_id : "obj_nullptr"; if ((status & (int)MonitorStatus::MONITOR_DISCONNECTED) != 0) { diff --git a/src/slic3r/GUI/Monitor.hpp b/src/slic3r/GUI/Monitor.hpp index 761b059a0a..8da56ddc3b 100644 --- a/src/slic3r/GUI/Monitor.hpp +++ b/src/slic3r/GUI/Monitor.hpp @@ -133,7 +133,7 @@ public: StatusPanel* get_status_panel() {return m_status_info_panel;}; void select_machine(std::string machine_sn); void on_update_all(wxMouseEvent &event); - void on_timer(); + void on_timer(wxTimerEvent& event); void on_select_printer(wxCommandEvent& event); void on_printer_clicked(wxMouseEvent &event); void on_size(wxSizeEvent &event); diff --git a/src/slic3r/GUI/MonitorBasePanel.cpp b/src/slic3r/GUI/MonitorBasePanel.cpp index 24760577a6..553b8f0993 100644 --- a/src/slic3r/GUI/MonitorBasePanel.cpp +++ b/src/slic3r/GUI/MonitorBasePanel.cpp @@ -6,6 +6,7 @@ /////////////////////////////////////////////////////////////////////////// #include "MonitorBasePanel.h" +#include "Printer/PrinterFileSystem.h" #include "Widgets/Label.hpp" /////////////////////////////////////////////////////////////////////////// @@ -20,7 +21,7 @@ MonitorBasePanel::MonitorBasePanel(wxWindow* parent, wxWindowID id, const wxPoin m_splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D | wxSP_BORDER); m_splitter->SetSashGravity(0); - m_splitter->SetSashInvisible(); + m_splitter->SetSashSize(0); m_splitter->Connect(wxEVT_IDLE, wxIdleEventHandler(MonitorBasePanel::m_splitterOnIdle), NULL, this); m_splitter->SetMinimumPaneSize(182); @@ -280,7 +281,7 @@ VideoMonitoringBasePanel::~VideoMonitoringBasePanel() // PLEASE DO *NOT* EDIT THIS FILE! /////////////////////////////////////////////////////////////////////////// -//#include "MonitorBasePanel.h" +#include "MonitorBasePanel.h" /////////////////////////////////////////////////////////////////////////// using namespace Slic3r::GUI; diff --git a/src/slic3r/GUI/MultiMachine.hpp b/src/slic3r/GUI/MultiMachine.hpp index 04ff304bca..48a6ed4180 100644 --- a/src/slic3r/GUI/MultiMachine.hpp +++ b/src/slic3r/GUI/MultiMachine.hpp @@ -9,16 +9,16 @@ namespace Slic3r { namespace GUI { -#define DEVICE_ITEM_MAX_WIDTH 900 -#define SEND_ITEM_MAX_HEIGHT 30 -#define DEVICE_ITEM_MAX_HEIGHT 50 +#define DEVICE_ITEM_MAX_WIDTH 900 +#define SEND_ITEM_MAX_HEIGHT 30 +#define DEVICE_ITEM_MAX_HEIGHT 50 #define TABLE_HEAR_NORMAL_COLOUR wxColour(238, 238, 238) #define TABLE_HEAD_PRESSED_COLOUR wxColour(150, 150, 150) #define CTRL_BUTTON_NORMAL_COLOUR wxColour(255, 255, 255) #define CTRL_BUTTON_PRESSEN_COLOUR wxColour(150, 150, 150) #define TABLE_HEAD_FONT Label::Body_13 -#define MM_ICON_SIZE FromDIP(16) +#define ICON_SIZE FromDIP(16) class DeviceItem : public wxWindow { diff --git a/src/slic3r/GUI/MultiMachineManagerPage.cpp b/src/slic3r/GUI/MultiMachineManagerPage.cpp index 9a112d32c3..b37810f07f 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.cpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.cpp @@ -320,7 +320,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) m_table_head_panel->SetBackgroundColour(TABLE_HEAR_NORMAL_COLOUR); m_table_head_sizer = new wxBoxSizer(wxHORIZONTAL); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -343,7 +343,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) }); - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -353,7 +353,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) - m_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -376,7 +376,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) }); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -523,7 +523,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) Layout(); Fit(); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &MultiMachineManagerPage::on_timer, this); } void MultiMachineManagerPage::update_page() @@ -676,7 +676,7 @@ void MultiMachineManagerPage::start_timer() m_flipping_timer->SetOwner(this); m_flipping_timer->Start(1000); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } void MultiMachineManagerPage::update_page_number() @@ -688,7 +688,7 @@ void MultiMachineManagerPage::update_page_number() st_page_number->SetLabel(number); } -void MultiMachineManagerPage::on_timer() +void MultiMachineManagerPage::on_timer(wxTimerEvent& event) { m_flipping_timer->Stop(); if (btn_last_page) diff --git a/src/slic3r/GUI/MultiMachineManagerPage.hpp b/src/slic3r/GUI/MultiMachineManagerPage.hpp index 55eb500540..c1086b4721 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.hpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.hpp @@ -55,7 +55,7 @@ public: void start_timer(); void update_page_number(); - void on_timer(); + void on_timer(wxTimerEvent& event); void clear_page(); void page_num_enter_evt(); diff --git a/src/slic3r/GUI/MultiMachinePage.cpp b/src/slic3r/GUI/MultiMachinePage.cpp index cb1fea926d..9aed022ba3 100644 --- a/src/slic3r/GUI/MultiMachinePage.cpp +++ b/src/slic3r/GUI/MultiMachinePage.cpp @@ -19,7 +19,7 @@ MultiMachinePage::MultiMachinePage(wxWindow* parent, wxWindowID id, const wxPoin wxGetApp().UpdateDarkUIWin(this); init_timer(); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &MultiMachinePage::on_timer, this); } MultiMachinePage::~MultiMachinePage() @@ -59,7 +59,7 @@ bool MultiMachinePage::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(2000); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } else { m_refresh_timer->Stop(); @@ -97,7 +97,7 @@ void MultiMachinePage::init_timer() //wxPostEvent(this, wxTimerEvent()); } -void MultiMachinePage::on_timer() +void MultiMachinePage::on_timer(wxTimerEvent& event) { m_local_task_manager->update_page(); m_cloud_task_manager->update_page(); diff --git a/src/slic3r/GUI/MultiMachinePage.hpp b/src/slic3r/GUI/MultiMachinePage.hpp index 7e948fa479..0572c30d1b 100644 --- a/src/slic3r/GUI/MultiMachinePage.hpp +++ b/src/slic3r/GUI/MultiMachinePage.hpp @@ -41,7 +41,7 @@ public: void init_tabpanel(); void init_timer(); - void on_timer(); + void on_timer(wxTimerEvent& event); void clear_page(); }; diff --git a/src/slic3r/GUI/MultiTaskManagerPage.cpp b/src/slic3r/GUI/MultiTaskManagerPage.cpp index 3d295eb97c..f2d159a7de 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.cpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.cpp @@ -4,6 +4,7 @@ #include "GUI_App.hpp" #include "MainFrame.hpp" #include "Widgets/RadioBox.hpp" +#include #include namespace Slic3r { @@ -573,7 +574,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -582,7 +583,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) m_task_name->SetCenter(false); m_table_head_sizer->Add(m_task_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -602,7 +603,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -622,7 +623,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, MM_ICON_SIZE); + m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, ICON_SIZE); m_info->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_info->SetFont(TABLE_HEAD_FONT); m_info->SetCornerRadius(0); @@ -631,7 +632,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) m_info->SetCenter(false); m_table_head_sizer->Add(m_info, 0, wxALIGN_CENTER_VERTICAL, 0); - m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); + m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); m_send_time->SetBackgroundColor(head_bg); m_send_time->SetFont(TABLE_HEAD_FONT); m_send_time->SetCornerRadius(0); @@ -651,7 +652,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_send_time, 0, wxALIGN_CENTER_VERTICAL, 0); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -945,7 +946,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -954,7 +955,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) m_task_name->SetCenter(false); m_table_head_sizer->Add(m_task_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -974,7 +975,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -994,7 +995,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, MM_ICON_SIZE); + m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, ICON_SIZE); m_info->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_info->SetFont(TABLE_HEAD_FONT); m_info->SetCornerRadius(0); @@ -1003,7 +1004,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) m_info->SetCenter(false); m_table_head_sizer->Add(m_info, 0, wxALIGN_CENTER_VERTICAL, 0); - m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); + m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); m_send_time->SetBackgroundColor(head_bg); m_send_time->SetFont(TABLE_HEAD_FONT); m_send_time->SetCornerRadius(0); @@ -1023,7 +1024,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_send_time, 0, wxALIGN_CENTER_VERTICAL, 0); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -1182,7 +1183,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) page_sizer = new wxBoxSizer(wxVERTICAL); page_sizer->Add(m_main_panel, 1, wxALL | wxEXPAND, FromDIP(25)); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &CloudTaskManagerPage::on_timer, this); wxGetApp().UpdateDarkUIWin(this); @@ -1399,10 +1400,10 @@ void CloudTaskManagerPage::start_timer() m_flipping_timer->SetOwner(this); m_flipping_timer->Start(1000); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } -void CloudTaskManagerPage::on_timer() +void CloudTaskManagerPage::on_timer(wxTimerEvent& event) { m_flipping_timer->Stop(); enable_buttons(true); diff --git a/src/slic3r/GUI/MultiTaskManagerPage.hpp b/src/slic3r/GUI/MultiTaskManagerPage.hpp index b32c670d5e..0f676d06b3 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.hpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.hpp @@ -135,7 +135,7 @@ public: bool Show(bool show); void update_page_number(); void start_timer(); - void on_timer(); + void on_timer(wxTimerEvent& event); void pause_all(wxCommandEvent& evt); void resume_all(wxCommandEvent& evt); diff --git a/src/slic3r/GUI/Notebook.hpp b/src/slic3r/GUI/Notebook.hpp index 5ef90a9702..7e6e94da3a 100644 --- a/src/slic3r/GUI/Notebook.hpp +++ b/src/slic3r/GUI/Notebook.hpp @@ -194,6 +194,8 @@ public: // check that only the selected page is visible and others are hidden: for (size_t page = 0; page < m_pages.size(); page++) { + wxWindow* win_a = GetPage(page); + wxWindow* win_b = GetPage(n); if (page != n && GetPage(page) != GetPage(n)) { m_pages[page]->Hide(); } diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 685058bbb3..08ef8c7493 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -857,7 +857,7 @@ void NotificationManager::PopNotification::bbl_render_block_notif_buttons(ImGuiW void NotificationManager::PopNotification::bbl_render_block_notif_left_sign(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) { - // auto window = ImGui::GetCurrentWindow(); + auto window = ImGui::GetCurrentWindow(); //window->DrawList->AddImage(user_texture_id, bb.Min + padding + margin, bb.Max - padding - margin, uv0, uv1, ImGui::GetColorU32(tint_col)); std::wstring text; diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 6fa75d7895..dadde84ebc 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -405,6 +405,7 @@ void OG_CustomCtrl::OnMotion(wxMouseEvent& event) // Set tooltips with information for each icon // BBS: markdown tip if (!markdowntip.empty()) { + wxWindow* window = GetGrandParent(); assert(focusedLine); wxPoint pos2 = { 250, focusedLine->rect_label.y }; pos2 = ClientToScreen(pos2); diff --git a/src/slic3r/GUI/ObjColorDialog.cpp b/src/slic3r/GUI/ObjColorDialog.cpp index 7ac8d20bd3..648faffbf9 100644 --- a/src/slic3r/GUI/ObjColorDialog.cpp +++ b/src/slic3r/GUI/ObjColorDialog.cpp @@ -1,6 +1,9 @@ #include +#include +//#include "libslic3r/FlushVolCalc.hpp" #include "ObjColorDialog.hpp" #include "BitmapCache.hpp" +#include "GUI.hpp" #include "I18N.hpp" #include "GUI_App.hpp" #include "MsgDialog.hpp" @@ -241,6 +244,7 @@ ObjColorPanel::ObjColorPanel(wxWindow * parent, } //end first cluster //draw ui + auto sizer_width = FromDIP(300); // Create two switched panels with their own sizers m_sizer_simple = new wxBoxSizer(wxVERTICAL); m_page_simple = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); @@ -670,6 +674,7 @@ void ObjColorPanel::draw_table() m_scrolledWindow->SetSizer(m_gridsizer); int totalHeight = row_height *(row+1) * 2; m_scrolledWindow->SetVirtualSize(MIN_OBJCOLOR_DIALOG_WIDTH, totalHeight); + auto look = FIX_SCROLL_HEIGTH; if (totalHeight > FIX_SCROLL_HEIGTH) { m_scrolledWindow->SetMinSize(wxSize(MIN_OBJCOLOR_DIALOG_WIDTH, FIX_SCROLL_HEIGTH)); m_scrolledWindow->SetMaxSize(wxSize(MIN_OBJCOLOR_DIALOG_WIDTH, FIX_SCROLL_HEIGTH)); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index febc326dff..936afcacb9 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -9,8 +9,12 @@ #include "Widgets/StaticLine.hpp" #include +#include #include +#include +#include #include "libslic3r/Exception.hpp" +#include "libslic3r/Utils.hpp" #include "libslic3r/AppConfig.hpp" #include "I18N.hpp" #include diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 1bc2b55adf..7f2353a304 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1597,6 +1597,9 @@ std::vector PartPlate::get_extruders_without_support(bool conside_custom_gc return plate_extruders; } + // if 3mf file + const DynamicPrintConfig& glb_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { if (!contain_instance_totally(obj_idx, 0)) continue; @@ -1655,14 +1658,14 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con { Vec3d wipe_tower_size; - // double layer_height = 0.08f; // hard code layer height + double layer_height = 0.08f; // hard code layer height double max_height = 0.f; wipe_tower_size.setZero(); wipe_tower_size(0) = w; - // const ConfigOption* layer_height_opt = config.option("layer_height"); - // if (layer_height_opt) - // layer_height = layer_height_opt->getFloat(); + const ConfigOption* layer_height_opt = config.option("layer_height"); + if (layer_height_opt) + layer_height = layer_height_opt->getFloat(); // empty plate if (plate_extruder_size == 0) @@ -1710,6 +1713,7 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con // If wipe tower height is between the current and next member, set the min_depth as linear interpolation between them auto next_height_to_depth = *iter; if (next_height_to_depth.first > max_height) { + float height_base = curr_height_to_depth.first; float height_diff = next_height_to_depth.first - curr_height_to_depth.first; float min_depth_base = curr_height_to_depth.second; float depth_diff = next_height_to_depth.second - curr_height_to_depth.second; @@ -2098,6 +2102,7 @@ bool PartPlate::intersect_instance(int obj_id, int instance_id, BoundingBoxf3* b if (m_printable) { ModelObject* object = m_model->objects[obj_id]; + ModelInstance* instance = object->instances[instance_id]; BoundingBoxf3 instance_box = bounding_box? *bounding_box: object->instance_convex_hull_bounding_box(instance_id); result = get_plate_box().intersects(instance_box); } @@ -2121,6 +2126,7 @@ bool PartPlate::is_left_top_of(int obj_id, int instance_id) } ModelObject* object = m_model->objects[obj_id]; + ModelInstance* instance = object->instances[instance_id]; std::pair pair(obj_id, instance_id); BoundingBoxf3 instance_box = object->instance_convex_hull_bounding_box(instance_id); @@ -2516,7 +2522,7 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) { auto compute_points = [&print_polygon](Vec2d& center, double radius, double start_angle, double stop_angle, int count) { - double angle_steps; + double angle, angle_steps; angle_steps = (stop_angle - start_angle) / (count - 1); for(int j = 0; j < count; j++ ) { @@ -2535,7 +2541,7 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) { const Vec2d& p = m_shape[i]; Vec2d center; - double start_angle, stop_angle, radius_x, radius_y, radius; + double start_angle, stop_angle, angle_steps, radius_x, radius_y, radius; switch (i) { case 0: radius = 5.f; @@ -2586,7 +2592,7 @@ void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) { auto compute_exclude_points = [&exclude_polygon](Vec2d& center, double radius, double start_angle, double stop_angle, int count) { - double angle_steps; + double angle, angle_steps; angle_steps = (stop_angle - start_angle) / (count - 1); for(int j = 0; j < count; j++ ) { @@ -2605,7 +2611,7 @@ void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) { const Vec2d& p = m_exclude_area[i]; Vec2d center; - double start_angle, stop_angle, radius; + double start_angle, stop_angle, angle_steps, radius_x, radius_y, radius; switch (i) { case 0: radius = 5.f; @@ -3120,7 +3126,7 @@ void PartPlate::update_first_layer_print_sequence(size_t filament_nums) void PartPlate::print() const { - // unsigned int count=0; + unsigned int count=0; BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << boost::format(": plate index %1%, pointer %2%, print_index %3% print pointer %4%") % m_plate_index % this % m_print_index % m_print; BOOST_LOG_TRIVIAL(trace) << boost::format("\t origin {%1%,%2%,%3%}, width %4%, depth %5%, height %6%") % m_origin.x() % m_origin.y() % m_origin.z() % m_width % m_depth % m_height; @@ -4147,7 +4153,8 @@ int PartPlateList::find_instance_belongs(int obj_id, int instance_id) //newly added or modified int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_new) { - int index; + int ret = 0, index; + PartPlate* plate = NULL; ModelObject* object = NULL; if ((obj_id >= 0) && (obj_id < m_model->objects.size())) @@ -4176,7 +4183,7 @@ int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_n { //found it added before BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": found it in previous plate %1%") % index; - PartPlate* plate = m_plate_list[index]; + plate = m_plate_list[index]; if (!plate->intersect_instance(obj_id, instance_id, &boundingbox)) { //not include anymore, remove it from original plate @@ -4281,7 +4288,7 @@ int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_n //notify instance is removed int PartPlateList::notify_instance_removed(int obj_id, int instance_id) { - int index, instance_to_delete = instance_id; + int ret = 0, index, instance_to_delete = instance_id; PartPlate* plate = NULL; BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": obj_id %1%, instance_id %2%") % obj_id % instance_id; @@ -4379,6 +4386,7 @@ int PartPlateList::reload_all_objects(bool except_locked, int plate_index) ModelObject* object = m_model->objects[i]; for (j = 0; j < (unsigned int)object->instances.size(); ++j) { + ModelInstance* instance = object->instances[j]; BoundingBoxf3 boundingbox = object->instance_convex_hull_bounding_box(j); for (k = 0; k < (unsigned int)m_plate_list.size(); ++k) { @@ -4429,7 +4437,9 @@ int PartPlateList::construct_objects_list_for_new_plate(int plate_index) ModelObject* object = m_model->objects[i]; for (j = 0; j < (unsigned int)object->instances.size(); ++j) { + ModelInstance* instance = object->instances[j]; already_included = false; + for (k = 0; k < (unsigned int)plate_index; ++k) { PartPlate* plate = m_plate_list[k]; @@ -4603,6 +4613,7 @@ bool PartPlateList::preprocess_nonprefered_areas(arrangement::ArrangePolygons& r nonprefered_regions.emplace_back(Vec2d{ 18,0 }, Vec2d{ 240,15 }); // new extrusion & hand-eye calibration region //has exclude areas + PartPlate* plate = m_plate_list[0]; for (int index = 0; index < nonprefered_regions.size(); index++) { Polygon ap = scaled(nonprefered_regions[index]).polygon(); @@ -4829,8 +4840,11 @@ void PartPlateList::set_render_option(bool bedtype_texture, bool plate_settings) int PartPlateList::select_plate_by_obj(int obj_index, int instance_index) { + int ret = 0, index; + PartPlate* plate = NULL; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": obj_id %1%, instance_id %2%") % obj_index % instance_index; - int index = find_instance(obj_index, instance_index); + index = find_instance(obj_index, instance_index); if (index != -1) { //found it in plate @@ -4868,6 +4882,8 @@ bool PartPlateList::set_shapes(const Pointfs& shape, const Pointfs& exclude_area m_height_to_lid = height_to_lid; m_height_to_rod = height_to_rod; + double stride_x = plate_stride_x(); + double stride_y = plate_stride_y(); for (unsigned int i = 0; i < (unsigned int)m_plate_list.size(); ++i) { PartPlate* plate = m_plate_list[i]; @@ -5429,12 +5445,14 @@ void PartPlateList::BedTextureInfo::TexturePart::update_buffer() rectangle.push_back(Vec2d(x, y+h)); ExPolygon poly; - for (const auto& p : rectangle) { - Vec2d pp = Vec2d(p.x() + offset.x(), p.y() + offset.y()); - poly.contour.append({ scale_(pp(0)), scale_(pp(1)) }); + for (int i = 0; i < 4; i++) { + const Vec2d & p = rectangle[i]; + for (auto& p : rectangle) { + Vec2d pp = Vec2d(p.x() + offset.x(), p.y() + offset.y()); + poly.contour.append({ scale_(pp(0)), scale_(pp(1)) }); + } } - if (!buffer) buffer = new GLModel(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 5ce506951b..80f6193281 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -396,9 +396,10 @@ Sidebar::priv::~priv() void Sidebar::priv::show_preset_comboboxes() { + const bool showSLA = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; + //BBS #if 0 - const bool showSLA = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; for (size_t i = 0; i < 4; ++i) sizer_presets->Show(i, !showSLA); @@ -1157,7 +1158,7 @@ void Sidebar::init_filament_combo(PlaterPresetComboBox **combo, const int filame auto combo_and_btn_sizer = new wxBoxSizer(wxHORIZONTAL); // BBS: filament double columns - // int em = wxGetApp().em_unit(); + int em = wxGetApp().em_unit(); combo_and_btn_sizer->Add(FromDIP(8), 0, 0, 0, 0 ); (*combo)->clr_picker->SetLabel(wxString::Format("%d", filament_idx + 1)); combo_and_btn_sizer->Add((*combo)->clr_picker, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(3)); @@ -1325,6 +1326,7 @@ void Sidebar::update_all_preset_comboboxes() void Sidebar::update_presets(Preset::Type preset_type) { PresetBundle &preset_bundle = *wxGetApp().preset_bundle; + const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, preset_type %1%")%preset_type; switch (preset_type) { @@ -1332,7 +1334,6 @@ void Sidebar::update_presets(Preset::Type preset_type) { // BBS #if 0 - const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); const size_t extruder_cnt = print_tech != ptFFF ? 1 : dynamic_cast(preset_bundle.printers.get_edited_preset().config.option("nozzle_diameter"))->values.size(); const size_t filament_cnt = p->combos_filament.size() > extruder_cnt ? extruder_cnt : p->combos_filament.size(); @@ -1788,7 +1789,7 @@ void Sidebar::sync_ams_list() // BBS:Record consumables information before synchronization std::vector color_before_sync; - std::vector is_support_before; + std::vector is_support_before; DynamicPrintConfig& project_config = wxGetApp().preset_bundle->project_config; ConfigOptionStrings* color_opt = project_config.option("filament_colour"); for (int i = 0; i < p->combos_filament.size(); ++i) { @@ -2027,13 +2028,18 @@ void Sidebar::auto_calc_flushing_volumes(const int modify_id) { auto& preset_bundle = wxGetApp().preset_bundle; auto& project_config = preset_bundle->project_config; + auto& printer_config = preset_bundle->printers.get_edited_preset().config; const auto& full_config = wxGetApp().preset_bundle->full_config(); auto& ams_multi_color_filament = preset_bundle->ams_multi_color_filment; + auto& ams_filament_list = preset_bundle->filament_ams_list; const std::vector& init_matrix = (project_config.option("flush_volumes_matrix"))->values; + const std::vector& init_extruders = (project_config.option("flush_volumes_vector"))->values; const std::vector& min_flush_volumes= get_min_flush_volumes(full_config); + ConfigOptionFloat* flush_multi_opt = project_config.option("flush_multiplier"); + float flush_multiplier = flush_multi_opt ? flush_multi_opt->getFloat() : 1.f; std::vector matrix = init_matrix; int m_max_flush_volume = Slic3r::g_max_flush_volume; unsigned int m_number_of_extruders = (int)(sqrt(init_matrix.size()) + 0.001); @@ -2931,7 +2937,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) wxGLCanvas* view3D_canvas = view3D->get_wxglcanvas(); //BBS: GUI refactor - // wxGLCanvas* preview_canvas = preview->get_wxglcanvas(); + wxGLCanvas* preview_canvas = preview->get_wxglcanvas(); if (wxGetApp().is_editor()) { // 3DScene events: @@ -3649,8 +3655,11 @@ std::vector Plater::priv::load_files(const std::vector& input_ std::string designer_model_id; std::string designer_country_code; + int answer_convert_from_meters = wxOK_DEFAULT; + int answer_convert_from_imperial_units = wxOK_DEFAULT; int tolal_model_count = 0; + int progress_percent = 0; int total_files = input_files.size(); const int stage_percent[IMPORT_STAGE_MAX+1] = { 5, // IMPORT_STAGE_RESTORE @@ -3817,7 +3826,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:"), file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string()); text += "\n"; - // bool first = true; + bool first = true; // std::string context = into_u8(text); wxString context = text; // if (wxGetApp().app_config->get("user_mode") == "develop") { @@ -3923,7 +3932,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ } // Based on the printer technology field found in the loaded config, select the base for the config, - // PrinterTechnology printer_technology = Preset::printer_technology(config_loaded); + PrinterTechnology printer_technology = Preset::printer_technology(config_loaded); config.apply(static_cast(FullPrintConfig::defaults())); // and place the loaded config over the base. @@ -3978,7 +3987,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ MessageDialog dlg(q, _L("The 3mf has following modified G-codes in filament or printer presets:") + warning_message+ _L("Please confirm that these modified G-codes are safe to prevent any damage to the machine!"), _L("Modified G-codes")); dlg.show_dsa_button(); - dlg.ShowModal(); + auto res = dlg.ShowModal(); if (dlg.get_checkbox_state()) wxGetApp().app_config->set("no_warn_when_modified_gcodes", "true"); } @@ -3991,7 +4000,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ //show_info(q, _L("The 3mf has following customized filament or printer presets:") + warning_message + _L("Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!"), _L("Customized Preset")); MessageDialog dlg(q, _L("The 3mf has following customized filament or printer presets:") + from_u8(warning_message)+ _L("Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!"), _L("Customized Preset")); dlg.show_dsa_button(); - dlg.ShowModal(); + auto res = dlg.ShowModal(); if (dlg.get_checkbox_state()) wxGetApp().app_config->set("no_warn_when_modified_gcodes", "true"); } @@ -4494,7 +4503,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode #ifndef AUTOPLACEMENT_ON_LOAD // bool need_arrange = false; #endif /* AUTOPLACEMENT_ON_LOAD */ - // bool scaled_down = false; + bool scaled_down = false; std::vector obj_idxs; unsigned int obj_count = model.objects.size(); @@ -4531,15 +4540,15 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode const Vec3d ratio = size.cwiseQuotient(bed_size); const double max_ratio = std::max(ratio(0), ratio(1)); if (max_ratio > 10000) { - MessageDialog dlg(q, _L("Your object appears to be too large. It will be scaled down to fit the heat bed automatically."), _L("Object too large"), - wxICON_QUESTION | wxOK); - dlg.ShowModal(); + MessageDialog dlg(q, _L("Your object appears to be too large, Do you want to scale it down to fit the heat bed automatically?"), _L("Object too large"), + wxICON_QUESTION | wxYES); + int answer = dlg.ShowModal(); // the size of the object is too big -> this could lead to overflow when moving to clipper coordinates, // so scale down the mesh object->scale_mesh_after_creation(1. / max_ratio); object->origin_translation = Vec3d::Zero(); object->center_around_origin(); - // scaled_down = true; + scaled_down = true; break; } else if (max_ratio > 10) { @@ -4548,7 +4557,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode int answer = dlg.ShowModal(); if (answer == wxID_YES) { instance->set_scaling_factor(instance->get_scaling_factor() / max_ratio); - // scaled_down = true; + scaled_down = true; } } } @@ -5302,7 +5311,7 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool process_validation_warning(warning); return_state |= UPDATE_BACKGROUND_PROCESS_INVALID; if (printer_technology == ptFFF) { - // const Print* print = background_process.fff_print(); + const Print* print = background_process.fff_print(); //Polygons polygons; //if (print->config().print_sequence == PrintSequence::ByObject) // Print::sequential_print_clearance_valid(*print, &polygons); @@ -6446,6 +6455,7 @@ void Plater::priv::on_select_bed_type(wxCommandEvent &evt) int selection = combo->GetSelection(); std::string bed_type_name = print_config_def.get("curr_bed_type")->enum_values[selection]; + PresetBundle& preset_bundle = *wxGetApp().preset_bundle; DynamicPrintConfig& proj_config = wxGetApp().preset_bundle->project_config; const t_config_enum_values* keys_map = print_config_def.get("curr_bed_type")->enum_keys_map; @@ -8284,7 +8294,7 @@ void Plater::priv::on_create_filament(SimpleEvent &) update_ui_from_settings(); sidebar->update_all_preset_comboboxes(); CreatePresetSuccessfulDialog success_dlg(wxGetApp().mainframe, SuccessType::FILAMENT); - success_dlg.ShowModal(); + int res = success_dlg.ShowModal(); } } @@ -8396,7 +8406,7 @@ void Plater::priv::take_snapshot(const std::string& snapshot_name, const UndoRed // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; const ConfigOptionFloats* tower_x_opt = proj_cfg.option("wipe_tower_x"); const ConfigOptionFloats* tower_y_opt = proj_cfg.option("wipe_tower_y"); @@ -8506,7 +8516,7 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; const ConfigOptionFloats* tower_x_opt = proj_cfg.option("wipe_tower_x"); const ConfigOptionFloats* tower_y_opt = proj_cfg.option("wipe_tower_y"); @@ -8573,7 +8583,7 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; ConfigOptionFloats* tower_x_opt = const_cast(proj_cfg.option("wipe_tower_x")); ConfigOptionFloats* tower_y_opt = const_cast(proj_cfg.option("wipe_tower_y")); @@ -8754,6 +8764,7 @@ void Plater::priv::record_start_print_preset(std::string action) { } j["record_event"] = action; + NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) { return; @@ -8956,7 +8967,7 @@ void Plater::load_project(wxString const& filename2, // if res is empty no data has been loaded if (!res.empty() && (load_restore || !(strategy & LoadStrategy::Silence))) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << (load_restore ? originfile : filename); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << load_restore ? originfile : filename; p->set_project_filename(load_restore ? originfile : filename); if (load_restore && originfile.IsEmpty()) { p->set_project_name(_L("Untitled")); @@ -9038,6 +9049,8 @@ int Plater::save_project(bool saveAs) boost::uintmax_t size = boost::filesystem::file_size(into_path(filename)); j["file_size"] = size; j["file_name"] = std::string(filename.mb_str()); + + NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) {} @@ -9070,7 +9083,7 @@ void Plater::import_model_id(wxString download_info) } } - catch (std::exception&) + catch (const std::exception& error) { //wxString sError = error.what(); } @@ -9111,6 +9124,8 @@ void Plater::import_model_id(wxString download_info) // NetworkAgent* m_agent = Slic3r::GUI::wxGetApp().getAgent(); // if (!m_agent) return; + int res = 0; + unsigned int http_code; std::string http_body; msg = _L("prepare 3mf file..."); @@ -9149,7 +9164,7 @@ void Plater::import_model_id(wxString download_info) if (sFile == filename) is_already_exist = true; } } - catch (std::exception&) + catch (const std::exception& error) { //wxString sError = error.what(); } @@ -9862,6 +9877,7 @@ void Plater::calib_retraction(const Calib_Params& params) add_model(false, Slic3r::resources_dir() + "/calib/retraction/retraction_tower.stl"); auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; auto obj = model().objects[0]; @@ -10192,7 +10208,7 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) std::replace(name.begin(), name.end(), '\\', '/'); // rename if file exists std::string filename = path.filename().string(); - std::string extension = path.extension().string(); + std::string extension = boost::filesystem::extension(path); std::string just_filename = filename.substr(0, filename.size() - extension.size()); std::string final_filename = just_filename; @@ -10498,6 +10514,7 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) auto limit_width = m_fname_f->GetSize().GetWidth() - 2; auto current_width = 0; + auto cut_index = 0; auto fstring = wxString(""); auto bstring = wxString(""); @@ -10505,6 +10522,7 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) auto file_name = wxString(filename); for (int x = 0; x < file_name.length(); x++) { current_width += m_fname_s->GetTextExtent(file_name[x]).GetWidth(); + cut_index = x; if (current_width > limit_width) { bstring += file_name[x]; @@ -11407,6 +11425,7 @@ void Plater::export_gcode(bool prefer_removable) if (preset_bundle) { j["gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); } + NetworkAgent *agent = wxGetApp().getAgent(); } catch (...) {} } @@ -11516,7 +11535,7 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st std::vector csgmesh; csgmesh.reserve(2 * mo.volumes.size()); - csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), + bool has_splitable_volume = csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), csg::mpartsPositive | csg::mpartsNegative); std::string fail_msg = _u8L("Unable to perform boolean operation on model meshes. " @@ -11596,9 +11615,9 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls) wxBusyCursor wait; const auto& selection = p->get_selection(); + const auto obj_idx = selection.get_object_idx(); #if EXPORT_WITH_BOOLEAN - const auto obj_idx = selection.get_object_idx(); if (selection_only && (obj_idx == -1 || selection.is_wipe_tower())) return; #else @@ -12361,6 +12380,7 @@ void Plater::record_slice_preset(std::string action) } j["record_event"] = action; + NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) { @@ -12543,7 +12563,7 @@ int Plater::send_gcode(int plate_idx, Export3mfProgressFn proFn) p->m_print_job_data._3mf_path = fs::path(plate->get_tmp_gcode_path()); p->m_print_job_data._3mf_path.replace_extension("3mf"); } - catch (std::exception&) { + catch (std::exception& e) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } @@ -12576,7 +12596,7 @@ int Plater::export_config_3mf(int plate_idx, Export3mfProgressFn proFn) try { p->m_print_job_data._3mf_config_path = fs::path(plate->get_temp_config_3mf_path()); } - catch (std::exception&) { + catch (std::exception& e) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 079e228050..612fb86b7e 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -229,13 +229,13 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox( } } - /*auto check = [this](bool yes_or_no) { + auto check = [this](bool yes_or_no) { // if (yes_or_no) // return true; int act_btns = ActionButtons::SAVE; return wxGetApp().check_and_keep_current_preset_changes(_L("Switching application language"), _L("Switching application language while some presets are modified."), act_btns); - };*/ + }; m_current_language_selected = combobox->GetSelection(); if (m_current_language_selected >= 0 && m_current_language_selected < vlist.size()) { diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index a710668d71..e634c4fe1a 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -401,7 +401,7 @@ void PresetComboBox::add_ams_filaments(std::string selected, bool alias_name) auto color = tray.opt_string("filament_colour", 0u); auto name = tray.opt_string("tray_name", 0u); wxBitmap bmp(*get_extruder_color_icon(color, name, 24, 16)); - Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first); + int item_id = Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first); //validate_selection(id->value == selected); // can not select } m_last_ams_filament = GetCount(); @@ -668,6 +668,7 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset // BBS if (m_type == Preset::TYPE_FILAMENT) { + int em = wxGetApp().em_unit(); clr_picker = new wxBitmapButton(parent, wxID_ANY, {}, wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), wxBU_EXACTFIT | wxBU_AUTODRAW | wxBORDER_NONE); clr_picker->SetToolTip(_L("Click to pick filament color")); clr_picker->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { @@ -802,6 +803,7 @@ bool PlaterPresetComboBox::switch_to_tab() wxGetApp().params_dialog()->Popup(); tab->restore_last_select_item(); + const Preset* selected_filament_preset = nullptr; if (m_type == Preset::TYPE_FILAMENT) { const std::string& selected_preset = GetString(GetSelection()).ToUTF8().data(); @@ -981,6 +983,7 @@ void PlaterPresetComboBox::update() if (!preset.is_visible || (!preset.is_compatible && !is_selected)) continue; + bool single_bar = false; if (m_type == Preset::TYPE_FILAMENT) { #if 0 @@ -988,7 +991,7 @@ void PlaterPresetComboBox::update() filament_rgb = is_selected ? selected_filament_preset->config.opt_string("filament_colour", 0) : preset.config.opt_string("filament_colour", 0); extruder_rgb = (is_selected && !filament_color.empty()) ? filament_color : filament_rgb; - bool single_bar = filament_rgb == extruder_rgb; + single_bar = filament_rgb == extruder_rgb; bitmap_key += single_bar ? filament_rgb : filament_rgb + extruder_rgb; #endif @@ -1476,6 +1479,8 @@ void GUI::CalibrateFilamentComboBox::update() this->Clear(); invalidate_selection(); + const Preset* selected_filament_preset = nullptr; + m_nonsys_presets.clear(); m_system_presets.clear(); diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index f406553b0c..8d272057f8 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -548,6 +548,7 @@ void PrinterFileSystem::BuildGroups() void PrinterFileSystem::UpdateGroupSelect() { m_group_flags.clear(); + int beg = 0; if (m_group_mode != G_NONE) { auto group = m_group_mode == G_YEAR ? m_group_year : m_group_month; if (m_group_mode == G_YEAR) diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index 952cf892de..35870df65b 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -1,9 +1,11 @@ #include "PrinterWebView.hpp" #include "I18N.hpp" +#include "slic3r/GUI/PrinterWebView.hpp" #include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/MainFrame.hpp" +#include "libslic3r_version.h" #include #include diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index e69ba143db..003d0e4cdd 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -266,7 +266,7 @@ void ProjectPanel::OnScriptMessage(wxWebViewEvent& evt) } } - catch (std::exception&) { + catch (std::exception& e) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/RecenterDialog.cpp b/src/slic3r/GUI/RecenterDialog.cpp index 2a923fb181..6947763890 100644 --- a/src/slic3r/GUI/RecenterDialog.cpp +++ b/src/slic3r/GUI/RecenterDialog.cpp @@ -86,6 +86,8 @@ void RecenterDialog::OnPaint(wxPaintEvent& event){ } void RecenterDialog::render(wxDC& dc) { + wxSize size = GetSize(); + dc.SetFont(Label::Body_14); dc.SetTextForeground(text_color); wxPoint pos_start = wxPoint(BORDER, BORDER); diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 5937ff9d37..617397f32f 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -1375,6 +1375,7 @@ wxString ConfirmBeforeSendDialog::format_text(wxString str, int warp) Label st (this, str); wxString out_txt = str; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < str.length(); i++) { auto text_size = st.GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp b/src/slic3r/GUI/RemovableDriveManager.cpp index a0a68eb05b..a26e13448d 100644 --- a/src/slic3r/GUI/RemovableDriveManager.cpp +++ b/src/slic3r/GUI/RemovableDriveManager.cpp @@ -6,9 +6,13 @@ #include #if _WIN32 +#include #include #include #include + +#include + #else // unix, linux & OSX includes #include diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index 05958f7ac8..186124a2c1 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -435,6 +435,8 @@ void SearchItem::OnPaint(wxPaintEvent &event) auto bold_pair = std::vector>(); + auto index = 0; + auto b_first_list = std::vector(); auto b_second_list = std::vector(); @@ -813,9 +815,9 @@ void SearchDialog::OnCheck(wxCommandEvent &event) void SearchDialog::OnMotion(wxMouseEvent &event) { - // wxDataViewItem item; - // wxDataViewColumn *col; - // wxWindow * win = this; + wxDataViewItem item; + wxDataViewColumn *col; + wxWindow * win = this; // search_list->HitTest(wxGetMousePosition() - win->GetScreenPosition(), item, col); // search_list->Select(item); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index f641769b45..e6b2ac81c5 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -421,7 +421,7 @@ SelectMachinePopup::SelectMachinePopup(wxWindow *parent) m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); Bind(EVT_UPDATE_USER_MACHINE_LIST, &SelectMachinePopup::update_machine_list, this); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &SelectMachinePopup::on_timer, this); Bind(EVT_DISSMISS_MACHINE_LIST, &SelectMachinePopup::on_dissmiss_win, this); } @@ -459,7 +459,7 @@ void SelectMachinePopup::Popup(wxWindow *WXUNUSED(focus)) } } - on_timer(); + wxPostEvent(this, wxTimerEvent()); PopupWindow::Popup(); } @@ -529,7 +529,7 @@ wxWindow *SelectMachinePopup::create_title_panel(wxString text) return m_panel_title_own; } -void SelectMachinePopup::on_timer() +void SelectMachinePopup::on_timer(wxTimerEvent &event) { BOOST_LOG_TRIVIAL(trace) << "SelectMachinePopup on_timer"; wxGetApp().reset_to_active(); @@ -933,6 +933,7 @@ wxString SelectMachineDialog::format_text(wxString &m_msg) wxString out_txt = m_msg; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_ams_msg->GetTextExtent(count_txt); @@ -2460,6 +2461,9 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event) //check blacklist for (auto i = 0; i < m_ams_mapping_result.size(); i++) { + + auto tid = m_ams_mapping_result[i].tray_id; + std::string filament_type = boost::to_upper_copy(m_ams_mapping_result[i].type); std::string filament_brand; @@ -3315,7 +3319,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) if (m_list[i]->is_lan_mode_printer() && !m_list[i]->has_access_right()) { ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); dlg.set_machine_object(m_list[i]); - dlg.ShowModal(); + auto res = dlg.ShowModal(); m_printer_last_select = ""; m_comboBox_printer->SetSelection(-1); m_comboBox_printer->Refresh(); @@ -3365,6 +3369,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) void SelectMachineDialog::update_flow_cali_check(MachineObject* obj) { + auto bed_type = m_plater->get_partplate_list().get_curr_plate()->get_bed_type(true); auto show_cali_tips = true; if (obj && obj->get_printer_arch() == PrinterArch::ARCH_I3) { show_cali_tips = false; } @@ -3701,6 +3706,7 @@ void SelectMachineDialog::reset_ams_material() { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; wxString ams_id = "-"; @@ -3982,6 +3988,7 @@ void SelectMachineDialog::reset_and_sync_ams_list() BitmapCache bmcache; MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material *item = iter->second; item->item->Destroy(); delete item; @@ -4008,6 +4015,7 @@ void SelectMachineDialog::reset_and_sync_ams_list() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent &e) { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material * item = iter->second; MaterialItem *m = item->item; m->on_normal(); @@ -4017,6 +4025,9 @@ void SelectMachineDialog::reset_and_sync_ams_list() m_current_filament_id = extruder; item->on_selected(); + auto mouse_pos = ClientToScreen(e.GetPosition()); + wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); + // update ams data DeviceManager *dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev_manager) return; @@ -4236,6 +4247,7 @@ void SelectMachineDialog::unify_deal_thumbnail_data(ThumbnailData &input_data, T MaterialHash::iterator iter = m_materialList.begin(); bool is_connect_printer = true; while (iter != m_materialList.end()) { + int id = iter->first; Material * item = iter->second; MaterialItem *m = item->item; if (m->m_ams_name == "-") { @@ -4347,10 +4359,10 @@ void SelectMachineDialog::set_default_normal(const ThumbnailData &data) MachineObject* obj_ = dev_manager->get_selected_machine(); update_flow_cali_check(obj_); -#ifdef __WINDOWS__ wxSize screenSize = wxGetDisplaySize(); auto dialogSize = this->GetSize(); +#ifdef __WINDOWS__ if (screenSize.GetHeight() < dialogSize.GetHeight()) { m_need_adaptation_screen = true; m_scrollable_view->SetScrollRate(0, 5); @@ -4411,6 +4423,7 @@ void SelectMachineDialog::set_default_from_sdcard() //init MaterialItem MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material* item = iter->second; item->item->Destroy(); delete item; @@ -4433,6 +4446,7 @@ void SelectMachineDialog::set_default_from_sdcard() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, fo](wxMouseEvent& e) { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; m->on_normal(); @@ -4445,6 +4459,9 @@ void SelectMachineDialog::set_default_from_sdcard() catch (...) {} item->on_selected(); + + auto mouse_pos = ClientToScreen(e.GetPosition()); + wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); // update ams data DeviceManager* dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev_manager) return; @@ -4468,7 +4485,7 @@ void SelectMachineDialog::set_default_from_sdcard() m_mapping_popup.Popup(); } } - }); + }); Material* material_item = new Material(); material_item->id = fo.id; @@ -4495,9 +4512,10 @@ void SelectMachineDialog::set_default_from_sdcard() set_flow_calibration_state(true); -#ifdef __WINDOWS__ wxSize screenSize = wxGetDisplaySize(); auto dialogSize = this->GetSize(); + +#ifdef __WINDOWS__ if (screenSize.GetHeight() < dialogSize.GetHeight()) { m_need_adaptation_screen = true; m_scrollable_view->SetScrollRate(0, 5); diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index dadc3be613..16da5e05d5 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -278,7 +278,7 @@ private: private: void OnLeftUp(wxMouseEvent &event); - void on_timer(); + void on_timer(wxTimerEvent &event); void update_other_devices(); void update_user_devices(); diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index 9d42a624c6..187ec03eb7 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -1110,6 +1110,7 @@ void Selection::move_to_center(const Vec3d& displacement, bool local) if (!m_valid) return; + EMode translation_type = m_mode; //BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": %1%, displacement {%2%, %3%, %4%}") % __LINE__ % displacement(X) % displacement(Y) % displacement(Z); set_caches(); @@ -1130,6 +1131,7 @@ void Selection::move_to_center(const Vec3d& displacement, bool local) else { const Vec3d local_displacement = (m_cache.volumes_data[i].get_instance_rotation_matrix() * m_cache.volumes_data[i].get_instance_scale_matrix() * m_cache.volumes_data[i].get_instance_mirror_matrix()).inverse() * displacement; v.set_volume_offset(m_cache.volumes_data[i].get_volume_position() + local_displacement); + translation_type = Volume; } } } @@ -2183,8 +2185,7 @@ void Selection::update_type() obj_it->second.insert(inst_idx); } - // BBL removed functionality below - // bool requires_disable = false; + bool requires_disable = false; if (!m_valid) m_type = Invalid; @@ -2200,7 +2201,7 @@ void Selection::update_type() else if (first->is_modifier) { m_type = SingleModifier; - // requires_disable = true; + requires_disable = true; } else { @@ -2222,7 +2223,7 @@ void Selection::update_type() else { m_type = SingleVolume; - // requires_disable = true; + requires_disable = true; } } } @@ -2270,7 +2271,7 @@ void Selection::update_type() else if (modifiers_count == (unsigned int)m_list.size()) m_type = MultipleModifier; - // requires_disable = true; + requires_disable = true; } } else if ((selected_instances_count > 1) && (selected_instances_count * model_volumes_count + sla_volumes_count == (unsigned int)m_list.size())) diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index 036409f4d9..bf766d78d0 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -300,7 +300,7 @@ SendMultiMachinePage::SendMultiMachinePage(Plater* plater) m_main_scroll->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this); e.Skip(); }); init_timer(); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &SendMultiMachinePage::on_timer, this); wxGetApp().UpdateDlgDarkUI(this); } @@ -451,6 +451,8 @@ BBL::PrintParams SendMultiMachinePage::request_params(MachineObject* obj) auto use_ams = false; AmsRadioSelectorList::Node* node = m_radio_group.GetFirst(); + auto groupid = 0; + while (node) { AmsRadioSelector* rs = node->GetData(); @@ -470,11 +472,13 @@ BBL::PrintParams SendMultiMachinePage::request_params(MachineObject* obj) PrintPrepareData job_data; m_plater->get_print_job_data(&job_data); - - std::string temp_file = Slic3r::resources_dir() + "/check_access_code.txt"; - auto check_access_code_path = temp_file.c_str(); - BOOST_LOG_TRIVIAL(trace) << "sned_job: check_access_code_path = " << check_access_code_path; - job_data._temp_path = fs::path(check_access_code_path); + + if (&job_data) { + std::string temp_file = Slic3r::resources_dir() + "/check_access_code.txt"; + auto check_access_code_path = temp_file.c_str(); + BOOST_LOG_TRIVIAL(trace) << "sned_job: check_access_code_path = " << check_access_code_path; + job_data._temp_path = fs::path(check_access_code_path); + } int curr_plate_idx; if (job_data.plate_idx >= 0) @@ -635,7 +639,7 @@ void SendMultiMachinePage::on_send(wxCommandEvent& event) int result = m_plater->send_gcode(m_print_plate_idx, [this](int export_stage, int current, int total, bool& cancel) { if (m_is_canceled) return; - // bool cancelled = false; + bool cancelled = false; wxString msg = _L("Preparing print job"); //m_status_bar->update_status(msg, cancelled, 10, true); //m_export_3mf_cancel = cancel = cancelled; @@ -734,7 +738,7 @@ bool SendMultiMachinePage::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(4000); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } else { m_refresh_timer->Stop(); @@ -931,6 +935,7 @@ void SendMultiMachinePage::on_set_finish_mapping(wxCommandEvent& evt) if (selection_data_arr.size() == 6) { auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]), wxAtoi(selection_data_arr[3])); + int old_filament_id = (int)wxAtoi(selection_data_arr[5]); int ctype = 0; std::vector material_cols; @@ -1142,7 +1147,7 @@ wxPanel* SendMultiMachinePage::create_page() e.Skip(); }); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetCornerRadius(0); m_printer_name->SetFont(TABLE_HEAD_FONT); @@ -1164,7 +1169,7 @@ wxPanel* SendMultiMachinePage::create_page() m_table_head_sizer->Add( 0, 0, 0, wxLEFT, FromDIP(10) ); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_device_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_device_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_device_status->SetBackgroundColor(head_bg); m_device_status->SetFont(TABLE_HEAD_FONT); m_device_status->SetCornerRadius(0); @@ -1207,7 +1212,7 @@ wxPanel* SendMultiMachinePage::create_page() //m_table_head_sizer->Add(m_task_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_ams = new Button(m_table_head_panel, _L("Ams Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); + m_ams = new Button(m_table_head_panel, _L("Ams Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); m_ams->SetBackgroundColor(head_bg); m_ams->SetCornerRadius(0); m_ams->SetFont(TABLE_HEAD_FONT); @@ -1228,7 +1233,7 @@ wxPanel* SendMultiMachinePage::create_page() }); m_table_head_sizer->Add(m_ams, 0, wxALIGN_CENTER_VERTICAL, 0); - m_refresh_button = new Button(m_table_head_panel, "", "mall_control_refresh", wxNO_BORDER, MM_ICON_SIZE, false); + m_refresh_button = new Button(m_table_head_panel, "", "mall_control_refresh", wxNO_BORDER, ICON_SIZE, false); m_refresh_button->SetBackgroundColor(head_bg); m_refresh_button->SetCornerRadius(0); m_refresh_button->SetFont(TABLE_HEAD_FONT); @@ -1380,6 +1385,7 @@ void SendMultiMachinePage::sync_ams_list() BitmapCache bmcache; MaterialHash::iterator iter = m_material_list.begin(); while (iter != m_material_list.end()) { + int id = iter->first; Material* item = iter->second; item->item->Destroy(); delete item; @@ -1408,6 +1414,7 @@ void SendMultiMachinePage::sync_ams_list() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent& e) { MaterialHash::iterator iter = m_material_list.begin(); while (iter != m_material_list.end()) { + int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; m->on_normal(); @@ -1417,6 +1424,9 @@ void SendMultiMachinePage::sync_ams_list() m_current_filament_id = extruder; item->on_selected(); + auto mouse_pos = ClientToScreen(e.GetPosition()); + wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); + // update ams data if (get_value_radio("use_ams")) { if (m_mapping_popup->IsShown()) return; @@ -1646,7 +1656,7 @@ void SendMultiMachinePage::init_timer() m_refresh_timer = new wxTimer(); } -void SendMultiMachinePage::on_timer() +void SendMultiMachinePage::on_timer(wxTimerEvent& event) { for (auto it = m_device_items.begin(); it != m_device_items.end(); it++) { it->second->sync_state(); diff --git a/src/slic3r/GUI/SendMultiMachinePage.hpp b/src/slic3r/GUI/SendMultiMachinePage.hpp index c6935f2d64..58014f065c 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.hpp +++ b/src/slic3r/GUI/SendMultiMachinePage.hpp @@ -194,7 +194,7 @@ protected: void on_set_finish_mapping(wxCommandEvent& evt); void on_rename_click(wxCommandEvent& event); - void on_timer(); + void on_timer(wxTimerEvent& event); void init_timer(); private: diff --git a/src/slic3r/GUI/SendSystemInfoDialog.cpp b/src/slic3r/GUI/SendSystemInfoDialog.cpp index 3740cbb690..73de9101c4 100644 --- a/src/slic3r/GUI/SendSystemInfoDialog.cpp +++ b/src/slic3r/GUI/SendSystemInfoDialog.cpp @@ -443,7 +443,7 @@ static std::string generate_system_info_json() pt::ptree hw_node; { - hw_node.put("ArchName", wxPlatformInfo::Get().GetBitnessName()); + hw_node.put("ArchName", wxPlatformInfo::Get().GetArchName()); size_t num = std::round(Slic3r::total_physical_memory()/107374100.); hw_node.put("RAM_GiB", std::to_string(num / 10) + "." + std::to_string(num % 10)); } diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 51b6797a5f..7d0fb5663c 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -59,6 +59,7 @@ wxString SendToPrinterDialog::format_text(wxString &m_msg) wxString out_txt = m_msg; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_printer_msg->GetTextExtent(count_txt); @@ -1337,6 +1338,11 @@ void SendToPrinterDialog::set_default() Layout(); Fit(); + + wxSize screenSize = wxGetDisplaySize(); + auto dialogSize = this->GetSize(); + + // basic info auto aprint_stats = m_plater->get_partplate_list().get_current_fff_print().print_statistics(); wxString time; diff --git a/src/slic3r/GUI/SlicingProgressNotification.cpp b/src/slic3r/GUI/SlicingProgressNotification.cpp index 219950ceff..bedcbc2eb7 100644 --- a/src/slic3r/GUI/SlicingProgressNotification.cpp +++ b/src/slic3r/GUI/SlicingProgressNotification.cpp @@ -224,8 +224,8 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas const float progress_panel_width = (m_window_width - 2 * progress_child_window_padding.x); const float progress_panel_height = (58.0f * scale); const float dailytips_panel_width = (m_window_width - 2 * dailytips_child_window_padding.x); - // const float gcodeviewer_height = wxGetApp().plater()->get_preview_canvas3D()->get_gcode_viewer().get_legend_height(); - // const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); + const float gcodeviewer_height = wxGetApp().plater()->get_preview_canvas3D()->get_gcode_viewer().get_legend_height(); + //const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); const float dailytips_panel_height = 125.0f * scale; float right_gap = right_margin + (move_from_overlay ? overlay_width + m_line_height * 5 : 0); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index d4b1148df3..2a7ff21b76 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -291,6 +291,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) }); m_button_pause_resume->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { + auto buf = m_button_pause_resume->GetClientData(); if (m_button_pause_resume->GetToolTipText() == _L("Pause")) { m_button_pause_resume->SetBitmap_("print_control_pause"); } @@ -2527,7 +2528,7 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) } bool light_on = obj->chamber_light != MachineObject::LIGHT_EFFECT::LIGHT_EFFECT_OFF; - BOOST_LOG_TRIVIAL(trace) << "light: " << (light_on ? "on" : "off"); + BOOST_LOG_TRIVIAL(trace) << "light: " << light_on ? "on" : "off"; if (m_switch_lamp_timeout > 0) m_switch_lamp_timeout--; else { @@ -2591,6 +2592,7 @@ void StatusPanel::update_ams(MachineObject *obj) } bool is_support_virtual_tray = obj->ams_support_virtual_tray; + bool is_support_filament_backup = obj->is_support_filament_backup; AMSModel ams_mode = AMSModel::GENERIC_AMS; if (obj) { @@ -2661,6 +2663,9 @@ void StatusPanel::update_ams(MachineObject *obj) std::string curr_ams_id = m_ams_control->GetCurentAms(); std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id); + bool is_vt_tray = false; + if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_ID)) + is_vt_tray = true; // set segment 1, 2 if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID) ) { @@ -4902,6 +4907,7 @@ wxBoxSizer *ScoreDialog::get_button_sizer() if (m_upload_status_code == StatusCode::UPLOAD_PROGRESS) { int need_upload_nums = need_upload_images.size(); int upload_nums = 0; + int upload_failed_nums = 0; ProgressDialog *progress_dialog = new ProgressDialog(_L("Upload Pictrues"), _L("Number of images successfully uploaded") + ": " + std::to_string(upload_nums) + "/" + std::to_string(need_upload_nums), need_upload_nums, this); for (std::set>::iterator it = need_upload_images.begin(); it != need_upload_images.end();) { std::pair need_upload = *it; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 4672bc8aa6..1360ccd7d1 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1222,7 +1222,7 @@ void Tab::msw_rescale() // recreate and set new ImageList for tree_ctrl m_icons->RemoveAll(); m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight(), false); - // for (ScalableBitmap& bmp : m_scaled_icons_list) + for (ScalableBitmap& bmp : m_scaled_icons_list) //m_icons->Add(bmp.bmp()); m_tabctrl->AssignImageList(m_icons); @@ -1256,7 +1256,7 @@ void Tab::sys_color_changed() // recreate and set new ImageList for tree_ctrl m_icons->RemoveAll(); m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight(), false); - // for (ScalableBitmap& bmp : m_scaled_icons_list) + for (ScalableBitmap& bmp : m_scaled_icons_list) //m_icons->Add(bmp.bmp()); m_tabctrl->AssignImageList(m_icons); @@ -1617,6 +1617,19 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } } + + // -1 means caculate all + auto update_flush_volume = [](int idx = -1) { + if (idx < 0) { + size_t filament_size = wxGetApp().plater()->get_extruder_colors_from_plater_config().size(); + for (size_t i = 0; i < filament_size; ++i) + wxGetApp().plater()->sidebar().auto_calc_flushing_volumes(i); + } + else + wxGetApp().plater()->sidebar().auto_calc_flushing_volumes(idx); + }; + + string opt_key_without_idx = opt_key.substr(0, opt_key.find('#')); if (opt_key_without_idx == "long_retractions_when_cut") { @@ -2601,6 +2614,8 @@ void TabPrintModel::update_model_config() // Reset m_config manually because there's no corresponding config in m_parent_tab->m_config for (auto plate_item : m_object_configs) { const DynamicPrintConfig& plate_config = plate_item.second->get(); + BedType plate_bed_type = (BedType)0; + PrintSequence plate_print_seq = (PrintSequence)0; if (!plate_config.has("curr_bed_type")) { // same as global DynamicConfig& global_cfg = wxGetApp().preset_bundle->project_config; @@ -2911,6 +2926,7 @@ void TabPrintPlate::on_value_change(const std::string& opt_key, const boost::any void TabPrintPlate::notify_changed(ObjectBase* object) { + auto plate = dynamic_cast(object); auto objects_list = wxGetApp().obj_list(); wxDataViewItemArray items; objects_list->GetSelections(items); @@ -4754,14 +4770,14 @@ void Tab::rebuild_page_tree() if (sel_item == m_last_select_item) m_last_select_item = item; else - m_last_select_item = 0; + m_last_select_item = NULL; // allow activate page before selection of a page_tree item m_disable_tree_sel_changed_event = false; //BBS: GUI refactor if (item >= 0) { - update_current_page_in_background(item); + bool ret = update_current_page_in_background(item); //if m_active_page is changed in update_current_page_in_background //will just update the selected item of the treectrl if (m_parent->is_active_and_shown_tab(this)) // FIX: modify state not update @@ -5581,6 +5597,7 @@ void Tab::delete_preset() if (m_presets->get_preset_base(current_preset) == ¤t_preset) { //root preset is_base_preset = true; if (current_preset.type == Preset::Type::TYPE_PRINTER && !current_preset.is_system) { //Customize third-party printers + Preset ¤t_preset = m_presets->get_selected_preset(); int filament_preset_num = 0; int process_preset_num = 0; for (const Preset &preset : m_preset_bundle->filaments.get_presets()) { @@ -5844,6 +5861,7 @@ wxSizer* TabPrinter::create_bed_shape_widget(wxWindow* parent) sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL); btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { + bool is_configed_by_BBL = PresetUtils::system_printer_bed_model(m_preset_bundle->printers.get_edited_preset()).size() > 0; BedShapeDialog dlg(this); dlg.build_dialog(*m_config->option("printable_area"), *m_config->option("bed_custom_texture"), diff --git a/src/slic3r/GUI/Tabbook.hpp b/src/slic3r/GUI/Tabbook.hpp index 61eee685b8..7dd19389de 100644 --- a/src/slic3r/GUI/Tabbook.hpp +++ b/src/slic3r/GUI/Tabbook.hpp @@ -198,6 +198,8 @@ public: // check that only the selected page is visible and others are hidden: for (size_t page = 0; page < m_pages.size(); page++) { + wxWindow* win_a = GetPage(page); + wxWindow* win_b = GetPage(n); if (page != n && GetPage(page) != GetPage(n)) { m_pages[page]->Hide(); } diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 1b46e2b7dd..b47f3c0389 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1654,7 +1654,7 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres const DynamicPrintConfig& new_config = presets->get_edited_preset().config; type = presets->type(); - // const std::map& category_icon_map = wxGetApp().get_tab(type)->get_category_icon_map(); + const std::map& category_icon_map = wxGetApp().get_tab(type)->get_category_icon_map(); //m_tree->model->AddPreset(type, from_u8(presets->get_edited_preset().name), old_pt); diff --git a/src/slic3r/GUI/UpdateDialogs.cpp b/src/slic3r/GUI/UpdateDialogs.cpp index deba5a7a97..d78136a094 100644 --- a/src/slic3r/GUI/UpdateDialogs.cpp +++ b/src/slic3r/GUI/UpdateDialogs.cpp @@ -24,11 +24,12 @@ namespace Slic3r { namespace GUI { -// Orca: Replace static char* with macro defs -// currently disabled until needed -// #define URL_CHANGELOG "%1%" -// #define URL_DOWNLOAD "%1%" -// #define URL_DEV "%1%" + +static const char* URL_CHANGELOG = "%1%"; +static const char* URL_DOWNLOAD = "%1%"; +static const char* URL_DEV = "%1%"; + +static const std::string CONFIG_UPDATE_WIKI_URL(""); // MsgUpdateSlic3r diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index e2376326e4..e9384c385b 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -670,6 +670,8 @@ void MachineInfoPanel::update_ams_ext(MachineObject *obj) show_ams(true); std::map ver_list = obj->get_ams_version(); + AmsPanelHash::iterator iter = m_amspanel_list.begin(); + for (auto i = 0; i < m_amspanel_list.GetCount(); i++) { AmsPanel* amspanel = m_amspanel_list[i]; amspanel->Hide(); diff --git a/src/slic3r/GUI/UserManager.cpp b/src/slic3r/GUI/UserManager.cpp index 0fd8dfce25..29f5f2d137 100644 --- a/src/slic3r/GUI/UserManager.cpp +++ b/src/slic3r/GUI/UserManager.cpp @@ -25,6 +25,7 @@ void UserManager::set_agent(NetworkAgent* agent) int UserManager::parse_json(std::string payload) { + bool restored_json = false; json j; json j_pre = json::parse(payload); if (j_pre.empty()) { @@ -40,7 +41,7 @@ int UserManager::parse_json(std::string payload) //bind if (j_pre["bind"]["command"].get() == "bind") { std::string dev_id; - std::string result; + std:; string result; if (j_pre["bind"].contains("dev_id")) { dev_id = j_pre["bind"]["dev_id"].get(); diff --git a/src/slic3r/GUI/WebDownPluginDlg.cpp b/src/slic3r/GUI/WebDownPluginDlg.cpp index 49fc439887..82d2816f2e 100644 --- a/src/slic3r/GUI/WebDownPluginDlg.cpp +++ b/src/slic3r/GUI/WebDownPluginDlg.cpp @@ -1,17 +1,27 @@ #include "WebDownPluginDlg.hpp" +#include "ConfigWizard.hpp" + +#include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" +#include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "libslic3r_version.h" #include +#include #include + #include #include +#include #include #include +#include #include "MainFrame.hpp" +#include #include #include #include @@ -217,7 +227,7 @@ void DownPluginFrame::OnScriptMessage(wxWebViewEvent &evt) auto plugin_folder = (boost::filesystem::path(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data()) / "plugins").make_preferred().string(); desktop_open_any_folder(plugin_folder); } - } catch (std::exception&) { + } catch (std::exception &e) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 94913348e1..201e2a8db9 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -893,13 +893,13 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle } std::string first_added_filament; - /*auto get_first_added_material_preset = [this, app_config](const std::string& section_name, std::string& first_added_preset) { + auto get_first_added_material_preset = [this, app_config](const std::string& section_name, std::string& first_added_preset) { if (m_appconfig_new.has_section(section_name)) { // get first of new added preset names const std::map& old_presets = app_config->has_section(section_name) ? app_config->get_section(section_name) : std::map(); first_added_preset = get_first_added_preset(old_presets, m_appconfig_new.get_section(section_name)); } - };*/ + }; // Not switch filament //get_first_added_material_preset(AppConfig::SECTION_FILAMENTS, first_added_filament); @@ -960,6 +960,7 @@ bool GuideFrame::run() BOOST_LOG_TRIVIAL(info) << "GuideFrame cancelled"; if (app.preset_bundle->printers.only_default_printers()) { //we install the default here + bool apply_keeped_changes = false; //clear filament section and use default materials app.app_config->set_variant(PresetBundle::BBL_BUNDLE, PresetBundle::BBL_DEFAULT_PRINTER_MODEL, PresetBundle::BBL_DEFAULT_PRINTER_VARIANT, "true"); @@ -1139,7 +1140,7 @@ int GuideFrame::LoadProfile() wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); - strVendor = strVendor.AfterLast('/'); + strVendor = strVendor.AfterLast('\/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); if (w2s(strVendor) == PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json") == 0) @@ -1158,7 +1159,7 @@ int GuideFrame::LoadProfile() //cout << iter->path().string() << endl; wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); - strVendor = strVendor.AfterLast('/'); + strVendor = strVendor.AfterLast('\/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); if (w2s(strVendor) != PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json")==0) @@ -1543,6 +1544,9 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "Vendor: " << strVendor <<", tFilaList Add: " << s1; } + int nFalse = 0; + int nModel = 0; + int nFinish = 0; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% filaments") % nsize; for (int n = 0; n < nsize; n++) { json OneFF = pFilament.at(n); @@ -1652,7 +1656,7 @@ std::string GuideFrame::w2s(wxString sSrc) void GuideFrame::GetStardardFilePath(std::string &FilePath) { StrReplace(FilePath, "\\", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); - StrReplace(FilePath, "/", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); + StrReplace(FilePath, "\/", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); } bool GuideFrame::LoadFile(std::string jPath, std::string &sContent) diff --git a/src/slic3r/GUI/WebUserLoginDialog.cpp b/src/slic3r/GUI/WebUserLoginDialog.cpp index 4385f43dae..b95aa50b5f 100644 --- a/src/slic3r/GUI/WebUserLoginDialog.cpp +++ b/src/slic3r/GUI/WebUserLoginDialog.cpp @@ -3,6 +3,7 @@ #include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" +#include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "libslic3r_version.h" @@ -12,9 +13,11 @@ #include #include +#include #include #include +#include #include #include "MainFrame.hpp" diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index a5e17afab4..fab48fa679 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -5,6 +5,7 @@ #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/MainFrame.hpp" #include "libslic3r_version.h" +#include "../Utils/Http.hpp" #include #include diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index c9a7e5c6e1..ea2fea852c 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -137,7 +137,7 @@ void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con wxWindow::Create(parent, id, pos, size, wxBORDER_NONE); SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &AMSrefresh::on_timer, this); Bind(wxEVT_PAINT, &AMSrefresh::paintEvent, this); Bind(wxEVT_ENTER_WINDOW, &AMSrefresh::OnEnterWindow, this); Bind(wxEVT_LEAVE_WINDOW, &AMSrefresh::OnLeaveWindow, this); @@ -166,14 +166,14 @@ void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con m_playing_timer = new wxTimer(); m_playing_timer->SetOwner(this); - on_timer(); + wxPostEvent(this, wxTimerEvent()); SetSize(AMS_REFRESH_SIZE); SetMinSize(AMS_REFRESH_SIZE); SetMaxSize(AMS_REFRESH_SIZE); } -void AMSrefresh::on_timer() +void AMSrefresh::on_timer(wxTimerEvent &event) { //if (m_rotation_angle >= m_rfid_bitmap_list.size()) { // m_rotation_angle = 0; @@ -472,7 +472,7 @@ void AMSextruder::doRender(wxDC& dc) { //m_current_colur = wxSize size = GetSize(); - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (!m_none_ams_mode) { @@ -484,24 +484,24 @@ void AMSextruder::doRender(wxDC& dc) if (m_vams_loading) { - if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } - else { dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID)); } + if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } + else { dc.SetPen(wxPen(m_current_colur, 6, wxSOLID)); } dc.DrawRoundedRectangle(-size.x / 2, size.y * 0.1, size.x, size.y, 4); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); dc.DrawRoundedRectangle(-size.x / 2 - FromDIP(3), size.y * 0.1 + FromDIP(3), size.x, size.y, 3); dc.DrawRoundedRectangle(-size.x / 2 + FromDIP(3), size.y * 0.1 - FromDIP(3), size.x, size.y, 5); } } if (m_ams_loading && !m_none_ams_mode) { - if (m_current_colur.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID));} - else {dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID));} + if (m_current_colur.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID));} + else {dc.SetPen(wxPen(m_current_colur, 6, wxSOLID));} dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); dc.DrawLine(size.x / 2 - FromDIP(4), -1, size.x / 2 - FromDIP(3), size.y * 0.6 - 1); dc.DrawLine(size.x / 2 + FromDIP(3), -1, size.x / 2 + FromDIP(3), size.y * 0.6 - 1); } @@ -509,12 +509,12 @@ void AMSextruder::doRender(wxDC& dc) } else { if (m_ams_loading) { - if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } - else { dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID)); } + if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } + else { dc.SetPen(wxPen(m_current_colur, 6, wxSOLID)); } dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); dc.DrawLine(size.x / 2 - FromDIP(4), -1, size.x / 2 - FromDIP(3), size.y * 0.6 - 1); dc.DrawLine(size.x / 2 + FromDIP(3), -1, size.x / 2 + FromDIP(3), size.y * 0.6 - 1); } @@ -587,18 +587,18 @@ void AMSVirtualRoad::doRender(wxDC& dc) wxSize size = GetSize(); if (m_vams_loading) { - if (m_current_color.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } - else { dc.SetPen(wxPen(m_current_color, 6, wxPENSTYLE_SOLID)); } + if (m_current_color.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } + else { dc.SetPen(wxPen(m_current_color, 6, wxSOLID)); } } else { - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); } dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawRoundedRectangle(size.x / 2, -size.y / 1.1 + FromDIP(1), size.x, size.y, 4); if ((m_current_color == *wxWHITE || m_current_color.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); dc.DrawRoundedRectangle(size.x / 2 - FromDIP(3), -size.y / 1.1 + FromDIP(4), size.x, size.y, 5); dc.DrawRoundedRectangle(size.x / 2 + FromDIP(3), -size.y / 1.1 - FromDIP(2), size.x, size.y, 3); } @@ -988,11 +988,11 @@ void AMSLib::render_extra_lib(wxDC& dc) //draw road - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_pass_road) { - dc.SetPen(wxPen(m_info.material_colour, 6, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_info.material_colour, 6, wxSOLID)); } if (m_can_index == 0 || m_can_index == 3) { @@ -1114,9 +1114,9 @@ void AMSLib::render_generic_lib(wxDC &dc) // selected if (m_selected) { - dc.SetPen(wxPen(tmp_lib_colour, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID)); if (tmp_lib_colour.Alpha() == 0) { - dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(),tmp_lib_colour.Blue(),128), 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(),tmp_lib_colour.Blue(),128), 2, wxSOLID)); } dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_radius == 0) { @@ -1131,7 +1131,7 @@ void AMSLib::render_generic_lib(wxDC &dc) } if (!m_selected && m_hover) { - dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_radius == 0) { dc.DrawRectangle(0, 0, size.x, size.y); @@ -1144,7 +1144,7 @@ void AMSLib::render_generic_lib(wxDC &dc) dc.SetBrush(wxBrush(tmp_lib_colour)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID)); dc.SetBrush(wxBrush(tmp_lib_colour)); } @@ -1230,7 +1230,7 @@ void AMSLib::render_generic_lib(wxDC &dc) dc.SetBrush(wxBrush(tmp_lib_colour)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID)); dc.SetBrush(wxBrush(tmp_lib_colour)); } } @@ -1260,7 +1260,7 @@ void AMSLib::render_generic_lib(wxDC &dc) #endif } if (tmp_lib_colour.Red() > 238 && tmp_lib_colour.Green() > 238 && tmp_lib_colour.Blue() > 238) { - dc.SetPen(wxPen(wxColour(130, 129, 128), 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(wxColour(130, 129, 128), 1, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawLine(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(4), FromDIP(4) + top); } @@ -1268,10 +1268,10 @@ void AMSLib::render_generic_lib(wxDC &dc) else { dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (tmp_lib_colour.Red() > 238 && tmp_lib_colour.Green() > 238 && tmp_lib_colour.Blue() > 238) { - dc.SetPen(wxPen(wxColour(130, 129, 128), 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(wxColour(130, 129, 128), 2, wxSOLID)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID)); } #ifdef __APPLE__ @@ -1285,7 +1285,7 @@ void AMSLib::render_generic_lib(wxDC &dc) } //border - dc.SetPen(wxPen(wxColour(130, 130, 128), 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(wxColour(130, 130, 128), 1, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); #ifdef __APPLE__ dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4), size.x - FromDIP(7), size.y - FromDIP(7), m_radius); @@ -1371,6 +1371,7 @@ AMSRoad::AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, in m_info = info; m_canindex = canindex; // road type + auto mode = AMSRoadMode::AMS_ROAD_MODE_END; if (m_canindex == 0 && maxcan == 1) { m_rode_mode = AMSRoadMode::AMS_ROAD_MODE_NONE; } else if (m_canindex == 0 && maxcan > 1) { @@ -1491,7 +1492,7 @@ void AMSRoad::doRender(wxDC &dc) { wxSize size = GetSize(); - dc.SetPen(wxPen(m_road_def_color, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_def_color, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); // left mode if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_LEFT) { dc.DrawRoundedRectangle(-10, -10, size.x / 2 + 10, size.y * 0.6 + 10, 4); } @@ -1534,8 +1535,8 @@ void AMSRoad::doRender(wxDC &dc) // mode none // if (m_pass_rode_mode.size() == 1 && m_pass_rode_mode[0] == AMSPassRoadMode::AMS_ROAD_MODE_NONE) return; - if (m_road_color.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxPENSTYLE_SOLID));} - else {dc.SetPen(wxPen(m_road_color, m_passroad_width, wxPENSTYLE_SOLID));} + if (m_road_color.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxSOLID));} + else {dc.SetPen(wxPen(m_road_color, m_passroad_width, wxSOLID));} dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); @@ -1562,7 +1563,7 @@ void AMSRoad::doRender(wxDC &dc) // end mode if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END || m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END_ONLY) { - dc.SetPen(wxPen(m_road_def_color, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_def_color, 2, wxSOLID)); dc.SetBrush(wxBrush(m_road_def_color)); dc.DrawRoundedRectangle(size.x * 0.37 / 2, size.y * 0.6 - size.y / 6, size.x * 0.63, size.y / 3, m_radius); } @@ -2243,7 +2244,7 @@ void AmsCans::doRender(wxDC& dc) // A1 - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); try @@ -2284,32 +2285,32 @@ void AmsCans::doRender(wxDC& dc) if (!m_road_canid.empty()) { if (m_road_canid == "0") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top); dc.DrawLine(a1_left, a1_top, end_top, a1_top); } if (m_road_canid == "1") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(a2_left, FromDIP(160), a2_left, a2_top); dc.DrawLine(a2_left, a2_top, end_top, a2_top); } if (m_road_canid == "2") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top); dc.DrawLine(a3_left, a3_top, end_top, a3_top); } if (m_road_canid == "3") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(a4_left, FromDIP(30), a4_left, a4_top); dc.DrawLine(a4_left, a4_top, end_top, a4_top); } } //to Extruder - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawLine(end_top, a1_top, end_top, size.y); @@ -2317,19 +2318,19 @@ void AmsCans::doRender(wxDC& dc) if (!m_road_canid.empty()) { if (!m_road_canid.empty()) { if (m_road_canid == "0") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(end_top, a1_top, end_top, size.y); } else if (m_road_canid == "1") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(end_top, a2_top, end_top, size.y); } else if (m_road_canid == "2") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(end_top, a3_top, end_top, size.y); } else if (m_road_canid == "3") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(end_top, a4_top, end_top, size.y); } } @@ -3099,6 +3100,7 @@ void AMSControl::SetClibrationLink(wxString link) void AMSControl::PlayRridLoading(wxString amsid, wxString canid) { AmsCansHash::iterator iter = m_ams_cans_list.begin(); + auto count_item_index = 0; for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow *cans = m_ams_cans_list[i]; @@ -3110,6 +3112,7 @@ void AMSControl::PlayRridLoading(wxString amsid, wxString canid) void AMSControl::StopRridLoading(wxString amsid, wxString canid) { AmsCansHash::iterator iter = m_ams_cans_list.begin(); + auto count_item_index = 0; for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow *cans = m_ams_cans_list[i]; diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 701be1bf34..afcee66365 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -175,7 +175,7 @@ public: void PlayLoading(); void StopLoading(); void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size); - void on_timer(); + void on_timer(wxTimerEvent &event); void OnEnterWindow(wxMouseEvent &evt); void OnLeaveWindow(wxMouseEvent &evt); void OnClick(wxMouseEvent &evt); diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index fc66d524a5..55b8e12bcb 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -24,7 +24,7 @@ static wxWindow *GetScrollParent(wxWindow *pWindow) wxWindow *pWin = pWindow; while (pWin->GetParent()) { auto pWin2 = pWin->GetParent(); - if (dynamic_cast(pWin2)) + if (auto top = dynamic_cast(pWin2)) return dynamic_cast(pWin); pWin = pWin2; } diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index e7430037d4..222362e917 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -112,7 +112,7 @@ void Fan::render(wxDC& dc) void Fan::doRender(wxDC& dc) { - // auto rpm = wxT("rpm"); + auto rpm = wxT("rpm"); wxSize size = GetSize(); dc.DrawBitmap(m_bitmap_bk.bmp(), wxPoint(0,0)); diff --git a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp index d30f94976d..af48b6d27a 100644 --- a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp @@ -108,6 +108,7 @@ void ImageSwitchButton::render(wxDC& dc) wxSize size = GetSize(); wxSize szIcon; + wxSize szContent = textSize; ScalableBitmap &icon = GetValue() ? m_on : m_off; int content_height = icon.GetBmpHeight() + textSize.y + m_padding; @@ -267,6 +268,7 @@ void FanSwitchButton::render(wxDC& dc) wxSize size = GetSize(); wxSize szIcon; + wxSize szContent = textSize; ScalableBitmap& icon = GetValue() ? m_on : m_off; //int content_height = icon.GetBmpHeight() + textSize.y + m_padding; diff --git a/src/slic3r/GUI/Widgets/RoundedRectangle.cpp b/src/slic3r/GUI/Widgets/RoundedRectangle.cpp index f86f144ddc..07f2aa0b30 100644 --- a/src/slic3r/GUI/Widgets/RoundedRectangle.cpp +++ b/src/slic3r/GUI/Widgets/RoundedRectangle.cpp @@ -1,4 +1,5 @@ #include "RoundedRectangle.hpp" +#include "../wxExtensions.hpp" #include #include diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp index cee447769e..5c8b91a0c7 100644 --- a/src/slic3r/GUI/Widgets/SpinInput.cpp +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -205,6 +205,8 @@ void SpinInput::messureSize() if (size.y < h) { size.y = h; } + wxSize minSize = size; + minSize.x = GetMinWidth(); StaticBox::SetSize(size); SetMinSize(size); wxSize btnSize = {14, (size.y - 4) / 2}; diff --git a/src/slic3r/GUI/Widgets/StepCtrl.cpp b/src/slic3r/GUI/Widgets/StepCtrl.cpp index cdd25ea1f0..73a3e80dd3 100644 --- a/src/slic3r/GUI/Widgets/StepCtrl.cpp +++ b/src/slic3r/GUI/Widgets/StepCtrl.cpp @@ -322,6 +322,7 @@ void StepIndicator::doRender(wxDC &dc) dc.DrawEllipse(circleX - radius, circleY - radius, radius * 2, radius * 2); // Draw content ( icon or text ) in circle if (disabled) { + wxSize sz = bmp_ok.GetBmpSize(); dc.DrawBitmap(bmp_ok.bmp(), circleX - radius, circleY - radius); } else { dc.SetFont(font_tip); diff --git a/src/slic3r/GUI/Widgets/TempInput.cpp b/src/slic3r/GUI/Widgets/TempInput.cpp index 6ae82776de..f581f73bf1 100644 --- a/src/slic3r/GUI/Widgets/TempInput.cpp +++ b/src/slic3r/GUI/Widgets/TempInput.cpp @@ -412,6 +412,7 @@ void TempInput::render(wxDC &dc) /*if (!text.IsEmpty()) { }*/ + wxSize textSize = text_ctrl->GetSize(); if (align_right) { if (pt.x + labelSize.x > size.x) text = wxControl::Ellipsize(text, dc, wxELLIPSIZE_END, size.x - pt.x); pt.y = (size.y - labelSize.y) / 2; diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index 2bbe519c46..11f431c308 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -373,7 +373,7 @@ bool WebView::RunScript(wxWebView *webView, wxString const &javascript) }, NULL); return true; #endif - } catch (std::exception&) { + } catch (std::exception &e) { return false; } } diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index e965c803ff..78662c1f3a 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -3,6 +3,7 @@ #include "libslic3r/FlushVolCalc.hpp" #include "WipeTowerDialog.hpp" #include "BitmapCache.hpp" +#include "GUI.hpp" #include "I18N.hpp" #include "GUI_App.hpp" #include "MsgDialog.hpp" @@ -734,6 +735,9 @@ void WipingPanel::update_warning_texts() static const wxColour g_warning_color = *wxRED; static const wxColour g_normal_color = *wxBLACK; + wxString multi_str = m_flush_multiplier_ebox->GetValue(); + float multiplier = wxAtof(multi_str); + bool has_exception_flush = false; for (int i = 0; i < edit_boxes.size(); i++) { auto& box_vec = edit_boxes[i]; diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 65ed46ba42..b542723e15 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -491,6 +491,7 @@ wxBitmap* get_default_extruder_color_icon(bool thin_icon/* = false*/) const double em = Slic3r::GUI::wxGetApp().em_unit(); const int icon_width = lround((thin_icon ? 2 : 4.5) * em); const int icon_height = lround(2 * em); + bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); wxClientDC cdc((wxWindow*)Slic3r::GUI::wxGetApp().mainframe); wxMemoryDC dc(&cdc); diff --git a/src/slic3r/Utils/ASCIIFolding.cpp b/src/slic3r/Utils/ASCIIFolding.cpp index 7e47448067..0eb02a5f8c 100644 --- a/src/slic3r/Utils/ASCIIFolding.cpp +++ b/src/slic3r/Utils/ASCIIFolding.cpp @@ -1953,7 +1953,8 @@ std::string fold_utf8_to_ascii(const std::string &src, bool is_convert_for_filen for (wchar_t c : wstr) fold_to_ascii(c, out); if (is_convert_for_filename) { - auto dstStr = boost::locale::conv::utf_to_utf(dst); + std::wstring_convert> converter; + auto dstStr = converter.to_bytes(dst); std::size_t found = dstStr.find_last_of("/\\"); if (found != std::string::npos) { @@ -1963,7 +1964,7 @@ std::string fold_utf8_to_ascii(const std::string &src, bool is_convert_for_filen std::string newFileName = regex_replace(filename, reg, ""); dstStr = dir + "\\" + newFileName; } - return dstStr; + dst = converter.from_bytes(dstStr); } return boost::locale::conv::utf_to_utf(dst.c_str(), dst.c_str() + dst.size()); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 88c59075ea..b5f9aaf0ed 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -519,7 +519,7 @@ bool CalibUtils::calib_flowrate(int pass, const CalibInfo &calib_info, wxString const ConfigOptionFloats *nozzle_diameter_config = printer_config.option("nozzle_diameter"); assert(nozzle_diameter_config->values.size() > 0); float nozzle_diameter = nozzle_diameter_config->values[0]; - // float xyScale = nozzle_diameter / 0.6; + float xyScale = nozzle_diameter / 0.6; // scale z to have 7 layers double first_layer_height = print_config.option("initial_layer_print_height")->value; double layer_height = nozzle_diameter / 2.0; // prefer 0.2 layer height for 0.4 nozzle @@ -1067,6 +1067,7 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f { GLVolumeCollection glvolume_collection; std::vector colors_out(1); + unsigned char rgb_color[4] = {255, 255, 255, 255}; ColorRGBA new_color {1.0f, 1.0f, 1.0f, 1.0f}; colors_out.push_back(new_color); @@ -1079,9 +1080,9 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f const ModelObject &model_object = *model->objects[obj_idx]; for (int volume_idx = 0; volume_idx < (int)model_object.volumes.size(); ++ volume_idx) { - // const ModelVolume &model_volume = *model_object.volumes[volume_idx]; + const ModelVolume &model_volume = *model_object.volumes[volume_idx]; for (int instance_idx = 0; instance_idx < (int)model_object.instances.size(); ++ instance_idx) { - // const ModelInstance &model_instance = *model_object.instances[instance_idx]; + const ModelInstance &model_instance = *model_object.instances[instance_idx]; glvolume_collection.load_object_volume(&model_object, obj_idx, volume_idx, instance_idx, "volume", true, false, true); glvolume_collection.volumes.back()->set_render_color(new_color); glvolume_collection.volumes.back()->set_color(new_color); @@ -1127,11 +1128,11 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f store_params.strategy = SaveStrategy::Silence | SaveStrategy::WithGcode | SaveStrategy::SplitModel | SaveStrategy::SkipModel; - Slic3r::store_bbs_3mf(store_params); + bool success = Slic3r::store_bbs_3mf(store_params); store_params.strategy = SaveStrategy::Silence | SaveStrategy::SplitModel | SaveStrategy::WithSliceInfo | SaveStrategy::SkipAuxiliary; store_params.path = config_3mf_path.c_str(); - Slic3r::store_bbs_3mf(store_params); + success = Slic3r::store_bbs_3mf(store_params); release_PlateData_list(plate_data_list); return true; diff --git a/src/slic3r/Utils/ESP3D.cpp b/src/slic3r/Utils/ESP3D.cpp index c95d292afe..531e9d08e9 100644 --- a/src/slic3r/Utils/ESP3D.cpp +++ b/src/slic3r/Utils/ESP3D.cpp @@ -1,6 +1,8 @@ #include "ESP3D.hpp" #include +#include +#include #include #include #include @@ -10,7 +12,13 @@ #include #include +#include #include +#include +#include +#include +#include +#include #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" @@ -18,6 +26,7 @@ #include "slic3r/GUI/MsgDialog.hpp" #include "Http.hpp" #include "SerialMessage.hpp" +#include "SerialMessageType.hpp" namespace fs = boost::filesystem; namespace pt = boost::property_tree; diff --git a/src/slic3r/Utils/Obico.cpp b/src/slic3r/Utils/Obico.cpp index 6486e43114..5541d1c683 100644 --- a/src/slic3r/Utils/Obico.cpp +++ b/src/slic3r/Utils/Obico.cpp @@ -10,8 +10,10 @@ #include #include #include +#include #include +#include #include #include "slic3r/GUI/GUI.hpp" @@ -20,6 +22,8 @@ #include "slic3r/GUI/format.hpp" #include "Http.hpp" #include "libslic3r/AppConfig.hpp" +#include "Bonjour.hpp" +#include "slic3r/GUI/BonjourDialog.hpp" namespace fs = boost::filesystem; namespace pt = boost::property_tree; diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 55bb426463..cdd91eb22e 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -52,6 +52,7 @@ using Slic3r::GUI::Config::SnapshotDB; namespace Slic3r { +static const char *INDEX_FILENAME = "index.idx"; static const char *TMP_EXTENSION = ".data"; diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp index 8e7bd703c3..eaf90c7349 100644 --- a/src/slic3r/Utils/UndoRedo.cpp +++ b/src/slic3r/Utils/UndoRedo.cpp @@ -1071,7 +1071,7 @@ bool StackImpl::has_redo_snapshot() const // BBS: undo-redo until modify record auto it = std::lower_bound(m_snapshots.begin(), m_snapshots.end(), Snapshot(m_active_snapshot_time)); - for (; it != m_snapshots.end(); ++it) { + for (it; it != m_snapshots.end(); ++it) { if (snapshot_modifies_project(*it)) return true; } @@ -1340,12 +1340,12 @@ bool StackImpl::has_real_change_from(size_t time) const Snapshot(m_active_snapshot_time)); if (it_active == m_snapshots.end()) return true; if (it_active > it_time) { - for (; it_time < it_active; ++it_time) { + for (it_time; it_time < it_active; ++it_time) { if (snapshot_modifies_project(*it_time)) return true; } } else { - for (; it_active < it_time; ++it_active) { + for (it_active; it_active < it_time; ++it_active) { if (snapshot_modifies_project(*it_active)) return true; } From 0643c6f14de6862d9d09b7cf3a12cc1360b6ba67 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Tue, 13 Aug 2024 16:25:49 +0100 Subject: [PATCH 118/151] Improvements in Inner Outer Inner wall ordering logic (#6138) * Improvements in Inner Outer Inner wall ordering logic * Updated to BFS algorithm, made ordering more robust and corrected edge cases * Doc updates * Refinements in perimeter sorting * Removal of touch threshold and code debugging to improve sequencing * Code cleanup * Code refinements on perimeter distance thresholds * Extend perimeter re-ordering to more than inset index 2, to reduce travel moves when printing neighbouring features * Refinements to IOI perimeter re-ordering algorithm to improve travel scenarios where multiple external perimeters are contained in the same island. * Documentation updates * Removed unnecessary code * Removed bespoke to_points function and replaced with ExtrusionLine member already present. Removed squaredDistance and replaced with Eigen library call. * Refactor code to move distancing functions to the multipoint class. Renamed for more clarity on their purpose. --- src/libslic3r/Arachne/utils/ExtrusionLine.hpp | 18 +- src/libslic3r/MultiPoint.cpp | 53 +++++ src/libslic3r/MultiPoint.hpp | 7 + src/libslic3r/PerimeterGenerator.cpp | 215 +++++++++++++++--- 4 files changed, 248 insertions(+), 45 deletions(-) diff --git a/src/libslic3r/Arachne/utils/ExtrusionLine.hpp b/src/libslic3r/Arachne/utils/ExtrusionLine.hpp index ab68eb129b..ee783fbeba 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionLine.hpp +++ b/src/libslic3r/Arachne/utils/ExtrusionLine.hpp @@ -245,6 +245,15 @@ static inline Polygon to_polygon(const ExtrusionLine &line) return out; } +static Points to_points(const ExtrusionLine &extrusion_line) +{ + Points points; + points.reserve(extrusion_line.junctions.size()); + for (const ExtrusionJunction &junction : extrusion_line.junctions) + points.emplace_back(junction.p); + return points; +} + #if 0 static BoundingBox get_extents(const ExtrusionLine &extrusion_line) { @@ -272,15 +281,6 @@ static BoundingBox get_extents(const std::vector &extrusi return bbox; } -static Points to_points(const ExtrusionLine &extrusion_line) -{ - Points points; - points.reserve(extrusion_line.junctions.size()); - for (const ExtrusionJunction &junction : extrusion_line.junctions) - points.emplace_back(junction.p); - return points; -} - static std::vector to_points(const std::vector &extrusion_lines) { std::vector points; diff --git a/src/libslic3r/MultiPoint.cpp b/src/libslic3r/MultiPoint.cpp index 0076300ea6..3cdae34105 100644 --- a/src/libslic3r/MultiPoint.cpp +++ b/src/libslic3r/MultiPoint.cpp @@ -370,6 +370,59 @@ Points MultiPoint::concave_hull_2d(const Points& pts, const double tolerence) } +//Orca: Distancing function used by IOI wall ordering algorithm for arachne +/** + * @brief Calculates the squared distance between a point and a line segment defined by two points. + * + * @param p The point. + * @param v The starting point of the line segment. + * @param w The ending point of the line segment. + * @return double The squared distance between the point and the line segment. + */ + double MultiPoint::squaredDistanceToLineSegment(const Point& p, const Point& v, const Point& w) { + // Calculate the squared length of the line segment + double l2 = (v - w).squaredNorm(); + // If the segment is a single point, return the squared distance to that point + if (l2 == 0.0) return (p - v).squaredNorm(); + // Project point p onto the line defined by v and w, and clamp the projection to the segment + double t = std::max(0.0, std::min(1.0, ((p - v).dot(w - v)) / l2)); + // Compute the projection point + Point projection{v.x() + t * (w.x() - v.x()), v.y() + t * (w.y() - v.y())}; + // Return the squared distance between the point and the projection + return (p - projection).squaredNorm(); +} + +//Orca: Distancing function used by IOI wall ordering algorithm for arachne +/** + * @brief Calculates the minimum distance between two lines defined by sets of points. + * + * @param A The first set of points defining a polyline. + * @param B The second set of points defining a polyline. + * @return double The minimum distance between the two polylines. + */ + double MultiPoint::minimumDistanceBetweenLinesDefinedByPoints(const Points& A, const Points& B) { + double min_distance = std::numeric_limits::infinity(); + + // Calculate the minimum distance between segments in A and points in B + for (size_t i = 0; i < A.size() - 1; ++i) { + for (const auto& b : B) { + double distance = squaredDistanceToLineSegment(b, A[i], A[i + 1]); + min_distance = std::min(min_distance, std::sqrt(distance)); + } + } + + // Calculate the minimum distance between segments in B and points in A + for (size_t i = 0; i < B.size() - 1; ++i) { + for (const auto& a : A) { + double distance = squaredDistanceToLineSegment(a, B[i], B[i + 1]); + min_distance = std::min(min_distance, std::sqrt(distance)); + } + } + + return min_distance; +} + + void MultiPoint3::translate(double x, double y) { for (Vec3crd &p : points) { diff --git a/src/libslic3r/MultiPoint.hpp b/src/libslic3r/MultiPoint.hpp index 4c1f9049ed..b6f74e5c88 100644 --- a/src/libslic3r/MultiPoint.hpp +++ b/src/libslic3r/MultiPoint.hpp @@ -98,6 +98,9 @@ public: static Points _douglas_peucker(const Points &points, const double tolerance); static Points visivalingam(const Points& pts, const double tolerance); static Points concave_hull_2d(const Points& pts, const double tolerence); + + //Orca: Distancing function used by IOI wall ordering algorithm for arachne + static double minimumDistanceBetweenLinesDefinedByPoints(const Points& A, const Points& B); inline auto begin() { return points.begin(); } inline auto begin() const { return points.begin(); } @@ -105,6 +108,10 @@ public: inline auto end() const { return points.end(); } inline auto cbegin() const { return points.begin(); } inline auto cend() const { return points.end(); } + +private: + //Orca: Distancing function used by IOI wall ordering algorithm for arachne + static double squaredDistanceToLineSegment(const Point& p, const Point& v, const Point& w); }; class MultiPoint3 diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 439ef57874..d37ff7f1d6 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -2442,6 +2442,166 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim } } +// ORCA: +// Inner Outer Inner wall ordering mode perimeter order optimisation functions +/** + * @brief Finds all perimeters touching a given set of reference lines, given as indexes. + * + * @param entities The list of PerimeterGeneratorArachneExtrusion entities. + * @param referenceIndices A set of indices representing the reference points. + * @param threshold_external The distance threshold to consider for proximity for a reference perimeter with inset index 0 + * @param threshold_internal The distance threshold to consider for proximity for a reference perimeter with inset index 1+ + * @param considered_inset_idx What perimeter inset index are we searching for (eg. if we are searching for first internal perimeters proximate to the current reference perimeter, this value should be set to 1 etc). + * @return std::vector A vector of indices representing the touching perimeters. + */ +std::vector findAllTouchingPerimeters(const std::vector& entities, const std::unordered_set& referenceIndices, size_t threshold_external, size_t threshold_internal , size_t considered_inset_idx) { + std::unordered_set touchingIndices; + + for (const int refIdx : referenceIndices) { + const auto& referenceEntity = entities[refIdx]; + Points referencePoints = Arachne::to_points(*referenceEntity.extrusion); + for (size_t i = 0; i < entities.size(); ++i) { + // Skip already considered references and the reference entity + if (referenceIndices.count(i) > 0) continue; + const auto& entity = entities[i]; + if (entity.extrusion->inset_idx == 0) continue; // Ignore inset index 0 (external) perimeters from the re-ordering even if they are touching + + if (entity.extrusion->inset_idx != considered_inset_idx) { // Find Inset index perimeters that match the requested inset index + continue; // skip if they dont match + } + + Points points = Arachne::to_points(*entity.extrusion); + double distance = MultiPoint::minimumDistanceBetweenLinesDefinedByPoints(referencePoints, points); + // Add to touchingIndices if within threshold distance + size_t threshold=0; + if(referenceEntity.extrusion->inset_idx == 0) + threshold = threshold_external; + else + threshold = threshold_internal; + if (distance <= threshold) { + touchingIndices.insert(i); + } + } + } + return std::vector(touchingIndices.begin(), touchingIndices.end()); +} + +/** + * @brief Reorders perimeters based on proximity to the reference perimeter + * + * This approach finds all perimeters touching the external perimeter first and then finds all perimeters touching these new ones until none are left + * It ensures a level-by-level traversal, similar to BFS in graph theory. + * + * @param entities The list of PerimeterGeneratorArachneExtrusion entities. + * @param referenceIndex The index of the reference perimeter. + * @param threshold_external The distance threshold to consider for proximity for a reference perimeter with inset index 0 + * @param threshold_internal The distance threshold to consider for proximity for a reference perimeter with inset index 1+ + * @return std::vector The reordered list of perimeters based on proximity. + */ +std::vector reorderPerimetersByProximity(std::vector entities, size_t threshold_external, size_t threshold_internal) { + std::vector reordered; + std::unordered_set includedIndices; + + // Function to reorder perimeters starting from a given reference index + auto reorderFromReference = [&](int referenceIndex) { + std::unordered_set firstLevelIndices; + firstLevelIndices.insert(referenceIndex); + + // Find first level touching perimeters + std::vector firstLevelTouchingIndices = findAllTouchingPerimeters(entities, firstLevelIndices, threshold_external, threshold_internal, 1); + // Bring the largest first level perimeter to the front + // The longest first neighbour is most likely the dominant proximate perimeter + // hence printing it immediately after the external perimeter should speed things up + if (!firstLevelTouchingIndices.empty()) { + auto maxIt = std::max_element(firstLevelTouchingIndices.begin(), firstLevelTouchingIndices.end(), [&entities](int a, int b) { + return entities[a].extrusion->getLength() < entities[b].extrusion->getLength(); + }); + std::iter_swap(maxIt, firstLevelTouchingIndices.end() - 1); + } + // Insert first level perimeters into reordered list + reordered.push_back(entities[referenceIndex]); + includedIndices.insert(referenceIndex); + + for (int idx : firstLevelTouchingIndices) { + if (includedIndices.count(idx) == 0) { + reordered.push_back(entities[idx]); + includedIndices.insert(idx); + } + } + + // Loop through all inset indices above 1 + size_t currentInsetIndex = 2; + while (true) { + std::unordered_set currentLevelIndices(firstLevelTouchingIndices.begin(), firstLevelTouchingIndices.end()); + std::vector currentLevelTouchingIndices = findAllTouchingPerimeters(entities, currentLevelIndices, threshold_external, threshold_internal, currentInsetIndex); + + // Break if no more touching perimeters are found + if (currentLevelTouchingIndices.empty()) { + break; + } + + // Exclude any already included indices from the current level touching indices + currentLevelTouchingIndices.erase( + std::remove_if(currentLevelTouchingIndices.begin(), currentLevelTouchingIndices.end(), + [&](int idx) { return includedIndices.count(idx) > 0; }), + currentLevelTouchingIndices.end()); + + // Bring the largest current level perimeter to the end + if (!currentLevelTouchingIndices.empty()) { + auto maxIt = std::max_element(currentLevelTouchingIndices.begin(), currentLevelTouchingIndices.end(), [&entities](int a, int b) { + return entities[a].extrusion->getLength() < entities[b].extrusion->getLength(); + }); + std::iter_swap(maxIt, currentLevelTouchingIndices.begin()); + } + + // Insert current level perimeters into reordered list + for (int idx : currentLevelTouchingIndices) { + if (includedIndices.count(idx) == 0) { + reordered.push_back(entities[idx]); + includedIndices.insert(idx); + } + } + + // Prepare for the next level + firstLevelTouchingIndices = currentLevelTouchingIndices; + currentInsetIndex++; + } + }; + + // Loop through all perimeters and reorder starting from each inset index 0 perimeter + for (size_t refIdx = 0; refIdx < entities.size(); ++refIdx) { + if (entities[refIdx].extrusion->inset_idx == 0 && includedIndices.count(refIdx) == 0) { + reorderFromReference(refIdx); + } + } + + // Append any remaining entities that were not included + for (size_t i = 0; i < entities.size(); ++i) { + if (includedIndices.count(i) == 0) { + reordered.push_back(entities[i]); + } + } + + return reordered; +} + +/** + * @brief Reorders the vector to bring external perimeter (i.e. paths with inset index 0) that are also contours (i.e. external facing lines) to the front. + * + * This function uses a stable partition to move all external perimeter contour elements to the front of the vector, + * while maintaining the relative order of non-contour elements. + * + * @param ordered_extrusions The vector of PerimeterGeneratorArachneExtrusion to reorder. + */ +void bringContoursToFront(std::vector& ordered_extrusions) { + std::stable_partition(ordered_extrusions.begin(), ordered_extrusions.end(), [](const PerimeterGeneratorArachneExtrusion& extrusion) { + return (extrusion.extrusion->is_contour() && extrusion.extrusion->inset_idx==0); + }); +} +// ORCA: +// Inner Outer Inner wall ordering mode perimeter order optimisation functions ended + + // Thanks, Cura developers, for implementing an algorithm for generating perimeters with variable width (Arachne) that is based on the paper // "A framework for adaptive width control of dense contour-parallel toolpaths in fused deposition modeling" void PerimeterGenerator::process_arachne() @@ -2744,39 +2904,22 @@ void PerimeterGenerator::process_arachne() int arr_i, arr_j = 0; // indexes to run through the walls in the for loops int outer, first_internal, second_internal, max_internal, current_perimeter; // allocate index values - // Initiate reorder sequence to bring any index 1 (first internal) perimeters ahead of any second internal perimeters - // Leaving these out of order will result in print defects on the external wall as they will be extruded prior to any - // external wall. To do the re-ordering, we are creating two extrusion arrays - reordered_extrusions which will contain - // the reordered extrusions and skipped_extrusions will contain the ones that were skipped in the scan - std::vector reordered_extrusions, skipped_extrusions; - bool found_second_internal = false; // helper variable to indicate the start of a new island + // To address any remaining scenarios where the outer perimeter contour is not first on the list as arachne sometimes reorders the perimeters when clustering + // for OI mode that is used the basis for IOI + bringContoursToFront(ordered_extrusions); + std::vector reordered_extrusions; + + // Get searching thresholds. For an external perimeter we take the middle of the external perimeter width, split it in two, add the spacing to the internal perimeter and add half the internal perimeter width. + // This should get us to the middle of the internal perimeter. We then scale by 10% up for safety margin. + coord_t threshold_external = (this->ext_perimeter_flow.scaled_width()/2+this->ext_perimeter_flow.scaled_spacing()+this->perimeter_flow.scaled_width()/2) * 1.1; + // For the intenal perimeter threshold, the distance is the perimeter width plus the spacing, scaled by 10% for safety margin. + coord_t threshold_internal = (this->perimeter_flow.scaled_width()+this->perimeter_flow.scaled_spacing()) * 1.1; + + // Re-order extrusions based on distance + // Alorithm will aggresively optimise for the appearance of the outermost perimeter + ordered_extrusions = reorderPerimetersByProximity(ordered_extrusions,threshold_external,threshold_internal ); + reordered_extrusions = ordered_extrusions; // copy them into the reordered extrusions vector to allow for IOI operations to be performed below without altering the base ordered extrusions list. - for(auto extrusion_to_reorder : ordered_extrusions){ //scan the perimeters to reorder - switch (extrusion_to_reorder.extrusion->inset_idx) { - case 0: // external perimeter - if(found_second_internal){ //new island - move skipped extrusions to reordered array - for(auto extrusion_skipped : skipped_extrusions) - reordered_extrusions.emplace_back(extrusion_skipped); - skipped_extrusions.clear(); - } - reordered_extrusions.emplace_back(extrusion_to_reorder); - break; - case 1: // first internal perimeter - reordered_extrusions.emplace_back(extrusion_to_reorder); - break; - default: // second internal+ perimeter -> put them in the skipped extrusions array - skipped_extrusions.emplace_back(extrusion_to_reorder); - found_second_internal = true; - break; - } - } - if(ordered_extrusions.size()>reordered_extrusions.size()){ - // we didnt find any more islands, so lets move the remaining skipped perimeters to the reordered extrusions list. - for(auto extrusion_skipped : skipped_extrusions) - reordered_extrusions.emplace_back(extrusion_skipped); - skipped_extrusions.clear(); - } - // Now start the sandwich mode wall re-ordering using the reordered_extrusions as the basis // scan to find the external perimeter, first internal, second internal and last perimeter in the island. // We then advance the position index to move to the second island and continue until there are no more @@ -2806,7 +2949,8 @@ void PerimeterGenerator::process_arachne() } break; } - if(outer >-1 && first_internal>-1 && second_internal>-1 && reordered_extrusions[arr_i].extrusion->inset_idx == 0){ // found a new external perimeter after we've found all three perimeters to re-order -> this means we entered a new island. + if(outer >-1 && first_internal>-1 && reordered_extrusions[arr_i].extrusion->inset_idx == 0){ // found a new external perimeter after we've found at least a first internal perimeter to re-order. + // This means we entered a new island. arr_i=arr_i-1; //step back one perimeter max_internal = arr_i; // new maximum internal perimeter is now this as we have found a new external perimeter, hence a new island. break; // exit the for loop @@ -2814,7 +2958,7 @@ void PerimeterGenerator::process_arachne() } // printf("Layer ID %d, Outer index %d, inner index %d, second inner index %d, maximum internal perimeter %d \n",layer_id,outer,first_internal,second_internal, max_internal); - if (outer > -1 && first_internal > -1 && second_internal > -1) { // found perimeters to re-order? + if (outer > -1 && first_internal > -1 && second_internal > -1) { // found all three perimeters to re-order? If not the perimeters will be processed outside in. std::vector inner_outer_extrusions; // temporary array to hold extrusions for reordering inner_outer_extrusions.reserve(max_internal - position + 1); // reserve array containing the number of perimeters before a new island. Variables are array indexes hence need to add +1 to convert to position allocations // printf("Allocated array size %d, max_internal index %d, start position index %d \n",max_internal-position+1,max_internal,position); @@ -2834,8 +2978,7 @@ void PerimeterGenerator::process_arachne() for(arr_j = position; arr_j <= max_internal; ++arr_j) // replace perimeter array with the new re-ordered array ordered_extrusions[arr_j] = inner_outer_extrusions[arr_j-position]; - } else - break; + } // go to the next perimeter from the current position to continue scanning for external walls in the same island position = arr_i + 1; } From 953c7728a9776bad1915fa210ae073d96e190601 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 14 Aug 2024 23:03:05 +0800 Subject: [PATCH 119/151] add prime all used extruder logic in start g-code for tool changer. The prime logic is mainly bollowed from Prusa XL 5T --- resources/profiles/Custom.json | 2 +- resources/profiles/Custom/machine/fdm_toolchanger_common.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json index e4dae5bd72..8ef0e84c91 100644 --- a/resources/profiles/Custom.json +++ b/resources/profiles/Custom.json @@ -1,6 +1,6 @@ { "name": "Custom Printer", - "version": "02.01.04.00", + "version": "02.01.05.00", "force_update": "0", "description": "My configurations", "machine_model_list": [ diff --git a/resources/profiles/Custom/machine/fdm_toolchanger_common.json b/resources/profiles/Custom/machine/fdm_toolchanger_common.json index 0d1fe9c165..e151cf0d4c 100644 --- a/resources/profiles/Custom/machine/fdm_toolchanger_common.json +++ b/resources/profiles/Custom/machine/fdm_toolchanger_common.json @@ -181,8 +181,8 @@ ], "purge_in_prime_tower": "0", "machine_pause_gcode": "M601", - "machine_start_gcode": "PRINT_START TOOL_TEMP={first_layer_temperature[initial_tool]} {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif} {if is_extruder_used[2]}T2_TEMP={first_layer_temperature[2]}{endif} {if is_extruder_used[3]}T3_TEMP={first_layer_temperature[3]}{endif} {if is_extruder_used[4]}T4_TEMP={first_layer_temperature[4]}{endif} {if is_extruder_used[5]}T5_TEMP={first_layer_temperature[5]}{endif} BED_TEMP=[first_layer_bed_temperature] TOOL=[initial_tool]\n\n", - "change_filament_gcode": "", + "change_filament_gcode": "", "machine_start_gcode": "PRINT_START TOOL_TEMP={first_layer_temperature[initial_tool]} {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif} {if is_extruder_used[2]}T2_TEMP={first_layer_temperature[2]}{endif} {if is_extruder_used[3]}T3_TEMP={first_layer_temperature[3]}{endif} {if is_extruder_used[4]}T4_TEMP={first_layer_temperature[4]}{endif} {if is_extruder_used[5]}T5_TEMP={first_layer_temperature[5]}{endif} BED_TEMP=[first_layer_bed_temperature] TOOL=[initial_tool]\n\nM83\n; set extruder temp\n{if first_layer_temperature[0] > 0 and (is_extruder_used[0])}M104 T0 S{first_layer_temperature[0]}{endif}\n{if first_layer_temperature[1] > 0 and (is_extruder_used[1])}M104 T1 S{first_layer_temperature[1]}{endif}\n{if first_layer_temperature[2] > 0 and (is_extruder_used[2])}M104 T2 S{first_layer_temperature[2]}{endif}\n{if first_layer_temperature[3] > 0 and (is_extruder_used[3])}M104 T3 S{first_layer_temperature[3]}{endif}\n{if first_layer_temperature[4] > 0 and (is_extruder_used[4])}M104 T4 S{first_layer_temperature[4]}{endif}\n{if (is_extruder_used[0]) and initial_tool != 0}\n;\n; purge first tool\n;\nG1 F{travel_speed * 60}\nM109 T0 S{first_layer_temperature[0]}\nT0; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(0 == 0 ? 0 : (0 == 1 ? 120 : (0 == 2 ? 180 : 300)))} Y{(0 < 4 ? 0 : 3)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[0]}10{else}30{endif} X40 Z0.2 F{if filament_multitool_ramming[0]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X40 E9 F800 ; continue purging and wipe the nozzle\nG0 X{40 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{40 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[0]} F2400 ; retract\n{e_retracted[0] = 1.5 * retract_length[0]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[0] == 0 ? (first_layer_temperature[0] + standby_temperature_delta) : (idle_temperature[0]))} T0\n{endif}\n{if (is_extruder_used[1]) and initial_tool != 1}\n;\n; purge second tool\n;\nG1 F{travel_speed * 60}\nM109 T1 S{first_layer_temperature[1]}\nT1; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(1 == 0 ? 0 : (1 == 1 ? 120 : (1 == 2 ? 180 : 300)))} Y{(1 < 4 ? 0 : 3)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[1]}10{else}30{endif} X120 Z0.2 F{if filament_multitool_ramming[1]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X80 E9 F800 ; continue purging and wipe the nozzle\nG0 X{80 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{80 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[1]} F2400 ; retract\n{e_retracted[1] = 1.5 * retract_length[1]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[1] == 0 ? (first_layer_temperature[1] + standby_temperature_delta) : (idle_temperature[1]))} T1\n{endif}\n{if (is_extruder_used[2]) and initial_tool != 2}\n;\n; purge third tool\n;\nG1 F{travel_speed * 60}\nM109 T2 S{first_layer_temperature[2]}\nT2; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(2 == 0 ? 0 : (2 == 1 ? 120 : (2 == 2 ? 180 : 300)))} Y{(2 < 4 ? 0 : 3)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[2]}10{else}30{endif} X220 Z0.2 F{if filament_multitool_ramming[2]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X220 E9 F800 ; continue purging and wipe the nozzle\nG0 X{220 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{220 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[2]} F2400 ; retract\n{e_retracted[2] = 1.5 * retract_length[2]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[2] == 0 ? (first_layer_temperature[2] + standby_temperature_delta) : (idle_temperature[2]))} T2\n{endif}\n{if (is_extruder_used[3]) and initial_tool != 3}\n;\n; purge fourth tool\n;\nG1 F{travel_speed * 60}\nM109 T3 S{first_layer_temperature[3]}\nT3; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(3 == 0 ? 0 : (3 == 1 ? 120 : (3 == 2 ? 180 : 300)))} Y{(3 < 4 ? 0 : 3)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[3]}10{else}30{endif} X290 Z0.2 F{if filament_multitool_ramming[3]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X260 E9 F800 ; continue purging and wipe the nozzle\nG0 X{260 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{260 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[3]} F2400 ; retract\n{e_retracted[3] = 1.5 * retract_length[3]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[3] == 0 ? (first_layer_temperature[3] + standby_temperature_delta) : (idle_temperature[3]))} T3\n{endif}\n{if (is_extruder_used[4]) and initial_tool != 4}\n;\n; purge fifth tool\n;\nG1 F{travel_speed * 60}\nM109 T4 S{first_layer_temperature[4]}\nT4; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(4 == 0 ? 0 : (4 == 1 ? 120 : (4 == 2 ? 180 : 300)))} Y{(4 < 4 ? 0 : 3)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[4]}10{else}30{endif} X290 Z0.2 F{if filament_multitool_ramming[4]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X260 E9 F800 ; continue purging and wipe the nozzle\nG0 X{260 - 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{260 - 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[4]} F2400 ; retract\n{e_retracted[4] = 1.5 * retract_length[4]} ; update slicer internal retract variable\nG92 E0 ; reset extruder position\n\nM104 S{(idle_temperature[4] == 0 ? (first_layer_temperature[4] + standby_temperature_delta) : (idle_temperature[4]))} T4\n{endif}\n;\n; purge initial tool\n;\nG1 F{travel_speed * 60}\nM109 T{initial_tool} S{first_layer_temperature[initial_tool]}\nT{initial_tool}; pick the tool\nG92 E0 ; reset extruder position\n\nG0 X{(initial_tool == 0 ? 0 : (initial_tool == 1 ? 120 : (initial_tool == 2 ? 180 : 300)))} Y{(initial_tool < 4 ? 0 : 3)} Z10 F{(travel_speed * 60)} ; move close to the sheet's edge\nG0 E{if filament_multitool_ramming[initial_tool]}10{else}30{endif} X{(initial_tool == 0 ? 0 : (initial_tool == 1 ? 120 : (initial_tool == 2 ? 180 : 300))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 10)} Z0.2 F{if filament_multitool_ramming[initial_tool]}500{else}170{endif} ; purge while moving towards the sheet\nG0 X{(initial_tool == 0 ? 0 : (initial_tool == 1 ? 120 : (initial_tool == 2 ? 180 : 300))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40)} E9 F800 ; continue purging and wipe the nozzle\nG0 X{(initial_tool == 0 ? 0 : (initial_tool == 1 ? 120 : (initial_tool == 2 ? 180 : 300))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3)} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{(initial_tool == 0 ? 0 : (initial_tool == 1 ? 120 : (initial_tool == 2 ? 180 : 300))) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 40) + ((initial_tool == 0 or initial_tool == 2 ? 1 : -1) * 3 * 2)} Z0.2 F{8000} ; wipe, move quickly away from the bed\nG1 E{- 1.5 * retract_length[initial_tool]} F2400 ; retract\n{e_retracted[initial_tool] = 1.5 * retract_length[initial_tool]}\nG92 E0 ; reset extruder position\n", + "scan_first_layer": "0", "nozzle_type": "undefine", "auxiliary_fan": "0" From ee07bc096ac849b0176db3c02aa844ece48a78b4 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Sun, 18 Aug 2024 04:16:14 +0100 Subject: [PATCH 120/151] Update Wiki (#6474) * Update Wiki * Wiki updates --- doc/Home.md | 37 ++++++++- .../quality/quality_settings_layer_height.md | 17 ++++ .../quality/quality_settings_line_width.md | 43 ++++++++++ .../quality/quality_settings_seam.md | 81 +++++++++++++++++++ .../speed/extrusion-rate-smoothing.md} | 0 5 files changed, 174 insertions(+), 4 deletions(-) create mode 100644 doc/print_settings/quality/quality_settings_layer_height.md create mode 100644 doc/print_settings/quality/quality_settings_line_width.md create mode 100644 doc/print_settings/quality/quality_settings_seam.md rename doc/{Extrusion-rate-smoothing.md => print_settings/speed/extrusion-rate-smoothing.md} (100%) diff --git a/doc/Home.md b/doc/Home.md index cdbe12562f..fce4bc3480 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -1,8 +1,37 @@ -Welcome to the OrcaSlicer WIKI! +# Welcome to the OrcaSlicer WIKI! -We have divided it roughly into the following pages: +Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki page aims to provide an detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer. -- [Calibration](./Calibration) -- [Print settings](./Print-settings) +The Wiki is work in progress so bear with us while we get it up and running! + +## Print Settings, Tips and Tricks (Work In Progress) +The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results. + +### Quality Settings +- [Layer Height Settings](print_settings/quality/quality_settings_layer_height) +- [Line Width Settings](print_settings/quality/quality_settings_line_width) +- [Seam Settings](print_settings/quality/quality_settings_seam) +- [Precise wall](Precise-wall) + +### Speed Settings +- [Extrusion rate smoothing](print_settings/speed/extrusion-rate-smoothing) + +### Multi material +- [Single Extruder Multimaterial](semm) + +### Printer Settings: +- [Air filtration/Exhaust fan handling](air-filtration) +- [Auxiliary fan handling](Auxiliary-fan) +- [Chamber temperature control](chamber-temperature) +- [Adaptive Bed Mesh](adaptive-bed-mesh) +- [Using different bed types in Orca](bed-types) +- [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient) + +## Printer Calibration +The guide below takes you through the key calibration tests in Orca - flow rate, pressure advance, print temperature, retraction, tolerances and maximum volumetric speed +- [Calibration Guide](./Calibration) + +## Developer Section - [How to build Orca Slicer](./How-to-build) +- [Localization and translation guide](Localization_guide) - [Developer Reference](./developer-reference/Home) diff --git a/doc/print_settings/quality/quality_settings_layer_height.md b/doc/print_settings/quality/quality_settings_layer_height.md new file mode 100644 index 0000000000..350738f379 --- /dev/null +++ b/doc/print_settings/quality/quality_settings_layer_height.md @@ -0,0 +1,17 @@ +# Layer Height + +This setting controls how tall each printed layer will be. Typically, a smaller layer height produces a better-looking part with less jagged edges, especially around curved sections (like the top of a sphere). However, lower layer heights mean more layers to print, proportionally increasing print time. + +### Tips: +1. **The optimal layer height depends on the size of your nozzle**. The set layer height must not be taller than 80% of the diameter of the nozzle, else there is little "squish" between the printed layer and the layer below, leading to weaker parts. + +2. While technically there is no limit to how small a layer height one can use, **typically most printers struggle to print reliably with a layer height that is smaller than 20% of the nozzle diameter**. This is because with smaller layer heights, less material is extruded per mm and, at some point, the tolerances of the extruder system result in variations in the flow to such an extent that visible artifacts occur, especially if printing at high speeds. + +For example, it is not uncommon to see "fish scale" type patterns on external walls when printing with a 0.4 mm nozzle at 0.08 mm layer height at speeds of 200mm/sec+. If you observe that pattern, simply increase your layer height to 30% of your nozzle height and/or slow down the print speed considerably. + +# First Layer Height + +This setting controls how tall the first layer of the print will be. Typically, this is set to 50% of the nozzle width for optimal bed adhesion. + +### Tip: +A thicker first layer is more forgiving to slight variations to the evenness of the build surface, resulting in a more uniform, visually, first layer. Set it to 0.25mm for a 0.4mm nozzle, for example, if your build surface is uneven or your printer has a slightly inconsistent z offset between print runs. However, as a rule of thumb, try not to exceed 65% of the nozzle width so as to not compromise bed adhesion too much. diff --git a/doc/print_settings/quality/quality_settings_line_width.md b/doc/print_settings/quality/quality_settings_line_width.md new file mode 100644 index 0000000000..ae4ae05233 --- /dev/null +++ b/doc/print_settings/quality/quality_settings_line_width.md @@ -0,0 +1,43 @@ +# Line Width + +These settings control how wide the extruded lines are. + +- **Default**: The default line width in mm or as a percentage of the nozzle size. + +- **First Layer**: The line width of the first layer. Typically, this is wider than the rest of the print, to promote better bed adhesion. See tips below for why. + +- **Outer Wall**: The line width in mm or as a percentage of the nozzle size used when printing the model’s external wall perimeters. + +- **Inner Wall**: The line width in mm or as a percentage of the nozzle size used when printing the model’s internal wall perimeters. + +- **Top Surface**: The line width in mm or as a percentage of the nozzle size used when printing the model’s top surface. + +- **Sparse Infill**: The line width in mm or as a percentage of the nozzle size used when printing the model’s sparse infill. + +- **Internal Solid Infill**: The line width in mm or as a percentage of the nozzle size used when printing the model’s internal solid infill. + +- **Support**: The line width in mm or as a percentage of the nozzle size used when printing the model’s support structures. + + +## Tips: +1. **Typically, the line width will be anything from 100% up to 150% of the nozzle width**. Due to the way the slicer’s flow math works, a 100% line width will attempt to extrude slightly “smaller” than the nozzle size and when squished onto the layer below will match the nozzle orifice. You can read more on the flow math here: [Flow Math](https://manual.slic3r.org/advanced/flow-math). + +2. **For most cases, the minimum acceptable recommended line width is 105% of the nozzle diameter**, typically reserved for the outer walls, where greater precision is required. A wider line is less precise than a thinner line. + +3. **Wider lines provide better adhesion to the layer below**, as the material is squished more with the previous layer. For parts that need to be strong, setting this value to 120-150% of the nozzle diameter is recommended and has been experimentally proven to significantly increase part strength. + +4. **Wider lines improve step over and overhang appearance**, i.e., the overlap of the currently printed line to the surface below. So, if you are printing models with overhangs, setting a larger external perimeter line width will improve the overhang’s appearance to an extent. + +5. **For top surfaces, typically a value of ~100%-105% of the nozzle width is recommended** as it provides the most precision, compared to a wider line. + +6. **For external walls, you need to strike a balance between precision and step over and, consequently, overhang appearance.** Typically these values are set to ~105% of nozzle diameter for models with limited overhangs up to ~120% for models with more significant overhangs. + +7. **For internal walls, you typically want to maximize part strength**, so a good starting point is approximately 120% of the nozzle width, which gives a good balance between print speed, accuracy, and material use. However, depending on the model, larger or smaller line widths may make sense in order to reduce gap fill and/or line width variations if you are using Arachne. + +8. **Don’t feel constrained to have wider internal wall lines compared to external ones**. While this is the default for most profiles, for models where significant overhangs are present, printing wider external walls compared to the internal ones may yield better overhang quality without increasing material use! + +9. **For sparse infill, the line width also affects how dense, visually, the sparse infill will be.** The sparse infill aims to extrude a set amount of material based on the percentage infill selected. When increasing the line width, the space between the sparse infill extrusions is larger in order to roughly maintain the same material usage. Typically for sparse infill, a value of 120% of nozzle diameter is a good starting point. + +10. **For supports, using 100% or less line width will make the supports weaker** by reducing their layer adhesion, making them easier to remove. + +11. **If your printer is limited mechanically, try to maintain the material flow as consistent as possible between critical features of your model**, to ease the load on the extruder having to adapt its flow between them. This is especially useful for printers that do not use pressure advance/linear advance and if your extruder is not as capable mechanically. You can do that by adjusting the line widths and speeds to reduce the variation between critical features (e.g., external and internal wall flow). For example, print them at the same speed and the same line width, or print the external perimeter slightly wider and slightly slower than the internal perimeter. Material flow can be visualized in the sliced model – flow drop down. diff --git a/doc/print_settings/quality/quality_settings_seam.md b/doc/print_settings/quality/quality_settings_seam.md new file mode 100644 index 0000000000..7777be8ff6 --- /dev/null +++ b/doc/print_settings/quality/quality_settings_seam.md @@ -0,0 +1,81 @@ +# Seam Section + +Unless printed in spiral vase mode, every layer needs to begin somewhere and end somewhere. That start and end of the extrusion is what results in what visually looks like a seam on the perimeters. This section contains options to control the visual appearance of a seam. + +- **Seam Position**: Controls the placement of the seam. + 1. **Aligned**: Will attempt to align the seam to a hidden internal facet of the model. + 2. **Nearest**: Will place the seam at the nearest starting point compared to where the nozzle stopped printing in the previous layer. + 3. **Back**: Will align the seam in a (mostly) straight line at the rear of the model. + 4. **Random**: Will randomize the placement of the seam between layers. + + Typically, aligned or back work the best, especially in combination with seam painting. However, as seams create weak points and slight surface "bulges" or "divots," random seam placement may be optimal for parts that need higher strength as that weak point is spread to different locations between layers (e.g., a pin meant to fit through a hole). + +- **Staggered Inner Seams**: As the seam location forms a weak point in the print (it's a discontinuity in the extrusion process after all!), staggering the seam on the internal perimeters can help reduce stress points. This setting moves the start of the internal wall's seam around across layers as well as away from the external perimeter seam. This way, the internal and external seams don't all align at the same point and between them across layers, distributing those weak points further away from the seam location, hence making the part stronger. It can also help improve the water tightness of your model. + +- **Seam Gap**: Controls the gap in mm or as a percentage of the nozzle size between the two ends of a loop starting and ending with a seam. A larger gap will reduce the bulging seen at the seam. A smaller gap reduces the visual appearance of a seam. For a well-tuned printer with pressure advance, a value of 0-15% is typically optimal. + +- **Scarf Seam**: Read more here: [Better Seams - An Orca Slicer Guide](https://www.printables.com/model/783313-better-seams-an-orca-slicer-guide-to-using-scarf-s). + +- **Role-Based Wipe Speed**: Controls the speed of a wipe motion, i.e., how fast the nozzle will move over a printed area to "clean" it before traveling to another area of the model. It is recommended to turn this option on, to ensure the nozzle performs the wipe motion with the same speed that the feature was printed with. + +- **Wipe Speed**: If role-based wipe speed is disabled, set this field to the absolute wipe speed or as a percentage over the travel speed. + +- **Wipe on Loops**: When finishing printing a "loop" (i.e., an extrusion that starts and ends at the same point), move the nozzle slightly inwards towards the part. That move aims to reduce seam unevenness by tucking in the end of the seam to the part. It also slightly cleans the nozzle before traveling to the next area of the model, reducing stringing. + +- **Wipe Before External Perimeters**: To minimize the visibility of potential over-extrusion at the start of an external perimeter, the de-retraction move is performed slightly on the inside of the model and, hence, the start of the external perimeter. That way, any potential over-extrusion is hidden from the outside surface. + + This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order, as in these modes, it is more likely an external perimeter is printed immediately after a de-retraction move, which would cause slight extrusion variance at the start of a seam. + +## Tips: +With seams being inevitable when 3D printing using FFF, there are two distinct approaches on how to deal with them: + +1. **Try and hide the seam as much as possible**: This can be done by enabling scarf seam, which works very well, especially with simple models with limited overhang regions. +2. **Try and make the seam as "clean" and "distinct" as possible**: This can be done by tuning the seam gap and enabling role-based wipe speed, wipe on loops, and wipe before the external loop. + +## Troubleshooting Seam Performance: +The section below will focus on troubleshooting traditional seams. For scarf seam troubleshooting, refer to the guide linked above. + +There are several factors that influence how clean the seam of your model is, with the biggest one being extrusion control after a travel move. As a seam defines the start and end of an extrusion, it is critical that: + +1. **The same amount of material is extruded at the same point across layers** to ensure a consistent visual appearance at the start of a seam. +2. **The printer consistently stops extruding at the same point** across layers. + +However, due to mechanical and material tolerances, as well as the very nature of 3D printing with FFF, that is not always possible. Hopefully with some tuning you'll be able to achieve prints like this! + +![IMG_4059](https://github.com/user-attachments/assets/e60c3d24-9b21-4484-bcbe-614237a2fe09) + + +### Troubleshooting the Start of a Seam: +Imagine the scenario where the toolhead finishes printing a layer line on one side of the bed, retracts, travels the whole distance of the bed to de-retract, and starts printing another part. Compare this to the scenario where the toolhead finishes printing an internal perimeter and only travels a few mm to start printing an external perimeter, without even retracting or de-retracting. + +The first scenario has much more opportunity for the filament to ooze outside the nozzle, resulting in a small blob forming at the start of the seam or, conversely, if too much material has leaked, a gap/under extrusion at the start of the seam. + +The key to a consistent start of a seam is to reduce the opportunity for ooze as much as possible. The good news is that this is mostly tunable by: + +1. **Ensure your pressure advance is calibrated correctly**. A too low pressure advance will result in the nozzle experiencing excess pressure at the end of the previous extrusion, which increases the chance of oozing when traveling. +2. **Make sure your travel speed is as fast as possible within your printer's limits**, and the travel acceleration is as high as practically possible, again within the printer's limits. This reduces the travel time between features, reducing oozing. +3. **Enable wipe before external perimeters** – this setting performs the de-retraction move inside the model, hence reducing the visual appearance of the "blob" if it does appear at the seam. +4. **Increase your travel distance threshold to be such that small travel moves do not trigger a retraction and de-retraction operation**, reducing extrusion variances caused by the extruder tolerances. 2-4mm is a good starting point as, if your PA is tuned correctly and your travel speed and acceleration are high, it is unlikely that the nozzle will ooze in the milliseconds it will take to travel to the new location. +5. **Enable retract on layer change**, to ensure the start of your layer is always performed under the same conditions – a de-pressurized nozzle with retracted filament. + +In addition, some toolhead systems are inherently better at seams compared to others. For example, high-flow nozzles with larger melt zones usually have poorer extrusion control as more of the material is in a molten state inside the nozzle. They tend to string more, ooze easier, and hence have poorer seam performance. Conversely, smaller melt zone nozzles have more of the filament solid in their heat zone, leading to more accurate extrusion control and better seam performance. + +So this is a trade-off between print speed and print quality. From experimental data, volcano-type nozzles tend to perform the worst at seams, followed by CHT-type nozzles, and finally regular flow nozzles. + +In addition, larger nozzle diameters allow for more opportunity for material to leak compared to smaller diameter nozzles. A 0.2/0.25 mm nozzle will have significantly better seam performance than a 0.4, and that will have much better performance than a 0.6mm nozzle and so forth. + +### Troubleshooting the End of a Seam: +The end of a seam is much easier to get right, as the extrusion system is already at a pressure equilibrium while printing. It just needs to stop extruding at the right time and consistently. + +**If you are getting bulges at the seam**, the extruder is not stopping at the right time. The first thing to tune would be **pressure advance** – too low of a PA will result in the nozzle still being pressurized when finishing the print move, hence leaving a wider line at the end as it stops printing. + +And the opposite is true too – **too high PA will result in under extrusion at the end of a print move**, shown as a larger-than-needed gap at the seam. Thankfully, tuning PA is straightforward, so run the calibration tests and pick the optimal value for your material, print speed, and acceleration. + +Furthermore, the printer mechanics have tolerances – the print head may be requested to stop at point XY but practically it cannot stop precisely at that point due to the limits of micro-stepping, belt tension, and toolhead rigidity. Here is where tuning the seam gap comes into effect. **A slightly larger seam gap will allow for more variance to be tolerated at the end of a print move before showing as a seam bulge**. Experiment with this value after you are certain your PA is tuned correctly and your travel speeds and retractions are set appropriately. + +Finally, the techniques of **wiping can help improve the visual continuity and consistency of a seam** (please note, these settings do not make the seam less visible, but rather make them more consistent!). Wiping on loops with a consistent speed helps tuck in the end of the seam, hiding the effects of retraction from view. + +### The Role of Wall Ordering in Seam Appearance: +The order of wall printing plays a significant role in the appearance of a seam. **Starting to print the external perimeter first after a long travel move will always result in more visible artifacts compared to printing the internal perimeters first and traveling just a few mm to print the external perimeter.** + +For optimal seam performance, printing with **inner-outer-inner wall order is typically best, followed by inner-outer**. It reduces the amount of traveling performed prior to printing the external perimeter and ensures the nozzle is having as consistent pressure as possible, compared to printing outer-inner. diff --git a/doc/Extrusion-rate-smoothing.md b/doc/print_settings/speed/extrusion-rate-smoothing.md similarity index 100% rename from doc/Extrusion-rate-smoothing.md rename to doc/print_settings/speed/extrusion-rate-smoothing.md From 8a746a776404a281a5b3fd0229c64ed2d102233c Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 18 Aug 2024 11:33:00 +0800 Subject: [PATCH 121/151] Fix Linux build & some warnings (#6438) * Fix linux deps debug build * Use the same DL_CACHE for release build when building debug version of deps on Linux. This prevents downloading the same source packages twice, and avoid downloading again after deleting the build dir. * Fix debug build * Fix warnings "loop variable creates a copy from type" and "loop variable binds to a temporary constructed from type" --- BuildLinux.sh | 7 +++++-- src/libslic3r/Clipper2Utils.cpp | 2 +- src/libslic3r/Emboss.cpp | 4 ++-- src/libslic3r/Format/bbs_3mf.cpp | 2 +- src/libslic3r/Model.cpp | 2 +- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 4 ++-- src/libslic3r/ShortestPath.hpp | 2 +- src/libslic3r/TreeSupport.cpp | 12 ++++++------ src/qhull/CMakeLists.txt | 6 +++++- src/slic3r/GUI/CreatePresetsDialog.cpp | 20 ++++++++++---------- src/slic3r/GUI/Plater.cpp | 6 +++--- src/slic3r/GUI/Search.cpp | 2 +- src/slic3r/GUI/StatusPanel.cpp | 2 +- src/slic3r/GUI/WebGuideDialog.cpp | 2 +- src/slic3r/Utils/CalibUtils.cpp | 6 +++--- 17 files changed, 45 insertions(+), 38 deletions(-) diff --git a/BuildLinux.sh b/BuildLinux.sh index f60e5c5f34..abb81ca737 100755 --- a/BuildLinux.sh +++ b/BuildLinux.sh @@ -127,8 +127,11 @@ then if [[ -n "${BUILD_DEBUG}" ]] then # have to build deps with debug & release or the cmake won't find everything it needs - mkdir deps/build/release - cmake -S deps -B deps/build/release -G Ninja -DDESTDIR="../destdir" ${BUILD_ARGS} + if [ ! -d "deps/build/release" ] + then + mkdir deps/build/release + fi + cmake -S deps -B deps/build/release -G Ninja -DDESTDIR="${PWD}/deps/build/destdir" -DDEP_DOWNLOAD_DIR="${PWD}/deps/DL_CACHE" ${BUILD_ARGS} cmake --build deps/build/release BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug" fi diff --git a/src/libslic3r/Clipper2Utils.cpp b/src/libslic3r/Clipper2Utils.cpp index 92acd5e385..5793900a5b 100644 --- a/src/libslic3r/Clipper2Utils.cpp +++ b/src/libslic3r/Clipper2Utils.cpp @@ -23,7 +23,7 @@ Clipper2Lib::Paths64 Slic3rPoints_to_Paths64(const std::vector& in) { Clipper2Lib::Paths64 out; out.reserve(in.size()); - for (const T item: in) { + for (const T& item: in) { Clipper2Lib::Path64 path; path.reserve(item.size()); for (const Slic3r::Point& point : item.points) diff --git a/src/libslic3r/Emboss.cpp b/src/libslic3r/Emboss.cpp index 13d494d949..82015c4827 100644 --- a/src/libslic3r/Emboss.cpp +++ b/src/libslic3r/Emboss.cpp @@ -334,8 +334,8 @@ bool Emboss::divide_segments_for_close_point(ExPolygons &expolygons, double dist const Points &poly_pts = poly.points; const Point &line_a = poly_pts[id.point_index]; const Point &line_b = (!ids.is_last_point(id)) ? poly_pts[id.point_index + 1] : poly_pts.front(); - assert(line_a == lines[index].a.cast()); - assert(line_b == lines[index].b.cast()); + assert(line_a == lines[index].a.cast()); + assert(line_b == lines[index].b.cast()); if (p == line_a || p == line_b) continue; divs.emplace_back(p, index); diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 7df4fbca49..90f4536b95 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -4622,7 +4622,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) its.vertices.assign(sub_object->geometry.vertices.begin(), sub_object->geometry.vertices.end()); // BBS - for (const std::string prop_str : sub_object->geometry.face_properties) { + for (const std::string& prop_str : sub_object->geometry.face_properties) { FaceProperty face_prop; face_prop.from_string(prop_str); its.properties.push_back(face_prop); diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 534777b6c1..63be317b6d 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -3538,7 +3538,7 @@ void check_model_ids_validity(const Model &model) for (const ModelInstance *model_instance : model_object->instances) check(model_instance->id()); } - for (const auto mm : model.materials) { + for (const auto& mm : model.materials) { check(mm.second->id()); check(mm.second->config.id()); } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 98a3a61155..cbab85b88a 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -340,7 +340,7 @@ void Preset::normalize(DynamicPrintConfig &config) static_cast(opt)->resize(n, defaults.option(key)); } // The following keys are mandatory for the UI, but they are not part of FullPrintConfig, therefore they are handled separately. - for (const std::string &key : { "filament_settings_id" }) { + for (const std::string key : { "filament_settings_id" }) { auto *opt = config.option(key, false); assert(opt == nullptr || opt->type() == coStrings); if (opt != nullptr && opt->type() == coStrings) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index dfec7089dc..03f76fe3a3 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2925,7 +2925,7 @@ DynamicConfig PrintStatistics::config() const DynamicConfig PrintStatistics::placeholders() { DynamicConfig config; - for (const std::string &key : { + for (const std::string key : { "print_time", "normal_print_time", "silent_print_time", "used_filament", "extruded_volume", "total_cost", "total_weight", "initial_tool", "total_toolchanges", "total_wipe_tower_cost", "total_wipe_tower_filament"}) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 0d2ba95692..4814c8f518 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -5329,11 +5329,11 @@ void PrintConfigDef::init_extruder_option_keys() "retraction_length", "retraction_minimum_travel", "retraction_speed", + "travel_slope", "wipe", "wipe_distance", "z_hop", - "z_hop_types", - "travel_slope" + "z_hop_types" }; assert(std::is_sorted(m_extruder_retract_keys.begin(), m_extruder_retract_keys.end())); } diff --git a/src/libslic3r/ShortestPath.hpp b/src/libslic3r/ShortestPath.hpp index 5a34ef23c1..158608f364 100644 --- a/src/libslic3r/ShortestPath.hpp +++ b/src/libslic3r/ShortestPath.hpp @@ -29,7 +29,7 @@ template inline void reorder_by_shortest_traverse(std::vector &po { Points start_point; start_point.reserve(polylines_out.size()); - for (const T contour : polylines_out) start_point.push_back(contour.points.front()); + for (const T& contour : polylines_out) start_point.push_back(contour.points.front()); std::vector order = chain_points(start_point); diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index c588409ac1..dc4f9998ff 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -482,7 +482,7 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double // because we compare with vsize2_with_unscale here (no division by zero), we also need to compare by vsize2_with_unscale inside the loop // to avoid integer rounding edge cases bool projected_p_beyond_prev_segment = dot_with_unscale(p1 - p0, from - p0) >= vsize2_with_unscale(p1 - p0); - for(const Point p2 : poly.contour.points) + for(const Point& p2 : poly.contour.points) { // X = A + Normal(B-A) * (((B-A) dot_with_unscale (P-A)) / VSize(B-A)); // = A + (B-A) * ((B-A) dot_with_unscale (P-A)) / VSize2(B-A); @@ -1437,11 +1437,11 @@ void TreeSupport::generate_toolpaths() if (m_object->support_layer_count() > m_raft_layers) { const SupportLayer *ts_layer = m_object->get_support_layer(m_raft_layers); - for (const ExPolygon expoly : ts_layer->floor_areas) + for (const ExPolygon& expoly : ts_layer->floor_areas) raft_areas.push_back(expoly); - for (const ExPolygon expoly : ts_layer->roof_areas) + for (const ExPolygon& expoly : ts_layer->roof_areas) raft_areas.push_back(expoly); - for (const ExPolygon expoly : ts_layer->base_areas) + for (const ExPolygon& expoly : ts_layer->base_areas) raft_areas.push_back(expoly); } @@ -3628,7 +3628,7 @@ const ExPolygons& TreeSupportData::get_avoidance(coordf_t radius, size_t layer_n Polygons TreeSupportData::get_contours(size_t layer_nr) const { Polygons contours; - for (const ExPolygon expoly : m_layer_outlines[layer_nr]) { + for (const ExPolygon& expoly : m_layer_outlines[layer_nr]) { contours.push_back(expoly.contour); } @@ -3638,7 +3638,7 @@ Polygons TreeSupportData::get_contours(size_t layer_nr) const Polygons TreeSupportData::get_contours_with_holes(size_t layer_nr) const { Polygons contours; - for (const ExPolygon expoly : m_layer_outlines[layer_nr]) { + for (const ExPolygon& expoly : m_layer_outlines[layer_nr]) { for(int i=0;i &vendor : vendors) { + for (const auto& vendor : vendors) { if (vendor.second.models.empty() || vendor.second.id.empty()) continue; choices.Add(vendor.first); } @@ -658,11 +658,11 @@ void CreateFilamentPresetDialog::on_dpi_changed(const wxRect &suggested_rect) { bool CreateFilamentPresetDialog::is_check_box_selected() { - for (const std::pair<::CheckBox *, std::pair> &checkbox_preset : m_filament_preset) { + for (const auto& checkbox_preset : m_filament_preset) { if (checkbox_preset.first->GetValue()) { return true; } } - for (const std::pair<::CheckBox *, std::pair> &checkbox_preset : m_machint_filament_preset) { + for (const auto& checkbox_preset : m_machint_filament_preset) { if (checkbox_preset.first->GetValue()) { return true; } } @@ -693,7 +693,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_vendor_item() horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5)); wxArrayString choices; - for (const wxString &vendor : filament_vendors) { + for (const wxString vendor : filament_vendors) { choices.push_back(vendor); } choices.Sort(); @@ -775,7 +775,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_type_item() horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5)); wxArrayString filament_type; - for (const wxString &filament : m_system_filament_types_set) { + for (const wxString filament : m_system_filament_types_set) { filament_type.Add(filament); } filament_type.Sort(); @@ -1050,7 +1050,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_button_item() if (curr_create_type == m_create_type.base_filament) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":clone filament create type filament "; - for (const std::pair<::CheckBox *, std::pair> &checkbox_preset : m_filament_preset) { + for (const auto& checkbox_preset : m_filament_preset) { if (checkbox_preset.first->GetValue()) { std::string compatible_printer_name = checkbox_preset.second.first; std::vector failures; @@ -1077,7 +1077,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_button_item() } } else if (curr_create_type == m_create_type.base_filament_preset) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":clone filament presets create type filament preset"; - for (const std::pair<::CheckBox *, std::pair> &checkbox_preset : m_machint_filament_preset) { + for (const auto& checkbox_preset : m_machint_filament_preset) { if (checkbox_preset.first->GetValue()) { std::string compatible_printer_name = checkbox_preset.second.first; std::vector failures; @@ -1155,7 +1155,7 @@ wxArrayString CreateFilamentPresetDialog::get_filament_preset_choices() } int suffix = 0; - for (const pair> &preset : m_filament_choice_map) { + for (const auto& preset : m_filament_choice_map) { if (preset.second.empty()) continue; std::set preset_name_set; for (Preset* filament_preset : preset.second) { @@ -1752,7 +1752,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_nozzle_diameter_item(wxWindow *par wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxVERTICAL); m_nozzle_diameter = new ComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, OPTION_SIZE, 0, nullptr, wxCB_READONLY); wxArrayString nozzle_diameters; - for (const std::string nozzle : nozzle_diameter_vec) { + for (const std::string& nozzle : nozzle_diameter_vec) { nozzle_diameters.Add(nozzle + " mm"); } m_nozzle_diameter->Set(nozzle_diameters); @@ -3899,7 +3899,7 @@ ExportConfigsDialog::ExportCase ExportConfigsDialog::archive_filament_bundle_to_ BOOST_LOG_TRIVIAL(info) << "Filament preset json add successful: " << filament_preset->name; } - for (const std::pair& vendor_name_to_json : vendor_structure) { + for (const auto& vendor_name_to_json : vendor_structure) { json j; std::string printer_vendor = vendor_name_to_json.first; j["vendor"] = printer_vendor; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 80f6193281..7950f9a669 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9466,21 +9466,21 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) print_config.set_key_value( "travel_jerk", new ConfigOptionFloat(jerk)); } - for (const auto opt : SuggestedConfigCalibPAPattern().float_pairs) { + for (const auto& opt : SuggestedConfigCalibPAPattern().float_pairs) { print_config.set_key_value( opt.first, new ConfigOptionFloat(opt.second) ); } - for (const auto opt : SuggestedConfigCalibPAPattern().nozzle_ratio_pairs) { + for (const auto& opt : SuggestedConfigCalibPAPattern().nozzle_ratio_pairs) { print_config.set_key_value( opt.first, new ConfigOptionFloatOrPercent(nozzle_diameter * opt.second / 100, false) ); } - for (const auto opt : SuggestedConfigCalibPAPattern().int_pairs) { + for (const auto& opt : SuggestedConfigCalibPAPattern().int_pairs) { print_config.set_key_value( opt.first, new ConfigOptionInt(opt.second) diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index 186124a2c1..c8a661769f 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -866,7 +866,7 @@ void SearchDialog::msw_rescale() SearchListModel::SearchListModel(wxWindow *parent) : wxDataViewVirtualListModel(0) { int icon_id = 0; - for (const std::string &icon : {"cog", "printer", "printer", "spool", "blank_16"}) m_icon[icon_id++] = ScalableBitmap(parent, icon); + for (const std::string icon : {"cog", "printer", "printer", "spool", "blank_16"}) m_icon[icon_id++] = ScalableBitmap(parent, icon); } void SearchListModel::Clear() diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 2a7ff21b76..dfef462a7e 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -4846,7 +4846,7 @@ wxBoxSizer *ScoreDialog::get_photo_btn_sizer() { it = m_selected_image_list.erase(it); } m_image_url_paths.clear(); - for (const std::pair &bitmap : m_image) { + for (const auto& bitmap : m_image) { if (bitmap.second.is_uploaded) { if (!bitmap.second.img_url_paths.empty()) { m_image_url_paths.push_back(bitmap.second.img_url_paths); diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 201e2a8db9..342a8958d8 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -858,7 +858,7 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle const std::map>& model_maps = config->second; //for (const auto& vendor_profile : preset_bundle->vendors) { - for (const auto model_it: model_maps) { + for (const auto& model_it: model_maps) { if (model_it.second.size() > 0) { variant = *model_it.second.begin(); const auto config_old = old_enabled_vendors.find(bundle_name); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index b5f9aaf0ed..e68969acbf 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -618,7 +618,7 @@ void CalibUtils::calib_pa_pattern(const CalibInfo &calib_info, Model& model) float nozzle_diameter = printer_config.option("nozzle_diameter")->get_at(0); - for (const auto opt : SuggestedConfigCalibPAPattern().float_pairs) { + for (const auto& opt : SuggestedConfigCalibPAPattern().float_pairs) { print_config.set_key_value(opt.first, new ConfigOptionFloat(opt.second)); } @@ -627,11 +627,11 @@ void CalibUtils::calib_pa_pattern(const CalibInfo &calib_info, Model& model) full_config, print_config.get_abs_value("line_width"), print_config.get_abs_value("layer_height"), 0))); - for (const auto opt : SuggestedConfigCalibPAPattern().nozzle_ratio_pairs) { + for (const auto& opt : SuggestedConfigCalibPAPattern().nozzle_ratio_pairs) { print_config.set_key_value(opt.first, new ConfigOptionFloat(nozzle_diameter * opt.second / 100)); } - for (const auto opt : SuggestedConfigCalibPAPattern().int_pairs) { + for (const auto& opt : SuggestedConfigCalibPAPattern().int_pairs) { print_config.set_key_value(opt.first, new ConfigOptionInt(opt.second)); } From 33dd472146c34de2318cdcf69d2ded9f03bee737 Mon Sep 17 00:00:00 2001 From: Andreas Rammhold Date: Sun, 18 Aug 2024 05:34:15 +0200 Subject: [PATCH 122/151] Fix build with CGAL 5.6 (again) (#6439) * Fix build with CGAL 5.6 Surface_mesh iterators no longer return references, so it's necessary to use const references or copies when iterating. This was previously merged in #3045 but isn't references in the current main branch anymore. No idea where why it is gone, but the issue still persists thus the patch should still be added. --- src/libslic3r/MeshBoolean.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index c412553a22..779d5a042b 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -201,12 +201,12 @@ indexed_triangle_set cgal_to_indexed_triangle_set(const _Mesh &cgalmesh) const auto &vertices = cgalmesh.vertices(); int vsize = int(vertices.size()); - for (auto &vi : vertices) { + for (const auto &vi : vertices) { auto &v = cgalmesh.point(vi); // Don't ask... its.vertices.emplace_back(to_vec3f(v)); } - for (auto &face : faces) { + for (const auto &face : faces) { auto vtc = cgalmesh.vertices_around_face(cgalmesh.halfedge(face)); int i = 0; From 61e433126add97bac282f5d569b4943ab5189386 Mon Sep 17 00:00:00 2001 From: artillery3dlab Date: Sun, 18 Aug 2024 11:37:11 +0800 Subject: [PATCH 123/151] Artillery proflies update (#6457) * Artillery proflies update --- .../Artillery/filament/Artillery ABS.json | 19 +++++++++---- .../Artillery/filament/Artillery PETG.json | 27 ++++++++++++------- .../filament/Artillery PLA Basic.json | 2 +- .../filament/Artillery PLA Matte.json | 2 +- .../filament/Artillery PLA Silk.json | 2 +- .../filament/Artillery PLA Tough.json | 12 ++++++--- .../Artillery/filament/Artillery TPU.json | 18 ++++++++----- ...tillery Sidewinder X3 Plus 0.4 nozzle.json | 4 +-- ...rtillery Sidewinder X3 Pro 0.4 nozzle.json | 4 +-- ...tillery Sidewinder X4 Plus 0.4 nozzle.json | 4 +-- ...rtillery Sidewinder X4 Pro 0.4 nozzle.json | 4 +-- ...Standard @Artillery X3Plus 0.4 nozzle.json | 10 ++++--- ... Standard @Artillery X3Pro 0.4 nozzle.json | 10 ++++--- ...Standard @Artillery X4Plus 0.4 nozzle.json | 10 ++++--- ... Standard @Artillery X4Pro 0.4 nozzle.json | 10 ++++--- 15 files changed, 88 insertions(+), 50 deletions(-) diff --git a/resources/profiles/Artillery/filament/Artillery ABS.json b/resources/profiles/Artillery/filament/Artillery ABS.json index f16424112e..977451b6c2 100644 --- a/resources/profiles/Artillery/filament/Artillery ABS.json +++ b/resources/profiles/Artillery/filament/Artillery ABS.json @@ -49,22 +49,31 @@ "240" ], "fan_max_speed": [ - "80" + "20" ], "fan_min_speed": [ - "60" + "10" ], "fan_cooling_layer_time": [ - "80" + "30" ], "slow_down_layer_time": [ - "8" + "3" ], "filament_max_volumetric_speed": [ - "18" + "16" ], "temperature_vitrification": [ "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "close_fan_the_first_x_layers": [ + "3" ], "version": "2.0.2.0" } diff --git a/resources/profiles/Artillery/filament/Artillery PETG.json b/resources/profiles/Artillery/filament/Artillery PETG.json index c199304ca5..5e5a6bef53 100644 --- a/resources/profiles/Artillery/filament/Artillery PETG.json +++ b/resources/profiles/Artillery/filament/Artillery PETG.json @@ -29,10 +29,10 @@ "0.4" ], "hot_plate_temp": [ - "90" + "70" ], "hot_plate_temp_initial_layer": [ - "90" + "70" ], "inherits": "Artillery Generic PLA", "name": "Artillery PETG", @@ -43,28 +43,37 @@ "250" ], "nozzle_temperature_range_high": [ - "250" + "270" ], "nozzle_temperature_range_low": [ - "220" + "230" ], "fan_max_speed": [ - "80" + "40" ], "fan_min_speed": [ - "60" + "10" ], "fan_cooling_layer_time": [ - "80" + "30" ], "slow_down_layer_time": [ - "8" + "12" ], "filament_max_volumetric_speed": [ - "18" + "9" ], "temperature_vitrification": [ "220" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "overhang_fan_threshold": [ + "10%" + ], + "overhang_fan_speed": [ + "90" ], "version": "2.0.2.0" } diff --git a/resources/profiles/Artillery/filament/Artillery PLA Basic.json b/resources/profiles/Artillery/filament/Artillery PLA Basic.json index 028520bdeb..f0953d71fc 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Basic.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Basic.json @@ -49,7 +49,7 @@ "8" ], "filament_max_volumetric_speed": [ - "18" + "21" ], "temperature_vitrification": [ "190" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Matte.json b/resources/profiles/Artillery/filament/Artillery PLA Matte.json index 8028bae90c..ca2811a6cf 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Matte.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Matte.json @@ -49,7 +49,7 @@ "8" ], "filament_max_volumetric_speed": [ - "18" + "22" ], "temperature_vitrification": [ "190" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Silk.json b/resources/profiles/Artillery/filament/Artillery PLA Silk.json index a67d23e4fe..8b6521d783 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Silk.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Silk.json @@ -49,7 +49,7 @@ "8" ], "filament_max_volumetric_speed": [ - "18" + "12" ], "temperature_vitrification": [ "190" diff --git a/resources/profiles/Artillery/filament/Artillery PLA Tough.json b/resources/profiles/Artillery/filament/Artillery PLA Tough.json index a5a73e4d40..3b41976c91 100644 --- a/resources/profiles/Artillery/filament/Artillery PLA Tough.json +++ b/resources/profiles/Artillery/filament/Artillery PLA Tough.json @@ -31,10 +31,10 @@ "inherits": "Artillery Generic PLA", "name": "Artillery PLA Tough", "nozzle_temperature": [ - "210" + "220" ], "nozzle_temperature_initial_layer": [ - "210" + "220" ], "fan_max_speed": [ "80" @@ -49,10 +49,16 @@ "8" ], "filament_max_volumetric_speed": [ - "18" + "21" ], "temperature_vitrification": [ "190" + ], + "hot_plate_temp": [ + "65" + ], + "hot_plate_temp_initial_layer": [ + "65" ], "version": "2.0.2.0" } diff --git a/resources/profiles/Artillery/filament/Artillery TPU.json b/resources/profiles/Artillery/filament/Artillery TPU.json index ddab353347..7f149cfd8e 100644 --- a/resources/profiles/Artillery/filament/Artillery TPU.json +++ b/resources/profiles/Artillery/filament/Artillery TPU.json @@ -29,10 +29,10 @@ "0.4" ], "hot_plate_temp": [ - "70" + "45" ], "hot_plate_temp_initial_layer": [ - "70" + "45" ], "inherits": "Artillery Generic PLA", "name": "Artillery TPU", @@ -49,22 +49,28 @@ "200" ], "fan_max_speed": [ - "80" + "100" ], "fan_min_speed": [ - "60" + "100" ], "fan_cooling_layer_time": [ - "80" + "100" ], "slow_down_layer_time": [ "8" ], "filament_max_volumetric_speed": [ - "18" + "3.6" ], "temperature_vitrification": [ "190" + ], + "filament_density": [ + "1.22" + ], + "overhang_fan_threshold": [ + "95%" ], "version": "2.0.2.0" } diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json index a0bb01efd1..12353f4fdc 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json @@ -123,8 +123,8 @@ "0", "0" ], - "machine_pause_gcode": "M0", - "machine_start_gcode": "M140 S60\nM104 S160\nM190 S[first_layer_bed_temperature]\nM109 S{temperature_vitrification[0]}\nM211 S0\nG1 Z-0.2 F1000\nG1 X285 F3600\nG1 X260 F3600\nG1 X285 F3600\nG1 X260 F3600\nG1 X230 F3600\nG1 X260 F3600\nG1 X230 F3600\nG1 X260 F3600\nG92 E0\nG1 Z1.0 F3000 ; move z up little to prevent scratching of surface\nG1 X180 Y303 Z0.1 F6000.0 ; move to start-line position\nG1 X70 Y303 Z0.1 F1000.0 E15.0 ; draw 1st line\nG1 X70 Y303 Z0.2 F1000.0 ; move to side a little\nG1 X180 Y303 Z0.2 F1000.0 E30.0 ; draw 2st line\nG92 E0 ; reset extruder\nG1 E-2 Z5 F1800 ; move z up little to prevent scratching of surface\nG92 E0\nG1 Y300 F1800\nM211 S1\nM140 S[first_layer_bed_temperature];\nM104 S[first_layer_temperature];", + "machine_pause_gcode": "M600", + "machine_start_gcode": "M140 S60\nM104 S140\nM190 S[first_layer_bed_temperature]\nM109 S{temperature_vitrification[0]}\nG28;\nNOZZLE_WIPE\nM140 S[first_layer_bed_temperature];\nM104 S[first_layer_temperature];\nDRAW_LINE_ONLY", "machine_unload_filament_time": "0", "manual_filament_change": "0", "max_layer_height": [ diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json index 1159c5fa8f..a58df16c22 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json @@ -126,8 +126,8 @@ "0", "0" ], - "machine_pause_gcode": "M0", - "machine_start_gcode": "M140 S60\nM104 S160\nM190 S[first_layer_bed_temperature]\nM109 S{temperature_vitrification[0]}\nM211 S0\nG1 Z-0.2 F1000\nG1 X225 F3600\nG1 X200 F3600\nG1 X225 F3600\nG1 X200 F3600\nG1 X160 F3600\nG1 X200 F3600\nG1 X160 F3600\nG1 X200 F3600\nG92 E0\nG1 Z1.0 F3000 ; move z up little to prevent scratching of surface\nG1 X180 Y243 Z0.1 F6000.0 ; move to start-line position\nG1 X70 Y243 Z0.1 F1000.0 E15.0 ; draw 1st line\nG1 X70 Y243 Z0.2 F1000.0 ; move to side a little\nG1 X180 Y243 Z0.2 F1000.0 E30.0 ; draw 2st line\nG92 E0 ; reset extruder\nG1 E-2 Z5 F1800 ; move z up little to prevent scratching of surface\nG92 E0\nG1 Y240 F1800\nM211 S1\nM140 S[first_layer_bed_temperature];\nM104 S[first_layer_temperature];", + "machine_pause_gcode": "M600", + "machine_start_gcode": "M140 S60\nM104 S140\nM190 S[first_layer_bed_temperature]\nM109 S{temperature_vitrification[0]}\nG28;\nNOZZLE_WIPE\nM140 S[first_layer_bed_temperature];\nM104 S[first_layer_temperature];\nDRAW_LINE_ONLY", "machine_unload_filament_time": "0", "manual_filament_change": "0", "max_layer_height": [ diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json index cb4cc5cd00..b4ffad9ee5 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json @@ -126,8 +126,8 @@ "0", "0" ], - "machine_pause_gcode": "", - "machine_start_gcode": "M140 S60\nM104 S140\nM190 S60\nM109 S{temperature_vitrification[0]}\nG28;\nDRAW_LINE\nM140 S[first_layer_bed_temperature];\nM104 S[first_layer_temperature];", + "machine_pause_gcode": "M600", + "machine_start_gcode": "M140 S60\nM104 S140\nM190 S[first_layer_bed_temperature]\nM109 S{temperature_vitrification[0]}\nG28;\nNOZZLE_WIPE\nM140 S[first_layer_bed_temperature];\nM104 S[first_layer_temperature];\nDRAW_LINE_ONLY", "machine_unload_filament_time": "0", "manual_filament_change": "0", "max_layer_height": [ diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json index 9802de101b..151ac268f9 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json @@ -126,8 +126,8 @@ "0", "0" ], - "machine_pause_gcode": "", - "machine_start_gcode": "M140 S60\nM104 S140\nM190 S60\nM109 S{temperature_vitrification[0]}\nG28;\nDRAW_LINE\nM140 S[first_layer_bed_temperature];\nM104 S[first_layer_temperature];", + "machine_pause_gcode": "M600", + "machine_start_gcode": "M140 S60\nM104 S140\nM190 S[first_layer_bed_temperature]\nM109 S{temperature_vitrification[0]}\nG28;\nNOZZLE_WIPE\nM140 S[first_layer_bed_temperature];\nM104 S[first_layer_temperature];\nDRAW_LINE_ONLY", "machine_unload_filament_time": "0", "manual_filament_change": "0", "max_layer_height": [ diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json index cd1de6b7e4..9212dec2ad 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json @@ -1,6 +1,7 @@ { "from": "system", "instantiation": "true", + "inherits": "fdm_process_common", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "alternate_extra_wall": "0", @@ -66,12 +67,12 @@ "infill_jerk": "9", "infill_wall_overlap": "15%", "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "45", + "initial_layer_infill_speed": "30", "initial_layer_jerk": "9", "initial_layer_line_width": "0.5", "initial_layer_min_bead_width": "85%", "initial_layer_print_height": "0.25", - "initial_layer_speed": "45", + "initial_layer_speed": "30", "initial_layer_travel_speed": "100%", "inner_wall_acceleration": "0", "inner_wall_jerk": "9", @@ -156,7 +157,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", + "single_extruder_multi_material_priming": "1", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", @@ -279,5 +280,6 @@ "70" ], "xy_contour_compensation": "0", - "xy_hole_compensation": "0" + "xy_hole_compensation": "0", + "top_bottom_infill_wall_overlap":"15%" } diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json index bab2091fdd..7f9ce95a63 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json @@ -1,6 +1,7 @@ { "from": "system", "instantiation": "true", + "inherits": "fdm_process_common", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "alternate_extra_wall": "0", @@ -66,12 +67,12 @@ "infill_jerk": "9", "infill_wall_overlap": "15%", "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "35", + "initial_layer_infill_speed": "30", "initial_layer_jerk": "9", "initial_layer_line_width": "0.5", "initial_layer_min_bead_width": "85%", "initial_layer_print_height": "0.25", - "initial_layer_speed": "45", + "initial_layer_speed": "30", "initial_layer_travel_speed": "100%", "inner_wall_acceleration": "3000", "inner_wall_jerk": "9", @@ -156,7 +157,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", + "single_extruder_multi_material_priming": "1", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", @@ -279,5 +280,6 @@ "70" ], "xy_contour_compensation": "0", - "xy_hole_compensation": "0" + "xy_hole_compensation": "0", + "top_bottom_infill_wall_overlap":"15%" } diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json index e72063a41c..8fc299a1ad 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json @@ -1,6 +1,7 @@ { "from": "system", "instantiation": "true", + "inherits": "fdm_process_common", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "alternate_extra_wall": "0", @@ -66,12 +67,12 @@ "infill_jerk": "9", "infill_wall_overlap": "15%", "initial_layer_acceleration": "0", - "initial_layer_infill_speed": "50", + "initial_layer_infill_speed": "30", "initial_layer_jerk": "9", "initial_layer_line_width": "0.5", "initial_layer_min_bead_width": "85%", "initial_layer_print_height": "0.2", - "initial_layer_speed": "50", + "initial_layer_speed": "30", "initial_layer_travel_speed": "100%", "inner_wall_acceleration": "0", "inner_wall_jerk": "9", @@ -156,7 +157,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", + "single_extruder_multi_material_priming": "1", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", @@ -279,5 +280,6 @@ "70" ], "xy_contour_compensation": "0", - "xy_hole_compensation": "0" + "xy_hole_compensation": "0", + "top_bottom_infill_wall_overlap":"15%" } \ No newline at end of file diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json index 59b4db5f67..532b5b551d 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json @@ -1,6 +1,7 @@ { "from": "system", "instantiation": "true", + "inherits": "fdm_process_common", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "alternate_extra_wall": "0", @@ -66,12 +67,12 @@ "infill_jerk": "9", "infill_wall_overlap": "15%", "initial_layer_acceleration": "0", - "initial_layer_infill_speed": "50", + "initial_layer_infill_speed": "30", "initial_layer_jerk": "9", "initial_layer_line_width": "0.5", "initial_layer_min_bead_width": "85%", "initial_layer_print_height": "0.2", - "initial_layer_speed": "50", + "initial_layer_speed": "30", "initial_layer_travel_speed": "100%", "inner_wall_acceleration": "0", "inner_wall_jerk": "9", @@ -156,7 +157,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", + "single_extruder_multi_material_priming": "1", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", @@ -279,6 +280,7 @@ "70" ], "xy_contour_compensation": "0", - "xy_hole_compensation": "0" + "xy_hole_compensation": "0", + "top_bottom_infill_wall_overlap":"15%" } From 128b8bb988e53b21e1c3278d41978047a3043302 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Sun, 18 Aug 2024 04:38:46 +0100 Subject: [PATCH 124/151] Gap fill tool tip clarification & filter_out_gap_fill setting visibility (#6468) * Gap fill tool tip clarification * Gap fill text and parameter visibility update --- src/libslic3r/PrintConfig.cpp | 21 ++++++++++++++++----- src/slic3r/GUI/ConfigManipulation.cpp | 5 ----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 4814c8f518..232ff029eb 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -817,12 +817,22 @@ void PrintConfigDef::init_fff_params() def = this->add("gap_fill_target", coEnum); def->label = L("Apply gap fill"); def->category = L("Strength"); - def->tooltip = L("Enables gap fill for the selected surfaces. The minimum gap length that will be filled can be controlled " + def->tooltip = L("Enables gap fill for the selected solid surfaces. The minimum gap length that will be filled can be controlled " "from the filter out tiny gaps option below.\n\n" "Options:\n" - "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" - "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" - "3. Nowhere: Disables gap fill\n"); + "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces for maximum strength\n" + "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only, balancing print speed, " + "reducing potential over extrusion in the solid infill and making sure the top and bottom surfaces have " + "no pin hole gaps\n" + "3. Nowhere: Disables gap fill for all solid infill areas. \n\n" + "Note that if using the classic perimeter generator, gap fill may also be generated between perimeters, " + "if a full width line cannot fit between them. That perimeter gap fill is not controlled by this setting. \n\n" + "If you would like all gap fill, including the classic perimeter generated one, removed, " + "set the filter out tiny gaps value to a large number, like 999999. \n\n" + "However this is not advised, as gap fill between perimeters is contributing to the model's strength. " + "For models where excessive gap fill is generated between perimeters, a better option would be to " + "switch to the arachne wall generator and use this option to control whether the cosmetic top and " + "bottom surface gap fill is generated"); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("everywhere"); def->enum_values.push_back("topbottom"); @@ -2539,7 +2549,8 @@ void PrintConfigDef::init_fff_params() def = this->add("filter_out_gap_fill", coFloat); def->label = L("Filter out tiny gaps"); def->category = L("Layers and Perimeters"); - def->tooltip = L("Filter out gaps smaller than the threshold specified"); + def->tooltip = L("Don't print gap fill with a length is smaller than the threshold specified (in mm). This setting applies to top, " + "bottom and solid infill and, if using the classic perimeter generator, to wall gap fill. "); def->sidetext = L("mm"); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index a9fd41f8b8..02c82e06bb 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -515,11 +515,6 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co apply(config, &new_conf); } - // Orca: Hide the filter out tiny gaps field when gap fill target is nowhere as no gap fill will be applied. - bool have_gap_fill = config->opt_enum("gap_fill_target") != gftNowhere; - toggle_line("filter_out_gap_fill", have_gap_fill); - - bool have_perimeters = config->opt_int("wall_loops") > 0; for (auto el : { "extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "detect_thin_wall", "detect_overhang_wall", "seam_position", "staggered_inner_seams", "wall_sequence", "outer_wall_line_width", From 569c09a2f4a6ca263119493366a8c94999bd092f Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 18 Aug 2024 16:30:45 +0800 Subject: [PATCH 125/151] Fix crash on Linux when switching between tabs in printer config (#6437) * Fix crash due to the wrong window get returned in `PointCtrl` (SoftFever/OrcaSlicer#6261). `getWindow()` must return the control itself, not its child control; otherwise the child control will be destroyed twice when the tab container is destroyed. * Fix another crash on Linux caused by unused undo button --- src/slic3r/GUI/Field.cpp | 1 + src/slic3r/GUI/Field.hpp | 3 ++- src/slic3r/GUI/Tab.cpp | 8 ++++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 58c123fb18..4347e18cc3 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -1944,6 +1944,7 @@ void PointCtrl::BUILD() y_textctrl->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { e.Skip(); propagate_value(y_textctrl); }), y_textctrl->GetId()); // // recast as a wxWindow to fit the calling convention + window = dynamic_cast(x_input); sizer = dynamic_cast(temp); x_textctrl->SetToolTip(get_tooltip_text(X+", "+Y)); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index ef1b6024b0..3b974b7ad0 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -506,6 +506,7 @@ public: TextInput* x_input{nullptr}; TextInput* y_input{nullptr}; + wxWindow* window{nullptr}; void BUILD() override; bool value_was_changed(wxTextCtrl* win); // Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER @@ -524,7 +525,7 @@ public: x_textctrl->Disable(); y_textctrl->Disable(); } wxSizer* getSizer() override { return sizer; } - wxWindow* getWindow() override { return dynamic_cast(x_textctrl); } + wxWindow* getWindow() override { return window; } }; class StaticText : public Field { diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 1360ccd7d1..f529b09c13 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -266,7 +266,7 @@ void Tab::create_preset_tab() set_tooltips_text(); add_scaled_button(m_top_panel, &m_undo_btn, m_bmp_white_bullet.name()); - add_scaled_button(m_top_panel, &m_undo_to_sys_btn, m_bmp_white_bullet.name()); + //add_scaled_button(m_top_panel, &m_undo_to_sys_btn, m_bmp_white_bullet.name()); add_scaled_button(m_top_panel, &m_btn_search, "search"); m_btn_search->SetToolTip(_L("Search in preset")); @@ -347,7 +347,7 @@ void Tab::create_preset_tab() }); m_undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(); })); - m_undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(true); })); + //m_undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(true); })); /* m_search_btn->Bind(wxEVT_BUTTON, [](wxCommandEvent) { wxGetApp().plater()->search(false); });*/ // Colors for ui "decoration" @@ -1034,10 +1034,10 @@ void Tab::update_undo_buttons() { // BBS: restore all pages in preset m_undo_btn-> SetBitmap_(m_presets->get_edited_preset().is_dirty ? m_bmp_value_revert: m_bmp_white_bullet); - m_undo_to_sys_btn-> SetBitmap_(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock); + //m_undo_to_sys_btn-> SetBitmap_(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock); m_undo_btn->SetToolTip(m_presets->get_edited_preset().is_dirty ? _L("Click to reset all settings to the last saved preset.") : m_ttg_white_bullet); - m_undo_to_sys_btn->SetToolTip(m_is_nonsys_values ? *m_ttg_non_system : m_ttg_value_lock); + //m_undo_to_sys_btn->SetToolTip(m_is_nonsys_values ? *m_ttg_non_system : m_ttg_value_lock); } void Tab::on_roll_back_value(const bool to_sys /*= true*/) From 586e50e71bb60e5a9320296a5a548ac5059f1888 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 18 Aug 2024 16:31:39 +0800 Subject: [PATCH 126/151] Fix "Open Containing Folder" on Linux (#6469) Fix "Open Containing Folder" on Linux (SoftFever/OrcaSlicer#6449) --- src/slic3r/GUI/GUI.cpp | 11 +++++++++-- src/slic3r/GUI/GUI.hpp | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI.cpp b/src/slic3r/GUI/GUI.cpp index 9d4e394213..841c5fcd21 100644 --- a/src/slic3r/GUI/GUI.cpp +++ b/src/slic3r/GUI/GUI.cpp @@ -547,7 +547,7 @@ void desktop_open_datadir_folder() #endif } -void desktop_open_any_folder( const std::string path ) +void desktop_open_any_folder( const std::string& path ) { // Execute command to open a file explorer, platform dependent. // FIXME: The const_casts aren't needed in wxWidgets 3.1, remove them when we upgrade. @@ -558,7 +558,14 @@ void desktop_open_any_folder( const std::string path ) #elif __APPLE__ openFolderForFile(from_u8(path)); #else - const char *argv[] = {"xdg-open", path.data(), nullptr}; + + // Orca#6449: Open containing dir instead of opening the file directly. + std::string new_path = path; + boost::filesystem::path p(new_path); + if (!fs::is_directory(p)) { + new_path = p.parent_path().string(); + } + const char* argv[] = {"xdg-open", new_path.data(), nullptr}; // Check if we're running in an AppImage container, if so, we need to remove AppImage's env vars, // because they may mess up the environment expected by the file manager. diff --git a/src/slic3r/GUI/GUI.hpp b/src/slic3r/GUI/GUI.hpp index 765406583f..db8cf06a61 100644 --- a/src/slic3r/GUI/GUI.hpp +++ b/src/slic3r/GUI/GUI.hpp @@ -83,7 +83,7 @@ extern void login(); // Ask the destop to open the datadir using the default file explorer. extern void desktop_open_datadir_folder(); // Ask the destop to open one folder -extern void desktop_open_any_folder(const std::string path); +extern void desktop_open_any_folder(const std::string& path); } // namespace GUI } // namespace Slic3r From 904354f90827b1efa31b79202d4b7f9816c59020 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Sun, 18 Aug 2024 11:32:56 +0300 Subject: [PATCH 127/151] Remove unused parameter from place_seam method (#6421) --- src/libslic3r/GCode.cpp | 3 +-- src/libslic3r/GCode/SeamPlacer.cpp | 2 +- src/libslic3r/GCode/SeamPlacer.hpp | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index d95a7227c1..0fa6bbcbba 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4493,8 +4493,7 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou float seam_overhang = std::numeric_limits::lowest(); if (!m_config.spiral_mode && description == "perimeter") { assert(m_layer != nullptr); - bool is_outer_wall_first = m_config.wall_sequence == WallSequence::OuterInner; - m_seam_placer.place_seam(m_layer, loop, is_outer_wall_first, this->last_pos(), seam_overhang); + m_seam_placer.place_seam(m_layer, loop, this->last_pos(), seam_overhang); } else loop.split_at(last_pos, false); diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index e447d12d87..6927cb554b 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1486,7 +1486,7 @@ void SeamPlacer::init(const Print &print, std::function throw_if_can } } -void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, +void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, const Point &last_pos, float& overhang) const { using namespace SeamPlacerImpl; const PrintObject *po = layer->object(); diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index a8a04cc672..8a973d0d8a 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -143,7 +143,7 @@ public: void init(const Print &print, std::function throw_if_canceled_func); - void place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos, float& overhang) const; + void place_seam(const Layer *layer, ExtrusionLoop &loop, const Point &last_pos, float& overhang) const; private: void gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info); void calculate_candidates_visibility(const PrintObject *po, From 26b49497bf9262a64e1c46cbe8695c0841829e43 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:54:58 +0100 Subject: [PATCH 128/151] Overhang tooltips updates (#6501) * Overhang tooltips updates --- src/libslic3r/PrintConfig.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 232ff029eb..df57b11ed1 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1052,7 +1052,16 @@ void PrintConfigDef::init_fff_params() def = this->add("slowdown_for_curled_perimeters", coBool); def->label = L("Slow down for curled perimeters"); def->category = L("Speed"); - def->tooltip = L("Enable this option to slow printing down in areas where potential curled perimeters may exist"); + def->tooltip = L("Enable this option to slow down printing in areas where perimeters may have curled upwards." + "For example, additional slowdown will be applied when printing overhangs on sharp corners like the " + "front of the Benchy hull, reducing curling which compounds over multiple layers.\n\n " + "It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the " + "print speed slow enough that perimeter curling does not happen. If printing with a high external perimeter speed, " + "this parameter may introduce slight artifacts when slowing down due to the large variance in print speeds. " + "If you notice artifacts, ensure your pressure advance is tuned correctly.\n\n" + "Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is " + "applied even if the overhanging perimeter is part of a bridge. For example, when the perimeters are 100% overhanging" + ", with no wall supporting them from underneath, the 100% overhang speed will be applied."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool{ false }); @@ -1105,7 +1114,10 @@ void PrintConfigDef::init_fff_params() def = this->add("bridge_speed", coFloat); def->label = L("External"); def->category = L("Speed"); - def->tooltip = L("Speed of bridge and completely overhang wall"); + def->tooltip = L("Speed of the externally visible bridge extrusions. " + "\n\nIn addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, " + "it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge " + "or an overhang."); def->sidetext = L("mm/s"); def->min = 1; def->mode = comAdvanced; @@ -1114,7 +1126,7 @@ void PrintConfigDef::init_fff_params() def = this->add("internal_bridge_speed", coFloatOrPercent); def->label = L("Internal"); def->category = L("Speed"); - def->tooltip = L("Speed of internal bridge. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."); + def->tooltip = L("Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."); def->sidetext = L("mm/s or %"); def->ratio_over = "bridge_speed"; def->min = 1; From e9ad66152c12628fea73952007e135a77b7f2400 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Thu, 22 Aug 2024 17:01:30 +0100 Subject: [PATCH 129/151] Wiki updates v2 & adaptive PA documentation (#6491) * Wiki home page fix links and readme update to link to wiki * Update README.md * Fixed developer reference links * Update linkage from slicer settings to Wiki for layer height, line width and seam settings * adaptive PA documentation * Update adaptive-pressure-advance.md * updated screenshots * formatting * Update adaptive-pressure-advance.md * Update adaptive-pressure-advance.md * Update adaptive-pressure-advance.md * Include adaptive PA link --- README.md | 6 ++ doc/Home.md | 11 +- doc/adaptive-pressure-advance.md | 176 +++++++++++++++++++++++++++++++ doc/developer-reference/Home.md | 4 +- src/slic3r/GUI/Tab.cpp | 34 +++--- 5 files changed, 207 insertions(+), 24 deletions(-) create mode 100644 doc/adaptive-pressure-advance.md diff --git a/README.md b/README.md index 3f492a5835..415d0d371e 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,12 @@ Orca Slicer is an open source slicer for FDM printers. - More granular controls - More features can be found in [change notes](https://github.com/SoftFever/OrcaSlicer/releases/) +# Wiki +The wiki below aims to provide a detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer. + +The wiki is work in progress so bear with us while we get it up and running! + +**[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)** # Download diff --git a/doc/Home.md b/doc/Home.md index fce4bc3480..998edbe409 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -8,13 +8,13 @@ The Wiki is work in progress so bear with us while we get it up and running! The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results. ### Quality Settings -- [Layer Height Settings](print_settings/quality/quality_settings_layer_height) -- [Line Width Settings](print_settings/quality/quality_settings_line_width) -- [Seam Settings](print_settings/quality/quality_settings_seam) +- [Layer Height Settings](quality_settings_layer_height) +- [Line Width Settings](quality_settings_line_width) +- [Seam Settings](quality_settings_seam) - [Precise wall](Precise-wall) ### Speed Settings -- [Extrusion rate smoothing](print_settings/speed/extrusion-rate-smoothing) +- [Extrusion rate smoothing](extrusion-rate-smoothing) ### Multi material - [Single Extruder Multimaterial](semm) @@ -30,8 +30,9 @@ The below sections provide a detailed settings explanation as well as tips and t ## Printer Calibration The guide below takes you through the key calibration tests in Orca - flow rate, pressure advance, print temperature, retraction, tolerances and maximum volumetric speed - [Calibration Guide](./Calibration) +- [Adaptive Pressure Advance Guide](adaptive-pressure-advance) ## Developer Section - [How to build Orca Slicer](./How-to-build) - [Localization and translation guide](Localization_guide) -- [Developer Reference](./developer-reference/Home) +- [Developer Reference](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Home.md) diff --git a/doc/adaptive-pressure-advance.md b/doc/adaptive-pressure-advance.md new file mode 100644 index 0000000000..3528352b4a --- /dev/null +++ b/doc/adaptive-pressure-advance.md @@ -0,0 +1,176 @@ +# Adaptive Pressure Advance + +This feature aims to dynamically adjust the printer’s pressure advance to better match the conditions the toolhead is facing during a print. Specifically, to more closely align to the ideal values as flow rate, acceleration, and bridges are encountered. +This wiki page aims to explain how this feature works, the prerequisites required to get the most out of it as well as how to calibrate it and set it up. + +## Settings Overview + +This feature introduces the below options under the filament settings: + +1. **Enable adaptive pressure advance:** This is the on/off setting switch for adaptive pressure advance. +2. **Enable adaptive pressure advance for overhangs:** Enable adaptive PA for overhangs as well as when flow changes within the same feature. This is an experimental option because if the PA profile is not set accurately, it will cause uniformity issues on the external surfaces before and after overhangs. It is recommended to start with this option switched off and enable it after the core adaptive pressure advance feature is calibrated correctly. +3. **Pressure advance for bridges:** Sets the desired pressure advance value for bridges. Set it to 0 to disable this feature. Experiments have shown that a lower PA value when printing bridges helps reduce the appearance of slight under extrusion immediately after a bridge, which is caused by the pressure drop in the nozzle when printing in the air. Therefore, a lower pressure advance value helps counteract this. A good starting point is approximately half your usual PA value. +4. **Adaptive pressure advance measurements:** This field contains the calibration values used to generate the pressure advance profile for the nozzle/printer. Input sets of pressure advance (PA) values and the corresponding volumetric flow speeds and accelerations they were measured at, separated by a comma. Add one set of values per line. More information on how to calibrate the model follows in the sections below. +5. **Pressure advance:** The old field is still needed and is required to be populated with a PA value. A “good enough” median PA value should be entered here, as this will act as a fallback value when performing tool changes, printing a purge/wipe tower for multi-color prints as well as a fallback in case the model fails to identify an appropriate value (unlikely but it’s the ultimate backstop). + +Adaptive PA settings + + +## Pre-Requisites + +This feature has been tested with Klipper-based printers. While it may work with Marlin or Bambu lab printers, it is currently untested with them. It shouldn’t adversely affect the machine; however, the quality results from enabling it are not validated. + +**Older versions of Klipper used to stutter when pressure advance was changed while the toolhead was in motion. This has been fixed with the latest Klipper firmware releases. Therefore, make sure your Klipper installation is updated to the latest version before enabling this feature, in order to avoid any adverse quality impacts.** + +Klipper firmware released after July 11th, 2024 (version greater than approximately v0.12.0-267) contains the above fix and is compatible with adaptive pressure advance. If you are upgrading from an older version, make sure you update both your Klipper installation as well as reflash the printer MCU’s (main board and toolhead board if present). + +## Use case (what to expect) + +Following experimentation, it has been noticed that the optimal pressure advance value is less: + +1. The faster you print (hence the higher the volumetric flow rate requested from the toolhead). +2. The larger the layer height (hence the higher the volumetric flow rate requested from the toolhead). +3. The higher the print acceleration is. + +What this means is that we never get ideal PA values for each print feature, especially when they vary drastically in speed and acceleration. We can tune PA for a faster print speed (flow) but compromise on corner sharpness for slower speeds or tune PA for corner sharpness and deal with slight corner-perimeter separation in faster speeds. The same goes for accelerations as well as different layer heights. + +This compromise usually means that we settle for tuning an "in-between" PA value between slower external features and faster internal features so we don't get gaps, but also not get too much bulging in external perimeters. + +**However, what this also means is that if you are printing with a single layer height, single speed, and acceleration, there is no need to enable this feature.** + +Adaptive pressure advance aims to address this limitation by implementing a completely different method of setting pressure advance. **Following a set of PA calibration tests done at different flow rates (speeds and layer heights) and accelerations, a pressure advance model is calculated by the slicer.** Then that model is used to emit the best fit PA for any arbitrary feature flow rate (speed) and acceleration used in the print process. + +In addition, it means that you only need to tune this feature once and print across different layer heights with good PA performance. + +Finally, if during calibration you notice that there is little to no variance between the PA tests, this feature is redundant for you. **From experiments, high flow nozzles fitted on high-speed core XY printers appear to benefit the most from this feature as they print with a larger range of flow rates and at a larger range of accelerations.** + +### Expected results: + +With this feature enabled there should be absolutely no bulge in the corners, just the smooth rounding caused by the square corner velocity of your printer. +![337601149-cbd96b75-a49f-4dde-ab5a-9bbaf96eae9c](https://github.com/user-attachments/assets/01234996-0528-4462-90c6-43828a246e41) +In addition, seams should appear smooth with no bulging or under extrusion. +![337601500-95e2350f-cffd-4af5-9c7a-e8f60870db7b](https://github.com/user-attachments/assets/46e16f2a-cf52-4862-ab06-12883b909615) +Solid infill should have no gaps, pinholes, or separation from the perimeters. +![337616471-9d949a67-c8b3-477e-9f06-c429d4e40be0](https://github.com/user-attachments/assets/3b8ddbff-47e7-48b5-9576-3d9e7fb24a9d) +Compared to with this feature disabled, where the internal solid infill and external-internal perimeters show signs of separation and under extrusion, when PA is tuned for optimal external perimeter performance as shown below. +![337621601-eacc816d-cff0-42e4-965d-fb5c00d34205](https://github.com/user-attachments/assets/82edfd96-d870-48fe-91c7-012e8c0d9ed0) + + +## How to calibrate the adaptive pressure advance model + +### Defining the calibration sets + +Firstly, it is important to understand your printer speed and acceleration limits in order to set meaningful boundaries for the calibrations: + +1. **Upper acceleration range:** Do not attempt to calibrate adaptive PA for an acceleration that is larger than what the Klipper input shaper calibration tool recommends for your selected shaper. For example, if Klipper recommends an EI shaper with 4k maximum acceleration for your slowest axis (usually the Y axis), don’t calibrate adaptive PA beyond that value. This is because after 4k the input shaper smoothing is magnified and the perimeter separations that appear like PA issues are caused by the input shaper smoothing the shape of the corner. Basically, you’d be attempting to compensate for an input shaper artefact with PA. +2. **Upper print speed range:** The Ellis PA pattern test has been proven to be the most efficient and effective test to run to calibrate adaptive PA. It is fast and allows for a reasonably accurate and easy-to-read PA value. However, the size of the line segments is quite small, which means that for the faster print speeds and slower accelerations, the toolhead will not be able to reach the full flow rate that we are calibrating against. It is therefore generally not recommended to attempt calibration with a print speed of higher than ~200-250mm/sec and accelerations slower than 1k in the PA pattern test. If your lowest acceleration is higher than 1k, then proportionally higher maximum print speeds can be used. + +**Remember:** With the calibration process, we aim to create a PA – Flow Rate – Acceleration profile for the toolhead. As we cannot directly control flow rate, we use print speed as a proxy (higher speed -> higher flow). + +With the above in mind, let’s create a worked example to identify the optimal number of PA tests to calibrate the adaptive PA model. + +**The below starting points are recommended for the majority of Core XY printers:** + +1. **Accelerations:** 1k, 2k, 4k +2. **Print speeds:** 50mm/sec, 100mm/sec, 150mm/sec, 200mm/sec. + +**That means we need to run 3x4 = 12 PA tests and identify the optimal PA for them.** + +Finally, if the maximum acceleration given by input shaper is materially higher than 4k, run a set of tests with the higher accelerations. For example, if input shaper allows a 6k value, run PA tests as below: + +1. **Accelerations:** 1k, 2k, 4k, 6k +2. **Print speeds:** 50mm/sec, 100mm/sec, 150mm/sec, 200mm/sec. + +Similarly, if the maximum value recommended is 12k, run PA tests as below: + +1. **Accelerations:** 1k, 2k, 4k, 8k, 12k +2. **Print speeds:** 50mm/sec, 100mm/sec, 150mm/sec, 200mm/sec. + +So, at worst case you will need to run 5x4 = 20 PA tests if your printer acceleration is on the upper end! In essence, you want enough granularity of data points to create a meaningful model while also not overdoing it with the number of tests. So, doubling the speed and acceleration is a good compromise to arrive at the optimal number of tests. +For this example, let’s assume that the baseline number of tests is adequate for your printer: + +1. **Accelerations:** 1k, 2k, 4k +2. **Print speeds:** 50mm/sec, 100mm/sec, 150mm/sec, 200mm/sec. + +We, therefore, need to run 12 PA tests as below: + +**Speed – Acceleration** + 1. 50 – 1k + 2. 100 – 1k + 3. 150 – 1k + 4. 200 – 1k + 5. 50 – 2k + 6. 100 – 2k + 7. 150 – 2k + 8. 200 – 2k + 9. 50 – 4k + 10. 100 – 4k + 11. 150 – 4k + 12. 200 – 4k + +### Identifying the flow rates from the print speed + +As mentioned earlier, **the print speed is used as a proxy to vary the extrusion flow rate**. Once your PA test is set up, change the gcode preview to “flow” and move the horizontal slider over one of the herringbone patterns and take note of the flow rate for different speeds. +![337939815-e358b960-cf96-41b5-8c7e-addde927933f](https://github.com/user-attachments/assets/21290435-6f2a-4a21-bcf0-28cd6ae1912a) + + +### Running the tests + +Setup your PA test as usual from the calibration menu in Orca slicer. It is recommended that the PA step is set to a small value, to allow you to make meaningful distinctions between the different tests – **therefore a PA step value of 0.001 is recommended. ** + +**Set the end PA to a value high enough to start showing perimeter separation for the lowest flow (print speed) and acceleration test.** For example, for a Voron 350 using Revo HF, the maximum value was set to 0.05 as that was sufficient to show perimeter separation even at the slowest flow rates and accelerations. + +**If the test is too big to fit on the build plate, increase your starting PA value or the PA step value accordingly until the test can fit.** If the lowest value becomes too high and there is no ideal PA present in the test, focus on increasing the PA step value to reduce the number of herringbones printed (hence the size of the print). + +PA calibration parameters + +Once setup, your PA test should look like the below: + +PA calibration test 1 +Pa calibration test 2 + +Now input your identified print speeds and accelerations in the fields above and run the PA tests. + +**IMPORTANT:** Make sure your acceleration values are all the same in all text boxes. Same for the print speed values and Jerk (XY) values. Make sure your Jerk value is set to the external perimeter jerk used in your print profiles. +Now run the tests and note the optimal PA value, the flow, and the acceleration. You should produce a table like this: + +calibration table + +Concatenate the PA value, the flow value, and the acceleration value into the final comma-separated sets to create the values entered in the model as shown above. + +**You’re now done! The PA profile is created and calibrated!** + +Remember to paste the values in the adaptive pressure advance measurements text box as shown below, and save your filament profile. + +pa profile + + +### Tips + +#### Model input: + +The adaptive PA model built into the slicer is flexible enough to allow for as many or as few increments of flow and acceleration as you want. Ideally, you want at a minimum 3x data points for acceleration and flow in order to create a meaningful model. + +However, if you don’t want to calibrate for flow, just run the acceleration tests and leave flow the same for each test (in which case you’ll input only 3 rows in the model text box). In this case, flow will be ignored when the model is used. + +Similarly for acceleration – in the above example you’ll input only 4 rows in the model text box, in which case acceleration will be ignored when the model is used. + +**However, make sure a triplet of values is always provided – PA value, Flow, Acceleration.** + +#### Identifying the right PA: + +Higher acceleration and higher flow rate PA tests are easier to identify the optimal PA as the range of “good” values is much narrower. It’s evident where the PA is too large, as gaps start to appear in the corner and where PA is too low, as the corner starts bulging. + +However, the lower the flow rate and accelerations are, the range of good values is much wider. Having examined the PA tests even under a microscope, what is evident, is that if you can’t distinguish a value as being evidently better than another (i.e. sharper corner with no gaps) with the naked eye, then both values are correct. In which case, if you can’t find any meaningful difference, simply use the optimal values from the higher flow rates. + +- **Too high PA** + +![Too high PA](https://github.com/user-attachments/assets/ebc4e2d4-373e-42d5-af72-4d5bc81048ca) + +- **Too low PA** + +![Too low PA](https://github.com/user-attachments/assets/6a2b6f16-7d1c-46d0-91f3-def5ed560318) + +- **Optimal PA** + +![Optimal PA](https://github.com/user-attachments/assets/cd47cf2e-dd32-47b4-bbdd-1563de8849be) diff --git a/doc/developer-reference/Home.md b/doc/developer-reference/Home.md index bdbb65e07a..ab08f2cbfe 100644 --- a/doc/developer-reference/Home.md +++ b/doc/developer-reference/Home.md @@ -2,5 +2,5 @@ This is a documentation from someone exploring the code and is by no means complete or even completely accurate. Please edit the parts you might find inaccurate. This is probably going to be helpful nonetheless. -- [Preset, PresetBundle and PresetCollection](./Preset-and-bundle) -- [Plater, Sidebar, Tab, ComboBox](./plater-sidebar-tab-combobox) +- [Preset, PresetBundle and PresetCollection](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Preset-and-bundle.md) +- [Plater, Sidebar, Tab, ComboBox](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/plater-sidebar-tab-combobox.md) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index f529b09c13..9ac8e4bdbd 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2010,23 +2010,23 @@ void TabPrint::build() auto page = add_options_page(L("Quality"), "custom-gcode_quality"); // ORCA: icon only visible on placeholders auto optgroup = page->new_optgroup(L("Layer height"), L"param_layer_height"); - optgroup->append_single_option_line("layer_height"); - optgroup->append_single_option_line("initial_layer_print_height"); + optgroup->append_single_option_line("layer_height","quality_settings_layer_height"); + optgroup->append_single_option_line("initial_layer_print_height","quality_settings_layer_height"); optgroup = page->new_optgroup(L("Line width"), L"param_line_width"); - optgroup->append_single_option_line("line_width"); - optgroup->append_single_option_line("initial_layer_line_width"); - optgroup->append_single_option_line("outer_wall_line_width"); - optgroup->append_single_option_line("inner_wall_line_width"); - optgroup->append_single_option_line("top_surface_line_width"); - optgroup->append_single_option_line("sparse_infill_line_width"); - optgroup->append_single_option_line("internal_solid_infill_line_width"); - optgroup->append_single_option_line("support_line_width"); + optgroup->append_single_option_line("line_width","quality_settings_line_width"); + optgroup->append_single_option_line("initial_layer_line_width","quality_settings_line_width"); + optgroup->append_single_option_line("outer_wall_line_width","quality_settings_line_width"); + optgroup->append_single_option_line("inner_wall_line_width","quality_settings_line_width"); + optgroup->append_single_option_line("top_surface_line_width","quality_settings_line_width"); + optgroup->append_single_option_line("sparse_infill_line_width","quality_settings_line_width"); + optgroup->append_single_option_line("internal_solid_infill_line_width","quality_settings_line_width"); + optgroup->append_single_option_line("support_line_width","quality_settings_line_width"); optgroup = page->new_optgroup(L("Seam"), L"param_seam"); - optgroup->append_single_option_line("seam_position", "seam"); - optgroup->append_single_option_line("staggered_inner_seams", "seam"); - optgroup->append_single_option_line("seam_gap","seam"); + optgroup->append_single_option_line("seam_position", "quality_settings_seam"); + optgroup->append_single_option_line("staggered_inner_seams", "quality_settings_seam"); + optgroup->append_single_option_line("seam_gap","quality_settings_seam"); optgroup->append_single_option_line("seam_slope_type", "seam#scarf-joint-seam"); optgroup->append_single_option_line("seam_slope_conditional", "seam#scarf-joint-seam"); optgroup->append_single_option_line("scarf_angle_threshold", "seam#scarf-joint-seam"); @@ -2038,10 +2038,10 @@ void TabPrint::build() optgroup->append_single_option_line("seam_slope_steps", "seam#scarf-joint-seam"); optgroup->append_single_option_line("scarf_joint_flow_ratio", "seam#scarf-joint-seam"); optgroup->append_single_option_line("seam_slope_inner_walls", "seam#scarf-joint-seam"); - optgroup->append_single_option_line("role_based_wipe_speed","seam"); - optgroup->append_single_option_line("wipe_speed", "seam"); - optgroup->append_single_option_line("wipe_on_loops","seam"); - optgroup->append_single_option_line("wipe_before_external_loop","seam"); + optgroup->append_single_option_line("role_based_wipe_speed","quality_settings_seam"); + optgroup->append_single_option_line("wipe_speed", "quality_settings_seam"); + optgroup->append_single_option_line("wipe_on_loops","quality_settings_seam"); + optgroup->append_single_option_line("wipe_before_external_loop","quality_settings_seam"); optgroup = page->new_optgroup(L("Precision"), L"param_precision"); From e880c6aa4a2dd7becd23d95710acf2e32ba3ee40 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 23 Aug 2024 00:01:59 +0800 Subject: [PATCH 130/151] New YOLO flow rate calibration (#6479) * update flow rate calibration tests * more tweaks * add YOLO linear flow rate calibration * update name * revert line_width changes * Make it 2mm thick and change some text * Update YOLO test: Normal YOLO for 0.01 step Perfectionist YOLO for 0.005 step * add space --- .../calib/filament_flow/Orca-LinearFlow.3mf | Bin 0 -> 256455 bytes .../filament_flow/Orca-LinearFlow_fine.3mf | Bin 0 -> 440536 bytes .../filament_flow/flowrate-test-pass1.3mf | Bin 142970 -> 151525 bytes .../filament_flow/flowrate-test-pass2.3mf | Bin 123202 -> 142301 bytes resources/calib/filament_flow/pass1.3mf | Bin 0 -> 151500 bytes src/slic3r/GUI/MainFrame.cpp | 22 ++++- src/slic3r/GUI/Plater.cpp | 91 +++++++++++++----- src/slic3r/GUI/Plater.hpp | 2 +- 8 files changed, 85 insertions(+), 30 deletions(-) create mode 100644 resources/calib/filament_flow/Orca-LinearFlow.3mf create mode 100644 resources/calib/filament_flow/Orca-LinearFlow_fine.3mf create mode 100644 resources/calib/filament_flow/pass1.3mf diff --git a/resources/calib/filament_flow/Orca-LinearFlow.3mf b/resources/calib/filament_flow/Orca-LinearFlow.3mf new file mode 100644 index 0000000000000000000000000000000000000000..8be217beb575eb277abefb6b63c1cfc06d1891be GIT binary patch literal 256455 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

    );j-h88%hA#g@g=;AB18jQ{3h?(U z5e>5;MtlOFv*}~d#Pr!M=121zStWunb<)iQS8a~(TYY13C#t9jPr}2X#?MMl$&%Iv zh~`x(A}y33bA&Q2|+s|29L^0%%6q@lm*o2PKFAYGKK~55{+6 z#2KzRca;?5C{D?ky=>MYnMJGfx zH3&8bKb=-OP5QA!&^Mf&d!EkMOsyi`*bu}8AmyG10iR^I(mpDCW;FWD>bFmMcS&b6 z*Z81An?3aJWfF^>liWlkiihK(s~>fl@2i1IGVs1#_|G7`i+haw&y)m`i9#BpO~w+# zMWL_*`c^b8pRC>AU@X?bk`jy23b65TXCj+~5yTN1AvKr_tCG36R|~|OGPeRhn;*-f zZEY%pql~OwN<|C?qg#;sTe$%35SwI-d>aQmsGIO z0@f!PfRRru0p>dsK$Ual18ZAI9dLh+2INCPQ@{c!yaY^Y3CH|uy!qXUm|$jBoqxd6 zHnI-veFT;^dS9R@aDcejIfELgQ+XFSPztPLatVnuuK$xjqf?e`oJFT%V!)o+s?$Gf z09LQW=931%kX2Qn&~ho+?SB%6)nvDz0AP>dMc9lJ{0{()?*{5;T!?+DoCgxOOaGhj z0JKhi0Eqg$rFhuxaJ?>YXS+KFa{PBq0uDUiPULs~n_chxcRE1ebAP-3?~&kb6Z7Hv znBeWM*Y@8_mG7u8*4x$Ux@{BB8}Q4FZ)ct?=%3?8)k0WAWyt>m>lL+Lvl2XTiJ(yH z@3+e!7|4RYyY~M-uTC7N@ah5$A(;3X`zwH)UoV5O(hWUEp99?hdfgLg(>_#tnqN{rV`cP>O`#5i*~xL^7LsAMjXw_PkmM^idq?6VSfOcS$=Tho z5XIt$G(_N^{+G1wqhU-<@nYX2p*w%VwRI=$ZhxZc>}gmy7d4T>jGLW(kX?)_^)qd@U{_ z#E-EIS+iu8F*|@@IaZ|6=OLa)6Qppfb zV_X(vVd6vrc#Xm3azFXh6=6h+Q~ddAU|9pm%m~VB@yp#rG+5PfAz&;%OGDgra~%WK z5_Jg&)ME&MLnh1V1q2MVdw;@_#ZTvpL*BIS;Y3kd68Hfvf;}bqTBH;7;k{)yib$$L zhG0U=nVo&qRz z79B-d6CBWDII!ul#)K*l+{Yi@aBPrYXU0?s=G6%15yqsNR^-`eaNqM$6fC>0+;HQ0RjeRMR;zhp$-qa@uv^g#}@3*f!dZJ4#P7; zNG=w*y3%fxI!jf&AvJI%eRsqkoR5$QXN(Z__B8kp2Vf);f%{J%VJnd_(f%+Q{X#wf zM``{HbeUyS{G9iDV=1SRQjVH58k-?9Jf#9tqm+LEE{rdmY*_-oZzlJm1HoSs+3pLs zq2jzIGh#b=6OG&VakO)cD0+3gC)=N`k*(Gajd)kTsrm<4E&E~5EPSeFdGJ|7x$o{8 zKAol7xO80>GoGn`$DT!@XrgIdgdE80Z!(pK9;lI-FL) za9=-@9r>5cKi1wq0iC&3|4c2QruyN+cqn<|!6$|b4z#pIOZ!iYvi)wSaq#cd>r8)s zxqyLf%u^}W$W=W4@}O%p0m6MuXkNv{e!na!%zVzh!7MF#QoynjptK*@dXBE|gFTb7b#Vl2PxMPpX6_EB%;`5d zABfPFprw`bkPd~$O2%TZef=#S&+%X%E_>xcD+|Jv{?0gQ{RkJcN$hXW+XFi$SawQZ z^C0o4skc)9`PcT`q{%>{o(&9U?;UDK{ooRtJj#5f!Ov$+9PR^yU(L;XBhIuQlh!|5 zANdhf=c?dYsh!??bg#3FG8A=XjK8BpE25@6 ztBf^%%LHR>V>y%a=RI#g% z%wag(b?eI+WNl&lx|^i2y&P=tNrqa&e&#bu6lGv_6Rle0@&{K-rsiX}87x=Yuv);N z$T!$fOGBl?G@$2Bezxv{>izoi$n6K#8oE|fWiWX0S%D5;hJaRq7j37e+?VsQrgZ6A zy&_iD#e#`@V2O_WJ6p`^MsfS?6Y`w(byII3nmB%6Y6W>?4&!hrpG-Jw4y$kBgRs9D z$ygR;aOEq{&ew$#cj$&zjJi~+kd%ons07NMkXLw)@-qmwfBxMskYbiFz1ZRY%z`;i z57|#@O_AhJ&Nz0z{BW&hO-$XXZUk_XSaVt@95UkofA_0e@>%9fjHPlQ za`rb;8_stWFiU(2(~ z^X@I$r{Fks#F8>z= z#KFHC`=E>2Nkj9sh39dW`w*I;Tjtcg*#1Ph=E_Rh3ysvK(EgJ(_cEcPY8(oXGYbkL z2aSBEGv$lz-f5?h%(avjo~`fC&qH!-OEL3LC3W+YDszI5JJ>ch@yY&Z(Pl~09}t{n=6gn4YKL*ZZc_0)csgG(v?OW>16%by3>x( z$ED;Ze7LN3YL$(Mv?rJW;>r+M` zu+cf{`L?l@Y4$FWOlhF5xh3Eo&P*ON_87?KSYq_`uQju7)n7A5>b0vH@@41Wrn0dj zxRwfY2-b0e{j6hv!@Nq>&vWQG50nrqq9KXv)M>`dbe&1^2wrd-=GU_L673DMm7iQCoAzPDD-| z+@nD2=>vB3L9|!?v-1S8S?hcETdK%ahHZB-f+H5j6y-b;cI&OZDdF4?+E@ zgLT%TJ$pf7rm;&dXelUw7rIecRrTGXei%`IpE2F%mg6D)$cl&Xxh^AUcVT_%G_{%E zh=$fKh^V($8ryUrrxZNV_5&g6HL+Np8&n(}Ba3F#u^pw+0?yeT=3zRPj$?g5x2j}1WsXo1#hYDYKR%6c$?Ksd z)>Vdx?9k`J#=yucOXQ%E!WFe*y?(u0oMc(c!)dC-b?8CX z?9sM1Hk-(v02L#-oBo`fpCf16IkeJre>_lQG*XI{qwueGx-3h=5^Zsdu}BZhez>KUQVNob(9@u(ry=yHR_WSd$;vpPG)6k{3de$zLIkFkf2SP6O?VO&sgtBSd#tJ)Ih&eexcAn4uVp5UAz)$s;yN3&O+t(%bz$;d@gkErQe?i?vDkpa z{rdSUne7;vGW=y?;YQj72e-@z#WOm|ol{v8{aCGk+_9gfn-erRXf^+7nK{+5wxNOo zPz?=o#Q~3f2Jdr<9jH- zlw>_5SXZ%qMQJ` z>V2}wL|mHHc1(JUZ^{v*6N|b#9ycS=8h_x{Tn)<6sUd2ag#b)HU1y2{sO43-wPXs+hV0S6pB+Q?(PnS;_j}+-L+6C99#}| za45yCxVyWUHHTAYQ$+t>CDAjBs^3q9l6?0f|wH2^&Onr zK+?RGK`wfsTZb=lCA5*k#HCk>LN~#(W@I@$+~bitB40?V;dBP8g;K|hVJB17=+GWc@k^peJcV^e`!@I*UPRkWQu7?;>Tgu18KZqLp-ILjwcsQhf|D<%} z8<$?nDRyK4eXxucPX!(;Vdll3?xjQO%9e?w(`{aLG$unl`MDY;ULab!tAJ6)mrHMZ z+23l%UQk>S%LJ)k|EkXQF!hFb>9zfsCv=?9s?REEzxM8Qea7tj9rYRT@b|$Y3jg#@ zt;H-SQc^t*6Xlr#G*J{V>tz`S4v7Qb`sI2M2o+Rs1aW3CAW?aYhGMuN{Avb^E-LZ2 zxWa9tLv7zxBN%GjCrhi8lI91Om2A038Pi7FXPWI=O5nm-)j*{ut_(f1V+|+-?;Z#8#72~n$njjg(b5ZYIWh| znnxW$^o9+cCvyWSd~_;2KRIuR!bO4vMno3gxOcJ5F@R~vgsf8WYGLU_IqIlXS3Ey> zLoD2WG_jyJQH$__3k_)j3bdAZ$8LI<+2)*X8yh7KR_Eq znTL{;vG4Z-g3lXhg!@hB(Kc3ZP!dFX1*9Hih+1^vrCJ=i?IHF%&OKD70ed!?^_@@e z9u`z@J$-yxEUmJqfLv+ft=2CRm#vk}>CHqTN8-Rm%GSKYNy6Lpg9I;`1v8sBNDXJc zj@f{>-pDcICs^A{@uu!n)FLehgKvS+o31M*gV6w+50g(X#>ac}GPwV|5UXTBRpKai zCczl8yB==`^+HhVngw$(gQq^uoC2x@Z~|?SULt@ZfN_%AP|flRa?5os3W}p&OrEyq z0o;Wj5MsCf`kiuO;hyLF3SzT9b2*{_5NsQZwsGPXe1Y0bYF0x?mkEA!CaH37<>M>2 zsyHu}!#o38H;G{SQj)M!b5>RG7Tu_Xd=dtDQP}foE*C%2MHk-^4#Gjwr~ydl!a%q- zfbNL;U?6^EBHAY^6;UqT^bw-5K6I8?Zu~c_d4x9MQ$~;*aPRhtDht(iUicLk_oD>d zWPKRqwvoPzJGhKt!&Jcp;@6S2qTr$;ych7`i%by0v)~E@ZEurraxUDw;vqz`>d2L( zYL~fwlk;+9k(Bm|18|7X+$#>)6piH12T^BKVdnLY*+8ac z_8xPBy$J0u5@|q#(sy4HP-$7WwsRsusWO%&qb|6yNzL9itD@F}Mjrfst#QTIQnVzb2lf2&a^L{O&Et>PA2>D%?AKjw)C60G$34QchRA3xd|qoV7=Oh9a50U z#RB#bD_Kc!n&$=7%M1kuKmmcjXV8w>aIKMYF*Rs3Bk;P8mn<~~LXSt{>niU8u?Qaq*Q*w_k zmt%`jxm~xXq|y7EuGMnoMZDvtu<6+D@BnCr?vjw}VX8$&lg1Zr0DKd_DU`5fFL}qZ zg0TwJ6HO87Y$;DEpUz1R$-ksHN&XlGIHxDfPva%CM0f!&TG~YWq7pwkGe(wAHpu6o zCCL%)Ru4fnVpY6l%y5=?%X5oMRJcc2xBy5|)p!o!i9;zNKrO?QD&)E%IAe#~1mH+4 z^J%DGH^#$BvmrI*acLW4Mmg;6f-a-bMqvQJiwBr>VP4S@UUH@Fg%>Y~dIyFuJ%^^# z)`M{J32%_AEsGtBaCj$5Qi}jSF0-URr#Grw_H;cTnq2ZlU{E&lgjgux^9SMkS;y(Q z>9!Jul+>V>`()aC_}@(WjX0Gsl!jC(oHn(h56g-)BY@tYI(bX95U`S#5Hrrt7CXub}J|&nsB=sK}WL@H8(89{a>L_L`%KQVEOqXmXQudf2y! zmJ?$|*t&(?9Y$VnE(M~~u^9${;w_VU{SRpU=*FXJI&_cMsyG9eCyD>4rvpZQ*T(|@ zBWa1|JPn-X|=QpqO;q8aiopc{AE!(Alm{EvpEfj>26w!qdx`W2LSOv$>n$LfWEBtmg7~k>?Ll$ z!h{#=kR55xJo4Q{<+Iv!8@K8w1PXx}rf+{C zu;H8uQJesDtdgq$^1h=RYr-<=%1cT$Y985j$|=xJSY>GEY80KYiwfj@GiwT67J3lLkhb#syLI<>#R*! zvTO7qRtX{d3K9fJ@gNe5Kbu`)a&TywN_N>Nu|nk~B3FX2EIFJB`e-xSbO-~)3axr_58U`OoP53 zoJ79QmR`0Ay=0yl@&N|_moz{=m@xVDE2L0=o9!Iu-VQ1#x7+$oaDBH0Odj#MH?{Ac zC289a1~_s8Qdx-u&O@(dKo^_vzYECPBE4$0B#o=YqM(6a252hjuM65hPYhWBsS3n4>xnhJPO=$IG&Pf0 zGXgBEKGfFu_L^5j?%G>u3Y;Rwr|*=&E?`W{U|- z7*^e{Jd|MtT8c!RC;UNHp!Zh5De;{e0tG~mR7PqO!Saz%q**w??umlue{fHrF%PUB zk~K0NsbkPXmz6RK;Fzoj`A`!=Yt$cif27_Hmp-MMlV$}i5$Hqd#80B*2gVfNQ#D;#K8m6{ZY;eu#)$3B-OlXT30uZ z$S3xT2$0aQ1fps?kuB~LDOuI9wGMD)U2HFMOPR%{;qJ3PWXu|HkK1YFqhf>1bJwH+ zN<#HRH`k(MtCnz5L;{qgW;2wfZe=@qVG3TH{Bis26TAFkEBZhSzCW!+0sT63SwO2I zXS_bC*yXAfsY|h^;wIT6${#V9^)Omz`w^BhIYrbJ-guHjXov=F+0_#yOPN?bQxpE% zIOO-ryfSSv9+@qGqjdrAt`RNaEkLqYylvI2hBk4})0dp=MIvb3>>Y84FRidkoFXXO zf(EGcFcZB$%2$F5(0ikOU*Mb#^qDoG2z3yC1x=-+>whz%>k@HUqdlas*UERYi_tZ{ zKl@dU&~d80kG8?5U2#tWRtumfRlEx1LG*ZH^|C%WY9|-WuF^iebsz8Tc&T1(&q5Wl z{9e8#^wJJ-qau~T=pXzedjzjo-4Us&pyR}A_I!JvSr0(j{hw%!`2V5{6aS_D->B4n zkUF6?KAey$(RAxP#`9wO@BbD(W+a;H>3qDG@hrR=aZS0^nf4e?sXF7Ey~tPp z+m`#>K>v;{{Pc4*3E;J{`4yZYW8XI!E|*n50J~7qf6>=1E!q-@_9&?2cfam%t0N09 zuSjD7*#CnxPRWcnj+NO36$$}2hbK*iK`F1BkkWYsaJO_gDIND(l!^hsB~dpkLkG&y z59?+L*vG*KaH{T$o)8EjaJVMNr&T=lE6Uj{^CIy(GLKBu<1JPGI&k|V>H;044mUP6 zt#S5>*lxN&FDfUaR&URrD1r~WB`56qASW+}nH?$VSENnh*`y!{Foon5+Ikjg2h-za za-*?~|20-AJy)$6yey;z$T)%R@FYC5XxVC&v+J<_ITq08fA#Zv5q31wx>Cv~6lUzs zti94aKaH4DM0hlzJqiHoXD3}jlGRbbKzA#>9J#tL3-V)A9mMNcCW9xa7BQd zL@LaSpJAvY-$@6AQ!Snf8&kwD2%=|_kzJs96CyJsvYC-V18RWXcr1amL%>Wve(5tHFSXmCc zbKO>sd!vL2$o0GRswc3$T8=9K@OKYSCP0eo`+so> zeBeq$jU(1<%077sAJB;@Yx!1LcCr{M3Wiw}C&Y`Z$(LImd{UxsqCm4UDkm4JJ*w6r zZ&%8YBu3>IDTB%RyjaKW5WbXJEs_Hy0FeC!c<7NKyf)j3n`F^||WN+pM6GDr8 zHK>80YoM^6=7>+~A780PRA>X39G1n)<;Eb*GA2FuJ{ma-H+lckJ!@wPf3exy2s(wx9Uq$j&ovagyos#tYA-vlY<>ZHeJ|6wig+QiL?hC<5a<|kUb>-OuJTQ4ao zAZjuu=D{TaZ%_&A<8JAaSI)vfp2yH|X`LI>rrx4i1|s>ri>nbY*5^?BJ=zxdMoDS@ zW$LZtSY>O#-}bH*$mM)O`){`n1S^&Qr&RU9BI|h3+!C)P*%0T&X~c{Us}IUaSFZc0 z{1NGS5dFkqt@7C{qL%f5=t@oA)_{JFf`)%iyg(qNw^Lb0%Cv`G9Ms@)MYS(HuKic> z7`lBy&M{GjH58N>!hB}vW^8GzQcIyU+#5x`mE8Y8ZEg}B|IW9lb}P17Za8sS8FR$y zN1S^-^{ycuUT7Wr4T1bjZG}(no_h<9f>Yl?oO>x17VpPjyV@pIFH&?#u#mqA_6tu^ zIa-Jf64tiN9DX!X)~T3IC)0uQyI!(?X@R=y27`_d_^l1Y>xS>=XX7X&#t)k*tG6d- zZYy~-JUDT7x|5Tivd#7m6pEWgwYaVk=5drG0VZH`~b*hJ5 zF(7-(oOkK+)#|K1GFXntF31#~bBT#J;W`_5=f6y7wxYgr*y!JBuJ|%egnbAyUrpiw z7SH*$XJ%7P9H@?+%G*=JM|4g-&3y?0stP7=f{wgXXUrEsVeEcc~V69Jr5g$r;dq69K3=Gh#> zh*HCd4sIvkF864SSkXGjKDFk>iVH~h$0;QbX(O|%MswQ#)mdQ3tC?HVfiw)$V<1_C za#qD_F3X=R65^Pa-KYa&?^f=y<6c z&=d*KNdfFQr1r>l2Q5BB&@if%-$dGX$aK4jp<%4Ca^ft(@Xqz z6Ghx?DA`~=mUxp#S*|1iNm-32vTU9@E^!)c7=jsCDbU%=#hW)6DsosAm{aXVn%CPtv7QkukIO_@gDE4Z* z8dE=%LekV@BmsqB1~(Q@;U+%k2RJ|1Hqyy*FZxO8LZpErr8zILa<#%y4AGt-oT!-_ zzAr+wU5S$tH)Vk5#kAY<2+4uh*5XmGSF=!St5N0{v?W)Xi_JfF6O@Y>{thCXFbFT71vUd?qXfCgG zJ*_`IA-4~Oz{c5hN4)H81Vi*zJx^_4gL!=0Wt|6LFT)BJm?{5P7=MtzC%`hkAAHLG z^x-yQLtxyzdB%Hv0Ie(NDEXKO<)d3+C^VO21;oj6uEKKO-4q3;tX8+fS`@-A6~dD^ zXOKe%Oak^QDo-c6P8OhT4#0PfSX0aYfMykHURaV%1(=88+gr*f-9-Rs_3t=XZs_Fr6oMN?lxqDV^HN=b74Kivmt_ zXS4GE3afVWi;ZS{j}dLnzh{~JyG!gv+ZViv*SH69Ds>3ov`kMOvS#eloSNdn0hOc% zml;_C?zdO+k6Gj`*j8Xr(EG?S(-Kfw@1y`?#a?fK%WRwTTt$sjfta&5IhpSmU_>J7 z)5=@II8;6sPd!s-m{9pHso+e|5YYb6gUL4tD3VppZB;_~+$Gg^IvqAu^VcG!)h34t8qUG6#B%gsEt@&L}) z_fHS=New51-)&_v^-c`oA$@dbiRMCp*(d-A%O(0O5BOB6DidI~(eX02N~fweUs;m% z+2cRz*$`{Zn}~nqdRu;x$^XSfEFJG|d%={Bk6OKu-%>At)FivIUA7hk5ZC#^F&*ve z57IXe6Aip_Zar`Jr*qXGbR9c9(2axjb*=ZZOCPa%Wjru8rK_`I3)D`4&| z@2x2zpUW)G^SznB_3081^0o~N;0hvHCyz_mEz^FxG;)(H5136(c5Y8%MKZ;+_e@@% z00{0Nym?7>X|ZM-C|5&BM>FHJXlJ=1M4U&D|nsP zY@VY~2h8~WI<4>oJj$V%P4)!l@&Ng#vW@wqMkb*8qf0){`m~|x6R!}z^FX$V!b*<& zJo=XbnUC2&DV=+P5=S4{Thu74FZtp;flrqvBpdkdnVTY##$h=G3O7!YoT5R3!;HZD z+~LllrPGZnT&%yyQm9o!$>Re4=d9lwfq`}hgn;*Ykuj(l!3Egxn!?ccv%8;$J_9sD zsmi6nhh82sI9_|o}tnhT^Wyx;JYa#R3Z^`?Q+pVb<-pR@dIJ6;lh6D6& z@lk@qd)=>=aeVZrXy*PV;A2`_Ft{<8Cp-d^bdS^8W0nu*E9`|)}&in-Rog=C^VuZt)yf6%A9Z!(~gCbaqLe)UEcV+ z7OYaV>Y=JaZ%LVKfCP+ce~@{cag1{uLX=cKd0arT#7$|=Kx{EGI$Bot%2d{3R#%-U zx{-`~g2gv8-XY!;7Pk~xI~n)S)@sPvAk9KOQgubLX;)oabVb7M=o#y1Ux8I)Tw12T zDQcDtEfz=zJM}5Ok*G*WbZA~%r>#Dx0?eGG!A)|gTCr(j0d|feX4QoYTo$aB#JBO&mZI z2~hlPak$T}s|$;*n8Q|S2d{}l+{hzONE`Pr4mXoUsc(v|95ZZeb!I98M-kqF`TT_L z7_LYEyq{?w&yQpGrg{L1KRUOGh#bkkzp+!LaV1K9WXu@!89%5@KYWB-(aq?fRvUAE z5}>WMr(j`OVeDfW7oc^hVQ2tM{zP+=&G(TeZr}}%#**M`KHz1qImN`NwJ1S(p@3nI z9);}jTf`i4zNQKBDrjEX(7bMUaz#JIrT6!-^xga+rK#*#_kB<$`_VJt*6zq@8m4sD zk*W`9`)y*c2919lkjDZI;Ne{4qCOEzOdCo^R?X2%klQYPZ`B-0qMBiwrI!#nUiyPl z!huSNd;GYBkvkZ*_8tB?XKW#B0v5CzGFX9nDPQKEwak;n+EvO;wYf6Di&iawaHzzD zyxgrq-9g~JSsyR1$_DCq zRS9Ewr>yl)b&|e1*_B?U!l!ms2Xz9UQ8WF)f9%*_=KnC`tT%VAp^ndFZ4NAb9nO== zsJ_qk7*cXmO?7B`V9nKYoC!K!t7f|RaP|2_a7Evafj2j(g!m*0$|e8xPfZ>Q5#d&u z`2!gdVP5sNX8AHVs9}2IFT>keV=2X5F8hR!UXyldG46H-`z&}C6tPcVu^qw|))?TV zjX6;^#o2FQNb3+i^NXn}tuXZv1dmXqzOi}`M2^_b3D0#%c{d!qpIymcPO8t^SZaZ! zFB$JTWYiH#yWCW&6xIVDy!|C|<`$B^s5)HD)`}&uPub{QQwVoMJ*9p3-}V-^@3OmY`t-7_VSA67wNU5D zr-N$uA#oP4U%HDo)o#Ti^SbYHd>Dz;<9wDLML#MRdc3|Fb(?ue2c`)G`LpAwC zHCIo(bP(nv|A3mk;OHgQY5`X!wf}P;akQ3HX8B#;@!jsu(#(bp{#+U=HC30Uis)Gm z|2va&AHS3cM=7Z%>oOQ{JdCEYGD_;f8;W#!XBQc1D-&rxo<@qT-{9Mkfd)nzs%6+M z9qvm8%V@2yKQY6P zNzW8XNeh%o8N)qj<+6}hQa+{ytCRN<*~B&*EUU3RBpEcsd8jpYIrKsBrN>{?n^a=@ z*<4$Qag>@TpJEvc0lr8dLy2TTt*q`0&DciH0xDyPX|Nj0s=<3ANkQA=wCh7XlU z?b^qgo{#+^&r#z??O+TKAWivm{`cG_R`;qm2Dw8x2X2WPxteXespXmPdDg^Qh82bN z+ol`+0DHn`#5yc&!9-JK+?esB%l5k+1{4T?A;q`Oqad`(ww$|O)xe;Ds!xZ;#vi4`@qYRQvu!fz z$U&O#KqltWjPDy`Q-pEl8${bShVsv`9acGiRizPOMl5u zo{juz`uE8JaI>gi5q^XqRj<>W;`s!G23U!`b+7T7$m5UfOPS`=rI$^*-E>L5nW{#b z+CF?vu_0;uTk9JmTZ>=fd+?N3Be$&5SJ80K1~M{ib(E zmKm%h^Mz*kz-;BW#N<^Ilv8YlUK*M?|E|kP>y%a;HQEYu3NsREIO;gf2#92D+?J~q zz@?^G=yw32O|_}P&v`w(S+Zm5~Jy5jL5;CFE}bkXj8gOWI=| z?Ye+6wBJ_>Bxv9$JMDjQbWQ9!r2{58v9IK_0pHfUY@evNfyO@mJut}c)=MjZF5Joa zghaqerDJ9is*gI{rQR~?E&bdFSOP26JbzU7^!aB@NM$LltJsx{tj1o0CL(BqU;3Z~ z>~ggm>c-Y`-H#zrE5(<~%{SXgdln;u1TR0d_)M>+>WSjab7m$o&dP5(NYMu91qjy{ zREmq%-(r1&6~=_^kN~~IT@9PHYv@7gFSwqfCb@koqWnj*q_M=l2gV&`-3tCo@$=k6 z45KLb+{5>4qvFHJhO1A46Psx5H=6@xkmyaea`SgnoQr_U z8NHZcjrGeVHBCvz`Z{jPXqVPwZ#6tJ-Dk^}kiM#Y4iQkC%oJM3LaX%( zESNhIBKYi+=4vP8heg4e`GFqW4aZMsIw`xMz$Oa zdXrsu*?vW6VD6 z`21NgY{n1k!x*ny!fH3t-{fFZGmo2+#P1%)Ne_ORQ#Wf3r8x*qq}g27s%~~9$r)i) zFlB;*+cwb%MYsFY*L>v!`dD+>P~B^8D+wA!%)z&zvSq`qwU@81a zWC{Z*VJVg*lWY|`Z`Ay;nDpDctq`fR>uS!r?Ttsb^JpWa74^&cxC{DmTyax|r)i=; zUFC@131_de(0W|q?`u4aAP7ZzA=#ak@fwIOzL?*_^0Pv>$5zEXpFK!4A?!Mch*!(I z&s<|9=>?vNwwmbR6NWd=i zvCY#@FK>px56fDvG~y>F_PERi6?M5icL0r!i^`OsBH4+1<=c$g_TV_D z4vcS-?^SwM5bg9MI<*1Qu3VLZV$QLM+J;j49vH#il5-t^*=ia^<#HCqQ%Ocje^_4&a;hI<(M7yZy*%@I0DGB;Kvp>Jb%kC~eNyMFSTX*M4YL>MA)Lo^~Q8~t|6EQmHmgJGe3KVpaCW~4Rc zYhdwCKZ|MXn##xLhH|{Md_Ur&H5T{aw!N7BnY!4Bx-jBU2ITbVS92KDz2$q!_Sr`8 z8(CjfbPuA{J5l!1ZMiJ5`s)Ra!drQp^zc?R{Aj)e7Lsm{3?cN|wX&uh-`l@y9it?Y z99AI-AKjXlo@!QoKEKzAw=H2t$K1!{^>6o2n4?6~6;wTBn2nBJ$4A!3A{cLl{~1)_ zz72QY5`-S_CE&V&0oHU&^d-@~5W`@Pz<5*~NfpPR4aZod)DbsmwW8YyooQz3*)S;& zb~PNZCW}VGI1XOyOKmz13#wrEyn3P{4}z+EZHWxmn>V=XXQE~q3aUx;!+MBlm0U0Q z#{pV@1Sz77QA2DhC276(xzG5kXCqem(LvOXNP~SNjeAF2CooXWb1{(xJxYxa2(A>!vk&LoJ*Yh*uG%4==4JqQ_xvN**GDcnF*g9V(I(6+8Rk z>$oUStzc1dvqGusd%${^VrQwz2z?)5hy#d?$87trU3Y!p4m@mjt%|2{$6&&HIcewl z+UXK#?8SxPw<3Q|?H``@at{kk!swJjp+Vo@loM-pMxj1j+EkCV>2wic-&w{z4y#sy&fP8k!|?|H5%UevzcS?BGc2il zG8cy{YWl`qk*mY$cTp!!hCb|dt%pFpCLCT_Hx65J)$6|A6YfO*&KfJdb%TrKMs3Np zUA@&IpmGE?iyxh&2q5E{qeexxFcSfdm5iFb7uz-c^JMN==kq1-N3i~dp$I6qxCo&O z1ZUC1u&+y4vy45;o2Y`>%VAAr%b$W5``+Op*i6ipqG#%JX)lJYpTTKsUX6L0UT~l7 zDyXXXQ!P=R8j3k4GoJ~^dji%v{gWKRJ^zir-eW?m99n{<5&n zb!zwb+4!ftiuls*3~9Mu)1Gmp`-0F0s`Ck>ldwQZ?3_|(91g8fv)U{&S>!G`d=A^P zGeU7AYekl}BpHoW6w9xce?wv1%}g)#zL2WM7ucrGXuD{e5g%PNN7ZYyx+l2imvNE)M3XHwHww3+T_JKMMWeH#MvwDS?wOcUv;$uV~kPz?gS&t5%O6)M||TU zGde|IJb|TH-#xF3IByOs#veY3##@sxMP&ObC7Mh`T={eWL1&>M-&JKN2G4=GNSY}B z@nMj?=UersD%lW5mAru5$|ExzmPmkv_c66Z|5&n+c^RVJa9n4Gp7U$t+-2x!_I=7& zvvTIF5B9NI$kUV}{Sa&zS%SPk*t1JMEA~E+R{f`c52>bz8n}t$ZOyL%X(EIM-R|v=*$OnT%pI*EfyQu%V#-vevw3TM|OXRAai3 z#eZye1uv;L1ZuY@u18>=6I1NgE}^8ZtbM+AfLKx|eWWdm#bie{Q0>zi~&DSjzUs0g1?Xsp34fpI(3NEJi~v z-o(%sVPgM|AjL@MqS}oI0!0@5b+XONNwW68|mFrw_Op?XA|2tQ5~g^oW{7xCY^Pv zex=z3&it?*Qk%9&=q2RwqvQw78o;~CI4qWe;pEqdyld? zNUvB(*ummyg)JdI#bvDrTcmT!Uy0N7iUjSbaJsuSd$*rX4FMtdh(ko{D0wt*{^sf0 z;jeQgHBIVB%Vsn#-|7?z)E9kTT-CL6T<7ZHE3uJDnSH;YVxA|;Pr<%Y@;k=9OZc)} zEdqJahoUBTSVNgWx+)H;v`tsIDt@egS@d6$ea)A%<5Ay{ke@!07a)QmHtFzg?$z?3v z%MvG#b%9)?GfHHTJbsyy6?BZA247o*H-mElO(Ft0)YS>4`JPbDyIo`x@4 zkw1Grh_Og?*E$603ru-#Y*JU8rQcfVA~GHEwlj$4e;Fcj?D{rE*Ylfx%Ul(?j&D#` zlt7w|7Wj|F36^-^1Y@Kr(PO93_D2`R>y1*ieZVIW>O7$a;zMsr;jfcryV4 zhZ<2>FnDxmT_0f`Ga;SMZ%WaQ+_ZjK5g+l0`a)?zah;M<9z&-aj)xJUOjC6o5`!M) z0RA39mRzWZ9W{oRWql7IzlowESq3G`;r3+}x$nHi!AULl&rur?9De z{*g*uIXj$tsn~=0k&^L%;p#WKwxP$L^VHB~8DNpcD(jq|ouwk+6x!-{G@|7z^{^4i zG{ly!xk;wTScq9lm`SEscm6v6buxweCPjPRCgJa#v8qE&O{S*!u_QRE(28XAZPQ#t z3(VjHcw6Cd8%e`7LE~qY*`Y|0C+;t&FQn6pga1FVJA&69V&s;`h(7BOUL;n{8JaqL zwsjBIL8||wq7x}uyBS`*drDbP6JTrV`7BNx>EuZ!^tLb~0S|E%^!1VZ41r=YM+S-@ z?Lj=FAS~aF5&!j!3+2CgLNM6>B>(@BeB~eWv&lccxC%BY(#7~CyE=i~rZ48q(PI z-bJy_+ge+d$t6Zypime`4E_uK)(vrN%^hYN2)7w%p+ZDjS-qdqlp$dGg5ksR9RXvS7Z!X1~r~lha-E ziaC^S>S!jCDRW)(O50b=^m(QB#x%CR@kC~Xy_dUv3RiMKD_^7f<-N*KFAkl-YWPtM-0gDJRZebE@Vn$qB`lNoXC2~SxQxtCwm}u zM7gI~;`D#jCMKJHHq>%?Gbj|S+Zb50A zsSe1Rq{9jRrmJhU=i9slC{U(48)`=*VYPpbH%}X-IYeg9>JvcmYSp>jD5Vr}Brl4i zCsCMe<;R-;qF(ORCxG&b0hP7V1kC1}GN9I$Vw613lR;(Zrw;n9?=91r`lO4B5_v+) z?mt$_%1ePsZf(scP59%Qzqcacs)j=n#AP~CJU}3QVFd`wpTko!r40f|teo9FP zO_~fLl0xS};0FmN1)xhb6an3+1_uLA58#4XovMWIsy^y|?;g?ZVn=y{ zQ&+pSRn%?+F>iu;iFz_=UQXTppSH&Q@1}&F&+T9Kgq}m%Ix>YGfk*ct{!dIV{Ld!O zV<*pEk54DjHz)o#bA78X#EZ#o8Mjms4znOkTd^F=uXX{FC+B>UIW&!j-*jL4{hD9` zJ|}S_kH%PpG4h=+y$di*a*q;Maao8}1RvJ%p}%*tjCm`PL}Ur%%-z8yz7Xgj27dY_ z8x>jPYm&r1sW_0;oRE)Mf~K+C!<;NETLQ>jT?!+%mm{*7BnG__#UDoqI#s6jj`}eLT3EOIQEXYhsz?qVn5d&$GfVIA6f2YT7mFE$eX+l zE=0KFy6-AIKET7aI3pq#kjJ0}s9Q|voZb%$(Lwr!LslAe5vu8oOfxB+^7zHd0=JP* zhd%8l-0)_xSY<=+(8aM3I5&|jVkn!V^!Y9aw|KL%*C(ux*>gcokpr#0?F<&jh+>hQHKsvTjs<`IFN91Pm5&@XN)(CS~_;;d7u{TAovwXM#6(8v2L{|Ut z+|e^!zU$O?)^8vTfrX9qn$s#j<9U0Oc{M6@u*?Dc4T&^Wz_ZVl>;@ydjCk!pu;qf> zTnm{$Ta;=23@Fp${v(~&Q)~Fv)e}nn(F1oLH_;Tgp4ha_mvGpM34)JC6fU`U5rx3L ziEPGhEmmqYZ(yiY&U(V#8%`LaE#7z6{&flgXOG&m4`%6VxFkBK&~>RY)N_Xj%|WAv zPb192ipZUQkZcQxSD-3&chcfnlr>P-MtyDRepg@YNZ<80N{n>Dv5(l`ZpV>F(xHNw zaHj}Qt`wlf!kbD%3V`W~a-Nxn#y!E|m?cg|nSIvXMYyKhNw)1cf0Oz(l~Y`j{?pI! zc{~c%?LRc#l=OBaAKRCOho5O6)Em3ypiT#tcD+5Mrcx978o0?=fAy7r|eC&k-=&ygehD}v8m`(t3v(fwO#On`WS zCxSXRulx{eNraSUS_w}3+Iwb?>_@G>?EQ{PoYiLRj2~mW_G(^O5n+GOY&10{nfwW! z_BV_ZGKFj2qJQkssM9nSMXki{zej<|Aq=!PJp1SRc8Mr>K}THWpx#7jkL?6#&)Fw8 zvcqym8$pF@!ngim?;x2VQA*lFqxCz-##O;`g0_V%aX{!du}+Ne^#uM#3f<2T>hrO1 zKm1P}yb`=_${_0cfgE+0L!);OSWA(swj-uQ6C^xQ7CxPDMWpVDmOnb2$}XYO#4xD` zEN$CjIFE%41iV`g8(b-~QsF9JYB}T^195mTptv)gQgyW77j3N5`mw;j%+sE+dzD6! z&;;{;j@JG&33R@YV3nSVK^#p-Heh}}q5vT2`h#rwXQcNnz8CQEzl9-@*L zA)Hj|rJVg%2(u*$3}Ivy{F{2(Ui+`k#CeWCW|@tEB9Uu99wyELrJPjx(XX$ue7|4O ztDhqY+n?#4@bBQ&8xA|@36eGUQNLhW2+v1Tf|{(eFv*oEzlB;uXDXqXuCH4-5zRT* zdYzEflW%*qS}Q~*zH_Z~Ne3M&>Je}EIc4DQ=H)#ReIeLA;?A~j_5M+tiSCw8ZPe`WK zP+{thul=R&(3K&nWU==JzIL3n09=>9-F;x5m=p^bLHOyW<8p%w^Aw71exC5S{4e#h zpP4w5O7&s*cbHA`q=8Kx3&FM2>t%{>=sYa5r{ing9a4M}eKxZ5{|{Af9S}wL2L2i# zCAl;LN_Th1N_QhADcurM5`s$#EZrp~y)-P+xd^Be zx6PHIFSSubwk|RU$W{C;mW{5RLU1g}BIT1?P*^ix@@22hoTzI22GMq+^YskmD3y2e z&$qdt^1mSO-ND>4?;V}+{PvThRF@$#kV!&vtoQ^ERB<)(D)5!q8G72GEB$HDtDn^| z1evz9AgXQuQ>WxgAMf(G*z1NUTO9Lg95f>T92@8N6i%kLYplhV&AHvZUsP274TtPg zJ+pqUimX*$?^w!e!+dw&^U8E-R622~^Y@FP!XCxyo~p1TMye3xAG&FAlpJq`@lene z$YbJX_B-T4PHtuBG99=xKIMWt0(%!?Tl8tkq(}xibpA5{Ej0Eiu3DHJ0){CvuQ4!Z zHBen~CJrm>QIszjRs51zsr%ta((jtx6S3Bp@FU_$Dpd{HO_AxALKInZuYkBrq8B6( z0W)ED%`gcS9sEWE{$${z8v`PPRy;gfuykRX*G=-nUMeq!g^#sJE!XtPD^|?K=$Vvx zS&KaKt?g`n2k|g|4gh?Lx!m)c^XQOQ^R6s!pT2$B!rvr*489QFyM3XY)>aVH&^>15 zdh8^}I2$OlNgfrYEtyA2O*vQ8pHR*GYrzu7v2v#WYZK4N=YwJ2ulp7#U&K_BfB&?f z&s< zRJILLDKgFp)koaC5{xNS94ywfRus=wsST}VWxQ%ssZQm74Otz{{jUCn>p4&Vt7$_i z&eqMs-OSZaCBOkMG!WT1c3>>tH+g}s@lwP&zbK%N9ZsNINZvx17`%}zx$K9cb10{@ zlW|mlvS6XSW|ix~F6>)dpYLnQx7WHuD4m&!uzMb<&^S)E6)^}m7&BQc7WTF>N^F$t zr+cpgdgZo3Orf##%+Xk_JT#XXt;VNbW$CHX z6y*ec{fnq;LZ$N8gm=n?onwR(b%5l&fI3MidOkvw)h1A9x~%u&r z_$Il^efcv4_#60b#(LKXKD5x2X?w*&GMi?L=;iqHGxe$P_ErSedsWzvPE>KI#UMv% z4MS0!ZdEBGrtGTl!XI*~)dBHorvS@Tf;r$tMpyThSVM+)CvDAYkd=^yI_AtMz+9fl zMKg4}J?>m#;_o|Vp&?uDF>`adNqLFuz&5C#|-xR)y*N?|%r)Kt`vWs&!cNZr_ zT%micqU2<_6PSdfqbQRbYvVUulH!({c3w02SkR5e%z9#+1m3Eb6%J~suiCX06RbPTpis#XfKFF94L~PG5b{!qr{4KNV z9ygm9YE8q(Qm8L9ZjfFwA6gn}F52c{ya}e7q3ppCUxql^I=)(CupAVKjjf#hD<{7d zA(}~*x#diCVxXnQcK{x!v2(1{rCsUgX$Y23Rk6#(u-|Gsn6!?@kxkBk8>LX&k_bmN zFt`{V&5iVeD&hq-$IwD^mQc=gGfcz;rAfv8w{ECWWmxoM$gZ0QI`KL3v z16<4FNI_3*A^5wqqzVk;T*Ej7COaw?{i@3|B|L^dq3D<`UJsWwmkD7wi*l08TjrgB zw@L~VX^WVsFi*a%IFNXL-2M%A0H3r&okIy$MhB&hW)Pa(P(@m-x$N7xAd@V>ecZph%#;X z=JAy--CCxt(6Nd--!FAo)G{|OmsQuUq=D?Vz@StPLoL_uOQ?oVI-zufrsanTGYJvd z(o|x!2GxJ_1DT+6KH)OZt3EQy&5hAj#J8+bVRa98;m&~43sb?a-(2WYKbdtxOK|5slMv_^<$F|3#QldgFN_`cJAg1-GQ%<$THDd*w(r8&l#z3^ z=DyZOH7*h!%=lcqa{(h2vlwt}u-hHRQ*E$uU?csj0~+4*);5R#DuY&bQtaZxdR`z|#5vqhN-G`|q0s7+xQ zdm^E*&%n@>0mt|iW2Kyh)`G3rOta!kMy%@Tc%l^d z^a2502`!qhz!(+Ho>K;Fya6c~vehx=KOm!L_vCrc@)pkBr7tv_Ro(|X#Q=^Gh~=J; z{pTKOq?;$+F2g5>|KdbiQX1pbEO+l0%BsZfA+w;U8<2BM| zv|)l{4BM+(Xh@sw`rOtJ9V!!Ob3(_)Uuq8gF`9C3$PXi50zODeapKLMR>;0c z#+I9l;X>R7R>C|+5h+(-R;=3Pp!&r|3b(vBzVW)CoCf$2IjMX_${5$8l`8)QzTylr@V@}bbW$T?{Aq}{kClu<5?rFUpn9H4+6pA-V z&pqkgavKQ4Y8{iVD>DX28wwdJ@{CfufVVMwq%uY-%6NY|bV!+b_W7Q@1smW1qC7r{ z8Te;z3FNk|FPCzw1k82>Jbd1Gth0aTf3{}+Gdd~4ur-V3uRDnKI^!euY=jMm?afTW zYYR;1zo3fmPK>0C=%B-WTV(D=$9>QnhOKf{mDY)z0Bza(eI4Ld!w~JyU7YCe4HK<4 z1blny?33#C0x>jA^!4291nlwx|U{DaHN~buZzM$SPR4E#TGEW+;xs zCx{1y)V!#$0lwTFASy|kpWC)xz6;O0>1^PNhO@uBMmT!s$LQIqPb7b8tariZ0l&#v|OGSxQNO~14P&%42VaYg)Vow5Fb4sw|Eb2Fn{AzGTT@_Vb(QOjB3N3~ z)ed)Zyk)kMhF2;0beJx`j`3Z3nX(TIAT=TEdWys^_{SK=9i){*Hqh56$cBoBi1Z!R zc+ym0YkOW>BA4bVu;FQwqJW6}z5!OlTb>AA#~Tc%w(qg!hpsLc$c?bQiEKaV4BxGQzOW|6EQQyo2fS(l$5~eB+=e zS{_`i)Md!?%TIfXcPwD2?MRCRIrVAzYLg^BnHGf8)map|u-jUSf+}kG82|Zz+IDia zV4P8t+2F0YHp9*a1`y&i1Gj^;H+2-rqIMdf{<6n89#;^1QeVyOZq7WeROdI)uJvj! zokmG#hyyscjMagmwKA8z`2{uzR^p#aZ*DP170DG!f1eY z4-uCQ1vGo)&e6d8l<9QAzy0t7(MsVT$1$20$ORFVgYNvOyz}01Z?)% z(p(au!Pr9G!iI6A(;lnnwdcE{R08Rm^JYXd;oLi9fclCOCfgR3UmHRZ1cWIAL@F#0 zII;dJLons0Un=T^^di0mL7{M>!8BXYIPj0m)>K7Z$Z*V6WNj|9bAI)uoG7VxZ$N&% zXbXbu-ABv+S_aZ>w>pbrB?f3g}dkv~|PZa$8vf)d2=C&|I-t zvwQm=w;D}6GNZKajr)g`6)&`!z zqa>y5HUPyk$CMZ>;D#`ALyR}JzOH?gaFxESm4h72iRi30mcoG022Hi4y;e{2g!#Ez z0YX}}@)q%vM~UZp80_rw$d^`$ zpo(&pu(R(x6}I}#zK>_Hy0rP465tIh4`>H2s8=o{J`Dg^Fp+}Yi(tU3aIn83G0w1V zE)zoqmVes_xC9F1nd~{7_f-Aa?r|Dbl;hvgI}|?c0VauS!0C{OMzA>JTkhz4W9)5I z0Kc(`-8f3|j(a=RdtQYHsK3Xe>rPu9QKAjfre5Oz2?u}qzKyogg8s|tRS z_IQJcK>!9bPy+>UQ9wQ13{M1(TpIW*5=>f>m`Ntqz+QGVM}jF;tg|NnvTRM-+7TGf z<^~$a+JrN&TsXW!K_;AV#30&ZXYyLV+kzcDsW~uDxm1o!rd}i9Kb@=K_tofzN0_W| zDk2M{?8?Q-?|Y!y7DlT8yKJ=0Im;pjZm9RD001>fo2tTuT1@&4$S;y! za+(nEJ!k8`T9?vZO{_8=Tj210m!99M$4`ryM(RMiS&3j9@Rn$e1uX@C?<>v>E0tYD zuuTg}ynfr?Utw#1OSQ0<@ZpeIB$NIonTW!HwD^i$gVaC6H`{49L($`nOCoApZY#AF zv20(X-YfPW18@&Xq2o92a=-bD!cN1a70$7j3o~DyetW+^BR46Jbr%l;;EcF9uqfPE z$0TB=XgI)-adPrpLtAKnxo2Xu6&FB}W@{!k7X8nf;FawQOu)_2r1uBiF=C8bnA@_{ zKpN}rEs|kH&^`AZSKQXT1IHHp+&ob4I;r-mrZUnRK}8vxX=W!D<~|Cf`)@kr#OFvzNSUm0Fe31)aE2@ zLy?;tTat@$%0c4m=Zr;cVZk<;9PxsF_V-4nzo8sWQ1Nk@AgCf$X{K#&ys|J2`)NPi zV~&iBo;_6_R%7vY{T+G?!AQX03GWNX5ido0rnr&!RKjinxO`HXiY#Pe>|#KER=7@n z5$gO3E32>4bA-XW^Q0kr`=^adJv}pWdfHe`@rm=1@_~P)c$1UeX)t)g$YO!wB7>9db_H?6KN?K5= zTfSpAu`5cGr^m7_Gb(wNWJ@y1cly+vK&B=)dAxQB0};HTG}q4mYjoRpr{v0K&V z#xzc4wFht1$wE*LAp7P0b5?D&!1{VTVsO@I%$)dDmN7%45>M^0)JgmIXdnmtU##a6 z%7STN2#UI?86%@`x_Ga?8f>t=o&Web;!_d^BNkxlq5PDbf1~!EIXG=j%+KE60o#1{ zSWm#Id9_{#ou8C;>?gu7Cn7!B#TN*HV{x88G@XJ;7_$;%Y}qaH5x;2|<}h#!B2cYNCRfROef}976+~^qqMCbf0fd}rUU5LoY>7!i|LBAT};D%hnWLLq?x=F&xeGc}$++(;YykdX=NdyIz8&kDL z$A2*S2R(peQuLO))J;0Rj$UUf*c)@i!cc>iT6wX``{hzIfC8k4BUO7_jC8lAtrH<> zijRyWo-LQ}T_>!fvq^yVQS+xDd+k0$oF4;6d3an9bUz3gbMDRad-h{+(aK_D7?5DI z;}GdLjFfwkL&z4!v9jR^m663Hr-}pTleo)$m5%z~^k0t!(jKr0{XOE<)uN}Y>`IC5 z_)ObQNVP?zjNZ7;AOJHDJmTA7fck0m@H}oq z3eogMHSASDdD&iQA_e@|ZXct%;t>zIf57&L>f&t$RFj2qT;As#|DWJ~b2RD#`<|W6 z)Vf=YvnURtp>I%XbEmU7-w1c%WW|UElC1*UFBV7qi+5TB+e#QDoKrG@-u1p^JVPnV z$mf5KdB?^2yO`w!pYVRo&f+^ZSgmDGh;NP@DUcm5p)WY8ZbJw~*1_)AaolR#f7TDgu1Phv{UilP_<~#l!4TQ3BKg z?Ipl{zQE&x@JPRg5H?)car9=GZ=9$77c5Eh)9ZXDak=y)tZ7OYNXfQD?bJmK>G zZ#iYvRbAW%Kp%5+R6f69l*!;-V8s2P&zEC7vi7)|^!R?W=Eiz6>2If|`?&g=Kl$`8 zd+IpaYX8k+&?-PIZC4sDIxAk$oC_!^b*z5&mcnf8@{(y_WwkJYD?IfDt#{cdUxL3| zmY(IR>1H!f1J4BLi~djf_e6C#FDGZVep}_&?L9{{8vKUKrcDE+w>4Rqz6m55P!1C9 z@ThG)R_=AOCqmJxmn{)aUmx$n+cCSvvQF$<)WN6~&v-XSjNZ`@N(TT=+!qvkY}@^g zP0RkF2%mIvZAS-7W}tvX_K=u;6_xg)4LlQA!`=+pI%ImDcE{d6QX=IB6M?0h=(V}L z1Xvnoqo1hRmHl;6JhfQ5ZjTW*4qC8F$CYZWc`Vrc`}9xN_jOH2Qrj}*xb*`lsO*cR_?kHY@E`{ZA-J$+%acD9X%Rf_^P$IBz-Zo|7E9_L;%J`q zEDw29H|FPxfv6@i^w$4H^r1kb0ZC}dtjxQ`Sj;oz2e5FqiTh=nb8#D4QXgy3d!z#w zZ!K(7<=6u6Opg4Xe`85uO>^2^QSxy$`ZYiV`NFTEpmFg&`vowxAU66Q#oML3x8oN; z2F7iHg>)_!?OXY7{ONn!+L*SF5Ic~MnYGq!t*t??Rj+~7bgmdWt z1Y;wx+j5t*nJmmi0z2KQ0#J5_KJUH4Sjjq{WkXzno1-5 za?q7c^m>^_<2gcuu!DzsxR^(2n*QV1WBN%^)LONU$syvW?xg`qaQc>c3Rk|TC+yva z5Y8Kpya*E!Wvs+Ez({h%FTo!)kK|j&rd7JMQLg~tl8>!PS&J5`Jl;6y`hHFxiA$ob zC4nM+TEl?cEcMR`4s7~*4(PWge+-2`0P6Vb?_J=KUyw=v?fg;N*dLgRxFqA*KqC$= z`N{!%7rQ(wW6VeyR^+B#Es}~hAJI)3+xBP==kv-{Z5T@I7h%0#R&#um!pG2Tu}SmC z@trgb^n9LJXDy8I-{!#Pmxsj(&^>9TR69DgCcK~501YH6s-^c^c1Bt~v0_4M*N8V) zx~}*<={Yt+@d^j;Cb_8jMA`aK%z%m=HnjG&davLhLO32Uy(lL>Khx0zwH6{;K^H*h zXaT)nmlD@mj!i3upybFjp6U$rSQo`sIc{4)-%E(75BlYr5YK>j=KtFL9ZO91C-yh; z^~N1f`1KXA!_w+k25?v>%#9ArQrN~i(;PfXT>*h#4P%|(xz^}_6<*sfDGyI=wK46T zR-<>!W_8Rjg$Kot2lgH9M!=%J-mIo$8mG{M;QdLBAyenlK5Mn6KeQrdi0Jvbq62>u z{@Txsvp=Zhoh_8)tYI=IioTof?Bi+p`_thvq`MNXvnB|&sQmIKHfLKtDp}y?(|mzC$Sdh?9BwW8>-&} zA_l`ybQeXn{-@wut$pX-nnGmvB|NrLQ^-o`c^M>AOV68V5^X9T|k!VkZq8 zO7Vht5+N%C>?R2Xi8s^uADy=oZk1L82*;_m=ByMY7)4(2Uwf5vaTJ#@a=T3e=EQ=U zHjb8a#BH}uh^(dGs}Qm;7@w>t8vaNfn=D!7o80GKI+q4R-Q! z5yUgT%<@&huN1ORz_y+Pvywb_YGbIPFlRHWr5^7KQujpuq ziRTk@RF>{GKK2Vy*zqC5Y%f|wUu=oT`k!igw)n(I6X2L$^sAyY0yp_Oxkz`^#ma95SkaFx5sDZr#p1 za=DwWuPao7lXZHk_`FIpzo0sa)w;7Y%w}-|^H#Xhq`b0pzRF9+A$&W60{Dj zz-o83+Eb?=1|PVvW`Df#BSUGQYVbUu>Bk>P>=&hh zxp@^UqgCK5R4KT5e$goP@R+`TmCI7p9Ml&1{Kp$ME82pf8EaSfrs)x|{4~AQir09H z!vKd7(#DfPL?s|LAs4*CPA%}L2PN^o0 zF*O9Ickvj8iu1!J@m}2hVgDT(89RO@(0Dj~K7L{T!#uxqYghDP=s*Y;*u$mH>xQTh zdz$6=XV_x>XQLr?Fc|B`-6(%{{^vT@9P>`VTWjV#_+H?{7N9v(Z$!IEdrJbgsWHG_ z0DN35)0cf~AFX56M~pHH&%>4tm*P!gH(;vz4-5X7>pWOugn2JyKk#raGw;6_E&wKz zDX{kKK#+<2cfr)NrI3BSTPNqU|FlT?9}>UEA#b9`mkE-*(tc@SgHHk7^N#YUeX?)GS9oex1qGSm(;fOr#C z9@U_K;;>L*Sow{>qctCDBA3dV*jP&^kBpe%4#b6>e?~I6_X)Vu0L7#KPjO(Ad6$&r zQF*?3HLn*gY2NH%uN!->N9dWa`e!8rW848KZ^rRBKNZ~DFq@oLTuto$d(^Xfs5;Ud z5paOe)!g`aK8rYHOWFX(oPkKp-*?&@lL8}{ATIAr+|VKE#zr0`UdlHP8Ys; z&;#GRxA(Ty4Ql`tEZ1GYJ`c>D>R^xZSoi`?fUT}}a9N-_>^I0zR{LoneIM)15M(k_ zujcAI*Dgh5_8B|w_=}{iE&~Bg0_@I%oBeBq$q>#$1JCZ<2)2q;|A0Dd?f@MKk2eZ; zymH7vbrKp^Ds{4+Zj67ONZWZ4A^^Ntg3wAzvYWg72ACGg&T4X(&+En^N&eHLA%MD* zZ|Qyw&S;kQZLd2RGPTcLkZ_vz$7+&hP(#b$(Jb$>!_QJaEM0h*@ZK*cKCKQnUQ~a} zp8awISP{>0ZtZuFX)4Nn02{pn3=^Bz?YXTFHf!vAqJ;c(B@00@faR?wWDq0NqO)=4 zt`1nQwtru>`ca;KRNzv%l2G-EwGHCcN?U<8*T;BWx$8aaRWO2q)mL}m&(>e&eeUGV z#l2+SJ3mzIvN{8M+(HmxTp(`}R9Fkx2D`U$1f*p&I%2`m(mBmO1nk__ipOEYITN{i z0mZ)&Hn$eUx#cYCe=oiYK63FQTa3VsJ{S*hUJ?b2HPb~Zz_zVKO4~1=Y<|+`eKClu|J8{T-35#E1@(1m%Qm8)7)(k3^Rb8`^@>?5pbR|MF zAITq(GAl~s>V2P!=B)BZ+8kxQSC?*#goXh}h;&ONDAj;*&ceU>I`kz@owW5FroguA z^I>q~)^v~Xj2!!pnRj|2N<+ocaJ5+H(-q?#JsA@jQLjKo&%{Rrm{stvYSr#FeA z(!phFsxXKWTPD+@z1mNlw_-Tqy8kjg&%ERqcASz2E2Wc!PGp&lpk_U)&_vxttH;hcw4 z+=pwk`>T|o8})}H$y)^S7D0W#Zx(pf_>dU%(2cyCdRTq9UZ;MTxF5g2ZpM?;~v5v?ot3E5pdp%jvJSU;h_6p4|5OK z7ac(zv66wS{Qo+{J032t=XQMVj~h9~pl6L8nL+-y$8npIckZ`GIiGEQUFJWW1J_yQ ze7FOyb9OU2{vLh)?kq*}VO{-!$>t{L_81w2cDr*O97Aw_d++`5{NdC6lH_641KMKH zttBRZ3po_oq>UeyklPm2*5QU3di7D=_u*3HFt@Yt_7k$ku0%s(pfd2}=I%aH)%6R3 zOY-q$y<1c(kC~f~Rvux4W?2qq(WL`)rCsJ~pT`cGpbx2ylhrVlxY6eb<4>T%k(7^4phV zR%O@BC)7vj4RvR6gt(_QeP6tn8&a>I8#;Gz$5OJ>*%mAg%hoPnfex2^)*{!zmQ1XV2d}zcuu>_rOLOdJ766fYWO=9%W=7Ljt;MKkqk8 z5Z4(2@rM~v435mQAe!_UxW{-HJ3W8i&ES_#H++6nWv zfmuE8Y?boOT_WYt#u$F~;EGAgJ>1nKT(Og1fYz%{NF)VPxL(I&u`q8NceQO=>EszF zbLIXS(`8Dbf62s8rpv^?{Qi|x>0pTrv*7RlBGzrlix>*T*DcxTMb~S!>k+2loQ^+jP6<0ARm$(x)ge2ZwqmnigWA6Hs$J`LK-I3D1L8T}PNlZGh!)J)B~ zQ$U$sP00pJUwu&y87m=J-#N>MGC6+d#XSI37l9pP&U$9O^FPsWR_q3WpguDk0^wN% zL^3zR!}o%me|Em8h^#|U`ic8yv{y<&hGajhTo{Ctn*vrVnw@h14u)}1w6Y7m60|MW z&31mJnfJSFG85;aAm3Bep&jU0W8gKas?efFSOSi@j;pXwET*$v;M)y3$Xr#GUm#;8 z(UHzab&U4Aa5HLxE`I;)jwB{^u~8AeWg&H?7MZKA8$GOb6892iW7u?|yQ zDh2((lbxNLXu|667-s5(TI{HD`_v^k7wPGTUur$vWSSokH)!FY@q?p`k`4VjqTMh! zE`x)Ya|Z=l5;E)}mt+g-veualJGedyr|A*mQ!3;o1PDaSt|>=gjGM6%@y1**e@XTF zeTD*A>D3#J71+m5s>a_~KB;P~bgogYe+~%QH929(y%j;4$H&Zpsz#yBcbBSGdlT+T z1lO0NJE*_I+mxWxwe217o%z7%&6v%FE_bDlt2|jj_iy&;zqdWJp0B7!{x}^>fEPBR$UM!p{1WoFaNsK zUl#;|tV3mU*`TRE9U4O3?^D>lvy_v8aO-i+ zx!=TGfsjS6$2RzGKJlRwBfzwbc>p~4`1Y?>~dMW7`(FMG}4giy_uzB(p)VnJVFBG8muTp zgBto!RcPrnK;wZmMsI$h-4Y7p&|G=upEG=zLGryJ;XK%gZPkvlnkaB{O7~9n2S`sz zY{@8H|1je)@ka|X2z1O`!6gMjdH5)%dDwKFMKT|Ov%$^6sd7Qz{>9po5_zYguoVCx zXqv=3IQk5(y=mT5tgT8zCU7!~-ufZ|a` z-w#@Ap0ZZ}?1)bo1{5B0m>3JX!?82)BSxc6uXdi40L!y*qlJJ2ybj+k7h+~J0Q4Y_ zsU((SFgw01*m3mXEZu-1<;U)IaL&@s$(?9N>?{s|asuY4X*u8aDj)zgFts%cKjF_X+u-P zHrhg5`wV~kXsj%^z|AlyMGo7X2XRd#sSIc!_R*;4gNX|9~JP1`LA2y{p`7?HTg%X54-qKgAA?=Q!+%5J1K;GoZqNgj~EK1^i zu)wb&pqJrK>7 zdUd-bLuTsEW+cf0MPwKr0-0txs7RsW=15V`k#iE@ElDLYs`8h9)Vwd~H+Z)30#Cqn z^){>qp>K5Zziu5pCwaxZ-Od2+A~A(Je~Lo(bU)#$i*&4++-1!rCCVf)MfPT~PBwY~ z_bmD>f}T>Q1~wD*n#Biz|~;jG7%=d^qVZv^I?F1~x-7zNeb1Z!@GZ z^i7NurEm7NS>&$I2?H@zcFcK)9IdFK?c~v8VmWJmC?>vpLT`GE-fG_g$#USQX-l({|Dmc@L*bayqWG zRD7Nj;$U^7XtwmBD8G@=NM4mSP|RX%m-_w25iPP#+@f##<3Ol12(PRZk>j@TVK+Wk z7T3V{BmI~5vU7m_p(ci5Her-W_4=@g|KrHHS??7H>MH&l*PNVVpHk{dZouaUDSpOg zwtH2hkXh%VoZ$-tq=jCo9W~Q0VtVI$VrA7nbfpdmf5(rPfHzl!h35qn;5K;z<1|oa zyg!tn25pAXi!xQu9tq*4yxk}aOJ%OYY^-|jHZ8$2ZPNS320&Z8>)#Ul(e;2X{{qsw zW+3mVhl7Vhm@o)*7UlUp6bb%&xFYhj73Wp8Z4Tmx99%|onV37eM(r|0|Jvf#TK&px zA5Sw_kbqn191S0d5y*(hk88`` zjQYx5^hJkZD?^NIZz*;pq5~dO*$VC5s)a}#YYNpMV;)Ws_r8%B&Ox$Jv{uyH-6i5a zt+U2yOnVZDrnJh-7aAFqc!3|z9d6WwkjHJ$W@2r5`JVP$*MqP|ScNvTW+NP9f!AG` z;xBpm?{{u=jmbg@G72TIWMqT{+2zbFN2%~hfaj~5+cb$nZ$;omREtV4U{k+^HmT+& z+rI5IVr_=rn*^Y0|1(*5pzjKUQ8+>eEvC@DFnp%`(;e`_9*;RBdl~RA*O=;>4 z#B{FHw$OQNPvdu!6Hn8@ZBJcJaIw zXMO!{5JG5Gh>)g(&oj#DpFtK@jgxRtIetmo22o~aV0#nqd>kWBZ?{2sz>4%zK3bG^ zrqMaZa9>}Zz==fO>emTX=bD4kEUM20C+k9Q0%`SMF#8cv<0|cH2vPG<$06L=ab664 zr9acPpZ*|Bfe#g`n7B@s$P=hq5_B^tGN$sWMkh;|1o%&QAzq$iOku`K_X14uxv#4r zAH^)Zio{(sRw|{b)qU)DKQ#r;+fy@f8f%YjQ~ls4@QzybU7+p2#fOa*|MRBlYV2`Y zE^*K_aE)TmRGI-!e^8c+h|`{2&GYBd=)xw}U#+gK@{J8sK>5TRuqk+o-MigdEJycj zGpg5^YKwxfvZ_xSf>3t*6?I1#ZhGLijU?a1rEr1;_Qa|eJujMdWw(JP-XwxNTGOndkgV{a+!b)#|c1%qfaqq8F3thtC4;!wy1W_I{m=HX{b) ze9md{p>w853Sf<{%1>fXq0{GMt1k3}Pz9l!azUYgv-Yo`J`;KpPdhMDekT4Ha-rE5 z-Eh=cnN_o+j6;S+ndwEN-%h&kNnwNrN{!v3l(XlV5c zd)TzDBTu%zjeLH^zh6@&&fL}7cz7K{>2OM)e~GxEix<(p7)VR|)M$sQ91`7J7H}*` zd)b>t*8CD>P5uv$cPN3W$2Ce1N@T~?i4Tp;Pu)9HnLlrOqmQx%hDxl1 z1l#}Oh%>o0nM68-5H!?+G2JxtiLX%C?Q^~czSc90oDC-ED5)Fxn(;o7SOP}#hJh~n zsK7#mCLxa_+tW);Y)OaOuxGU#(?$8Ci z_aM+m2i%B?hOCpg^{+W^k_^A+-wl}#R8E`Sv$Cj+2fl52Pe;7@M8o=YTA>gt8C=9f z4)N?vJS8WT=K0w9%^%8pRmwD2HK+WCFs*iDm%yV4qXEeqAIazs0(u3n$Sfy=sAyftX0L6 zGW|hO_uKB5mjpBBH%WIIAy!AXQH<5m>?c_NRVB8So5AFe&ZE-UznF15Ry1(EE_bmi z4$f|$lwdm>Yi6h2!sAFlpx?(rA0On{q2;<->8g9pn%*#1r4evF#6yqI8UuFRSS8RS zb4Z03XMJB%oLJH67$u#|V#t1)eZ*KivPuSkS+Z;L_>Q6}t*L%pszRw*PbjV7JOEoE z=_>XZUlAslwrSlr;3hUt$U={#S69_OZj#jaYAk?BmLS!;C99aiTJ%#=mPlU-zM0s35OT_$I zd6-Ac05Irs77k#af@3u*`FvlnU0M4L~My%fxVdwJyg{}mumc|0qQO6B@gSED5`4JPi23vFRf_xwLa*J`gIDTeq$1p%E~*9(0dH z^~7382r_Zcu!y34!k-rQ$GAvoiHomtwI5f$U?8dFX z{@KYsx$(;a)$LO?6aY4L?}bk&*#37a9+r>HmYl%HQ2%OL>u9uU8M1!c!!q0j#J!Dl z;VlaVfuYZ|oZhCo<2@8(lug>WiD?g&`-5dOLk^xdQ`v094|QYz_=6}mF%_F4B<#PA z;mq{^M^>>}`($U7S61&1l>JzY2fup4&khZsO8@*?+Kv-Fho~rFwgn)8Vj+4-U!1eL zW(-N-#`LGxTxN`+yv^tys$`2&ZlLgcS7=k6rSqZ?0Bb@ZG5}VRZyk`)1<1I82q(Y-uMa)=pY&<=wO8Ht zO#?I|?njhTAAnkmsR1(oF9c-%4$yz*J%Q1g5eroJ{|;$x2vSng({yZvR|41c1VAj| z`{4xIhF-GXvUbi}B1#4g&3QXat5ysh)BpqOqFWG(&U&3J|5X6`UFJ{tgw9t$DiP)X7Xmm$cmURp6>O+v74>UM6;J)L zga>FH-98|BXd1{&RtNRLV5%Z-1R_^~Nc(vpGGn`_|YQj z`057b!vJCHqoFe7inodbASL~^W-qEB2E^mvkpFXF{pV@F`LURpwEN`1DR9|;zbKTz zsL;}9l-DKqk9l)|yc_L6JNW{9B>Tl=f`SlOUEr#STJEI%B2eKkfwFdGV*s3s=o)}G zeF4}>`gs65Nq38#-jk_HrlSB%qgsXhd~{nPfW&A0K;lneYTP#OujiegEgfR{WHlgb>K^7hN7$eW+-0FeaT(YH=n z05_>&6ev(pS1^K{oY6>c{0Q{Bq#^)0WNioFmkfbnpr6cE6u|Ew3pok=D#LQG0cnJDqKxR~gRv$TAfT9b~qY4`fGOI%0gq$BGWEb_2 zvjzR%u|S2k4V4B2f?|Lt)X~=j+>PbDR;*G2DbdJG-E3YFjPsK-6Cx@b==pDdVbi;> zeI8@qi6apQs7FAgQYO>rtkwWg_G2Gt@~r=Z+cu?d4y2V=0|j)af%*}7$&z73o3f&P z@T9J~-Df({4+PR#JAm{gB#>V33)Iy6aG}Ech+ByNG2$jzG9sR+7j~u zXqql3<~`Q=r|`hNwXO)-UcjLa#Iha0+Qz?pOxv;wm&Rzz2s-|4Q+X{@y5 z?kn|suW)~9;_Vx`#$G3B7*?hq6wH4!bX55N`<>x)g8R**v!!Fjz7B!% zkc@@)WU=OeUl(Qq&;d8i-tFAzs*JIKLP`KKoe34BaifosPZIg#0G9aD6yq09pMwX*bD~Zfpopk} z27!j*hQ*RpU&(dxcD+{w&8@{nUvxmqV08=^u>`*e&dG&y#g2re6kT!--*f8tq^9Ey z_vbS#p*sE*z@Ze;pl>J%KqrjNu**f+;hzZ)pz&^8sE9#=4QCUqS4CGfx8H&^;{E0e z>S}u(qT@68=?G`_Md&+S7CGA(=h`rudZYPV;EsWygLv~imi8|n08TKY9_dkGZ*Ev) zR^$DyO9+8z%T-pBznIzgX-!kSAyOjaqs=X6@sF-iow%w_fm?marQb1X5+dtyW@P|H0D6l z@w`V=BkgK%bDr!sJOT==a-ESjrrvyiE*}sb7g0Ng8m>l6(Lp6(UQ4e&5pO(vUjnTZ z?aA$NZ-XhtT=8aCP)a;~Y8ZHSFDMP+;W!bbHemQO$pAni&qX7@a3-z>oLdtMVe3PBV#y4!Z3xmmHy!ZXf3n*+Z4&i zz1j1e`_-UJivNqLw}6V{cl)i=J%9D)mM(npJShS|2%dN;>6ho^Hwu+zan6^HuBbu=cmDZ!Y8fAVq5Ser?ZJRD>-} z7;zgt6AwiN3?f1TR9q>Oix$*-R90N+b4F%)DJWd&BDu|>LZ*KRjVPLZWu}q2z%jD) z_fR{>Z#6Pc{yWJtouy^gtTU|BF(abIn=J&}#?zv|?}Lv{+zg(`9^HGE^FB5Ahun$% z$W!{W-MK^%WJ^f4^9hRC@`j7YAq^{hq_S5VEBf~rE-!TDs%5Txn~?10M5OwWzoV}7 z0P-tJBQ5|ddQ6Nmpi4|UmJ^&0aHI0_rI7?KM_GK?aNysy@4$Z#iDg4L+b7DqpCo}8 zoN-sDY}p1ANT4CL%o5C4hkA&oK5IqF4%gu^?Qwul*z}x2%nEA#meK=mYRs#sOp9r%{bRvnQ5&$F23dnj%v# znAyZ1B*2HWE$+EzXqA5jAK+X9bNB9l5a>_}kMSdGcd^ek|KeY)-eeUrm{JnVUSlg- zqkKDoO2|HoG~&&{@uy2GkYE7*d&{gTg`+9`u8u9OFqpgxX%UXFNO!4*#pCS)vjlCU zpk^IL`oi&?N*#bZO56KVXPdEb{7Siw#GF*{_)Fbj=E5=SC1x(goUKfLBI4jc z<$W#uf&TKI4e!@3e5x}3g1aN%j-#gA&;F?S3Ty$?9s0^})BO^EEUj8{?@Qk?U@_1=)UWBmJ2W|t`ucxJm2wNS z*Ani$m|f|OFf&_~tqB z13V-umYz#t$Vygb|IU9JdkWg~hFr3q5|a|xAT-&EDHz~j2t zMqLUP-4Bkw+h1!endx8>RH93l6;&8G7N$HgLHHWxZv-e5RzG5PAPbn9g}*}9Ipd^O zCH=bV73hrU-5W!5v1`G?{T-VH1!$2bK(rsXeJIFAAp;<_gD|x#KY|ku%RdqpV(U74!l$SC%eZ+su2* zIH#6hp5@7e@^cf`&2uFY`2_lL-q?Ie!E{K}pNv6tsL!za$u1xO?KQONaR(y?lF%J9 z6~YA8dd-%8gKWwn#e-VnVJu+?Sz6MhuB!S3iR(l6JK08dq6L~NXCmq9YQ%?*~g*@6=ZrtIhO*h0#-UC9I4qp zL~#m9bI{sH#?bL;(+D+&k&FImrp@#1npiW4i^=R&4}_+g_FU&PGBaCjBzpUV`o`Q=xObKjfH(8^T<32EQH?j`)>NR%w}6a!{9n3k z07Yiz)mn{U9ZzwdKW##+!{oIX#ri6TYjie=fN!u@{LhD}YoaWJKst5mAvxL2Jj))r z6khS@gk^EEblaHJgY@h~zQ21^j_-bP5NEnjxVAi4(TLS4oF7pZz>ghj#8^}U!k6Ek z?FIh;{XpPx%>Gwd-MW*TWuWfO>Y}~!3(BdK<2g_neKG*A=*pn5+I(!w&-46oTFt7@ zTfdfQ9Ba0`r)|Re$Kf$K1r$AWC&P|N0l}QSnNrk-c_7+-a(~NYnzc=Nc=B3IAs_MH z^3>_OLzO)$E;`cNfZtwyI_X<1jcT+K1v*)O1w+})C8$hc{o2xuP~!bR+}2QDE$Pbq0v^%uO=onar7k@xGm-gZ;DV_$UUiEX=8zWamRM z-I`3X6FNn@(!VY11&zFNTR8&v$_$WOYGv75hucj>sCr5SO)32bj-3yG!~F0NB4+^huR9?=8sZ8t5t~4w?{5+f=0D> z@D9tXfyoNoSVXQ~z2VdwubUG!tqkD3X}tIvmH<7+ePjK` zl-=h#%{*7FvosLvA0=J$_4-M__C|P3s0funT8#31X@GC9$vOGT<517LSim`$!=?I# zFt;TG5axo4(5dM|hgmZavikc6)B+8WDR2c9EjS>O$SZrjxz(V*xv1>fXoKqwnVx4Zw8jAXiiVfYRoVQ)@gui+ zw}(npOfzh-v0pC7Fp^`^!2Zf#(aIFoV!j(+l-ygs$}107bZ)7Cpr6?^>Smc9N@3n& zKiFGN{sJ1nN_Sa7WbrfAYRBIB8;_r-6n_?&EE=x3p;(q^@vvs71F#ai2E^<-FMd>v zHiC}ab)X-m2XcG0mASn8$zQzX-Bl;_e6Z`&KGNwmntfhZiH>os&uj4*=2_aHLgYdJ z5#HzDdl**Q`FoR9SbBbRKj0Ao-$1(BtS&K`4T(q~6$8!on1`M7$6(CGB2vhf?`y#t z)TQVHE-=bM{{;R*IExIQ6z&GqK=XKw{TVV4e#0Vw6<58vtg3ALfaYc@DSF5!)g9yf zU77}x^QU=E#a{bvnvb|K4p=B%=(bZ^X_4e$asre%JSRHy0`+bK=+`B-wJfPP3tI)4 z<#>0j34jr{=iz_R*ZYTq0n^MqjqKx6{wCZwCdl+2;agfXAm*(3qinx&`sTSq@iqI> z!Z%(aeBGP{M~@U#z3ON(^i0y#UbmiB#a|%~hdOJ^r?icv(ggD**STjA%y?sN#>U^&nlm3SlE}Tqy0wDyyMN#L61BG=8YD4aQy?fdh zj2BhL*i5;-#+w%6Tm6)h(*d5V3j2>Kq>Z^2TC@mG4A>=wiQ<8*at`7nwTf&z5sm%s zvYd9TNkd{IO^P^wO}Xf0jKVz>#}w|5rzZwCI~7kOU!@L zzY_hABaaiH5eh=fX^~RPB4Trfz~=gw%+;v6isgz+zo^e{aom8U;e~5BjvxsdPAjEE zjemC2FfXNjBCDpk_PkkEc3#IsgNCKRVvaE-1(soAU}7@&X`X;EyDt{dx%p80f=w(Q zQfuAD@vJVtbBDWH$Jw1#b=m#WxEjA^GjRo9X#k_07g9%yLlvOw9IUIrZtXZBz*B*r zH4?QwXGX1ehI@Hr8>7fowTehbTie5P#d2v=>F{ySr0_<8V=jfGXTgGxMLW-299weC zkn=kwjIqG~njM2~(&E$CT&3>$LInVIkxsJ+X#8(@+~2FZ8fUuHm-*J_Zks7amnvw} z>P;rbf``CB*XC?sX*HOgj<79=kuLlg%)@HG+@zk3v-)ddz$w2WhE3ObzA2|DibhLC zZlLzQP0N(Vp01mS!OL3HxW83^`LJY2N&y@HC{e3cFc;vohZbKbE*J3;=3IQ3!o_`2Skdekt;~E@`u{NjO;^h|xGsc5fHo z)GT)FV@&l-J14L&XbZ8FcO3@TM+`-8A@t|u_pqx1BT|}wyX;8B*gtBa?xGIC^uJIW z82pPCSzmU;U154hdqZ}rBM8nH*w%dHO})huGKq@sw$D#n69M(U3>qY1nGSvS)vMCn zpeSRThqWfAs=6=Qe5WMV5P`054xGSU%++rJdC@&7v?_|c z21Lo_?J0{`VX*~Ntx<2n0X1ZgfK(#*>`Jlm3k*3@I-&KrGK^j0b_Iq;Z^ui+nvq3!kAOp_?GLn2xv#m+{CREB zR+}a4G93=6gYF^tS*Xqpo!k0F-84U!d2rs56=|+F4!Ijk8dxTqE~!{^CZ~U-qjOZ@ zm^=>x{)H?%s;>4=Y5e@}7X5>G*6`9Qs#Q+{wcXoa~M3A)VC;v#7#PRf+Mhod~$yX}?e~;3FiYC? zz5)WD3})%Zh8hi6TwlV%wiFW;_D9bm>&BXsa2~fIF~8G_U;ZN@53=OTQl!FZ)_=nz z?>PNcfEg$d*KW&jEeFo;N*E%eLaXPsVfsA$t!H!HP=&c=X&-a*eX<|~ScXcqc;9XJSWlLI;Zy@yC&v_Y0R(KOor|@S z!alr&7ZYNlt|%0Xx3}ZMuz$=xVlN}brE%|=n+}>;w0t2Zea?f*jjngj!)xkD_6;^# zj@qF_2?unOPiHSG>BN%%yaWzrxBa{R@Z(HCWrKinj)VODyHxEJc2G)y)_#9 zzho6ukOUgP5YsW{xnkGzbGOmy;c)>NtzByGtV}Z-O7xfePa6j-i#YauaCBw`Ea;S) zs&VstVcu4IZ&C`u$@7|>cd;sg;F`m|k>zy~>%c&K@bot3E>M~NL*Ve?m54ePYfj#% zPi;F2tHWc|e3P}F_zg`24mN~7XGzDtCxOXT5ua3t@Tn_JXsTkQDsBvYi|dj^UC)5C*^P2$C~Y!CWtxKcjNH^!>@~|8z_5FGeFexX+^6* z*W&?=e>wh!B&imf%?A)BypzHiRw9<_Mu^C?0WhaR=UB;bh3)cT?LP;hb15K5yeX`V zNnqv7ok<9&lvj45YLc{f1{KUO(}lT(aiN)Rs~7-#KcFKZ_GRnbjNnM04 zio=uOi@_F6!Tlet5jz06Fu%DgvuI^ASaDKcJKRUyPMLGp=9=$=`sG}bks+jq)tN#N zt)a2IH1SJJ$H3nVH1ieO%ArQuF2_FR!Sq|kK5qS4t^M$Isc&NemXCAwCod|~l)3*j ziRn6%#}@tH^DR}9R}(_W0(Retx8hg z+wc~R`~g7_g~m!-I1lbzhK=S~l0cdBwjLp%z7%41`l(%`gAmBUuE#x@$99&4>pM<8 z2;sUtw$`3Y5&p(Jz)GdeJJn(KXVD$JF@03%qAUT-igu}i_J9N>Xfp(eDr5XZ^d?KC z)1OsFhcya0=%8CGur_ApG;3k&sp^+pGI^H;#J{lUjbE@*{vT5dAx|?FlPs!OR^U8u z?kou-S`|5~KXf0UeEI*I^Mn^y>WrqCLG2d1uxU;_QPptbIK*3J5(mrf{~%9JE&yeD zM_oTT;!j%YZ%VoSHI-NNqN7`xa!hy{Z=3@-8-3kx!bN3WMz;K5iavC7Kp8btU#23i zD~^UEnJ2m}dq+}sWTXR3LprNMULOF~0bzRA)ZDx2)g;CBThi7a$x<%S>HNLXL|al4|Arn78!p?LDhb&&zLJNx^Yb zn57|2Yo@jP4)Xy2Qz(y(Wc;?u~clC4G zZW=uieRcp2z&5t6rWlUJ=b;6}qY1TeduS2$$qGIMW;m3%8nbf7Z%=qcbcb99C z(NA)dD+7&UA7trXmm?;@+px5h94u2wCbEkQ!l0=UNXD1VV=K8RL?uQo_;?_FpNxX3ylOttM2%6G16&b`0;mH2m7!tYS<`ig40EM(W;@~s}g z)$-h?Y9(47w6a@o-UAfIi~Vu)K4LPf9Ln`(_Up|z!&5_HwJ>`Om9(h;P*YW&KRJoE zZx)GG#SZ#kPlUx+Wm?I?ADMb=8boxpt+l#H@Vv0K#;1u!&0x*_<8>_oF@yRqTp9LO zM*TLoe!j_DZ~h4xWT^B*zZ~Nje@Cs$Z$Suc!nf>K(>7{lqiCQ^Y3%y5nhWOiE}^Te zr3WDb0CRjsN_UL$SOelb-#qlor7BH{evq=m))|&iWi5`pVb2NBD=gQr{A8XPWe^$Q zhT9onx%bh0gOZX;)*K*rf%03yANx)n1$qVO^we7ECkHctPONxYj8lj(vx&^CzF{() zfd)d$$a~>K1n{u>seXBuo`2V@ zZ{UIim1dC{UlhwA_&3VGX`1FknnBU*1W$HWIWx6&Ac8;@5vnsfLbw zp=U1LKY*aWF2dPT5b%YTRI?GJ{eC-C&lsaD+v)`YNJk&Cf4_UbL;?V&_QkPXnEt)P zOd~M~?w_rk}%D zQYcAQ7*f8G=`^)FqP3sqy-U(M6O>$-wtQY>YbN6H4KNOzW|&5E+vFH0@zxLox}eCPCz*P;t;@5%?;vL zaGy_ScGN@zpJaQ=ivh?R4nTJUb|FZI!@MieJSmoW=DH_q^tpUwi(3cm?LS3}@c(01 z)jb)#^xeV%MQ#O$974T4<(-7}y}ne&eP0OnX)l zNyWVzOC%abkV#y8c)=}3htO4#R|902aJ&EH{dXSpm5bRfC{;EP`vQc9UElQYuYqb8 z9R;|hKy={%y6FT7TBx%qKreeif~gG^4NKK3?1RGrBLP?pWu~Ee{^AksJ@SGXnkm9| zk*bdG$cb=lC=!)GR(iPxNF=o=-|4V+2mvYG2`@sv!=i78d{n(=AZ)|_I3x)G@p2ez zvz*jm030!um7w(?HiP?A`e*fT_W?T>oF$6&XzI&PHv5@1045V42Fzqx_Z|HQxdPUL zu<^Hz0bGr9-S+Ks{1vxC!ggbl9e?*p?q0jd_Txwf|A+6~8J@4I=q}Z-tR>>foWlCE zi*kY_$>VkLuoknSE}AfS>QArVqXbg_Ebbj-8krafm=Y;D2)zn~OlJWTHei<85Pmn?qJ{%MoKh z?Ih}2YcXHB?zoR8&|)z@$`E7aZN?O`s$|&pU!rVV8Xk5?Tzho9Jq5^~1`PSH=YtL- zaNAoa{{nopM&yR6ZMG0B=%me_Wy)Tr3-flIYriG9U>Y*UI+=tDa$e9%{Nqu6U`#SWMxD3{5{bQq^a(5D z9xz%*@(~Hdg6C5Hee9EqHf7{jbIeNj1mZlImX3Gvadi@`jq;K?KolWo+hn7=&2O2&+<{X3w6Mz=Nl5G7lV zcbzUFr-Ryxob1|rFvZV#1d0<_wij>q5*CORJ;V5Aa`t9Mr!%wGz}T0^S8%Raq3?H2 z6%ke7)bMoE#YJ_SIP*cy8Kj*A%}ggNhY{F&wkhBe+;wm_!2ehzpn%LqfSku8VQ8Sf z8cS_&G2T`#&zv<458jvVAnO9E+xWVoMTrc#)8}+msbSc^(#PyvT_FyPCO6Se=tMtpi0s8$z}vOC6FW~ZL? z+R48!rJr0d{Ab^K{Kv)Gm+8^4;)bUI{BRYpnssgSj}9(EYZaJHgS%Vvd7UdO^H3Sv zq76&)f93IVwyu&HUWkB8sy4u}8O)OLW0|L<5cY4iDp7`|9TCjvp!s1{J9&Vl&N=jZ z(N!Juzyb20JMBx$U~lhDa_79cwx@T1g`E~DzxOw_W@UjpUwL>*ToVOsn+udY{C_1c#c`Y!b10?R2yd|O zI0V||G1pSXB!eNUf-{{HlsF^Q@*_>Wi%S`R>Pd6sDR%K*X#0Btw<1G#a^hxL^{$Tc zhWhWM3Y|Zt^J?}&zw0=|iLo+CzyUvn=b~-V*NYE`G zs9bXlPue=1q3l2wvb})L8(JBwzB=xD!QELQeg0E|Hfh`MbLORGRV?qC zq;WeQVH+dP`2-$gp4DTFMgQb^gK)HA6OMgUByI-_MdcZtMT_3|#Cm6P{EGb|>`ZWd znwXDVX(4a5ao>=qu^ZEdQ?|h!=@CbpF-XoQrgwX1Y@b1hWbTGl3x>FCP^vqBoW#2pUoQK z91cHQ*^@xCy6xw;#R zuufy0|ISb9M?(aZRVbztKc!GJ4O_sRJ7~*iFTr``EWrduv8;d4T$dZMTXUAsB@AV42Zl z_?!CqctfcsvTOa205-6Sz1Zhfid6cJ7gJ8rn0|S9~LW&Gb7mLpizg z)QZ`VB&xi_F5o*efi0PX=@=Z@aYFnSr@P>iE|w{)LiaCF?%1kYS`k&g1G1)OPs=PS?Hf585X*S1 z*8+>=jt!Otb`-3nwTI3zwCxV_2LQ3Q+^nu#lyl!DZ|!|i<+Ou@hr|F!1OyaggsqvC z=vam)<%grw=m8!Kfp80FJm%Qu&&1xdIgAC!aTGOpvRiU*d2c$KRMR^@3;SoXsEu`< ziiGl|y})1l39>kvZLGL_6)k1Qq@H*wQl_~f7V=-rZAut@`LReIVCeFnN-wcLR`B8rLJtkx zD>eeE!jI}B<{Ni*puBOdn#D<<6;C@1qZ=6ykm_~e-CVLrlNn!wj+AfGhfx&12o^TQ zJMCsyRAbaLMhTzne~_1>^4$G)I9CcwWksuB;!f0ZAOpD8O0z-BnC;C1(=k{@(sHAF zd+!8vk-VH;f0G&d%sL2hboTAVTC8VP86vwxD}pvVZ!1nK_r_+^hNn&T>MfDv3Ur|>wY^5Ax9 z_J$#SQ74(eYh%Am05CF@dtm~b%E{7>sRqztfeDb_1dR6c26zf~9#rWYyRPAZvYqJY zOqmTsJF)G{7-GN#wl*p|Q#Y4SE>syE1xCq{AL$9?%k@kh4Dha`T%9#Zm=5Rm;B(FB zYfFwKcpwKSM6lMg`H;xBe>G$*Om5uJVLkhnl`ov0W37N8PrKxFP|m0OwmI7H#ZEL2 zKfckDDaz;7ett=N5SiM`iAh@wD4$shFlm`GmvY?Z<9QnxCd!_60|(4v&Oe4P1HTH(kmXIjxB`WF?<_Fhg6u5oHl z4)_e;{kcwSI097q%9B+1@7`}Z$E|}lb%AW3T54dk3jHoFxx^&>^K^@K{P?DSF>RK* z!#J36wd5MdH3chPMS0DMA3y;4aB;Ys4swhkAv;1<`$S2(LC+v-Y!?H^jmzTW@DGbc6+7--}(`+jQ<^`!+F+^J7mfjqxj&+1hEXFX6g1UuznZ4466e1u!B&B7O@3f z4Qu$_QaP#e(V?N(fTz`8|u*iU3-jmSsVjCM_PCF%4T5WKE&U{+Cf+yh~$&(W3A+W=T* zmSKNM$3RLiAtjBkjMp9vVOEpFX*`z}P99smB5Fxv7Nzz#6}bm{%<}m)QAWdFs;)CB zruW=r_SSWzGp?%F+7*j2kd)@m(j}~qZ}JRxR(BJxKPUiO=bUg|mSiw0ZzA8a$P^Wf zd0C0cRx38MD-P{t4l`sK+~8zcu_%vyCUe*cRlgYbAKy%vYO21SgIRKW+4?L(QWkwk zA?NnLE3ZEnvg*oU8(CgEh>ehp`a%l@f3vQ5y71TAZU{n`W2KbqO*Na1cgCrFnf6NQ zBI8jUyi~Q3hsHxSuMMJjV}aue1@03#>v5P*qb(EkWujnr9@X z(r~u#O_h~-;A|6p((Oq)Yp_Wch#F&7ig&txeNr~@bfFds9g;rR|1{avk7x}gykWD# zP!2%N&*5b6CWcAGgo=!keTHwT{7!YLVozDr6BTuuZqNrA*^HZSV%i6yO4Q%ap>1nQ?&u}a zBI=7Whc@F2E?=`gDR0K!Mk{Th$Ca6CoH(TijTmB#o%NIEq)#ZXY&Fi1&N}dsGTXjm z95$yR*}H7s+X1|ghLByz&U(zbZlmQZ$~W_=XAdZ7^+>5pB%M=lB4H8Kvw0uoDeEJP zQ|GV^EmWhQjOweQ!_%4FB+QCv*2g~tUGYwTF;*&k*7r=uj|!qrZy9}9@#cQ~ieid& ze5#KT^CzxJei<|{JTqo{vn9bzq+MMC{i}l+so#CTNcsB&B9zcALaIfzcaEj_KDd{_ z{)%!uG^sWGE6V|Is8d%{V8Oeu5fxr07?J3SU-a{8Hslv<*=eoIFX>ci;G_Q8@E82` z5cfwKvvM37K0=PFTI`(>!6+kpEdbIA+VNUNC{8D3>MpO7FkwevetY^lvnBMxoEhu1 z8^UvF^VVPr-jwJ%E%tE+ZQop~gHdL7c{)?<*mSTk?a!mRL3FmD=1uDqX?OMx$p&rc zF@cEe^uz2&zlVzxzsDlK+a9pr^FZfwYtG}LRVP5=>wLU_-hlc28}WM_dw#lFq8Je! zhWS0+!%S)rmY$}oo^OsQd~bF|9}b>xFRJ_=u0)@2ZX$4Y2A&^yA7G+S2PYkm>tQ+1 zOMdr7es>hl!aGl}FNM$EPa8KY9giCiM^6)-9>x=}rw!iwE5V0NFYoW(@adT*NY7XI zqL0T*eh)p^KPgJ3l-_^3P67Enon3b(RsZwzzWIc1)eE!!TpN>DE$19&n$zI{$~|(1hpwmjYRl}D{Q?UorYW{-=8UQ z;Gf4p)tg~_kcf<VwLLZ$u*Vt6WaEDh*?_$=x5dS zrjK;te5TWL_jh*f@-HKx4v+y>>kQcEFzDRgtL8joD!uc!V&Xt}TCBaXXU;F`+gHF} z>murA+d}GQ@*?V=GuBS=GZN16kcHAiLmCNGtxuH)JwXqIpUS73VbPDJr2$gef2&wF zKqJ?I#+9rk@fbTP@q>f}@so4v@n0osN{l|q48+Id%sjyM`aZ|w&}7Qq5`?Gyq)(@K zq7~Bopl0QP$CsYU5@ZfCbo{hDnoz$TWG**r^gaNy*Bh%#jPhg;5nX{P%R6iANCyw< z{MS5o5cuI0JvH<`ZmEVEfxBzVjX7K@d?&})Nif;`v<^7TPED~Y^r;j$-IIw+J$poi zcd3S$)W{r%(dcJFPG;F7HBdQu6=d#s4=ELy2r}=ws;cU`60iMouMIalDLN>Is|Zc* zx;kURn|3+phKhW8YfnMFa#cmMlV^}-X+%LiFwAvvhl4?l-uOKEU^aC1F~;4s z`h8s2qB8k1A8^I9q=^`iB84q#JmS)`s&6dwf(VHLydQ=|?5M+YPi&C6?ftwk^ocRN z|GQ@O!J@YhO$n~HNaFiR55jm)x*(}d!%sVssCWTr;Y2!J)bbzVQj=efabbJJlbf=p z5kd3MVvKd!w^ZV3+;OQ5t7(efPz!e(Ir+RN7VsSE3N$B@j~$idi?wc>G<%<>^7g-k zZxa#lqTN5Fsd!fpclEws@b-G-+A8#XzWZ^jEr(Q8|0Y&Q)b#0n8gSEGc``pM_;i5l z(ZgLn@Us8!M_2rR;s5(DVdg92C#~Pwt=<_d523iy`3h|FZTp0_KJkj4r@)lhIOT1|RNfIRpf&7( zEHNxQB?jE1$0O#Sh29-&8EW_X7m_IBnds&U=Vfp+;Ujk6~Zv zZ76%VQvR?L!<4jv6m^x+hVlZ~3}`__(Ay*Zlz^1{-F{X=nH|K(qSZx0n>b^d-#!dEm`)Ljf_wKFT>AcF# zSQ!|f_oI;=bimE1CPPC8F{QfvCz>LS<3IYuD)_#$NUbaW?301b!t(ji+C0hSEtbyk zsH+a1Y)Hp^vCj#wi;3F(7pAsN8s7_zv$WHTT+^j8jzE8Nzy4o2k0V zHg6SX+18E{WZb6#w0?ipl7V&(f!~f^1Spa1(5&8FqRIWLC<~cq;i55=me) z3C?Vn7hLZ!QnTeKY`dbGt$>K>y-U$qIjB6LN$YNllI#or&-uRQSRCSdhs zQ$0R~o2(Vcp6{{^B(R|%`q4s#ZS#%(FM%0X(Q=2;dxnbZ z@IB5#)gvHEoZSqD=S{Cv6X`IrIwUL&Q^gsTkMZ`n9yEF86wf)fS;2eoB0<8}Hi)gK^sdL{t`dB~BgG1a+S>aZ5W z$K`pZ_V&(L8n24myifnc*X=GtJvM!++q??1AVCUsYv^trCuM+sRKTc+IQ=wmwOdI0 z5MMa>bB23G0~}3ur%u$WSol(pX=OCb+i(5DmiDQx?e6B|R3@33OD&RJIG*P2)YA3* z!ELWO00~e9@8id!cm3)nvfAeTD3#9Lfw+z3WBjPJ{3qu94`GC1on2;6wy0qy-`WK_ zPTsFym`Jci>$?<6f0zVeIYc@W>$zMKHqH&>>{Ahql zDRsf~uI5|h`Bd8@1Sl}glO}q+l0FI^BRg$U5O(=f`>}&w*Z1Pvmv0R-lDR_iIsSOr z0vk2l_XspQxYFDpW-VM$xqKx2`-opg#viTw^vc6wy>;agtCSPLe&wS~lVA@axdVdH zoF)ken?`K;VD5+#s)7Iy_mZspc~Wi4t70T^__pr!RmyA!&xCt)#J`caRQU?!JKwQ3 zxf8D!yt|_frerITCJZX2Kj$t}@Xqt(N#epbLXQf`yOX($f>bXulP&SDiTTJ-~^r`t*JIYlebAFi8^1-Ni0*!^3PVv}!CHp)$2`8*!a(QP8;F1bqS^Ms=sq zVzEu!8_c6Ng-WMYun7|`4Uf&FwB0H~q7KBBtXqW9{ezY-zAf}z(%Nc9{G$yF_4!OD z@Y9qjr?ms`o=7K-A5%=24<$T<&tZSP;>k5LKRO#n=Jb4LyrMj?5C{Dz_1GLwMVOeX$x^ARUeOT|5%kY;=n60Md`2cILpM z{K}$f=vXP%U-tr>>%HP2d-mkzaMJgWj{YO{*nV*vTeeQ6WMH#J5Z;B+f>RWlo5!iZ zD6|EmAn;v{DZW%cpK3#L76J`c+7Na-#Q3ByYVX2MlF`^MY*4OCBIWWeG>lHPrQT!o z+qbuE)#HDcye%kXSq_B zO>^Mf-aw07sle|ISyi&cVbuiYbl(C_8EN95~Y|It)w=8$d+QYcdj`S)(Pc$ z_dUtf*qdvqXc(}JFMj0Pg`7<(AG(%r69F8Rp~(%8@}qU``5l5ioOlX7E7^|k-1q@d z?_StBz=_qVv(2f2r@4>vVoGcS(2Z?F+_n$sCSy>v_d6VI`;fc0lHF085k;$U!WA{B z=aM>otd*kcn{l0`KxcKtsJ1o?B9~32=7vigbL?-e`DBsIFRH#rF>wg#ME+jM7u*`ynlFAerl9v;|@p zWcye{$?{ux+g3vFu&TWBsODPPo>*m6g=n>b7?t4NaK;*MO+@eS4HAp;ayt$D#GA)i zSZ|>m;DdVhv3O^*(*LQoEzKGwS49T)#G2Brl0hnk;NHZ z(|RPQF+DcZ`g0^(D1koQV`v#n(;`4V69@UW-Y z)70u>YexUkYD8vsQ3I`qrLLpfh~IV#wFzVcF3kmjEA8m+SS-HKEDRhnB^6awSfArVXu=SX6K%I8-4Ei#Zq@)zxPa5 z|L+%#>Za~f$4b$&3>_VXO}M9AOj(&J7s_n&<$#vUojKf4)&M7#_irqw@MhC%ts zKkglwNGKX$hI$$gtX@ji579?gv@CB|yq~Nn+TkPWATvR%wAT;v^FW3Q))?hn57BdiWhP)lnIioyK zvvAz%R4`xT^s3Kc-G91nJiJ#$Ext`id!Tbi*zt)x>ut4ucV?Fcuxaf%U+w7Mf%dShb4K8GaN=qwgt!A1hpOkTj@XHQtsh zb@=NLnZ5?S=J#1{uNLxddn%b&c>My@gEBslFy1E+?^!P$F=ycnc8?l3xK*|KHI$y9 zEb924P0a2V;emDoy<$&ZaDF2=w-=qTr=y3Ito_&7w*n-m&trC`#5KvCeVF!fX>$*N zIq`ewvprs-2a_u#&q}v_)B!OOrPEF^np~o5HT@?5-YfUf!1=`*BmZF8iiF-7u1Uqs{dutTM7kq`RG?EP>>Gs;P$szcx7oOy=CE zE%OVXh0E^WLzFaczZr(bF6xyL+%Vm@tu>@*x#UK@F*{j8MtE(cm1n_|zWYw$8gUt05@x@#z<#3+6SQw^0sf zQ4}4usH50@8=}o!M$l>?hfB@4h5B%pmKejL z_Ajzy4Y6WFtMJbnD=>`!5K|;Dj%B4eKVQEA< z7Fjx%PU%iL!}oo!bAIQXKe*VLXP$Xx=AOAH@6X($KwrpNsyRA$*VwWZiKw1nER=sC zy7nG)Stwsail}B74F{$derIO!3uQV_s8=|*Jd#dBmn)ySem%_Tu}BlWQNkLYJWj+C ztd57|wf^MTcS8-9rNi>672HJNt;51-k`cSk9=jGJ1%he%>hb>=dR(MNf@5IOU8eBM zA)*Qw_Y9@YDGX2=MZ1 z5A2`Bz0B%CY$dA6acQ$ddoD_=`l+m>tnAH_)JY{&QCR<3E=4z;~uyJjNd_Kjt+4*cTvoK|v4)A77n zG9)@DVy6whIGhGuOw#mQzKj-M*@@P$i_0>Bz!P!;wF@K5&7Y33g6Oc{##4v)g#VGQ z-|py|OyNkEsZ_4*FP)F<+0!_r?}eE)W?CA3EZa0MO^unBX^>?$`ACMhsZo5Zk&xYn zxmMlcgNRTul+&|~d?|3v6ARC95PdNkK*NRz{O z*vMg7gy7Ey{O!b(37pQ{_6mDSXBNh6pZ@k@62RiTDOLYcz#hEd)S;dIA;#1|g`5*m zZ~fxOWlrR9d5`GJ#3pUN+|MbpnkqU@GL2nA^)o!u`=^aEC(vWmvvES$AW6B(_GOGC zH=Eozr3LQ4kMeXGku$~0oiW9(Wbm`)UPwUt^S7EQ2V6C-vu9U@A-7Gwe%KZ%c-ES66+ZbUO6skeh0iam6D)HsB=Pl$734nJWE&65MZ3?W}$x zCCbX*bE`}6EBeRI=U`LeYO5z~)M_GibA0MgL?+XND5ioi1($v>;qN-*gviwlLV)xm zL}G6!hPbngG=N|3iXm0JT+Vi$UoKKx4UZoiN9060=(%9J^e%|d`mQgtaBSaJLJ$4P z-sZ0pEo1?}xwuDmdco?0sC5#sQTxOa56+qwMDzy;Z_4 z!B@JXeEF&G>6`Ko-?nzgI>NmNk(nyi*sia9R#^AR@<5(TMKRjAITnNl!>2^51aS^+ z{`BCxi{@HkD4wpmV5V40Ez8(yCMA~eLuHov{QHYdbAcQYd7Pdv2KCq0@rGaJw)wQK z^qR%Ix-Mz=B{H&NrrwiGP$g;ZgMQx3=Q#H4ZKNmp%GZo<`(LA6rK~*RQh?Ye6>>4= z`kPrLFg@bYMFlsT!;Fxn((#RbPS>4Bs%!JQUq3;(6&p3v+0k}ublW*f#l z)I?dne)Z+fvp++(=fjnu738!}UJLVDwG`1Srjnz-m9`iiP^j(btlW1w&edG4~*z!{QvW~UEBQIORCM;%Gkrh4oVAOuLYo0 zL>+;Gi2SC$gqAmed3h}WtwJjV-bSjhV0`l8xi?3YwiHv*9LS!|$7f^;R z-_?@;$IDhRC?$!G_=^M2c?m`xF_OS zJzJ4!AT8~x01dbUKI?ZL*k70U0)X0pKwU`C<{N6h6My!40T&Ro&!yHtN{fG{zpui~ zu*?R(e^W3e9HJ>aU&}xavn{L;ekv){pvaxUyA`d(g1PeCJnUn#5J z36NlqGm!i8w;=bnKVwS~Nw~2WSuL6(KJAzDy|+M-&Ln~|5d^6wi2wlu%z#{2lhl&W ztU)i}!$;ngONsS)JUyk$14^MFNsX>G@&En}0)h7$lELTD10Z!9ycxW1!pba|DHR|v z`y3G8M5o4hN-GFuSqfbGJsNZSTE69@f!v#lMZ!6H@BAh?ELj~~SsTslK?)O7Kw6eK zko9K08gn-^d?#i=to(wYx1s)~Huo=gy|M|!V)q^dO$Bx5NCil~J_dXX*9rXPoq_-T zR6wVc0fix&Ne&y_vv5O!FpwfpfLVpemXr1Ke-j|+B~a$Ip8%%P&>g(<@Vi+{QT=m*UP-`9UJHfFzDqfZPu1K)gwy#9uRk5`Rt( z>UaVn$clv&2$hS9?WkHnXsNKwzwoHv;#A2FM`(c%0&JW}A15FV98IeFoR>K3&d$;b z$eoij$X%B;>wJ9H{uJl~JkUUu;fjFB+-$%b%A*>;roRU=#9jrYv{4MCRQngGn5iKR(_q2I zDHkAyO(>9<8_*}{S{0V82=$}gnfTQmS6#&r3S(dNHjpW&2&lVv47;|rv@fgB9-vm( zT}7F~$#`z(YjZW6;`0U(QC*3i7$^gD5NL(}r~j3lRaqQ9lLVV|>03?0`EdV->_Nhc z{>76~rGW|oA~?8;;M5RymfZqMpY>%1F9PPRdQxEWZ*d~c@B9J*b~MHRT})rx_47TL zPxHI{D}K@aWc+gFa(UTr?B8tg#s%0>ESuluI$!=JeqZjqEZR4+CFj1-P5ZdTRQerO zJspM!s&|dX{t{|1n$_;F#}7EzcN4GsKka6hpVRzV_$tx-aDw9Y4SgzeiC<-O7=-Sd z_Yt!%HwbrtOPN&rjkDHI-g?^9+wl}uZKc=EVm~sr@%+tvYziBeD7Qk16S_7#TQ<3J&>>LAp36?v-CCMcewnOX3|`B zVM(N$lQzka5l!ALzIHn{!dpS6Iw;DEnTM>YXEU&3v8qG>;?K1i2}1hMcs<6UpT<_7+y zwf@)}dIq^p#r9pY;2LrA-)qE-Rm1*Md)QDA)^#}a+Q+4f@f*3R70am}?BWy(9 zYpq26{cz*T)ui*6FFUbNDUU)Hn)2A{W zh@cbXvufb5zwv#EJ|lwUYuW_8Mg()3x8Dyv)4M03CSXuuQZin0r)?_TqY-9YJYEvT zr^>-ER;pi7u5;ra@74&D#Ks8w7AU3bEmPmLHjD^cwfnZi6w1F>m~7>b-+67=r;96b z+{Po+$K0jIGfjf@&3y0ZdJ;jK+xL!3B0vZ4`^m31=0h7u5d|I_FG(fFya@lShk#$~ z(=|7U9<#&&e#zsCie56_;>e^9s(TUft0VbbCHY)Y*Zx$&hKYPQB?1@*Z#G6d#5KT% zjf`2$_H91lJj$t1`HJggme;jhstZVNSY5X>Lh4u7@WQndgmn{+AFPov7mevxUrQF8 zcDYR_pu4sqK+&6Sgvf^)??w@<>R$a#fx{2? z)7fT)tE7iN&qZ6l{PhK7->rC@m})Y>rg%K;W`ND7-Rc&Z>%Lz$$7zS|J$&qDYfo5V zGh}S_Xs|cG$_SsWn8do+FGCR?@xbM#pa8f;FXKB)QQfCFg8hy5XS( z5w<*<4;ot$0=Bs1a82B2jQqW$f&_lPhU%`_sHLr+9^J?B6HlL8JN4tN^*%~%IqW}` z@4gh^-TZ1SIf8AaPh*8f+dkXBAEkXeTHwX0jm#WwA=a*0r&a9x&p;WMZ5q4Tu=+5% zfbMf`59;^?TBdJ9f~KS0Z4?h9;BTUs+gg+$=MSf_SW+IQWUI<+>d{sD&+mK97;m`q zXwo+V>mA<(Uvr5OJo&NUCl7#mx}~1Wq{6E}a#X44hZwUiJ5-LR}*o2KZL-%RLSPJwEigN(pg zkH&D7A@5dX%ry!-oj7;zxe|{A?e+)xIoDPxQaE+mSHGt- z_w1UyeBD&bdw%E759ptSl*hU`(|8D=C_OAT-hWbCw2MD9ly85bPG;5$OWonF`WU4D z!_fwI2k$d~QUIr8JTmS+3_K+6aV}F0jEI$H3t89jAT)ZJmU$8$eLI{S99e>2TWHgC z5vmy@DTm4|R|X6`u22ocDXsIR7l;dmZEPD_Sx8H}#L%{Mt4IIHaIz6h_6@G0Q6wKB zURm?m=9b|i++%0cfmQg zW11u5g1BN;bK$5*nIv*@jB!8o1NxZc#2;kM`;#b`?*GUtc+%psQ_Zkbw67pLe|?R@ z`M|d7$DefkmVfqeX1CifG6mS(q~-B{hbl`&fJ1#jZRwU-&3HKs6n465cd76(={$AW z?7u!EVt-^jsV5W3Iv+TpWucSAX4HoG%gA(bf{@lnG)ss?6C(LAc zRKvZBcp#i0W(9Ak5Rg|iD={KKA3qd*75}WWfit6^ZEjVc-fc*-jHAw&o!Y>F;!MVh z-As+eO*Tu)?PgI__5eo0{WA=OA86>i9nTx*}uwa+m2G_;WrA=B|l;d`TQv+q{UOY>G~aS8qPM+Q3g z2FySxUAo@XIn0-IC4bt>y(HER0s$#;x?swoL+?+(*FVIQP?dzpf9mR(k6#(@>Zs3l zyi;_8vsnDa$`arF^9<%Tn_X(dF?Z_A`holHdakI|rud3`$tC2BMGI(Bg$O-`AMkLC zX`U7==hr}xBWm<0qbZ@f0u%VHj4X0j2ue@~R zNRA<(5DYQ-^l%Hazx{zEN{VdW`J@Omd%23SQMnCZ<5uvO3rTer8wNiht>e4vTyi0fdfB0MN3lwCtH|aXl@LfNv$clsNo}g6BPfh+G18&vHirXWkD!(SJL8$p|7WWakgr=>d-c%O^1z z&bK|mJkHQgMMe5dw;GeZoSiwOjLfyXXm(M0#mRxo?4Dq8u_%>dN!L%=rA}etEml$0 zCtX<^-VU=1T>@vQsm?PQ97(ffe7?#s+3Iu>uyc<2Q`9F(9pD)gFTW@-_hm0CT*1T^ z07EXKV133t!&%N|2X(vmY{2dQg%<+3I#kQmFr1wHw1%(T#5K38Iz!;mssJi9)3~>B z$lR7~uLmP)DLg80x}QnNKkJ||u7C2~LSRLWVb>nc6JC0_NKPz}2-672N_An!PFn^iO*h1}RB*Rk z#NIGYf{{&~`}4mYFK*_pwN~5SubDLtxQyVZG;+*jP+F8rOBCU2^a%#$OGQ7bY%Nk# zT$vTR8Rh+ni<*>2h>Iu_w}{_GuSopDVdV;Vw_H$3Q#+%!5XIDY&E4D{Y1`@2`wH^Z zCdlf%EaiotZq7TcJ$tj0#^!wz@_$HiDLT}J+sJ8xf`K|oLUtY6R9s_FtR?xM>PR)^vXF z+EHPEakGBn#`)RRk|LA9n6<_lD?F}sGn)J?W$YfX z8^KVi9flM(X}z608O~=;MPv28=bX>jkx6^W14yB(yWWScvqawh;vRq`DFJsBwh@3l ze$yG7r#>@W)_#>{rJW#C#4CInzyJ)q$X}*g2s7ECc`hGjHP3zSBiBsDVxbSp%B1Ymsvw1j*D2(0!sO;PlG)ICCzO5tbLB@lc7o9)#C0dJDpqs3K#&s~i zVNO5Hh%D&!I(Y`BM?yt*^YP#cg4}8sG)J0ksy-?Y9z&89>pSi;O(@u=LwR2Mkb-?Bx<`Y{IKTgAr*!_wcU z8B)5M5r&ul3}*ejHFHmFzf-GfkJ>O7w!`?+oX25Ys5FU7F7=-KduF`7LFM~dY?@+| zSmO*THmNq^`Mi6??0npWIRQgWP5Q0XPLzSp^0}x@5y9}cB1&w!?BhYL$Q`SBXcZM& zKiGy+#aD}nht>5xRP87e*F&S(AvV#c;BgC$x>^K5 zNtD9eqy)&=EAzCnVcC()NL9uf)tJ{h55FY#DaWX2`WBjDtU5@FZ<#uNfZ=_IMSWwE z?Qi1yes@u|Mk?vmE_?jD!jL0EZ|Dc3+3g1&t4mGB3-bc$f3HEs4ZWEdLxfU_;R-+- z6%H`Y?uOGcjUc(BJ~0^BMT@O&`nw&x+*fmQ4nNqTQ-{W$x2efTHCu&l9B<(J2#$1c z`y8TyVNq#}Lcx7yfuu_A8dDkJMJ|#@K<}eM0^Ld7lO2#|s3SlbML2mo zo5spOtC$p|m&w7UyeF>0)Oo(=gRJ)=bo;yb`Nanc($tDJ{3dsKE$?ZXbOVK|pPZNXq%Txosrc4&&b&CP zR6YeNs;D4@Is)@fr{b%j;2XuU@>^~2Uw6l&@KUfRB;9-WDd(+CHtv2> zG>{c}Acfj{D3?>s412%gsx(|p%Zd$pv_Lcr(OrFm89W)BSlcl49qJhXQk`6Pa%_w) zD$x7h-FaHoo3*hXF;;2&jzX|hlfCaR<@_4|_D9!^dGA|rd8WX{`iGSB?>TJ0a|{V4 z{>-@lR|Q%*KRb1jQ#3GaDYPZ{^4?VG0P%A-nGNq3In{4$iQ1_Xb6l_SdvR_gmi-jD zNZNNG&_xPRb8=XH5z{fB*%Vrxv3_c)Drd;O@JJ_gM5-TebtZqGDX%p>g{)hm=XY*^ znFX0o7*}VFGPERo9>cMi*pvBSNTO%=WBaAjt^HT$lCe6H7vcT$Zc#Z#92 zg&sG)lXaUU-9`o2pp)wD?CjE}Op?S%v~wQtS@XBgRBMZwQaZi!F=GBome4-4c$krO zM*L-@QGjSxq9busmgj^|;qcOsSMte@C9n7R&Er_mZeTXs#R3n7Vj>TZ{AdJK*# zJ1sNeV|9M@Q`HAJwbeajNp9bMbYU4PQ0>8Es!IOM?R|wv`IqLuww+a`s!m_40}A+( zzW8f(!hF}w%Fz=|L%T|{cHWsU50J8A{SYJ0KSsM*Y%^tpgrfXhl>vWYOq)6^ zV^S|BEt@TT`Z0nZHC7^~{jQR*p7MgGPg_#8{7)}X)1j{D4C0miteml(WiY_W^a$4P zpTe)nU$tVRIJJY1dpp2=vlxi&;y=Fww*b~Bt)F~|pR_dgDw}y^AR9kx<1TJ6%uI~& z_GLlmY0U^!YQS;s@w*XtqzYAplDO)Z`?UjAkGLi0S4DP;U0stG>A(b&E%_)5>B#QB z!r7ebj;HKsruBA$qh_Cn|&?p(s<+fNp!=oPuB$7nc|@)@+eGe-85-*~h0cMS$TqSEkOa%4*l+ zlei94R#rlEscqD1XE6gJS0c37RVY1NT-|mWTO7y1_UXIxKFp64p2ZB6*7&%nJ+TUZ zq>jc$jhNGXJ4nyOk@ayY_Mgv$ic`ARRzK5vep~8Ma9(bh z-oAw&YlwSiffJ(qC+9ce@%j|AEzrllXF=#E6wmZ~z-SW7wYCB1Qq%`>?Xqbt{Z1 z`?m?_+2!OJ=*!mGw}n6a7{tJI&;n+zS$j!d65ahu4ePc-FXEFl$g;E{5F%+*lAFPt z3c4(fX~WYMWvU#LBw|<@MX3ifb^e*v{EUn^ru*EjyM8TbX@J4xBpiT2mL^B@ih9a3 zFid?PbkbUAZJ5x9CObdf?Eu#VDs13mYR%Rg-@Y8Lwx2#mLD;A>^BMQ2>n)Fd{;2_ru9E2OKT5f@^yCt_3cQ^;z0@0*hXZLc8WW zF4av9`Lx8TRlK5q{Cxj%dT~*VoETd*QuqOStXZ_;xtC)}vSZ5ekF2cu5PpY3*F4qu z9Tn`1Ovzi{n;MwVY9rZXEm!St=ThNh42 zuv*E522e$aQ~wm>*R+WxjOEV%7x%H3#7NQ^H=iRgcLPJbv%4$MKPK6)V1YjfP3hYf!TMCVzZ`?9&iiW}+VfY6BCd_5H zEM&N}nT#w)-b-}*$^T;vA$Y!M*-_SEcMck>Uy9F&;#j;QWmI=&^ZoV}Ues7XHL779 zULH!@w}vP$aI_*_(y+hauKsvc`Zgn96m=@gGL-$UEMY<1z?{!$w4K8OyS5d??@_7f zf$5!C_r43)Pwp%->54ZQAFJ(&zzlhffW8ofNqYsASY(`tHrzJy=Ydpv`B=3t+?RgB$-qh)djneLnZ(d_%(uS@j2Nf(Tf&fCm=5mK6kTVFXlKA> zTp)OEaUNvYn0}pg3%Z4x=qm15L#{xf#26dqWdOwNBz@g=e2~I1m0t|9%rx(o7g#oZ za}7jRq#cxZpHsJ3qaa=BWqg9K=d4GO4!e_G-|20nD~izD?`R=)>s@U?sMLcdPX+NY!0i#1?83yI?qK-KzQ zt^vwK%5xXrZ-_gwI#Tr-)zSwn=yP-@y-C+y0oWgamTrO}9xKUFGdeBjFHv{Mc&Nj<*sd#L{G~zhN-D9x7Il3~CUtBW}?0Nat(Q zI7_$^(CU_Tf@=BnFT@kLSYt|uXnKLMn6h~n;uA=^ZUljIMR!h!(v^`q{3w18U};Wx z-57QZXN|Eb`j9I$ie-JXVzOX7SUOn?Dafea&e%w-_K%FaiO4wl=EfbbE8qS@31Ee8 z7}MTj-mq(8NC6*~^Uz;F}2DoYx|{uiwt*^deP$qS7xg5)_Zo(1Db9yN~SSg_^=YO6P`;<hEsn+LXCYts3|k+N=0pn^$?`)X#uuFy zYX!%gZDkL1Zy_F0z%j;MjI01lUG$GS*(D}#az;iWQ3T0wqSViQ2YHQ~LBG?1mzVt+ zk3#G`%VP8bF*+^N4ECAU92&dgtzzSm7UZfOjbGEdm(XdyV;J=#Q=c%YQ`v&3dNE3W zLQuY2T4sq;mf&+8dvZm%lXI%^bIqyFt6EV`#=QvHjEv^Bd4YQ^G@xNbX=b&?XDC*g zp)ZgG(^wADFjBy^O|bu+#4`Q1q1*^^=`dP}n@^I_QHhN6Q7s$XW% zt})~4z1`ybuUWw;X8xIh1#d!~Op1rRFn_o}0f(kS=DbvaUKNOv)KQ%`Q$HqYH~z^& zELk0f>MJms)oxTxcrr*rDQV7F1>6kL0eg4qV4K*<~U{$FRs(`cP zsE8TI7QZgfS~OEW_pu_VdSLIkfH5kZT8!Xl_pfv^CKBkJ=n)>5-h#*2S$VA>-^Ty| z)v&#HxSdrB-EF$k0P2Z586JH8Uqu!FWm0@errqacMwb+~;LNyIOH1 z@Qt@tPFaNRrkwx+Cm3wlf7Z9eK`if;;}V0eJfWr0vs zXJPETc+-7XfVV(eQ{ndo_N?WB3huL*CSX!1HnE;fxO=7ETZQWijbn$T-zPkc`myo! z=i@lB;h`jJf{fU&8k==-cFS2=#!T|UPmqDJb$f6h-Jt_ow;hVwo~)0|2zcwtU4W2T z>66>H-(2(pFb%x4Y_im8Db)_{1)N<(%_-s|j2%;#WjI9biT3^3t8s$@=iw*r<)^DS zVH{DD;nFZ`Rjjlia2V3(wU9v`4(ZcwOtW#P`gPv zDwwYp@b$N4y%0>9LwefM;9Y=E%dTXGJD$o=N1lfvo~$%aj`F0_{~}W8segE-o_I~Z zblb|myVn)txRAR1?7Jr)Dr2hF2_H&x$78u6zfm}6k66`7DsURcKAYJwA;Y7ZYRjtH zB}sM^J$VI&f-mI(s+fY%ZqR*;D>9U#Q`zGG`t)W2tj0QbwZ8{CPC>=LpwrkBbB3;ygPsYwzrK>V zJr-bjYjATy5}#Pqp>hCxYuU%yI*3CtEfHYsQjDqme*cvoWv1|{qWlS*OaB%+n-vxS z=K}Kq0@8t4+^)>w;QXdzy@wS9cInlUOL<=C;|Er&2*6?m_>9)2FpTC=SH+0>lwm%k z=*%E($@U&#a7fka0=7xH;y^$R*4!Qcp(%LVfQct)Hwm@P-es|>U zhj3uh(?sBM05e#NQcW#}?*IOM|E23NGX#=K{;y@df7dXoHgoE4;}y)~&^QhHTsD3X zL0&`(A{cY?S*sh|wk`#nD8SO#Gz%VyNkJ~IPEr|2a*kGzV2e1QSt>?Bm8OHUIWsAf< ziK71RK(Be_I{#l52Y|P!CmvEqj0&>U8K=q2h4}QZ_rnWa#YjYNIwW#jmS1(de!<^D z8OnGAe69VKXJRa0?pn%6131W&;%p7!=o?tq9+fqo1`6B|mz&caIcah&_Y^F4Q$~7= z$?I$#WG^p{KIf~~yU;|@&u_bI<-K0ukFTU3KBx8+IGFwuG3;%n(j{841&hZ9)aFf5 z0nC=NRyyPj*a%BC4*FtB+68bS2gRpbsjP~J=nzkRDk&UTb8g?!vXGmvm+$4H{*M@P zVfr6akZND^thM&AIxTxG>%%AvlWot0z>h15Ya z1}h0?BzE3~Y}u|mIE+x@J9(Q1UYED3+MZF22f}N|8lq9)%vYq(T;JQem+?|t*_%6g z))XIC2$ZLk@S@OHQimQ?6|fyp`gI!Qd18Wa%EatKaXMXGoKT6_+Dtd6@#W4kHh`3V z2uZ(RpE4k(n##xU`N9tSc5T7f&R3wqQ8ks8A$L2-Kl=jGridE~J<2^z$#n5uw(47u z!SUX)E}Sj0Zm!QrMdqke&hWh|OZkss##q8b49i~!q|&BZNM4(IV$aK8nhEw=$V z@pFLe98Gs9ZVCWtl8xzAUY#zCnch~JT}PN%L5w*!C^O`{3>!i<-M9H&>H){&?RFcj zjFTpAS6ga}>-T`~OUZra`$`OTcUVphnH{eHi?W+n=s^ED02;IhKrqOyP_b&v+GjAs z3&mlGEG2Z=8!#a}VE)JMDZrkHXS}h?UjTp`SI!|l{F*W34s-tL)9#g~slqqkubT1^ zv#NH%6?DjE2#k~nKPfnG=dq=vT3zefSl4i%cyx$Lot)S*xY&X=?m64A(!vRC?w#_F zJ@lQ|BdTvt7PVUZa4UDkjq9jrK>G@)_xA)SDzf|(7@0LjM`z!j`yE)qsO7-(zCK0`&P`E6bT!kZ8bX8&u;I#&!iqk4U$^xlLUoW~^J-trNkLRL** zjn8XO7PJ_mkd*rnuq(Cv&wM1}tT;ssp-I|=_ynMtgA0@SomO>j<-vgS*P6|=tP@A9 z&n@*u)Xcbd)3c@>9NXJ zo6z2JN)dj20?>Z6WftXH18hTQlNqmB4XD`n?F|%EVgrdk|En~h=z0K1y_@?fpR52q zH(V!5a~7m?C8bLSCzS#?igEI_Yd)^;_CRIo4<~83LQ=WW>bt;hy!=P8ywBH}a2WLxOwyp*6h;B0FC*3ykCY=xyI20o2Gdt;Urz zgTTWqS(!0}^)Xm4?4?&MfUQX4m?{%|-B2mj)HRq%S1yu++tn4j2BEaV<3$4tWAtA#TnGbX9+FXaTH}y96+mAonP!O z{v`HD5nEkZ`L-gtY!;`_5^VPoJ+Kv&y%vq$>F9EZZRVE&>uS|WK}$l(w$9L+!>6ik zJ=it!7=Ke&wsQp`+h%|i+@I0v;}e_JPmqarCCR2S2ockdme~{elLdBDs-+or`AeB1 z-AdyqHdHE6G_Qr`evA22!x-}%Y=wfzq6^L0sK-;qtdhDM?=mtt@DM6WWX0Jr>36pC z^QtDA7u{8%@!;|pgS|`0@Qju5oYSf4f+hqoE^M4DJjU~2=jKCGqb5D)G2~48>~SH_ z+tsAVG)u+~Z%~bIaJiwZ9ji>D!2IB(j8$17>`0y1M!L3srIJ9CAKBz(B>02gas7*bNU_-Vj&I`{u7@WhoD5 zW+gS;R?t~f?eZ^?NYQpK(0TSbsvj1oET3}TsmUj#nk~nIE`IDE{DY2&Thu978 z;X{pRt_GCa-0|};8EQlcn0oNnb{AbQr?Dr(u~(!+>|7HJ7vVz1GB`DVTNO=W8~K!} zMIC_pV~+x$d+jw>XWN@O(Sc^^zVZ@^xD%r6p}PrLYBDLMT17_k@~3oh3{1?hOt>iM zteqb>5sVKypr|$+AFwU(Z}AetJ<{UF9m~u~0ftp4WPLmT$^@>Lt=b7)RGFC|7B_AecCg0p6|RsghhdM=*PM+w2Fa<@HjlK*W20o0SB^9 z`ar5cYp8{si504}gl}h^KCU0RqUUxqG!x-N=(3zOgci{lJf{>E#8pxwd{B ze5^x;y;||>{+kKO6*#(l#4&rkpmyrDvAnKd8A??uKBLrCUgM0x!X|p9j$oqrnZTXS z32^N^H)yfSVIt|xK4p!2@cIo%9I<4k6Z*`oam^mpW8F)i$wbxKF4bG#Q-qMcAOi5M9um6+?=XdSdCy$PDXu zy{GiU8U63!>3iYZ5J-~@JT4^mxagGzHaH{~5dLxz!qAs2>oK8X-;g)K!MnY4JGtO* zpCe@9r6_NvXE~~l8Cx+B*?4K&Gr3<;qsL0x%kZa2O*u+EK zud(h=d=sYXb76d+avTU|z7#%*2fZKSgJ0})V)~x#2NHZ`LGJ`WrfhLxBGLrA#VgH) za$7-5QFP-ZG^YF}l}=cxCl1%FBH|8(pGT{)c^=xS`YI`uXUs3IObl)rHU^ zQr#E<`dokLink{u?64v-(?l0pHbSo6-)-MlxuN^Zb}05r=ML_u~0W> z;qW2P?*KJhe6@YD%3HbmG=Y1z;2Y8fwPacz+TfxQ!SQ9%W7rhn?uy!iGUfaRBmm(P zvPeWirLLE(?*tC!051az+ywEJt+b~`r5eun}Uo*G(h|BuFR1G9yqdZi7U|X zOqd`+A!FL!We^)`h7p=dq0Wu{kx7b%UM&Jz+V>R`0ZOo|YhF^|owPo3G?g~{7ynzH zS3TAkQf@iBQ{4#uh;ii%UQ9U%1ZYlMmv`j>bG6dh_p#6nh? zyeYuiyB?buW#Q<42ptmOWy>q0RLHJt^Ew zICPi*g_YcBa6uUpw%pTboPa$w@u*mFNTgOGWz%4LOMKRnex^icqZgtIMUb<$Uds%x z8SWhH%!^f4a}wOuB3svD@kzdk-}vbs#ID}}zs9u2w!XMfKR#i% zejsHZNfJ+g$~*f=s5FkKk;QN>^f@HCs>(}7VONZDq1gY3g4%#}Ywgu-wxXVjwf?4{ z4An3OXpi%bIb^Xn=j(57Pc`^NK+WS5Q)1O^en$CEj2XYctr%BaT> z%`VaHpfw7Gu*fIklnQbbNBL`)l7Qq7|K1Lo{tna?SNNbABU*$ip>+WMXC+CTIb z9S_R#{dfAaOdES^l>$xTuj+Oe%^&>Vfe% zxNnV-KUH9)#ugbRqwv$T*VclT4pQ^}?*gk^y0Y56G!~a;61D?iws5>WeR-;Sxf_hQ z{1@qW=_Y_cX8-oKTSLF ze0zLr=Zn+j2EuPAWp4uEix*j4KRtm^!`r4#4{)LhKSfVpuDVVCn}6c#ey+x7eO{L^vh-Q+cU^|NtiLd@kkRUzBr$$=cLKu@09 zT<8rkq6(Q4_r0;~^c!i9U}Lj%x-45qXZJOgGFmKm%TT$dUM&F5cE_r5r7CV(rm#kq z*O*29&UQo=6?<$IThJ~=*Ts&z{AjJz$>{q5$Bl`-zdOD!K7P}rHPM^p{=nII@=Iaw zCz1jd?t{FGP4HZS8|>-EreCIXnYHx1>bs+#w!pA@4gA5E8S<xdTW^#6sP5PS9G zP65N8I4dS!C+Rvc&3<} zuNMB^3AxL)_3~@S$fM|LYJw1nPcnDcOJ2oF(Y@sCd~^1)UWK{gZ!S$= z0JuA*;H$cw-TSjKQ}8+9w2gdj`#VEHwtC&yqHLST;rv^f>gq~Z2C#pBYk9fe#=7{T z$uD9o)-iEeGOyHRH3PdKo_)58h={+;I3*R1(!D#uzbOX~Be0mHILPqdgW9Z8A&`ANh3_njUVf&_dk#xtVD z84n4e(dB&sK9Xk}IrwG$ZCcY8eQqy5BW0?DS2o=IbCH3Zq_N_%^O8dFC;yN-syT4R%P;C3)7Taxg+>LFyx()2J}* zyV94#FqCfu9a;-(f6e;HZb1Pm(+qwwijCC&%_UtP)D&D zK30}?`97jlm#pQYzD_F{X=HCdI6kIOBiRc@+p3WyUxQ&(HPf!a!k?l@W0TW#Sc2g+ z;QvzWlkS~#qi~H4DO?0IU7qB48n^HVNANzk@Thl(lEIi`Qq--p{p1hRv6n2d(LPYN z^uaKFmLU_xSSu2n;oi%&_4ktPe|UNo0#PN;je1+zbF=$@`=zga`;-;uDD8jKa)1K1 z{xRS3neU#zU$Mq_YLrp`>#g=v#2nQKOD9MFYnJwsgQu^_`+7(2sGDA5{vPPrFH_61 zxKzq>1k+ckcbD}`ZxN4tMNP~2Jeqbe$P_6lQ2c^lyYy)_z@Yr{gvj-CS-S~ zDs!${!&Fdr;>2@SBT25hKI1mh)KZMiy);+nmSk|{$l>SRb_y$#5eJ!Yr6||tFPq)5 z?Y+Ww?2P$uq#x<}lE1s={#*|!^4{K6o&0^sqbG$$v80n@)uSpRe>)Tzh!*ER&2jGU z8;$S%JqR?eQ1_T2KI99Rui3j^BR5}C(thA8J9g5A5K|e{505Q;oT6!pYi^dUczq}N znvX7WL?$?*7;5IU|iJE_`M;(mKA%8zEzexAbW z&~BU21QzkrL(ds*@~!#!HWS34?{kg0piX*wYWB+OpK{twPB0^c zjUgs^vDDUr3F9Fm2Oc7)9G}kyJ$}6Xm!fy)`|aA~#@3?w5g|wfY!zx;7#Rqn3n~`o|(g)IrFf5GpCgaiyZGau~YXgIjGl}Zih=R9ro{c7o z$@gNbC@d2p?>TYNZ2@FOG`zF^-QVdnl8!i?9;cwT{&{Ap)ePgEQLf4qo_N2%k%f>v zkus{7JCg`GTXrXvM7I2Ws|dZ(wLISnvsb76W}!3gVVXTuciqZiqPd^r^E3@>nu)ux zB_}OW*WUx+v8&cIrU*b7kt5Ra#4sbK3h4LuOwU^h(>5tk`$uo^!BBjB94~ex<@vkk7fbZnKMqr>*5IrW^1=dj_jzA^dF5o) zdyA1NJzM(g!{X;8VLixJ5`HNn4-CtLHs{6#Wz#Kc%OSa&Z_me#T$n)ZUowmJ-CjSc829x9R1;o5Ssj;@*;=kWohp&g8-Ce#vI(J4})%e~+ znnk zwFhv2eS-r~FT2tD)QM_r8mIbe(j}LC)FY|kR`rk<4ZynBWj!BNH4n7b!STb5mbDTz zdG~i4R^0&g|BI@(j*IH~9{&{tL=lh$q>)^3>Fy561w^_ViKV1NU;%0AZcvn5Sh|(& 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
      L=MgecO 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 jlmE9I_&)-pvwx-kc`YXi3igi->bU_ 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

      N;d>xc#;CRaF;t#6!8r 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 a{%ilA!*Y_KVE?p%{9XU){|~bO0RIo*#Vh9k literal 142970 zcmZs?1yqz>yZDWw(jYCZNOvQRG)OlCNOue^jdXW+4T5wGGt$!C%@EQ#(jfhf&-0%1 zKWCkfwKlWvn0;S+UwQBS8`V$9FIbU~kWdi~2`L_|?ECbezt>0vNZeBF+~y8Ia|?U6 zfBrv1dX3b%kMhsG>srtL`K)X+9Jk&6c1DHHJ1;7F=W`sEdrjvVxQxk>v42=# zz*b7}2gAd?^!)KwFB-4Jk7<-v`-_nHQv7%kpL8ODwAz%;(;>Uq_1+6x;+Pq1zew=KJHR=7_>i}uBZgu{$9C@54a_)^1XT7H4^g` z5G#cb@7`aH=KJ41Zq5S(?jOUc+MiCl`*AwjEwVeF)+xlU*Gt(SPo9^Hs*$L_kgj_Dd-yWb7J zrc$yhh0ap9->vUH-4e3xtgXL|*2|C$(Yt@d3HSpI2vuuc>o6>RxZk+(eOe(tJU3|n zW2v_q!0B+_0&Lgoc=!!7d)fTv`QvpdQ0#vD5bEbCc7G+S;a7Yfn%hAIRzQXbS&G~OYaJLEI^kbkqG)-FVq`6(NbI^IxaQh%Eh65F{HgkFtqdsf@iOE!^D zZ%|^c8O-H+MI_l3A}F5y_%0c&fVI3 zr2s7m_N*jf;;VYh&{uWqE<{^HwEM5>x|twf(Xrk0oTo6|X@)QJ`aRI|*4-j!bw`KU zz>M4FyrvA&l=J%|&dWMS`MVdiMAFr#yPIe&gQHgkJv0l9^omOY`6s>xDvC=ECEP$K zHb!RTZFK8Pzg@FVJer45*A|A+`Xc1bL0&wU=m`9sK6o9QzM~->Bg#_v0_%o{6v-!R zDU$eqr1~!%BJ?*DmNGt2-=C7mpO}K7-Q+Wz?Yo+Fz4QyOe3dey?>hF;Uif??TM=E8 zIhd+>E_g1hsK@>ow=Xcmz0WNl6w>dK?p_^WvON z9tZMsEi5JYlwcW~p+;BY{g9`oOiCSH41*b*Og)TLtUzkY@p93`X9U)~Gq?C={Blvd zn(QKtaT0``doItin+gw{%xzd}rDGYaNQKAKON=fXyt?ZN*>8eUq=`^84P>OX>GMc9 zUib4I?^os)kjF&*`e&r#UVX(}MKQc4;*4OR_>DPrLmwUUg@*)$uGDYXb@e-te4J2k z!EXG3b)GM;TQ^Z!ua0lT4}bs9qS@%Bv+y-|e)(#5tW|ma%HZ`T&0W(tY-h2Oki>CI zJ6ZIzDz=QYlTZNx9;s@S8i`t87DoZW5mifY}!9u&=`8ii;zw^_Mv#6`{^E1Ec5D}(%*sgDG69vYRw@J;=d=Rtm zeOUF*E!wBg&8eN;HBAOsT+5u>#=|vN zl1UrKJM0r|w!|*JJNL?(vRnt~p7kt?vt-6|5dKwN&RU#N z#zLHt=U;s=^7xB0R@zIE=tDp${{)YPuj-zo&uFiOMA{#6S_jVqv7#WZ&D}t=Pa?cl z!7j&oy4AzAZqid$2aZGLY!WYYQuy9LFL^cxJ8@!#Kt}cS8)v0sqQDCXu6bID?se%5JMzLmufM$^B*?sWk84 z5lVZc+_)dr4k3$Ry+5k++JV6Lhd|Oc?)3Q{@0WpfckL8-T^qCl80ZS${r0Rz;1OJD z6Msei8x#@Z-n~kZ*pyAFOO;osd}%gJsfrGyW;AkDAF!jg9@y@y3NmwUdr6Ca?BX5m zjsK0h+#)zh!;|S%Hz}IYse7h{NllK*PbQZ&HAy)0#e-K~lZacj82zwOs^SZ3dyX8# z^R8NbF&rA~{qerf_^Gn^cxSnIZ6ne#y0C_r+DrV)(EU?_6!mZ#gc-k>ObmIIV){=! zz+?!$!eR*R!(mV}A=JwRrKE`zwCeok;v1Z6tD8FazIq@WdC=esXvvpDUE%RpnVYRG zy0pCuS}^)30$`(*a3t5ub+ot(>eU{?;jD-&rsAapBwBU-_OX@bZ+Nx4fBITv!Ll*Z zEdML|HrC4sUV7;oG+@#_ovm*?*>+A9m8pokoWR68M5g^hsTFyO|9}$CVy5;h{Ksa67;-~e!qV}sGJOTH7c;fa)2gNb^uPz_q z0s8wnaw)qTFH}XZwXH@{vFjN!!u!)4N=u2Z>B#&fxNt1#A%Mo|um}5@t5Q>Zq4_#b z%s#EH#;tk}L_(4LU_|6BR3w}xCxNWM$%N1$KEm9tVj0Y0snq(k`3ic*6D>X|Y`yt% zZYYs-7z|l6kgs)HH2KmPE?c)>Splwy|a&Clv9p|9&XKa1h2roFn`|V+9&6XKQFd z5&r$Fh2}%%E1~h7@GE*g@L@A1J*~DTM~Uzy{^9t_SSX=m9WbjhL(-Al#%;X7aN(T{ zh3b?jZt&uuwm*JpJk(cN;eW?cRdl5{s_5|K6n5rj3QE(k$C5sLlJwo*sS6-qOXjzk z{2xC`T%Hm$4JJhWG}iE>t)} zH@YrrOfJBMT^AL*vm&7_Z4lrTxN^pz?EYvKmU9#JjvQ<`j+m&Na4k z51%8{ik5}}rI`8$g(^B47DI0t!pQ0V8oK<@OIJS4vKttQhS(En{O)t5pP8vLkuGuO z7RYl~FzoO{$n(bDLdY_|GnGsv!sM=((Dct*^{Cl1rn3kZ9m@3{agVq(5j%EIk4q&QrGFOI zl+jG$#2^u9eKY+8k&g=%mcB(A0c}<_S-45Qm)rE|v3{4h=?sq-RAS4H zROe4;JLAb{XXD&8NWSO0FLiF$1MXB?k#43bZn&P;$lbfi_93>{PKgbA7rjK-Yt#_l$T#%1cw%*fQRK*xr7XSu zi$qzKa+A5}<~0kT*SJ10bj<3gZO<8f_!wU$Z3ZEZ%4A-uOD@o8(j?I~q9_S+%^CAa z&^X$$#G*HpO*9=$;<*mxFW3h6xd0a6WGT#T1v*#?lM+augbVHm0aX(M+DWfUuxn>^ z&;KMh0t#K91KfeQn6L8O$6yY=i(+BvO9^D6B<7Pp^; zT4;I_xSYSTwkLFr7STy`%iG!N+RsXbGgHKZ4D2%YytB^T6aPx$K8Gg8tpTLtm% zaoJX3pYSyHqBx>x?p?8+IN*rWMZ5VsPJQ7QSOAJw!z9m}&gktLB{G#r#nB24;&qK~ z@b%sI^1dd8RH45rZ?ET-`0{reC>G32PU$yi3r}D3So1nMGQ8^AP?;;2G;_C^I6%2t zFhfcgQ_`eNswn&7!kIdOY#| z87-Qph}pl-$LXw)9OTxI-5&a9WG?Ou(4UpFp2jM1cw0*abq>7Nyl)&eUmy?va~U#Q zFl#)vU|ek*rsF{P1v`v<0cc(rZ05Cy74n7S%kQ9ScYBLJQL^b`dJWiwey-MyC(LtF z2(=0FP=>#%BJ%H5__rg$>4Mp=rg=iSXfeGCLIrM0@zE(8^g4q?FzcxDI1{o#F$JG} zM`9!yAO>gz@`5eD#LVb}L&xM(VLWIhTfk6!SurzC{ZB6qOZc7F-?*q(AxFCUzIZOR z4tO<+%LPvQGOKJ?Utp#rA>DqRBxvE#zhwV~C*`v?SL4U`OxPsf;**+yf4{EH=P z3{KrrwmtkRis-E2auXvfl@k|60iPnWGdGAi@)h#NoBC~?4$+<61fT(7lZv{bzWhAf z%3j=quZwIr=A%rLVs4{1`3|Kn(FG^%2{XwgBkhQ&(s#Lpuno*B`b z{-C|&0hZHQo?tuH(nStnb`S#4=sK~t7O%`lYcaQEIVNyJjqFk{$CK6Ej=Z` z`dQlo-|I|G;vXz_dsvk!ZJpd_ORY0EJ$OF$>J+x%uI24~R8y0VWzF2qz_l5zpd*!j8k>OAQQoDnz-S+T68Lvis^f_0Syo#z=@v#Vy@4aHDp`*K1&4MS2=B1 zCt73*F7awto!sc#z$QoHq>85}@+3O99iGD}iwegH5Z74agvEk{{!BiLyN}EZ@ol+& zS5`2&f(n=CMVMUgo*USXh1dX(GIF9>Pl>MSt zal-~O$Ymy8Vbk9Ukw>b`f{54!1;>ZR>alPh@#7oG_IJnGfh%e$Vl@)iCzdB>M^3OK z#WjvUB&2;Q`Xl8s0$|#+wQP_BE&yw+i9Wq#nw=;kuD~-_r zh}rq<%*fV)M)UW_nICzj*WFu~@KtUL$^>?LpjD^##@qTVh0a6=(-7&Y-LUGy_sStX zISZtDW`lG}LDc(Ztc!cE&8>0qM)E?$N6VqC_U*+hJJL&-P}wF$a@Hh-&S0$!hd(9R zRy`y!vVqnrn*}5K12Fg6;?O+LBnOBA?xjA>;t@YtZX6NcF{6O6!KN8w<-)Wjmcx93 z%xeGSD<%LT)WJet^JB$b!Cf5fM&?mi@1s?Od+mbCfQPMFKa1uxy(G7abagR*++jD#BZa$x|Q8or{@IV71kN^`+ zvPHVXh}W6usm0tRTjmK!_{b|O%xqq==afi&J`D4yVdS#+r0qjQh&FK^K`e*rt`Cv) zzZV-?e_S;TNu|_}v{SbizRQWgH`?+5qaO(^ZI6b!E$}Ut_}_6ETLNriJkX+CQWv9D zD+i0}-UQYtCGS{hT|Rg|n}9i57t&+Fo9KnN-+AwI%S%Sv ze{a;ZUu|nU6V2=HoHTR$N?L*U^0SPqWc1`|RyrAA094pkgmj(S%Tclxb_&8#-Vp+LZpC?cMYqC_y!2a=3Y@5S!s4!)GMW|#ND=zLC}3K<;E)72y&ID9 zq-yaA0fcs6mpBNw5ked~{DR_SDWL{MgXxgo>L)D2?Y4-Jq7 zl^)_dQ@igch9Xe7Q9SIM24Ch|4%A6ZQboErB4@$slnQH%g+)k2D{zk#ru3bHAEUDh zzR&{r)CYCY$Io42w70JFs7q6T%{raj+OvGr&rk~zwX)-B>%suQ^On?yC#tpT(=|1V z{Hm<)eohYfR8CIX0$U12S_=8FkN7u1g}qq_o1-AO8IOZVG02EEil`4Al+iOi*=)C` z6y$2wL(IM`^VyOv+5UR&wKjo?8I!CD(?W3=X0&hVBP~%KTZ-d_IDAf>;+HhDB!e23 zcFYhNGWs<@3R6vBzfoBA(0KCR;#psd#zD#SsekwVAbk`p>SN;&5|D( z$8jDHWA@MWk}ZW?grcHsedk}ZG5R6b^S$40W*b;3Ng)TG+I_+0Hw zJYGwJeNc_$zPsfB4FG_#TZa4K;{rilLNZ=^vNyajFFL<_eNR+?>6uH}$C_pcV@R*V zo8yU{4PoCQ_T*BXjWP>PxiFD!MoXi7WilQWVTvepUkn?B7% zjUVb?sc2|7sa*FYg-*T2lueG!{p6{h7U)g+^<us1*C@+3D+EKdd8qq$+Cmjf}a$M2Mj9-nWHLTML`GMwiwy6Q~VyS8-^>Qp>7~ z`+#Zu*cbFqZIq%8CEQ)sQYSOO(tY)m{pnABm+Tc|49&Q*q$30Pm`kCd1YLO$`%r1{( zT&S?n(wB)!Fr5Unm50X;j|oc7$O z?NnbTmkXM)lw|{N-hTNU$GSCi`dP6ZI$|+_VB%>BwABwLC=B?C)U|)lAJPhZ-;+OD zS^nV6Ow=N`y+IMzn%_9?ykRXgL1nGA+jDqx>F|<=!)4>tG7euB*1~S4Y(PiNlXJh^ zzxB=laY|*wUM4+K);Brg&k=ueBx}hOWYfB(+?)Yl|4GfPcca0etZTB4_V6pd(6B`N zse)2nn5OvR#Feeez?WHk1U(P)D^bMnGs+el$X~3O4$g%wgWeN67oQd!G%?tV%B$vmliD{Pe^~?=Ua$w z9HOd|-5{fnUR$+3#+LEr&MW3+@qe<2N{-V`{oU@Se~ef*4ZktOd=DUV;UbwqT*mJPqn8?i))t%jpVhakid2?Ot1`5?KNWMmwUgZQ22?oM^ z?h^S9C&AKE^U^lQIoyE0N&zD_$~~)UY@$rEm-h`8pkv&^_-A?5>qXnpC=3qLly3CT zy*BP*=q5UrNKDo3))NOrx^UtX#462PuL-6Y`})g`N|hKu6~LA@W{YH_+(Uz#SQx2*EQ_#c(@+SWVIe>Brv5vJ7K*Tz3Uu5 zXy1fkS$)GBw^<_m(D^6r(D|o}oflDEs zSdNw1t!?H3k$`gR3+%ONYVU~c*9f-dE zWSfr1uBC{+`g<@01G%OxhSm8@_#@RPtePFnypf-;nD?Z%Q&vVa|6EN3x+={;MkU!Dq8sm*C*7Yz?H-CC4j+3UcU5Z6 z;=0vm-qQWJ^H^|g77tBJBll4VxHx{hp7U1=3*_hE)Vvxey+!1CRGf&EtdFtPr>TTw z(&sD`6fg_D56Q`KaqxPUP%J~%QBPOp_S>m7&j+~C<4wN*b<3LHR0^J1IFWYJc1!v4~GK% zZyu-~Pk>Lim$2(|e)_0FD7&crTAop5|J`{saFyb?{m<3?PIJ4@6YHax_brBgD5n3- z<6k@>v}Ru0l9b)}D4E!47(rsB^ZztEzj78?ub-4|P4g9@B0eht->wTy$aqtzSiVQ! z_y71bsTy?QDLg)V@B@9n*@3w@nSe1)l=aB>oiyJDXmMNal;RsN1|!=zc#%ogJIKhl zG(nWzob&A;0!BLd<3lfzx7-!ugNf9s(wQ3-Z$+G16NjtF_nY;P5xwPG0lGd=)pLcb z%B^?LffUGb4CsCcb?1vP5)^dC-YcT`);fpQD4+twFxW8l4gaPWmQDfWA2d`xs}LXfkL2 zLbrMp8w`?D3kQ<%Y*!4Q8YDY9phVAiUMkZX&WWgalVk9IVP;(YxnaZ@HpveoU;#0B z^37*aucXhSKQJ@40;W2TP6Bt6r4K?0P$Khfrtniye?OG=;}bj38vc2F4SMf@hZ!#y znjr%+b&>(uRpLob>EgCZgfM^sj`O<8r##^1I*Z z)c3NhFMk;csK0o@^LqpLv_@~ZQ|G!=pk4wUv5Cp{cHfkR$S1ULmqhgX(D;{{+`92m zU9_gr%kPvr7rd69a-`8Va-=w82|U`7oHk_&7mqLVJ7n#t}xNdrX z#t7b(Xm%YMlwK#FuQz1{4OA{-TOU-+i?(2Q&*Y;j3iR*FsVq}Xw!WzL<%k_i{7jZc zUQ)Ab)*U%v{z8%+H!1GbZWIY+QlBYlQeQAPwa8yn-Sa^7{7a{+r-wiqZ&74mqTwu^xp|%spNuf&-Fdx*)&60Vz0T6!m02fK z%N~b%Fp3LS(;Hl)Sb5pt_y0%xwo?y*Az!^d#~ogM;N%%mr}3SB6u);Ie30-qnP$#) zG#qaWeFsDKK^mB*?P%WAd$U%CwC}ug9?`GOg)1G7yAI%@pVfKG`lKdbCzf>esAAxE zkjvG_kwu&ZZvc=p_J7S&riDf(o0vc5HJ=g zl4)S{F^aMD`m)IpqWHKM}u=yMEzQ=ZQ z>z%fN!oxvScZeS6JAMnclB5lCbM@?B$7bqPk1$CNVQNBC(!{7vl0@`>^^w$fAVy6n z!%t24ty;b$7;zrTM@=~9CUx7RxtuPSuhvxSLbxkbs5=cGhS0vBz6{JZ)la&Xx_#wN zEa3B!@oXY5Sb%C8V)2PpJW8&aPPERp@3-7sXs}!ViWl#>>)Y?2=cv%E(A7bb!iBLJ z_seR>iBWTND8GqT{l)|+Q7f;vxTrw7nUg3}RTMa&s0K#|zk*jsdi<~q16}N4V$f}~ zaqjphn_->0y+Q6)R{e_h&M|H#>7>9_^v)2_`%7X>L}>iS_5Y2S2pju5CYsn-M>*2$ z+XNmDj`!;8bA6yf?paU-F7Sp<8>tY&4E-i)9%b&y@4mbgSGAiG{EU&$O?XSf(Y#-s zOLizTju+^70E^smi8D!{-d)ILRPe8t4t?8uTQm2$i$7O)^c#H~zEAK&#r)8$w}PUs zvnt1Irs-H`y#PEM_dP^lSLzB4Bd{`LoX{@yN^2%(X~%L12SdFoV!0XXe|QBU6DLh9 zp|c!mMF(A~3_ne*lAjb4c?_N3sEY~W)nwOg9eYT@ai7fojX5(i6y*wIsgJrn3RBkG z1VWWe$j*gXM+1bk;$U#kh`0!~CKQGB`^t3f{qUF8^Sq1@+E_RHL`3Kq@7|&vpPd0{ zXW`AbJqR)|UfGZ|!nxqd#E=d9x_4mw+NCpLY7-Hj_zKgQEj^`}dU&V_5ia{5;iQ;m z0;HH?l#>-Ss1jF|HN|n&deW5EYR4|bkJe?vSIX>1aR?~qL4O=YXQ_lfPV9wjXM{pT zVDE8+ZNdu z5q3+R9J~HYYCQ*v&N5NL{{;6Xnt$9IOMde|R%==wLE!u!sT`%46b+M?G6{#9RkM{x z-0UEz8KCVEjdzB);Z8<8g%OIT;tmzTCP)F6pGZF58Z6yMfpD4NNlho4f!xd<#qUXW zOt)*#RT;yavvX=g4EHba2~d&Q&TS(@AP7;KOeJKr(wQR?^Y*$u~~!y&_OU^42Xcta-alJ+I@jr?VDE7bC zb8M;!SH7RVp(E&8>MolxA@9|%vrE+KaabF%Ay#)>{?-xYIn}NqmoHaEiy^H2su801 zNu8Wwsi0R+gBVoYiTi(|9Pj?H%So2A$7^>a0hHj2(J<;ZJeNd*JfyDYUFQg3t=-jeZ)R&_b| zcg4T+_dm^?nlP$NzK$xwrgbN~0FS|RI4qsv!w07ZU)S}+Ag(ZjH_z2Ivu_3=XsLnv zk6)iZC(15}x|XHY;Y05)CkZdL4MXyi_DZwp!xxOv;y$}{e=X_G%@uAk1*_;{&!~))p&h;#t22+4y$N%XHlyIs~`FCt{?H}Djx3wT`Sx- z#D!zr#a;HJm#8%*FHv_Qi{l3$$mIo-YK{N#Rhn27D=8*TiR6u|7_)Qpw<6Sz;quk{ z1uquvjvV0vCdqWfpQ)b$gCd(%`f2gnvoK4XIXrh$Y=xNL_VR`HZlPTUn3_QT&?;&^ zxkJ^#h{9Jz|HL2`JF`<$;CHB9(d)zO?in)kl(Uj7^?0TvDbAMn>hD0f-``~6epih^ zG)X0<)Bvd{hbTVIfH^_DXGmwyppArc1@Zx?>MZYD#Fo`m@-D&$nhLratc-sKQ=F{jucAr~hBs{J#SF42YXAXsA)!%{ITJJL!VEJt|gz z6{SDNR07wi{g(0jBhw7kFc-Vb63YF+Ew)^mS<@s; zJ9Wlyh_RAO-;&}u$-XLePqx7L@%S>G+cWZ&TwRcIzy62m<*QcDeG6}H6y!+5_eKt8 z*ZVB4Iue;Q-;?l|KG)h1aQ)4?>L71>8rrcOO%ypZcmP(YTX)deJ?4z`^pEvXCHx>M8V-iULD2(5_dv>oLofV#d1(Pi8 zQCye2(nVrdk>1NPqQ7BSA$9E!mkMXI>G=jZ_p|i;qMNoBPwc=);Yrj0I{x_SD5jj-({7~yj^`;R-t2WXe2gD$y_jL^5V@S;?FDocuGh8)_j|3 zkt`u~#EC#pP+1O?U#f%b)iG)MUn*&XRAUicWrajZQI%d5$jkPTj(7&j`2eGQ5x9w} zPdcTlb7Y4I##e1Jp0wnZs(@gw3>@#-0s>Z&2$Y$8#QsJ|)NTbSxSWCi^8KqaxvfSC zFO>&WfV)cDymsn1u#Fgp_h#4;j?4Xy;R^9oJ1eV@#2DDSRKaJL;s)zk=9$2Na^#e6lyu3x2kTB#X4)m^KVAhlACJdu}*x8lNZ8C}(f;6~`?(Y1h1 z0$|d0qIl-NIEQ8%@y>*84YMX^0uthwg0!U&!J-UQ^_FP?2xN!hyp+!&5)4$g#Rj48 zEnjjJK2~4i9x?}b2lgTRIHfpNMWwfqf(2vV&*}WdXUaT-D?V0q|FY#t_^0<2A#G%a zcPWQ|zhYW}O{fyh%OJl{Zd|}r*pbJ!%4f#hCq5e}g81^q^Vsl$j}=tLq90xp{Ub=l zr(o^Po$h6|iW&c**}}T^rSsJg?M(1$c)uFs)pC=D{Sdw_oJ zu$l#u6Z*~0!a8p23EOqwVwPV&^VrSC$w}iSgVhIAmzcEykLIm{Jad@{LS-x$8ZloE z)(M@8K~ZgRBh_V@AN+8l5hv_$>H+uG7HAw*kNlf>$ulFvHi-XJORwU{BD)I*>!~n z4mt=R1rHiLN~k;B^>U%&O z+L-B$H zo{}xsxQoOFPdmOsS@MIm=~(bp+15&to9U%wG5#q1Us5o~^E5kN5!}`ObL~0v(=}T+ z-&M$dltYDH)F3q(#V|E4Ydz)_jNZC4vJ}S&j6`JuQ~WA@_S?EV-I>~yLxoy5xx|6N zY=MuYKwIzg_>xSAq+4?2AwM^#8Q88;PUM$olIw=G<(Do98G`wsd3&Os4n@#4u%<%8 z4rx-;v#sZBY*oeYxr7n;i4Zl3N$9nO8!13Hn4YH6cTwguh{g$7H#L&phb|G`ROm;C z8;O>)c?lr{SZm2@w3P)b`b)hBM&jDCOv}Awtt>2FnaT)8gMACsLqIWi7@jL-MXVPb z%rak!AtE)VH3ejA2IbP$`hAJ`<5dLGE9auPE#2=yYRg^PZ7p_sjxg+HU3h5^L>x*W= zo5nC2q8YH}L&fGQdTBafRBFAumFRx{S<9(DN}E6|KEpgtC?hdWjW0G}pD&QYbxT^?Q$0aO3rt5opz)D#W5aD8A7g54`l& zHWd}^2&w~?yG5WkQO;i~f5F@nl(PDw5I1Q4-4d~&_^~@LTUyw=#{({PwoEi{Sc^&i z3#-UO7G0$2fF@XZd@Y5cvcLBPaW`qw6Zl6Hy*J3FlI1$|KS`05#V9XBQfce<(}W^v zH>%rBoRR1)m!JrK!Q7&f_OQsx;wZ&w%NX{`PcphPrcrarL$;S(bpgW6pUra`S&4Z7 zKAh0qew`{cBfbC(P2MRh_>I_4Mps;ULrqGfg&X2!Xi-FS#*Z-~1dP`(D zx^$wvwKwXGY_c7@5a42pXc7D;jHp-chZYRxAxrCm&Klx9nJ5}b2wDA4wY5(a{gFkZ7qS{1(>%Za zMqt~rAzjfu%9qKR&mQ26qSoqCDC-%aM^T^mekg6jK<(csn`njb!PS4D7A&BqP8Hq_ z0)T7#Hc-31iji(CDd}2NcVvB?Mco}Hq}Ym3sb4`HpUy{^8fDix#PfB*P)NmU1kea~ zZDP+cqM8&o$y9qydwLZ3FoKs{>rnsc!O{9#YM*s_0fSDb9m-#5?%P4wm4FgK)kxY5 zM>_>8mlne1)v3dS@ejrj0|c&3(Gj^HBos_|+n3{@muVn(;zk?w+grz9VaBf`57Bx!Yf$#qy#OQC|WwyyVIz{C2i zQ6fMgecR~|floL-`)NCbG7SS~OF(HlhgDoxPJJfrqlStT(GP<96F=xHL$4eZVG$xMCLps`yJt7I}rf( z(C4>m{K8h-=nOOq6M5TOzY9waMSiPIy1@j#a1?(tek%kSTI#w-T24bE3j0WIn+0xr zF1HlqZtUQI$7kRG4K}0ax=R}9Ec(`A=J#!|^47jrJgvz(M)&GvN$@OJp~<0QLDyqg zFVtaG>$J8e!=VZ(&SGRd-b|b&3%ZI%;`93Wm*P(#k2y62cP*W5IQ1FiK&pGGoc0a& znm0Rh_Q&Jp-SD6BU{j2CgNQ%~>>BJf|tnz1WDd7WlB49Q+K zS0*!Jn7kVcO&vaQ=^~Yxs)^En z9>;q9o3%o^I$zY<&Y+H4=x%7LlZhX$JFI2~lHNA8n|B$TLC0-f0v_cCYcWlyFMc-q zre2PPv1Yc)il6I~nLUK;W50^ml8GP~q~+I-hU3#(wDpPF>-T>x5HFd=a(UD$jNiG8 zG@RRJ7nt}d=wxrThg~Q=Z-h?P^6q?M_4TuoOc?|S(M3WwA}Czqdnw4X1NyZCa`eT2 zoNHsh-Er_h?#J={1`ReE0 zEJ-LPv@5tV@ZTf*lYy(ldXDyNWZ0=*AGW=!!j?0a@w2>Gq2c7bHP}_H%W#-DDC<$& z#ZRg+Ych`y=@p3fR@L9G_kK|&s-Rig=+b~rC|~r-9fei`xjzldh9Nxz;yY)n+i11Y z>5fh;Ae$dKG{&15QF564se38S?d=+NwFjMgEi1B}{<5(I-2RJ`VK*#s@N2Y3PW@51 z{&Zc{%EauFx|R4aHnfp7?KI6S#4%08PEzudWczpVFb^#v`4*3Xsv|vpSl!OrMD+yq z;zArOmBJC6D@eC6VQU5hFtt@)B?+$Tdi;pRpZruKWpCYxwTcZ$OJcRtkBPe>j*BDo zR9mg=i|VT{w(CNw`PyrZK~U+S!XDAgW;aN)5a(tQ*OdC4{fzaX`RJ#CP0MZK%xSCo zF9gio;3Sl%qX1z5&M`{k9q}s8X6nM{-oPm(G;JF<6H3TO{t!_X>DX%Fm=Mc`=e+Kz z17qv5Z`P93H2DT;rveZ}FshpDd|W<4ma8NH$(a&oG7zzpQ~f2zBcMw#6&2o}uJFCq znfh;CA{il(>2Xv}@C1NG;q%$FxwR0y6ovoLWqh=N4cS4SQ!($pT*595G z_+lJSV-N6v2P9!%KEbMk>(jN&=+};*!N9^+ftN7d<{CVVH2;vXxi?283m$v@=cIrm z|BK)t1d(md5AJ_WEwC0Zc?&tBIor6(9z>99OlM&p<8)Vjbg-tPR){f(tPu=A zWfFo1^bo-0Y-HIko-Yg`Y2ZA0Ylx=$gQJyhp;eLwvc95w^ zDj0_Xr)87$$-JbF8iYetCQcPyB-#2mL^l(Q3t;bvqlLaS^epI3w7QK6p(;}X^-_L3xer_`?7B=O? zU{VTZ#kWh>ccWKDpFLXaMYXN%C8zf@{F%q+c0OgJk52u18J5EX&Uz+9PdN(O;Sm~5 z+3hKo3~+Lcg> z8E5?v+>3+EYT9evK`6H1o0+%iKuqE38pM9D5jK&8ZVD?K zZeit+!fUV8Q(PStFgKqfGAv4{a-G8b_#INkFetB&S86^rVW1wqqa5$xaHp%@M(xI3 z4>4D@*3bm6C|hn2{`%n{OE$ox{c?It-sr%5SyOg;Jglvf&8e=t3H-`~U#jJW5J0}R z@L9dFWKKQn;k!6x3=`L!Kf2`;u&@LNAN2+5tFrXZPRr?-jLJ(cQiCw)k1D?ToOo6I zFTvPE;pb^#Re?O?doL-#n?4DzR4A5e%?;{;dpQUCg4gD0GR?dbqLRANU_Ck};@uZPpMB=sXySApDVExwVKMpq4u zdOpUPrum~G*%B*ewL$tsVc-?&cm5wo;aNgl1xFlIrt2e`wY`r{=a~|!u85_I*G7y4 zk#0^pF5FRK^M<%KcuOhm@RQ-dDPtd_aB{w@usO74N=(h&+BVac=#Vq5QqYpg?V4^K zXa(tK;h^-E&_?wFUacVW%$v;Qgz$lac~=3xCWYqsYf(&;x3CJ@?jCLR!eAV=jIOn8 zOs^bAA6TzLYHVHw5@y9JFH74u^&TD}oo8!`tC3SJBZURGFGi&UBD)gmN{G>qd0~eO zH$vmK`&DnZ_$G)qPJG05)hB!tabh7V1>dJBs(xlRQ03CqGtr($<6L8^(4cmPHGRgL zuPLF5(TGMsdMbHmY zxoXm1bm-Qju~e zOfyzrjc~iU$gDer-I@T6TF|EA>oWCb7zWo1;)bvA%FgqEW2@B)iOLX#h)pTac%@6E zRQK7iRW4;xuCDPKR{dpmk~FGFU@vNbtya|wR31oq5mtk%+zxNM=g2u81(@~rf^SJg z+^RxJtc<(`yr@ORu!fCl5|WxKD^UDNgB&q{Zh;~&dj5<_mf)D%NwN|g&jPjl03*bX zOJqM2ydNJWLnC^xJbCpsU@ezCcMN*>x~UoLwiSBt^PBB~X3{9y&2)9>SYVsJ9jG=w=LmqZI1WI;U175)4XF|K6 zQm{%PUWx{MkY`q|D{(J8uR209$K9L-&eryP@O|;xeh0&B7b*~T^n?(GJwDkUY0Cpay|2&qn`2E@Y@S*)l^AFwApS^oK z*7z=;^Y3lsAG{y0+Q@zXR2yvgJpBHp_T~TW<%;Njdc6GM>F0Akz~*y)66vzG;deUT z_A7>EopizN-er?bShBOLM*V&xr}Oc5O7(`&#y?K3XVlQmqt|}@pHK`x57>uJ!5DCT zvGh|0@n|ecRZRTOlZa02<%r+OjD>2Fqb~_!46mruQywJMblXnW_CqAL>!4RXEQIHCH=dE~pKsMTjK=sg{{-*++ zGZq}QG2?FcTFLp@VUirzToFnMM`2_0r@`v71aQR{sJpH9XPYRGKYmdEzQ}GJlYFYoUx9+J3Y}BuTq(|HsN{X@F;t;OJGcV3abMqO9d0%v6lD z0_$SI2rW~xRVv9$0%M4OTNoF*zRbsqEAn9ytUZN2vD)wxWfdPCc*y$VIU)0`WH9@pmCO9Wq-(1?dqGamz~o7 z(XRXguJFn2Kbz+Kn&7y7C_`D1k!!er_(XGu}Zekx#SWO>?jqjYx@p% z_pW_)bYkeVUxE?fcqBp z`8e#t+Zn&tb^+yKOoii06rC;YISVF2RfP+yWWYI-Z>^;MrPKUxh6Qy|Lmifx%@U<- z)r&u00TK*gl~LAFwYY!u$KC7q;3;Yj+kVWr-{!d%Ji>|b+0fl~a}OJvpfc_Bu+>ao z;JtVMNY`CJ`%&5Woe7-yy#QwX4`7`1OKfIvfiYKLlB4-xNdiNsGhA2HF&b_Iv1IJZ zy@H?Q?V#nVq7`{n8gQ4ftD}ZhAT90_l!Mz2RlmjQ zAW@~TP-5jlfE@E0Kp(9BORz{8av@V(5c<}KPqPjgtj1sp2kli`nne*+MV}68ZZ8Z) zG{X9TidM5HGr2`b01xs?@nOE;c)~4>z=lgf`vk3zT*%p?@;i`^0289Yw_BZx1J~EI z>Nzh)VNXrYGQvJHNfriOA+iZ+#+tX7k;KYr5;ZTv*HtXGH4>D;zW(K7ynicwAsD$t%V#>e20SkRm5y~NhcDb>Pgu?~u`%#zuYiRK23{41$ z<7}4}YN<8i7f*+>wmU=7F+#-c-}Q}q?A9f&U5E{Lye(I-9>3AC@$H>LZvK`F9T9xd zpN?5Iof;zGmR%ufUkqtI+=dN3Pf? zU#S~!B2de`2pZ%6LUkr|)jVvS-2zi(R)0l{oiSp!HOOz1a@Stxzofew%Ea^~iL3+M zqROsg7oeB9ZJx7uGkoi=1~UMGmH+P&`0wF?|9^=%RMc$w!*1@r2f~9`@YSWS0$XQy z4;e|t?GXRS3?Su-GmCAoth{e;<-|Ul9df*Tw|A;pGnZ1Ys3eN6KNsx&sVJ(KD*XO zMe(SG`tg7T6TVuMxF`aT_I{0nT=6nCZa<1IgKCn0keer6g55^kab)O+5?Nh_|HG&G zFOt$f%#!?hq*vsM0vTq>?DINR$<1^1Kc{rmtl9WRm5j5DTJOtF7e5Y(674~|7Q)cIH`l&ic~sy1sJJ=fdVi$6&Yez#N1Dbhz@aS^$0GK~iYk}74>_2Lg6 zq~yco?z(Vmu6;YuwzVeWBkqNHosi2Oy#w4b*T-&xqP0+XvL#zZgi2dKs*avQ{#Pp+ zmXQE(UPS9fU>st_3nA@|ow4@h%AEka&6oTTEAnA2CZA+oL%a^-*K zvAmlWjGd9!>LcQfW3-{{q;j)2N|C$6tsG+*i;x0fmJExjhSq~vjiq@BaQ{IK{mWwm zP(wNSt2q^FB5aNBKPRVjsCNI%N43a#Z|bl*Eg#6ChHJuljQZ6>4AD5f7e zB3Lh3pPf2o+8SRhs`)Oj6NinGA09DAfg$$}TS2u@YcNtX@vWc7`Thv%gl#e7wZhg} zQ3Ce^s;B@d)DHCGW$o0_`ns($R{^U@yvBH{*QbzPPN zyN4y{OdRenJrsAak}STGgGf$S?Cc3k47f(*5boKnf?mEB^HJXf&5)4`P91(HP_A0Z zfw_K-eE4l{;M?lc?j~YnQlj!mu}6JNhgQIx&`iYPstJHt@Yuqq&2ptln>djJxpCDjf{xsOMcAPcuq!uG#q2 z^jhQvi)zZiW>u$EN)9MKZG&ygct?XT0d9*)u4t<+kw`f>e2DW=#HPvIFskORq`}wDWulz?os2rC^O^`(??~iOnYSeK& zWl5yLHnTq4Y3N5HjwWUrxe{2wi9vY)dfuU;>5br!O*G$|69Ky^KD%(aeCV>unRecm zd^tiT0%f+z*@`Z7PWg;zQU^^NEySZ(So2|IM?3E$cPxN(=?~<3=G-U=F^~Z?8NgGM zChG^C&ZY~6yUBE)Wk7r_X2=qQL$s3oVPWkr6ecUG#S5QR2`vO8GsBHg46L%%J&1af z!Sg3~jEXF*Zi6lmJqA3;b$()Kn+>mbv}nb7)o<~tswxsq1#>Ge>q@O;tq-F@@FfwK zF7>gYez-tCh+Rxp{WGsAL(MqI!N}&5r{my2B zD)TeQWP5i;MoD1|<+iVfgQs;$Kh zRPkD5SXG?0y8O7x!fkmhc5LRwCTwO=UVG_%Ctd5l+ne{tCO1_E%4~R5-i6LIZjK_<}Sk44)%L;D}v#(c9dX>R+$52sMu*NVDDb90q4CYTK43u6) zgMNb7C1;tkwLq)X55B^W9X+3##s1PRs<6tS!ysD7TtS`4EkYv_FC-=pN|KR6DL=ME z$GOFm;kd7~pP3RZ7l;Ru{c38GxYdkI}$8V!%MbQ*{di|Hv*?g7a#DbAt6UM&nVJx^|a(%pX5XKSHv9Gu6Du)veAzrQ&p>ne41~tl! zm8E728;K(EEwh^?4*M-lGj6Zw)0wR3GD?D1_!6||rj2*N%=ZC!MtifZH&!JVJyvxB`GD5nOF72QS~F8bCp73{W8OKsFc&IxK*W#57^bn}**otnAuQ zOjZ>;>Z*k*Du z?RZUTHv(t9A|+MWQo-|8da6TEl_I`K>udk>mqwGMzM;xrfAThI?`>Mq&k!3fWceJn|807J1-~^T1BN8>L zL(GEhv>jNgjbi2~*7gC*gTSk?s$p%aH$o7fT`ND(lcJ9G*)DL4Lyg0SP%oFBdFV#+ zqmdiv6r+W=Bi58?u83DU^S1T3k~ex~q|Rl_yIpM$mdCW(+3bMV%_Pj&z1+^1>8?F? z!!noZEizTo_P&F)&;FTGeJ8wIOrX&`zAiBNgqi4enchMvEFGt?56@hu4mji%lHQG4 zZ#UfnEDda4UF&d5SY^Z_i}QX_zd7aOtL^mZQ5ml}<%&NRI)kb-0KAuQjzJ~5Z^nNQ|?OAgD2lUT1Ps2m-6zBoiH`Q?K!?~T>zIlt{Cytg>% zlxD_7T7xpj?%O%2$*4@ zme<1+erFo`c(}Y%F-6NeAu*MywyD^)iZ!vd7eW%qWS;2joZ@@-+U7L{ z@I$0}g5kTpfvnBH>O!fFV#u_)7)09&0j$bN_5vIJM3Yn6FFuQX9#-zLreHT{X6kl> z{vh5`y&D>H`w^NRCx1!-2e-BN(A5fida^rLr%7Z(dwH~(SoyK@Sf%!q5ty<8St{EI z|FSSo!j!EsvnJ)|=-N^YK!^&C5KMs%3^=;Y9}$fWGJ2(r)_B0DuV#U7d1AW~?klS{ z=oJKL#?45HwZ+#3r9Nd8(BQD1F+VL$q5h&21jN4(wd4g2)MVu}V>8Qs(f+zLbO0a-uXqB1?5_;c_Q?b5Yfw6t#&0YL{d*hpMgzF&Xci64ZVu(K|<`LC(X? zc6Ow$509*P&*~ zXVk&a=l4u!RHAbBWwu88X7$6;tktLEIJ6Ii8}OMiM0EP88zvHK(TQGaWI}MLG=?TU)^* zdapG&!&*(FUXd{>I1KwEI$rT0#KQIKdX}!Bkq+tC7n|^Di(7F!M_-)UXKe=Qv3HVI zQb@A6^r0=hDY%NbcxJ@e9=OZQO_P0{*a|CpGzYsiOd0X(kLY{K6m}$F-!kxT-A3T? zZA_~%B+67M))#l#Z-68ssp+%DssN!&G$1?wC%Al9R*HYaSTCY@7jTz?I&3V7FwH2E zzg%TR7gg8UZ+KPI`l8PZ13k#bM!C_ZA@wrkMD&;NT@_g@mAX=|2mhEzK2Zp`!N6ARIkRm?L9aEQZHxQ7rJoR}w ztFKqgMOG~Sys1b5oSpp)=V4cDe7Y^f&Ct?(V!$Y1QDJNOLy>QpS-x<|T(N#!KR=Ye z5`IHX?Wky_NP6tYk6Fd(vY^sDaOy{sfdlt!6uW_x+Wz2^w;NYFKLE!YhLIhscR);s zx!88L#6DH>oAq)Qw${9D4**}bPPWh%q3_tu$`@JOZlN4t#hj%7b(}H!vK-HRl53kf zJ`U#|7={(RCE_LQ@-5ThL|=REI;uHwMKG& z3RulQn(x}+)da!yno*zNACF)br{19d^?jP~!{Stw4dv6?LvC=_pv)j8cSD3{##7Vh zWN!uI`zO9HtwtRsxs{V8@l#gYDz{Ez?Qc}Bohv*J4Ro0L z?Tc;BDcG-fldm#Pp@?59Y2&jsi2^cj=3FAB^A_!j0NH5-DXXXvIvAMuxRl4ySciWW zCtk8)qXO`j&Tmp4-j2ANyU6g*B%}AVsM#3k*%woFC#MTsR22-kuyH%jsR^j!0~9W0 zJg|$A#Ss8dXua3qKwuYl$~BmFXoyVN5|W7Q9Vtx$-AnMe{uJ2iw<?<+kB+6U<7=RZlxm-l;!!*De=cqAay<*G+6^hqrAduTIf@X$Q z4mj=)$*uJ2BT`efSnoV=q-_XQ@K6UaCJx z+p@T%{*H9`2TK2rG@E~Hr0_S+!3)%>(*?qBb>r?7r`1jgZ`iWcbU4)WP8ZtTn4<@M zssozk1-$i+x%lb^%Z<}NA;wx^vi+?_5kDrNeV7&J$d zd+XUyEj?n~e1!_aFm&p3E+Mb@ef|AvW=>0&z%%AHD`p-B<66f6sG8d^63**v ziq&v?3$@(@eYK(2_3YV?+{?;s=z9u%05lX6e+OoM{wHR7b-Ahlk7h+r28lP)JJ9As zc-5TU$hT9a@u;z-T)V7LzF`Vl^XBk`P^%BTWDJ@+rou5O8mp);Q|$B}ReyG%Hy6Fx1KWvm-Uw z@5y9iLd!7lUczTtM`qUfid-K{s|C4|PfsQOPTsZ0+wE}z$E6Yh=&l1aWhqzQUmKx}h9>luZ8dV8#OdW* ztjkiNV?SPj<;<+xMsyb2t3@kiLn-ZC_?1^;YzG8EBCm7hT;d&6Om+%ClF0W+ft%4J zSgM<|23|o|NX?#RJqgDOkCg*{4Y-PjLlf0!qs_()w3r+s#Q4Sr8Q$8x%ECoz6~Nd7R|)ph$vr~Kv9;aV&?kbSd;@!@Hq z`j?RJjT_(X|BpxxOwRV(e*I2;#9#5PFsS(T1iXKN~|*scuh>g4JEZf90BE$sBzy4{fs57cdXHLA1)qqm~_ zZo^yufE&Uj(Yi@}OYydS#fx;3cV!a1fxl;PDz8MwvogdSI?EkJ1JxOUdsJo5iv;_}m@_aSN?Psg;>z^L`)x{>6sAob`Ngp#5XHU!p8*?Fi4FYgL z3X1Qmzr^$Zmb{Pwv^p{)u@drFGUU6-N=oAp%~WwD@Tz%GG1f;<15}0^?MD_$jl>Qa z@)r6u7K|PKJ(`R{%wvm)_9O|!sPoB!cN8T_mpkV-kdwj#gVAKtSK#O5|JiXPlbjCG zYyF=z7TbNq6MgTxy7mjF)~Z0HU$sGid~$r!iEPXhE98LYSCN4422i5ZM0(7q_7w!PjCC9)&)l)fUm6rZB~yulCT zleFzG1;is9{i>ddwJ#*relS2yo2x30T20W6Fb}o)Me=MGG+eDjBAZ@*aUoGhD;Qhr{R-Dd zW&L}VZFkKpoILYoA*|?yMp!zBi-Tc_!G>d}eJ-|EL2}}g&EWyyI^Hw<7Qg~DCZ=7= z|9+nT2B@SU_T~gSph}sAuA2`zc^vP5_1bfjDs+UlhB<2UmRk%Ei<2oD~SNCmn}0w+zy3S}qxtdRVsn_jN*kLJQ+3Wna-S73agMVeB5i_Qor3HsP!AKfFHtv zxU;?8@1fci-u@?O=Gk}gf43Q+qPC9doMulzDupO^g>q6sO1+w*7kCXY+ZHRBVO;%3j#FEB-b+*Mn?%ER|pzG0J zL$Uz9&~fGUyB8Nk6!`QB9fXfO5ay6>y>1%VMGe6(2kosCG?Ac+l<^$+5b?=w@-&cX` zn^R^v)pW!@^2Lpbfpp9`^%=Df&c?L#jS>9{E6Qx%!PsV;Kzxf5MYR6)*nyog$s|!i zt>O!6+sU%V#9VRI)Nj6q&~7uyOR-dq-x?Ev4lIt~^U?4$G+bnvr7ifp;``2X2Z35= zg)3Dh^ae%yXa4|4?(2WjjGjgA=Qyb_wx&9mqMBo%;?pFYanc62(|{nl*3p&U7${++kuw9hzT^j5(km3NW^ak@=PchKqLn|A}FAd4*{a7l)WT)ajvbf z@dK8Pl>>9dJHMOuXIrl_(&Zst6aSHg|1$f`d0Eq{!-F{l^nmMs6*tH~3WCdnd7Nn(*bojSCj$K)SMXxrqu&LY zUco|I2nwp5L7B+I9yt8eO|w?M<{nB45S?k@Swu&&1p;`2Bq66IKpXle3+vg@^j|%B zQ=#}5dx-&aKr`<>L3DLjxdQ4`MAmOMi$H93JDF$;ysNXdH}e}5!y_IzN?SXTLp1nj zNCJT=X&xfsw=))AYKKPT0v1bvk6=)PuY|rmPFBA1#XrLSbDqn;ZQ#GmB4RxFgTzFb ztXmha%ilS5VzkZB&SDRTwtmMF7XjE)Gs6nxr4>ObAuv#$J)#;>T-xnuRNLejxZ z{@ppsvBwGLy~wCVlW~j(4hbLF(~A{1{>*UoRLVnj?roFmS;4k+1fCX%PQp%c=apkQ zqv@PRp+~w8g{NHAf#Fz-bacv5vK<9DRREu!e%D?0pZqr)D!&u7VfH)`9| z)YkP?BX%O6-)*_ZtiGd}H)~-p22~rm3PYvpC=k=a2o?7@plz7Kdp5zhL9Pkm8~uY) zwvwVkFtk$l?T&A?5(V3uKUfUcSPBfj;tiGLmHFp&&phqVbDJnd9Vi`lR? z@nD$WXU#7^Cl0*6t*iD~p2&F(f+%cqxS3 zwCEgcIq2Uiy-U3%qMrH4Yu9Tx2vNEJ=kEV&3IxV@{|O}g*G5N0eMJ|Sa3(+ida>l) z8zhLFSzS6;q?__1Hj|vs9s$_^d`_Ft?Nvtea-*Mm9J&Wz6~Bqi#?C@Vt82Pm?>cNq zWq~+bbEeWd!F*yf>}l2idiZV2FERAVx_Lsyah;$RY)1X_oepjp^4Jy(_7YVxDKb4HCoN!iy4w;fvFdTm?1#6`lLOEk*f(>4}R(BiTh7n3D@)@xcwT1^Tmrtx#x zSl`3dA5EEl_An_r{_jM)zoxmrKFin1%=ATo$M1v=blrxPgYh~kt9231tG8uieBUPf zS_JgQj1j*~PzeLHZ*!byK&LXUk`MQ--c_@D6HoRo*&)c^ZfnkH(%vLGXe>*$^%M!R zdFh%$7IEdsN?^M$YF;yc)}0}Mp+AwZjpvoBUkU_1ijC6BwB~}E=jT3SBfd+pUPmd; zR&rhv-~{D7y&CnuLi%4F`u~}T^*UKFKdNKoGq#bx;H>{rcC+YP+youH9w7&W0XtNq zXp|F-kvq6ml`YQv798StZieBuMBkox{0yIhF(%Z%i%GGg7Ya(N$xeKYVLk7xcm)oW96L1n><0SGHh0 zLtkA$D+!Qa^eeX^~qLH!7;a_}de_ZN|b3|rtq{ zXE{r7<3Uw{s!^EzM^PxB~_w6!Z>%(8l0913oUX zg$|9EM|HvDX^7o0d-J3Xf_oum=X>k|Qp!^B`|*4w}Du(2OiT=-C7*SkdX2rb_5&Vy{M+Lyyy3I524T<=seUcq>JxWt#Q`A$QJ zxFOC3<5qgl-Rh8@p}_@eJocU_wU2DHWQ##;rnTMs)D%!C?%0SbtNUg^Z~jc43}IYi zJK;YE1sqoqh5aY|Wlgsb0_uK3q?IL^5B(X(tJg+&{fU{a?KG~e4%;WQzzpsp0kSw5 z@@attVbarRE^DmiGqy#_jk)7A+`NK0y_Ub~bv-ZtrfbwH19saCYY_?V$nzX3t`PFi zPz?y4R8(=?hiG6!P6eP`@t#O^}w-8dM3udrI6K$eDIAa*ga(_HVj%Pn?jMhVJCKUJks<@o=&27w;vIg1lGh&MU9fLG>c zZJ1RQh>iqBpWE+T>r=7CQ>j}I+u#_^+o#FpHm0>?;-MZBhTdP@2fQCn?gyr4hjBi9 z9z@qq=OS%~AIL3wI(+&Dhpl-ZmLwecQzpj=1cGV@i!#4aeu2qe?~3i^d~F*dY|zt6 z*Q_<|*>S4jc85#=cf5LjM|+QqUb6nvjG(B_)$xiAufy(-d0bQ_cBP&)0tPdcSUD4w z7?t=4fe(tzM?Unn210_%@~T1{C-abJEt!WVJCb3 z&9ceUq4^`G`B;m%S@ydBuHTIr?N-4~Z*$Lbk|{JV$#jhYWdsvRIe{CQi!I$m{zTQ< zPp5f5bmvG)TK_4M$}g(%lpBRYDDC!I0y8nQ&F9XTJOWGg`p@LkZP(*>#hZ=m^RjcD zn*9$fNQny{t`U_q*IoQE^ei-RVeocVw@%$QqB>y;6*}2cDcksPFBLCCa zJb&%?IQGl;cIfHx{uJW_;nUgot}MS((x|7EUHlDyou`#c{0+U|Pluk7$iq@nJE81C z@f!yf>aK5ut{)uUUB3P>0W8Ihfn)4?@$zlbO}d)2K>lb5j zN};^LR0*%u4(_KcJ09kYbH8JI;BgT#lL}cl6z;@TN5DUg&a0yg{LUZOSv)!wXM@KxkiTATku1##pv8$wBAjDS$WJi6Jqj9Gc!!-qx$*pldppHp(~%wk?Qr+m4i zFFJV}UFj^A87*VGtx3zhsVYf5kys5aF+}l@K?po`sFmAE+LkXyjBXoa7OWMwLlBBc zft4nTunU|w=iIWnTEATC&!!O@Y#Bj|Qtg66Aj{xS_9{G;v2=Fy@gYday6f+eH9?u=d8X)*3q(`d@3UPn z&*B?g>5h;YDnqVdrTMzQ+(P zZy5FbP(;xH+Wn7}lk3g;E;zq|TXDsBJ4OllXkv8qSp}}C)2i$Fgbvsjt?0mC=9jDg z?$(zR5(zt_&3znM3D<>gxz>!(;6{Llp*CSGu3VnyvXPG`;uY#KM;e04mREtjZJp)u zAY<4U$T7ExgOr6AD-&@_#AQ^qt8nO5 zRwBpI9@$N=rFtOO+S-7{JWjHuWEB%@IxSn}^qQB20*Rb+tQ-mYyif0FDQ7x!;RNJi ztpKO_j8IPsd*b7T4%?T)wit8W$qTgfwRW}@!=jg;6xP2a9)j!e>L|ZmO{BN^#Y7!_v}vB+--L!YHTPBM?;~;L5R9({7p?UL+ECqPP>F?`hsG;L zDa>XZAm!ee44hU$`=S6T>Je~m_mOu+zKdrLejlfV|$JPh<3UMdU}2kc5r zYS|3CyhLkH$dfS&Y=!kcZ`H80)Xsm6rlHpw+!W@&kK<;TKKZo8iyL^5Yu(`GkUDqJ zu&`%WKshx2y6D?pvZ4Wff`n+Keg2xi*;KvV)J^S1`bt zehQhikZ+zgm6DZ<;tCGX*@8{?mu*8#Cy^=j%DqKwGD{~(Bk!5UBpv^Gpwe8AAu^L? zzDhIaY~(2xI-h3Am+hJ;RL;cO7y^Zr3@u5wM2K>xbe3D2pxsIfLO%uXoiJ6&9sH(d z9p{=ltT(CYqCBhz!VX0!zQCIs8YtgJcwV7>wRHtA{t@2ZYtCKiVWyEup8XM#mpqb z9b6tGtXbey+)tm>b3(SNvb4_DkHpEDb7AX>1Q(y}6IjK+3$w<*OO2`HIq%$tf~aqw z>mu98=Y1ot$1|I3n<$j>-eC@S0N$2y;G3(Vt@&THesm_c+**(L%FG#>Vp{-vNGU&V z%f+zGkBW40j6*7&1N-%QOD;9;KWTBO#>OS8fMrRGaB1{^*1r`D^>IBd)CAFZCVTcArzqyp0=dkCZcmSi(mW2m;FP zg_R^2+Pd;2`0R@?Ked^K!{4T&;_i2y37e&wKhlw?W)!(YC41g&Z1K*`oY zm|qZ%3yIcS>smO}lx<2sV~~E-gp*a!=)0y{d2LIj!`152@Q6?Ev<_?ZPN0Fp~B4d$(^s zR79aoZjB@5aR&Y+{*0`3gCN1Ey7QAg@XH#Op;%0>ib8P%=xEjH0e+uBTE|)qK(oiU@+*a5{TJw3CVe8Bwv$8EAS6 zEZ>c3uAZ_z5+|D{P0mN>-?>Mo_F7+{=srV*lQ5(Yg43ulw^SFT=S}#^8KRU=DP+!y zPQlZ`t2W{02^N{C9PHn)D>=mFM6X&Cw(@L``RwdG&{VMn?-BHx+Z6<##6#7eV87lI zBSMnwN-gBCg%|z^<=&?d7x%%hb^OxRyAPtIbepoFxw$8LMJ;IUis4MEj>rKk`Ss|g zv&>lk5@9_2DPK*g4R;=?3fg9`*(zpzVf6AEn$eNCfJ)qY#>h95xtC{ zAUnV;gWUHP!VHnaP&H)G{ASXyv-w^*ChulB9PTQH;QOjMWHG@XeOzezkV=~5qBtZ5Ty0u7xPTu~PbX<~p!(!|-uBdWAY-!mJfxg!sQ}jn zJr$2XKvYc8-p+DKKlK<*n`pSMNKAR8X0g2BQxISG$s5nfVBB{ZOGF^W_n9hmWZPbW zIQ-kOo4Go@QuZI&QE8r3iFzh+0xa#t`Poa6s=D}j#xGQz(s$4+?m51Dd}8Y&<7f@U z;f78ISP@`}hFg)mwunAI4Fx+!kvnO@n^-XGG=R>Ng%;e5i@+z;FKQY^#y z*7Z}?xGHiWj)!2)V}UOcKf(o&9QN2%mp>6~B5H1*zb{BiDJhokxhQaX)sw7XTADxZ zBwfWX&C2%;du7O52gd*mXRa2c_CuylLz5%mT?IkG5lmIvQ~#BBJGa06nL@;)15w0L z?n0EbK^;t0F|3K`?f~ETI)g!!I!lHwhUOsCly!*C_i3amSPxV)w3xvA6CSh`LOlKg zm%!#4!Fo#~<-2H8)VorI8{~;io=JUF1*gycyVkM}ukw}KHhPRid_PWxbKgP%L?HZwBAJQFlH+C>r_}l2>dTi=_8tGJaNpH#oIn|_zSmgrU z`cLh?S|ZqG#AvFg2u+e*b5bJdd>9uy3^7=fl>m;HG~P`J0 zxD$dUxVvj`NN@-)gAOvd2loKMeFzfVA-EIVoxx>rcl$c`^S#e|&N^$IS<^qJyQfQf z%e8A?RkdRjsF8~5N!Q?7)6RESJgre?DVag@NJ%_b(;(E*vi}NYh9ar18=Y!m;Of=2 zPyS&-5JT_GU|lEEG@Q)3rfF=1d<^&jyX5gbAhflf5uc?vLtMxq{nS+1Us|dy@A}9j zl1(<|Z$r9xxPZa~0o&q`!fPs+6z>l1(4tEZqiln869elnqzC<#23JjT%^2q6j>h=q zr2f<(mRgn27tuD35{&rcOmW*jv`Ix88YsI!!=p}ihuUD_VufW6l^f&)AMGjr9f zu}TAj-{#SvS$nA5zu!I1unj^iT`2v`BVsjii1wDgw%6s41_o`DL~wF~j*tYr>T&}6 zo2l&c$a?<#Do(1WWHE8^l+f4+R!+2?jfm}QeXqe2hfI*KllrW#PA8gj)3C91#OELl z^uf2Kaxkt&UsVS#y~7UG54oR>TFiv3e&n0i-`197JHCiXUzn398Y7krQck9EL}-j)KNiewk$OcT36yf86{;jfFxQmO>2+xC*- z!&V8`Y)1^xPLWC=M?FH=^tf*D@zxyYrj*_i>X&Qd>18-m#{7g!YS$e6rUo`7Y^sX`h&N{LOkeSFd6SURy8_LiTz%hZE-%dOwn^X> zcWgW;7?9-eWMkwKuNO{}YX;ycKL-F2T9?(W_Tj=FS)BT?;*_!e8x}Wxw>MKOFfX)aj6LK@T-ABG7 z-WEWHJnJuO$>?@x15oX$F<2Xh0K4B}`hmNzJ$a}<^vlHZO;>8^#_bkUi5GkxnYfBF4~ z?!vxdo!@t9ejcx1Pi10a}=miAO$=3j8Mkqq?XJWCgWO49yko};S$NA{ATm74<+ z$m7;bLU#&D zeqARuYT7S}?CW_5-|o!O)jFT3&TqQE$KOsuhKvR@43rHC|BGKo_L4zP`+L8nW}0{P zKGfxDQiF4>ltxo&>;@}Zp7OC9lwmnc$O}tDOr)sU7FDKD3Ed*|=){{(1Gi9H18|{-7DD^yh1GM|~I$N~muS+SRUJY($I)!ZT|m=7a6p#x!dgu)jZl zHW{5iYLk1EDt*HI%WK|ol&{+zxRv^pO_rw-@OC_SiXiVerLmMq1rsuVWGonG_#+F` z8=DBAok+w{I+w=NME%(HUWQ@zc;3(XDgKQ?9YVJO8)iK!iNrj}5?R3|--&=)X-_dBfnz!{Jl^ zOF;5K)cQ*#;~QbN4c9dI7(dQo3DJ$1p7p%RSRc#sOL@+5E85HTF_NMCCE(l1s582G z9EL$fGa6BF)PBE2yTF&I`=_Wi_t5M>z&y;(|N6IL%?7oNe3Lt#Jbi-q%VUmlb4U9u z=L(X)5{%)n4s=aQx~`$)-)gA6#)m+q?8`h-=M&RDkU=L8{yeNAMEz8+&AaVD3#mJS+aF;V6?b|O(wN|svD+xHL+@!6$c z2vcev{i{(#{C1|tr-upqy6fJw3y;l4Tnsi16q&k$GdvCJk#ydf z4|~qBmRr!bmP~#V9(nZH?M0rRS$dgs=$7Z?Q`5IpiTH;$$0Ur{JM>ldBPy=)rgZ)qypB{zQtH0wI0tV%RN zdC0C-jj~BXnj6viI)BVl>+8(lLO@dk*ymVZT$7zv=oZM)7{_72m*c{-u!=AHu%rDW z>?;w|Uw8bGY|LBF88aP-JTZyMc=He!432=S!yjQSVRz&=b73wm$^%%XS}~_W8Uhko zZAItg)vyWVJHHu!c_O*SEw#G`4vrVo_i4nL6TEi(y1W zvkUx1c1B9wFK#E?$?0KbxqI!R=<<829sV$O59=!t#`$$hTK+j9!q_kj7tA^{=)S|j zrZ+8rO&$XW@#7Hhd}?qf{R8y_R2ufC|%NUEV0CK&N3j-TpSw;{`f`@-!I#BVKdPVZp_tC8*7S)qh zKl@|2+q0vN1gx{k!9aX1TaqD}+&A(57`d1I!=Nx_a@Mng(ZF#JmOq~OT0fHfSl)E7#CgR=s*t8G77-T^mQ}!8!~zYUP!@j*0I{t)VrgpagdK+bYP`lAEi7kixEdW&CjY3ZqfFiQu?`sT51EF`mYbteo=~MpKPx z_8PBQT?KT4G@MQP|Z$=3a%o{8FNR#+>npj%7XL8*iB{SsOC+Gk<(#O>N`e zV?PXAOKyj3^^mW7<^hA)F({o4Ru$R61HeR9__V3->hfIPCnTQWD9Ecti)IC~ovoT9 z=?KKq1M8bDxX|okyxlL#_n%Sv`MKURHJsq5KuvT?b=_}SVcEn6XFW{H%(5C&x9_yF zu78BLkr!QP=E>O8e)sv$wB}933D<$s(m=9WSrpCYi)GaEomyYa)FW}qw+p_?1;p5r zd^eRPq*4apb-I!!_}8yG#$9;LF{nb)7L}PPM>(l+%k9oI1l3yCKCg+q8hyLOwkY8! z&_&H1Kf`4i1EbuwBjM;GF&f7ibv^@d#L>s!DKVN%QvTF45e=PSP%PH3yYKBY42o_KMERJ}FZF0u4go9?@# zx*`72-rktE#>W=MUqWv6FvQZcmI*r$6c$3)VB68j@ZNwKB|yz7zC8JQfJB+?k0DFC;z54&HqATA}0T#7ZvZHHbz zbj<==MxUNBg`D$__(K+A>WT?4f`JdZR3Ph+f~O^3ARKd{yUEl$7(H>JO`?EhsTG9cX_%v6=V9ZP@)tH_rQH2-9xrBGv^kU%et>n>m6fum zF%uh@x*TVxx8_Z9A2Vra2Wqc<=lPkpTZ7+2gud(#d42BdpN=5cEKO)%`IuG1DekKb zDQ)_?1d%l8nixSCW<${xW+WjSYa!@c%xQjjpP=X}#2K5v-9b*5q;ivQK>@FU-TAqw z1-)DiyV5w4PsZL)VPv}_MoGd1jZDm+89BK$;fCApcACLNG$juj((JNpLwurK%1~ba zLWU_g)Ce#_>QE0%U1bcqTs@(WYpsEuUPAG0QA#8Vn7~8^Ggl#8n_1Yn-E=?|Payjk z5L{)*U%dND2|Kbhl9fv(URW8dsJ-!XSuq;+o;@Ib@C+M!nUj#Am#Czh}w#uhxTUsZYCw0s25_c;6Vu3vZ?H% zP*=bc6^0{JhaX}*i`ZDd#n&B{SxX23!2F|RM0`-&XwKH9LSs~G(E1>vhg-$S)z0`? zrdc|$RGg4?VnacYcCVyoq65a_@`XYp9dQ}sVw|1E;I)3qaIf_RXwW0y^J?vr?K8Wl z#2QaScIGv1eSqo&uARQnn(5#?LDN)RDBz8G6DP88agJ(nvYI4iPX)10$b+@J4= zjWN6+x0crmDm0O8agdlr0EjKu>DdxtcU?V_Z1tAfP0@WIx6EnDD1UVXr8 zAxctz?`Wea;K<{^>1xdd83MOlh<~({g$t|;iHsRVvHN@jnp%xkXp@PPp0(bkZhY0Orpa{Xt0G|<0OhdsoH$9m8mT9stAZ194noV=hbthyU? zSil5PZW40Eo7B#xL$#{8LMR{iKJq~2U=jK<7_)V*QYFm9c86~cN3PKowtsCqO8PR%-~2CJ+bpYP8q%SnnMP>Mqr6ovtpK6ZWdR#vo(D?*vv{KJ7Bu%HACn zX5xUz&eHN=6StoD!WR73FRZ@8YRv*V{L3h=?&R@D&`*o}HNE1| zm+Q*kd)}6i4~=fEEff3uWXxq^c7|wX>D~-kAbhH`LESz_yh*QX@jTRhw_V{h_ovK4 z&D-VIaUvz6H%3rL7uicL`PJ@qn$aTUM4FL&ulSeVW3cfZwG%!sW9dUu?!f&NFR0ZV z>;)f*w^CYN2o1BDNC?yf&Y;lY{x*y_KEc@A#6;nu_f{6(+glskD(i`FQ;p)HvAi5ElO ziZar01tz#%SWx2^|I$4xk#VjV=W8~DFRtrY!06fMW20fU(K&wGb;hPxtO#LWo)ve| z5K2F#w@|yJw<}$D*_r)uVM@ZgSv5^Qk}e^I*v{|d1$iP9PvYNk`bswLACFvQ^92g{ zmR=Yh_Z&K3JIBWB|2~;r*-cboB`#O&nc(!eI~t2p zu>!qMMLTTE>ir49s&xVJW_9rOQTr5bpVCc?iLPRP2ta8yX7V2YjJPl! zf*G-Xh2Jg0H7xZ5WJaV7IvGVrLDvXh>u-XpW58q1agCsGrzvlYpJS3~c#VPXKL9bw z9rc$4f+m?QY;#~_1LAs-a`0sfOmuRa=&URlL4Ge9LiGs~p4l|wUp84i!;kp2eoOmR zHjs51OWb3ZY(g~Xr1bNkm5&q-G1&%^I4)iG2T+G(06;nMGOzo&=$nTFSIAxDhR^WUF5fr`E52E-OjgroNncl2PwufiW>ueKddpq z5{<8$5k_tx zrzFcD&-pd)D6EXCPO(~K+{jSK`C2u?rkZBu`JvqR7RK^?)8_l!)%JAmdtZ?Cut^7; z#}s+ke;&_jdj@tPzx4IJxinZbSjh6dYgz#zo%b0$t%VqPT`#TxM5M>9B;Ut1-?i)K zyJO$pwud$4w%fJqmB)+G=SPF5E#IdY;7;DG(KhertJ~^(7GLlC`NO;Y^U>utei7d* zpQo#*#^#FmS0sTqS-*Z5?1?-d#Q;xO@i~RD}=8J*rI_2D@eJtOwj1N z6rXd)JAQ+TbHrSS)}8(RK+h5)?)?>@NI#k|rG7d_x20beGH0iPEx!vVX^xMPRwvS0wa zd_}ByLFt^_hg;ABf-;`o^!J@VZ2xGKH`Yb!(-&w9lUS`0ouJ7Y?JKLDoz(Sw^)U?1 zMZD)yqc|PwO`d6_u$R8IH9=g51Zw}-zjQ8u(&eqnF8v_Reo+-<3ZF;q|E`E1*T-_a zv40_HwxZFU)pkPZUggSaM`1wl6NmYv^d5!UVS=BoND&*k#HwI8ar5?cow`j{_#{FX z(DVudaewzJSz!nMWxFF!AyzJ;w%g8jt8$AC9+qnYx|lLDoi#y zd;aDP%19OnA&T$$t+UT+-B{_8>r-cA8vcj0%}d9Hp;T4Jx85BKL8d2T;_Nj8a#hiR z38rKKz0J$7DAYi9rp1Ov`}!bZ(+KHAkz4x{^hT|Znf1=j0MpAnnX>LZ`G%Xu6jwh1 z_ww;o0^J`jI}_`;ecD=G4-AjMy28TZQfrj4@wlUM9$Q_?{0NOymxq;(RiMQ zx%uLp_IvaDTANGdp|TOePnYR0`gdM`$#1!qtecL_8eTZRZS1>tzz-`&U`S}(+<+>Y z>|by4lBX&4&LY$ayIKqu@X!@M4G*Huc7t2!w&%;wt>xCyvgm$2kXe_rCYpMBDwDE2 zE)1WFu}cArtc8DHgItwe!UrNMBT6DDn3Cwd4<(VuJRm>^L8gCb0RifWGaX4)J-fUV zZ6CGy<`g5`@;S{cE_xqaMU-ys&_sjV5n@QN6FD=KFn2 zzD}@vO8upk%H8){1pGG9pkvn3dI=d*$iX*8X5+i$*&?yEIY5X!E;l?B$Bxx;2hnKP z4~Vl%b^^x=aCrTQY_S0vaV5@f8XrU*YzJmeu1Mm&+Chj~1l|J#e zTER5m-FE9aKhP!y*C#^|?l_B?Ny}EIW z4zcRLNh3^awx_iieZx~R!%|vUPDQ?vvo9t1bx`6R=aqRZX@JphSaGu9*ocYWj*RH>*#rtdVPFwdRMHXHz*x``3ZgNMLeV%DxThw3cz*AOFKOEv4Sq2#aIG z#*d@C!;h0GLrS>|ro7rtzH=8c68p2lK33l->rD3MxE%TFCU(|x1&@)l_{mxZdscku z56vYDHU`&%aUyH0RC5#;nf(T@wU6rz!VyAunD4oJXMyjegqY(v{r{@{|9xEsaj()| z)9-eRpW(j&r(4wy;zA#5{EKBEDw}9F&$LmI$>uSRGbeJxS(FDRoPnUAV1VJZ8>i zxh@c|nDqHz5I%1^{`ftppo-GEzT($J$cKbGc|;b0Uv#B%NMgK zUc@-8Jl;<2!gT@btTi0qVDn9ie`vymTDfq=@bQ%=w+5~QVUK=yyn0`MrO9@z~VX8(sL9 z3mjw$N&p1#jVkv1&*;`5)6g60FbBcpjt+C7Hv82!=B>H@RIN=i0h)JV@Wlw->Col5 zazgL#-81cn<0ORD+ENkl$yj}X8RK+6Je_CSIx8DsI-{SkpoGOG@rR<}@kJaSjgbM^ zBq~*#uO53XUGM*xe{8xj4ZxO4*4pE}`Rlo4*#TpUeR_34co6oMNUpKEC&xQ{BU06}9s!>p@W!vM5sdGOu(|@ytt%a>D!>Ev`}> z`tRFRWv~0!qXC`R8nj7dmSZDUha$bP8d6u3f#og6{_iZY)CZVv~^ReVuiT8V?Ho_Zl7+8SR=kvWx80K^Xn8Q|G?^Sd2F1jKsqgM z;Qbyklhpq5_^e6c9cFT(#U7%7+j1{5F0^OSUe6=YQ3&+=&L71KKLpyw!&VtJjCaL?b5CVWc(FV~w)NxLEVyy`^aIwM{3jE?sA817@UfWsXxZ z2ua^3bP(AK(wnhg!HzEsnkW5Sl!Hv9dp}Z<5s%c9j2%tcPrae&pTVGU)|}(dzF=M= z#y~xlUEW})6utbb%G@2Op^auL=-8xYLC<&-*ioy9%? zRAT1fyU0fSv4pZ~DN}S%Mg_n(;T|zzuwctmu?}HpV$L2&hiKTo*fp`bw6t53B*@Tq z51c`=$99=Y#rVZhq9bHJvfh@^ZpnF@ih*XNjC7Hw`3IFqWku2Y6L3p^}D9s z8|{dY&_HAh0NEMMVkn{7gXQFM=wY2P`|d->%n94XtzX5o3`#Hqve($0-^|GSJh3+7 z0kf`7fDP--pjWfOFAtJ!WUe7)9 zPIYKlNR26U7Ts^<%5DKW7-*VVAL|Owr5L2YR->Q^mbdjQJM}9SB>L_%U5Xa8;9}B+ z+~8u{RI&DgmhB7u(V?h9^~>!at4I0)?xtJVi}!OW5y>~@$odioyb=_C3P8cCu z`$UM}P;Nb%2aD8(KE11Rr67B){>>AEBl*WJ_M#_Nj67onziccw1k^xk1kkHdELhHB zmxsn0tBLmZi8_Bp{L9YoyYssm>3y9zfN1m4imL{L#Om#j@qk|R>!|%@d*DR$8N%UX zoGv51uIJ7v8R>%_bM_sS9n0E+%+A??I+%};UMiJfJBrPSJT!x11^QdDi1iLg47zRW zRZCu9*yj%aY=H!CJs3cS* z3GceUEO>uakH#6r$psTq;sG}T(J6mG>FFa$<5_-{Cl)u(*XsZm_h`XCC*p1ex{&`Q zi81>P?S}du8U$Q#QkV>?=&-!QExA~tf3>d@-bClWR+-hwL#$LlqC}e=V8kl?%vl<4>^kXtHIG2H z?g>S(a+zI$kX_FnaHlS!6wOd_(QyI<;Z|QL`;==WhQezMAeL4n+SVV!kcOF~Lhjwo z>gO{MiO*>60Al~!{d>HTeDu1bM3HQX70Ne1>p9*1&V9bY>@vbIKF)Z>Ttyc%Ax1fI z$2f_Gv~r9eq5BVwt12EcMPUfeOQwDNvZ-ckS%+mdCuGd0Su)n@u;YipRQ{XM#2${( zHFPcsj3wWHw`bM^yJN~btn1odOD+cZ8?{?v%?OQAYAV(^sW(vVF|tbv1MJjd+P{=> z-nlf3rYH>3ElHfIbpbDuPwXF%dW2aQ3*P+NPV^cK!+8AsWeF3KZBU`xo;Vj^$u4q~ zk3}HSglNQBjzIZISQaht&#QS`NOr@*YkcwZ*P9(!mFpV9WBxz7l*I45&&xR7IDK;& zKAOsAzjf}`vv%*3O+`pmm{uoNbPX*EGj~l?78hpATPVwTmpWfO0Hnuo3lcF?6l-2T zDlUIZgfqvAU$14x`j;_@v8jN`_J!l!J~)%ux)>jGCxl^uEw^9qL^%5*A4$0y7jDt< zd$A0+!EGFB%?u48bkdWDHp=wSlYWH5NK!XKystbkM6$E`-^tZwJ7(#xxTOL1jYXDd zn^MgLopVSDpIx%$YzHgSWD7y6+IwSQJd??p4(Tux4(W;nH`{0q|A}jKW=;jkyI%Lx z3`ql{FI<)Jtv2oem6U|6cLiW_RPv%y!OiKu!=yv*qw;>`ct%ShSd76u*|-V$vfg>) zpE4;bx{g*7e3r-4sfj-zC*p&16PrcXQQ!Xb{kntBVO0AJCD{js6=L+tCO__{EIVdP zz=jcQn`8~tgo#`y!=6;Tkua5N&Rq-l#wgYPl8KnWb!JO9&TpJVh2rg|CHn(%oQIO@ z7{UTEyq6<)5y(6iB(EbQIq(A7Qgr6e^dr=-=ym%*EA*rsX&{_E?mquXV{7>vg+v7i zC_`0=bIe~P#T7N>?R?V~2pWJqoK?dRHkarxVo8A2PY1~x1M-!BPXSNwi~NHSWvW}d zB`H7^^6h7v)8N~|VtE+VJug+kfr$nN4-+ISaQ*ec;-LeO$LFaq6jS9I%ZZkjLE)@v z^ZQ9yRFC`EUI$@AkG`1~TU??3EC+i!YWTU0-SE=J^F()HCFg1LJ-sZz(gnoiihy-U znk6+5NT&G5WPmtI*d!XdUnBp+uN2p|YYr%?GmFd7xN=3-G}B})hN*Ep67umsVWcC5 zNOb&Kg5xc-p{OkDmQ~SL88>+-w#qynWKW@jw~~`l;5>IAL8@KnUHHqbE!(*`NuqfM-$=#_=rZI+!VOmIJA>JK?C~9VUd(TA?-N zomm#swr6%1DFO1xRi^ZJNPJY$0lC7oXvpu|W~qeie3CYeJ@Q0CGP}~Au(`TLZ;J?- zp9AJ^o>X+iv8qQ!3mS_$KpwqV5qY$!EbYq`J&SvdhS2^oAm!{(MUtK0L@uO&r2Ufu z5)$_d0iQ|6=2Hc2l~naE`rEp^VKmD*8++sRp@QNG*>H(#u1c^ybPcKQx?Hjtz2sj0 zWek4-28OdzfPdPizJ1!S_BR-1-%;Tk%azy+b|rTNUg=dG?fgrh)e8NM0zdzQ8$!P! zwo??GjGiGrsZiNr8DwZEpc=11k5pIS8@nMzh`FvO)#ugJct~3(qpP(&zK)T;O_L); z;=$o0Wo-!_4bip!NB=#l;F%VfHHtLcsdgqj>AVQoWELl~Qs&l$G>McmL@XIDZ_L#! zKIrg|Cj1hvWPR&rr<#S>+|@x$+6xQtpDq$XFLP=Rc{ZV~H3 z)0s13E3}R!hMZz-*x9cy*GywehX%y2j|ns@7}|euB93?k-Tz7W#PAYSVoNymaRp`H z(un$fOSiFovbY>3)v{A3)78`}tM3o;k1oAvIK>gNdZXlBn-0dFy=Ve2=<0kO>w(cV zB*~2+MZbV&mz<#KkbV_s9$N`%$?K8qvk3t`<6VQf2 zY1xl5c)wOt*{#RrKQ3hx7jJ_;&C6BF&oz^G5N)9BYj4r?RElGhb+57_CXn|w7yQtj zx_Lzx-?V~;;iT^HSk)=SV#Y{Ak-F4jw8xi-Czup@kT=VNhQVU-VI`KWQlbIFWaXA==A*(UsWlLF6d%FK<)$!>*UF0Y5w}!P^EX6#2JhZYdbwSZ%IqE_PPCe z0ZY_C({tHD<(x@HClwK;z>UT@Jvo|=`lHqGkLU63x3ze~ zlmcJC)}w|UW`bVH8M!XzoaO*KzpdN#fSsN4+9pcr{gh$O=Airc!sE`gy|0CzJK`Fd z7MFvR0Uq_5;K)27IhvWOiSDvZh6;SjWy4!5j(fqfZ;1|I;6%jc(-@sCxzu{YF}Cz< zvljlIEGR>k7uWST0+?cTq+3q8&f=6S^VLH+0`^DDFfuK4lyG?Fs_>t8iuy(}6~wx2 zS^JrNe$=>zX?2-eUN`h44{MjAbhz@VteGDBUKs_GqY#y%;hIRh)DK`q!bKmXc4p_vQ z^=>Wq>i1dG^eHP6N7phx`SuIwKKe!opBHOgG;-AIXdgpwsc{zRjQB${#m_;Hbrd00 zGzk%;wx0qT5w1SaPBH%WGK+K*M~`#)I3AiqFjA}^?eo|^6D5ce9=zNbEAwljeTG&P zRdMwXszf0xj*D$VtTUq<@ltG#o|qZ(`Ro^e^BBba?q}43RCdlPa_5G-sXvW7sf8R> zcAu*)rDxFh#ByVuof_$XQ+0vH1Ei?-xz9u^srEH_zOS%HSF({Zk&eos(NOJE@XUfu zGw212*s7Fp$;S!92#OCj1t<cF;nG3$3 znPD2(&?DA~X%21U8u~qk0{1aWMBF!Pl0WM9LtQXoMoT$|5?P6X3DB^s&#^AgYA&AH z-#7|9Upeu9hMp=UqCvDmtONpX67_XExm3hlm5p%7!mR+3>o*^2-;gCQQ4ZXBWs|pJ z#|Tbe96!X{-iJ;lK4_@8YAsAx&j3@ayr4bnm@xkh+a{JEX-%8NK)a*KBFL}EF(Xn} za?rVqgGpY}(kM<8wW?G?3}PCb^-fS3GD^2FtF?Dz^3T`xMX%30zv?1l$vFuK>xu43 zx%^X+C00)Dz3gI?r0~DgZwO3#6xv9*kSO}pp7j5*ajKqBiq3$y3q_I^?-TCEH}EOo z*;jbl2`*N58^p1)+cmushJ<`>Ky2I*Q{UGlC(Sh>sPBn;ViP8ZtDw*+4q@5)z7ryp z3AM3@s_(Q&UITM{c0G633a)SqnYyU6fBmE}iDHlJw%1mw_spJ*+Xn6^Z4p=BcT?c5 zH|tf)Oar}$*Ey7uF4?|ZXuZ;@o zQgF2Fx#>k0=V1=b1wL}om6fB^SSB*>+fW(5l8Hg`dr=}?pw4yaM|@Y zK5z5v%$8H$S?o%Ef4p_|eHg}k?ycT$66zwIyBe;%>x&?;r(KwpxZd3D3`b?w`7KC6 z%3N9w@`vNRz9kh~_dyR8Ue^ku)%3Ie)f~2b)SzXr3t1+OH0YV;WJz2&c-(W+ zlf+P+x`e+9WKvzSyI*Z+Bl7atn5c#s^jvyWX(18LzxaRfwbZyN)qr4Lm02gJg)a@V%1e~eK`;F`PPeD3Op%1x+eh)N5ZMY zGpt_LGPV*l{fI<6o$#5cYTQx@vFhBB{1Fs5ZlAsC;9QlNhYcNvQ}*LH|8|N z6FT_b>)2KG!NZWrb5tIwjpc<>LLZ+NeXw5jqF`j&=&~yewF&QuPJsZ%i`A1cwP=Zc zzXI8?;UIKPTDMwf3UC-7zjvUioRV@lps}4}zj5r7O^5$byg2)I>2}Vfs?Rx4?m{4B zLgsd@39hH(_mgrMDU3dW-AxPFd8W68qxLKheS9tiMduSRvoNFUhavHlN=j^$NJ@NS zl-d{73kyCOg;q`i=QKy5gdbt{^;(#|4~Nc^Dj=#<`&?FFU$@YPq{!+6Ce>y1eS8=e_gN z;)Hrh3QfIbo~rK4M;}LoV+y=s%G2(zX?YzCrQhlcW;PRMkB-&t@eDrvJDRn+a+AeY7-r~3flLVLFTRP!ls4gw;5%oRpyEh$Q zX)5%HTJt_oGz4O~8<$Ut;o?+&40mK^qb3nThW^RVN=duli)Mb?VPfu^w* zcnUi#o@w|7ePFiUNtM89$+BPDDTAYCnKQ?7kJH&@FQ-qgvG?mh@IpIQ^FW9Ht*-ny zKb9tx@*xT8T%a31^VM6TMvhe*cb42lGq3<%gq}wXcj>$5$Rp}x6wqhm1|P#C*_|fu zuS^@~vAqpNSB?IVkx>*39}M#@zi3nDC^eeW6>xzdXHY zWVa&1)(qTI?31=ZTHh5H{~gwc_#31wl-zZ#uJ=TQ>LN;BZU(2SfJg2Tq99dLVm zH2Ypu$8>@XT*pq+APm)#9~-UG4Nv4QRGTb6da#gKeAEf)mg9V7jNfy)cRfq^poi5J z+ST$F?dXMXW_ww!XtNiL{J3vha3|_F)m$y5hcC=duVy*i2<`Ah{z+Y{DNCU|X|~_} z=3B(pG59LC)S#u61swAHnv-8C8s_{3YdGrs2?eQKG9XO@n&Y4WrKGL`p>;E&j9i=s z#_N7cZ)^XyXWcYjR$e}d82M#X(SlJl<0vgYVV0l*GekrZoJ25qUhjj)IdH0(RgOdD zA&!O@3Jpz`UM?%KtshJo83cV0;izs~$L>3GGm17$4&WGzj~zXjXsNXCF8*2n$xK$439^ zO%rbQoxTH5d>!4eVAE8oV*?f&+4L_zDO7)pj`wLbws;Gbxh9C(T#$wuE9^fF@WB*! zu8zXKQ8`ODd#|ZYPHwvqwuQGIN=@w(XvhGQF+yAIhebz2HOI2&{2F=QNNu6oiC#1r zcRqRu0`z^!%Jt2T(M!~!GZUv&OjU)-;nJ^dDzwmthBYHr1y|FPOa(D!zuZMV8&5Bz zogFQkrge^QRck^#vAlf)BJ5xitY#&ijPF%u_E^Jf6#p77v++4zpkdU2?7u6Ml(=D$ z+E=Q_Ep58{T%*JaTqrG-8Uz}4nuoZu+2f#auBz6+$JPZ!(`ac(C>eL;#oKF5Nn*$FO6=21I*+S_or`6R47d+oyBG7Bvh zMMGkdvi{fH0;cx6R``s618!-TFAXt2OpX(BnE?94s(s;<8uR;ZH+*eW15ISyAS>iI zKR#O7(x;|a8ZC`)W(Ix&5`MBz=6uWySYpW0m9K(Tz@J-n+dQP!I)4^bXuV&zlD~NA zVH4Nv<`fC%@x^PZl5XjKO>}y>T!PlEN5-W-xk|VEqhvj}<7PYCu7m1J#YE`$;rDqT z8pHDewdQQFq#-7@pdl9jk0;{{d8KdF@IK%Jd)-_$-tF&)M{kI~fbf&1w8|oV^KV%?^_o{ViqHkg;O zCcqj_-Z%{Zb}!uUM!?uE&GelH32WNfD)M1?26|dsIRBUL{vmiAHr4CW^HHyGq%_BI z(f-F({o8k8!T-9d{|K|t5&KPkak*sW9cSwvPxNCgiwjk118gf;eTw^Cy9)8f_hA~u z(B;wGWs09~>7}@lUtvkXa@+Qjxw9wioH_`hbaB?1$t~?@c0Q?CYrN2%h49JV71^_Fr`a zyug1X5}&Eb1ON4Fce6{o2wIJ~y2j-wMg+UVGg34JZ7Hu$SJG?L?&D3K-*V8CZ4ZM) zer;`-%S@SD&Tb}lBy+|vC4Qjq{`O#Q*I90iQ=D|8^7^*-<=OHoUHEpdKgjmvbB)X7 z=Nh~81kgWWjKqizGy`!um@I5>dyNq>o9F&{!x$}6;W6Dsp?i9?805nEUdG*ev@7`^ zs(xFghH*`O9t9uWf-WmY4Zr$Z+9i87xm;eFo{53w7vyLU=nRuD0C9BRB2#T9=u(AD z^Zu{D`&%4vbTi)dKiFgYt1LwrNit1TxW5TC&RyiT3{>1U33$Yz0k3jiLEmg46PED> zN#NqpKH26@Qd(82tof4{FcaX~fWzKfmER0RDuwuG%DvgZZI@;JEroL1F3S-;ibx`mpUw?szH@^%dLmZ$ku0|J4`(d;Z&yKTs`d zHxp7}4~#m=+!IK#!=K+&$OzV5mF1|1+&-@c?BI z_jAo<@rMBk%Aa)R$|YPjN<%6IUgCL{zM2qzn@-rK!swD~UYcE6hoFujM~XCnNRa+t zj_1D+4!2fHFW^{cCoP8)-e^CB7f#@ya%SWbgkF(G6x$O~(s#+a=^uVJEDOgY>G>|? zd1J!Z@o`ySQwBzbnNF+??5@0|SJ0(1uwN7}PWY58vBAUBfB)e>VC4T{wP=W6I?#ke zn^pVosZ4l7pOOvCtZXyPsDeyt_Y6;Xpv4AKFDU}Dz>=DeTz{|jgdkGY53`Wn?RTt# zCC|&(?~9^5pC&T2L4oO&Yepq2CeJIRRL0Zmy#QD+R^XkP7Q6ixyF`5)Yp5c#6(se8 z(3r;c{GM1!)9!y!N)>#^@5La#Rs*c$ru&GBlzE39J+zh8Y=NxQX!v?#NuE*nIQW$o z^mMI#0Z|DR2IQ#PAAUgR73b8nNz$cq0jSgGzswUAFQxo}z$2!swt@)J+9l2I4!0-l zMe5@gVlq-5$RV z+1!%(lsWpW4i)KLekk^R{yBRS?Q5`^uzc7Tkuglg{7*Y8{onL6(dK z^Z1lmY*F|R(|R{DTRnS@l{}N$|;AUolLSTh2y_akQ&;ff$3r5LK*e1Gm79QBJZNZNs zaNYYRG$h@Xx^);>(yOYf^-NagkA#`bOu-1rKY?oBGRk~NV?bsyW&YihNo#$-Q0WEO zo0X8y^xqbtF|U&VcOn(IzVlX2$f2BPR+*2z{CMAb)Soo;PLke$-6MPAQ{e8)elh<8 zG#Hd&E6OZT-&+1Qv`r+tHp}hi^sU@TPKC4Rt`4yZPa#WD0k^pOp>|$^qO2|v;*^dI zIR#mco>fT=@xb#JYu0RJirW5}6P@6zla2h6zsr0X6ifVW0Me=dZ06PD)%4K=m$49o zuijDTs9QRl66y3Y)SlEfG`?$_Io%_XKtq>H+0CihN6SKr)014jtM}&_C1BZ--~GGP zSJ?}ST1OoqSNp?9R4+)r3z9)#dpKraKH_&(rnu0`?zd1_E5SFdD`v@ITe@hamo=BO zrj&|cW{^G8__gmcij4TEhX`2dt82@!)iQ1Y^nzvgqabT`3r?JVY4(BYMe)5g?A4Tb zVcD5K0_EH4{AiUG{sDnz6hyCf zk8?b$*0-6Fu6eb6#W{>BdZKS)OP!nd;#7e}zGBcp%0whdqn}C8-}R}_FW|hT{5BId z$8(DYg1!2?w3lWV3gS&Dda-=4r8OBdaOS!fuYD?iwrFFz{`Ea~qkRw-MZd<5KR*(h zI<(I^=#{cnlulMlUvLwpH`S%zj1LX6>lE=(Jc&v;Fp5@O=Zr{}y|&D^GElm|Q;1it z-TeZf4m`oO?~Y!|h1!&o%*;k%{@=yFK946LM1H85860Z_t408M?I4C(Z|?@XrNC+}uzU6GHh`wz^J*BoP*@#u?APtN06we7iJ6MJ5H`xRO;;_c7#z{gq{ z!OxOTOg~w5dQQ+`kHL30e&)VF=Is2b_w%)=>#@HaCY-#hP|PYSN+Qr@%!blAfAg69 z&*%9uXX>1Py211DTz2tAOl#HK@zF{Ix5OoC6>F08F7YhwYO{yN}?o!8)Z5p ztG|{FC6a>hO%ob-O>+(pS!H_1eOI9Whpw{@YinD({iaYT6e&$BTGzsy*xMf7oBP6MP|HOwh$oUlTdWN#Fu8fd2w5F$OD> zH6kEJAH{mGyW}f4_JR%p{ujS;s;r}{j6zPH%}8r80LW1oAJt#T1)SQMJe}o^9(zBn zE1*>RXVYaec?$5LF)W0dN5bvz^=c)M@cOrRyzl4%(|mm1;^?C4M%Ci35F+8&$fbU| z*A)t+9$etT9Qg$SxQ43-Utw>Vf%7*5tbz6$t|<%V8F<{6nlCfW>(#yA1lOW9yHr0b zJi@|!pphcjnF)KekQ;GDa9rA5W`|b(t29&=M7-N)hhI7x$BM55nUJfJZ0vnJ1u$SJ z8!MUUZ{uv(P|hhm?2RpJ$T-JP&P|-gZ3q0{^nB*x#o?#ciP#ka4dJgLB+JScdbp0E z%Xnvr^2&=I^#QC86WWR`0;Z2mBB_z7X13;ztIm!Q!Xmt_QXf^EQ?!J_+#ux4d^=!g zPXtzB31&_icu;dLA|f=HGy_ihl|+q8M&iM^@$r@>Du4ugLhbsI-fyEUF!vn;&;?sevJKYY6;1RmAmhf;F_;Nop0 zN&U1Ua20V?-7(TZgx6rD-QN?yPtXs#0Up+Wp}>4C$E9Y3Q-nVqdYxpR_Y1|4(LC~x zJ-}}8%7qU_q{=nzl5W3{z#@2}j@UOi3n}AJ0L&He_rFGIWn@d&CMYy9vMsV7p@=F3 z1Dqb3!KT>=QigHy$m~tkV{0-7;_|d$`3yq;M?$F#YYbW>8WsjcPef(p7j#iR$I_eY zFdG7OWzgpLqcn_bP57El)n-iShdvf_3+HP9;&l-KKpvzPuuyo$3f@|xfbVAU{=)%N zwvcf(2IIa>eKe90-j{Vej^*|vn}c>@B}8htKxuNpL|sJ6Is2;*4@F%xdIxhGCgqyR$Az30dIZ=_KGLcuJ} zmov-(kvt{6-yf6ku9>DGWRCcj_X2*>1n_#DV;<_rT9kxhI_va+Km4*A9mQjaTqpOG zQi&Ix_UA3+?->0)#EeZPJ!_IkjF(*5sfTbViZw@`mbyg$58n$@RWF9oB<33}iB7^W z5y1ayj39Dk*O-nhGK++Sp_YWQ*FqfK-&kRwezx1k`5O?{PYwXWSWW(+hdBe=Cc3Sn zQFm;g}MO5Dc!$-i-99@hSm0UpW%SP^CcOzR#h@9d$)bx;CrBt-O^yrMNE#2t0_ z1WbBQ*%Wy6Tir~?O5{b;(UizGDgOTQ_IEYG*p&LJ9{`ve#S5bg zpm>-L1N5+uquZZyl3owQn_8%LRry!x<{|6HfB3-T=$I&|%jYAI>5stQpSH_h@nW+d z8fIb?9B1Thp)k)Kpu)693$Vu`kelT<%iF_91Xw34HHtOBCu*Ou<9RoNgywvovK{0?G(M& zl%<4RK<>jO)oLG5HOzx{BfTot8ZKo3%8$~|`y?3|0H5O^G|LcCE!{dzsP>4qdt{rM z^jXs&_)R{@v8lh|JrMx+ak+*tme7pzFY3x|n3Z4Q4V(D2mHR4ARGah*ZICJLnOMZN z-6x15^v0S|-jZnq5|)g;qRIGyyw;T`QjdswJNL&`uUsF&FTLMvJkL=#QIL4dMl$;C zG+nT3rbxkOIZR5FS+MgYT>4fKE$$zp-LXi_!vJKlPYdkJFDSUk)$d2dx0b85004pW zg$ZUI&y^ckjUd47n{~^JlD{+2Fb=MmRYW?viVPN1W%syu(o5lgLsP00ySv;=3G!6m zu?P&fo=Te;=C8ASyIb|^scf&pf^%3jQ0Wl{$_AM!AA}t6lrq>4MuVExYmVZjC_$l< zR2m}R_E5==VUsD*TWZ(y#BBbQ_5PY5N3)31Y}_wTQbQLUH@DUlL9Pq8*fW-buI=De zw#|E3F2bg%DfBMX_2Rkl$2KT9UyJ5Ct>LLO_FJdc}BM7iO&p^cba!V)S#2A0(|K`pNFVmTdEUT z$BOpLG`v;lEpx%~-~Qx@vRxQ~1M%&6EHdviEi6xq;(`aG$Cz4}Ime1#F&*YLQ~@#y z)7x^acsBX$HvZ%&I%AhUE1kMnX=CCtw>W1HbaIbw*)mRs>brzws zqeuq(GT7EQXP1t9c~;e8&vQcBsr0M(<4MH^`+fA`*05Ckl`F@8S5e8>S@bMJwJl=J zc#qedc~k-U#*ASibJ=7v*P^Hu0sZ#SFRLg4OO`F%yZ8^Y2sQE^Pw{xkdk2ZIdL@18 zID^QaarVm#vV3#!#{`5o9o=$kn>fb^HE?rF3GuMu;cI-jVMhfs9|wC_(+6gj7qvKX za44`~$JK6>aY^*rY{L9vqOs1_leiUX_V}s!#(EWWzp!> zDl|vhRh0^g^k=4sdGAXL?ngHBL7aAym`h}=-@e7D?9YjQl>4S|MEWyiHbrk|ECigGVj0#vjmyV&Q#J5q^kJ@mKm_`e1#Z_D#VkR#XaeAU(wcm0V zf`69NK`L=CoELvU%_(GIXU!e_n&@7s(+4D~6%O)t88rkphrZX!$Gt^h!M11hQaEX%gtscP&M(ZhOrglr|Pa^LuI>_zwR@sR5w+z*~oEimxFQqboSLG=*wzLwAU0GT{MeY z%c=~%dqksHI_l6^UAmh!*L)62`MP+oEoZToS3P0EpTmW^%UpNjs-F$J74+8KN=jjH zRuSOf4rAoNegYOPw*4Go>wK(DMc;^sx^m0fsXF~ztjo-Ic>-ec^viuSWAm=!y^MZT zANo@ud)J1K>lf#;bJPTa^#cPL1+g@Cj3=nFF0=s36#`mg;seMre|$=G@kmkD+ll2? zHHUd24PFIv7`Xs~e0peLUuXsBRACQ)`qLpovOD)*_(zv6N8gX6Zt&hn|BWA;x)4pV z3dijb>BVL~)5H1ge&Q-Li+jF@zNRWD4Aqw`Fg;|DNQIN(Bd`=Cg=RVN^?))(_FZFh zdCT5Y5uB@c0kQHk@2q0Gqx84!&kuZ@q32Kt^j zy{twJ$BM;+ssR3(LW-G>R7c-g5qd5_Nv%Vdt>MD#4Z37qm=?pFy@)##=mN`^vUyaV zuj;h1gNB03b3V{@)1bloc$}{8#TZcNUal7|S|_!B$2_c5nEUt>a5ZJP`2NnLkOUpR z#X0M*`2qeZFu&K$_%3KAZG1nku-$hME-fd)Ty|%A8S4Av!3H51X|N9nPp5GYl3jSOS!vP2BSPH^7H6LJh15K3QW)%Hqz>he+L{Ns7p45jm$BqEx;Nd z@XqpPh{_PCE@NbS2n^2H0qe4NR157L+;$9mdC(CneGSj)2GWVcQ^e~46=%zpJ_OKk zF1$ttow#c9bXc%0iWwNyaTy>U!@hPCis1f~qh`xvpxCK<84#%;ZkxCpIX@IIWM@S% z%v~hfIUZdRb+iY%L0{I-7@t1k;y1L3%*g5H3zU8C5X?k|m1yV9i#H*TdvG z7g84|Ep8V0i!(qaM<(Dg(wh8o9DS}L4r=Ji_gT+EJg!0M`lCo)NY`|`qK3FZ>%!O2=*@nYBi9v=EjEON? z)0IKsoK0KAcS`I5o(9v_&;DbBN|Algz@TsdmC$q$>bkXZvDvFjBdZlo_GAeOPq|7sDSBd#!!Q+NbHd@#ve& zJ*W_XvzePMa_ZsgTmdaABRKhMb;fUIV zo?03m74Z~C@OAg${ceQETDt-_U8jUSqIf&w(IKvS8qqzO4ykiax_(ET{V_+&E{?yH z^j&z5B+YvJ(@f`kcCLvMKJHNrDFpOT2Wj>xL!zam-`arBTok9&;W8^{ zmYwJVJJ7A5E1iO$Y+ogGg39WBUASrbERL#91pr}ozW@s%KntC?yJ9K+`tugYxj;*G z@g7{p)}{KhHpA>!@Br0bxNyqwo5}9toe+DiYTg@BOhEMSl@89W=>ou2F$g@7@iu_8 z7R_DW6I#6~Q5&9`(;DNsj>F#4JUdB=hgf-*sQ}XytPx4^O&*-Lu?c8YrzVZQuXnAa z33bcrX!R!c0|Gw}LCj|)v$>yzj}*)uV->0{LLLTha@51V7S@WuM)79y?+U}D{@GkE zeWk$QjMugj<#dA6w+SQhGgx$d1Nb)9Y2Mej#Uckafr!5BsGzgxwQ4U(Rq)9^G;?DQ zuKQ&TsFij#r#v6v>~h=rCb@In|bZBG3WzmFWyeJ z=sTP~I*#G+mR>;?JqL}Bxlod6VeM5+1eMd8bb%=DSh{FOQA|RVN(3UTaQDFXD^cuV zT7;VG%L?{fM3l7YtgKXfAzZDR+VH>14_zxMamVh1zJkLjaTFc>i}dG3fUkG$>uUV2 zW|8;;i_M2L;TE!?oG@=48~hCDevot?2erWYP4j=kpO$?bHU;at9P`ScvXcoTX z69IJ*aancCl`53^!Bo=P^;p7BlHO9urL8p1Cwq-siceYuxu9SDUIyC$MK~>NLd|vV z>_qoMm0`r>HyP6>nm+Q+w8?R5QMipi7!|&b7@!#1y*PmN+Fp>)YWf!xAw?DEY34O+ z?$NRx8f0k7u)SKn6Ll9*V*ccXXK(yuSSF%>cVBUY zNbSVNCgt)hnK8+NRHXBv5#rhG{#&zmCl@n|{&*~eP*tDMFuR2{3wEOza&dGMva^^_ z(A3*6dakMbXU63X&{LQb+GHJ{zwb9jOJDc-FS}-0zL9o(ULqVBDVNYX6oy?m)bN*S z^wP6><$P;WwF%k=IS~DvWjJWP`?cL!^47KrkkRW-em+Y41gK8qt&>qQv=Bh2_{uKC z>wn~|uCE23_jSFm2L+#wSDsJGpC4A9{!j_t_5;s%qCMaFT?t`K`a&R!*4 z?PNS1aY?@EBl3CJ0$2szE^UvG8BZ&^-nX;FPqV~0@;;B(f*UJOC;2N6C-=wRcRSBd zOwVV6&j`QUx(iiDbp^bgefWKDs~5|c1s@K)p4K3OO^;XVJGxm~>rWlpy_NJwQ{?!6zp^zgn=$GZ7D_uYFD z+gWJ+yNlGgKId1L&4M-$Naw(&h{@abrxx$gm#3dD-7_w>Y};vl}C* z^Axr&4^F)c_p>NV@B9HA!lr8L<%sS2lHc1|iImO#Tfc06Df*>C7e}dIv)cWbe0@?H zF-G`ytQCgVky^MS#~MY29|)xOU#QmDM{-$lLL#{VBk8IX(6J!IuzXrJvf*!`Jt6Gu{#y33GgD zw#T~P4jg6|CNcjQZvMF5xX3)@ZNnuuyx?#B$MX5&YXyv$|KJ7w?eH}^_!ku6fry)G zsa3wfZW~5wf7ipC-&6cUhf@fHRBBUK>yr2RtpJV4f#mW^!B^sFri=5I)RTwC6@`Jl zL#`;ySQ2ONb7w*Rq-h$r=MKbtDjlp!GH}@PK!qHJ@rP096>@aQ?%Nqga{oZU1rEgi z5Id0rw%}b&sTuUPNY8(B5scCRpab{zu9QanxXZ2ksw=+y8Dt%M!*vwIs5?5l(O&*1 zeDlz$_oTn=wzb8{^)`I-5sZvezHN|!=`cmR># z=6>!#8$*BZTbf@jJC|?ovAA|56+)L6%ziy?ANnG`y*PN-#xF@xjqaMW#&TBAno8mr!IPQeT`?(~7q@ zCpKbyy$>$TbfpPt?Ita!C@bK_-dWrgmmLAgWft9)*sc>(*Ei7$vF^5C@Aa^Me>eJa z@2y|eW_oz|)9|)w^EH_`fpy!oAPbX67LyCwr!zz~3py%2#v4x{T}&4t)yJC(pPkAN&~?V&K|Ydqfh-&j~xB!z<*+gQptz!;`SEeWiSko!6`E+%zU~^c;Yh89r&V z9G0BLVGE{n-%6PBIrm&_0fL;tS~`CuxlT&uIDYE%ThrdOBb@xrkJI!U(ls4uiyiTe ztKu6Q1dd`SnYN>#>lvZiZ zkjP~nW`%q3*a4qgYGvPDf8mXD-J;-9dT`vlbMMtOj0`VmDOwj#P7F4h;Q!IU&-!X7 zmN$A1?9RoDD6lqER!s$F&{fzW32oOwBgAbxPx%B4`tYAY2S=NYHmU*x{^tw;Jn{bl zgSeC5Tdzi z&VT}bzhB>2twrs5hx*r2Fo_DTUX?qJf7(g1=Izy~lRJr0L{MAj9579|LlIDy6Qj9F zoyyDLok+RypoSJTJGe%B+o@cVJ(58);{Cf>|1O+=yVwC706>y4e%sGQ8?fy@e-D%H zV0rWxW1R9Vkrz%2|LKa!sJCI$)59?D$kn28z3#`9mf-$dDuFIdyL+LoHgVMtYVX^- zDnEKsQSlMmJ`_n5-h6DiHc>A@;0<$U4!u{5s@q@u*kCsL|Dj??DaPb1!y!+@nxa{W zuf&iUdP;HQwRw^JAa2q{VASU6HKg>7+d6Eu?-ahcksG4~d6`nJS7LBmOtZ-F9%|nA zSpO`swKxW2x>Ziq%?>WREX9ts%@|Gss!1s%J!2gYdpzCi`1<)7&IZGs@RJz*i zG94oXh7c5ms}k;+<%LGCf=Nv=xRK2qkb4GLOf81U(~sYd{#XFJT6IheFm7N+b1f~_ z%vam}+`K_DK=s>Q(I)AsxY=~WHD#J(uAf&w(!05VTF%(J^x34@MTQ>svpAXm@A^U_ z-SamALRT_fk~5;!UYw+Fxgen0c#8VkGo&p`BL*R%gpBA*sMwJInr#HHbH#zw`bezE zXh3wYjxG$QU1td-0%yLua?tRcOG$wtqb8`AMxY>Su9{PlQG?FG7InAhG!Hu1BQcV1DqF00xRc^^*lB9C1U|V27)HCHxXgvejm%#X>ZE zmU*A>5fhM}C$M?vFn<&06R-pYI`%FA$1(2zK91Dj>CDNJufqEVwN~W|G}1jQd|v#u z^s}w=bLdX(d3B}8&ZKC0^RFC;ujEoIT^#Aw6?C~@nTKN5lOer61E%l~^s#db#yE$a z>OI$4I}c&i4@Kg4R=8N^T;I%ibCU1z&kG?VvRfVoN1-Tin&(!M0`*DG50oF`>b6n8 zveuf`aY_kf2VzHO{e6i4A)Jr^X?RJ7!}$_DOed6(;ei~s-UmacW3a_**}v-UkN}>? z;?WB0j9-qTg)#Hu2~O!ymOkJs(lP7K06&UPl zK2bX^Iz$ce?>7GOelIl)Nbmy+Z>3E{)o%QTkJb`=Kk+G$=e^;>yFoJJpK}3eOFuj2PQqsBO_|<4Z{8hmE5DcT_zVxlp=Q8W zG}*ZrPkrf~C>9fF0;co$u~e&4-X=)AB;8kS<<5IOiedVEENa zv3i)1xDm8?P0}iz{fuI{X+6@Mp-iukY#vuX%81shk2-@au*p2_l!irr(QNgdyH#j5 zjeS6GyEWvyxJ_A+%v7@ ze##?tc#!3+H%9jWY{F=VJh6P|7Fh~3@eqJw$363#sXgI>X4A~>Lz8^8$T?QVtUE#&>3z>h08jcF)gOOPgzOLfFvcue z_(A=h3kyoNK+#XHOLQx~9h>z%*ol*`AHyxO$^}p>i8W^d9LAaDr=O-od4sU8_8m}q z_5A{bYfeZV9+c?z!D@;^W$1mbVcofJPo7WI2>TQKM?i}8iT$(JZczOEL(~@rh5=D+v?TSixlogG zr+Fx7C8`d9_`!Pu4=1%%`TuhK$nA+G|7vzTggx`R_*;IQ{AWI)$;aB3^Zi&0oZm=w z9bY}k+dluOn?YyJxV)#rm)X);VE|$MUMi}IQrao@!3(BHv-@3nb87L#fWj)eMqpjp4Qb6a zLs`0-h6fXK>_4=LIXnUJUq8%>6?D+9)At%D$!eUj5yNxT7`L(OP|c2+`Ft9`-Zc{}<2TMWe3mKcx>0e`BwDNKiUp>uMe z=xv9s=oO3eqZXzy2XQT1rvI<$=?VaZVSRv5f5dh;GY6Y!WM7!r@^fz4(lNyf@u+Z6 zFP*HVi@m%yQU`Fzu_@oWl2*cL0ro2aD(j_AGqQnfNP_bJhwbq6IWJ~y~C{S z_?qquMn%^ZQ5W0p+mi77d@>MwY5;#`3&QEHzcgL#OOl~!4z{pYjw*L*dW1lx6E8A# z3heSatBJ9tft#REwzLlYtQ1E???&yhi4hDRSFTVs)tKrG(2= zTaBtN!;8^LaBx5uzg;`6PgFoknanp%&%hKakco@UjGs>l&kp?v70&=@7U9qMgy$!O0U;u)~6VR8B4vTMI8~6nQ{QNve$wgnul{30||4 z?AX|4-4b4(ZQM!F?AmM4AKBrKypq#D1h-kP{`aTkWQ0cwsU?&Qugu$|(&P!f7ZAqr zY{~Cd7vwF(N5am7!xD3Rejv8QCmGE<6Lu%FbL27{u77duj{3kFpbPB&<|7z8iqo&j z5gACP5RYLg;M+~Qo3D8levf8$UH#uQjE$rNA{Eh0hF^tQ(9u_3Ge>TwnxAv&5fdt2 z{)eyVr18lx5N4%hOj-(s$Y;RO9)9C*zW?^I8VG+I5Gts}-`T><`5LZN8!lCQMe+;! z=U$>Nr~Bh`X1oMKsbh$Xq5?i3i0GG>gwT9j~B!C&zSG^P(x6H5JFcrp>+jI7?1>_6%{xY!sPI; zrAYRYfoKNGDi{NZj1^yf?hvL(fTqx3kqtJ{W^^=|_L z1!Vt+kkR7sUxWk-7^?@=~2>eKi`E4$kQS+HRRgMTyzJ%-{F?d{`lU5D|TAf!$Nb7Wcj5@;C5iv%k|L_m{Vosa*;BP`khVXs? zocM0KpLK)?TtMvYf9V@!hsLg z!0$`6j(t`+*iufM!hu0)W~Q6JGj_S>XF%czsE*m)wiD5@UPA*}R?YY1@0ql;qQ40R zE(@6m0S4l%aQK~A{6i)^J%(@D2aw(0y+mVIdU~3U?<8Lm46z8to?ZpqVJ__&16i7) z)1vopaZGX+6jy+7zLQE!>i`auH|JE`M{rEP3y@^PUlLjxkGgH79^p7<-HPsQKKi4? z_`5Vr^Gq@S!DX`s9^DSgl!4f3fPCF&BpC;Yu0rp+wo!+gHxctk91sEH{nyBOqaFfk=lolI_}i4P1bU3I1B*h&E#f5H~#RV>P7X6od!So*XhKk@iHJxU4Fh(^-Nj z%9ia!kGWW(&Uc!%RIK_$?Lu6iSmc9qXmfI6kj@Om&sG+4f z7R**Eg#;c*y4Bz-2nmBQ8c`H&Zc2&qZ9H5h7cx5+Zu$7rQN>4#FlU9ub!$~a3LhXN z>5I;1&qIc&XBn9XYi3ZaY?>TbNW4EGI23C+|2N$@@q1TLf7P8e;5yde&##bWo;SBzBg|aE&ps*L{rk#nk#s~=Y6w!iXcKwR zRgqvb_1Z(qY&0NUupwI&Zo4LHr?Zp;jw$Ljky{B@qBv@IgGQ2=!rA{YGQ93gzs)g_ z-bFut?WC*e=^=U-#sve-7C>+f^ylEVI>JFNv4AuCmR7=-NzB&3fbV`|g+4Kpx{EwH zp3PzQ?U7~Lwus{n;uvE0As?n2>|rSO5i7*saPg2H6Ng|RwTIMq7eo{AT=e^5A)r00 z$GpVKRinQ4Z$L))7S1RlWKP+?^Fhgd*YMQFQH(m8ki4uNoXp05Ft10Qob1li9EI-m zj6+|`3HyqG6Gpz|z84kUHk~y#A7#S3qWE8Q3_6s5(=pz8d^xFz5MfQHVnyjhtz}`l$geG@0TCtB1utmat{gR2C^K}Y+-W<06Twg0AX0ajJ8Zy z&9x+&H9i^*%jH|5d${rIQ3^7TKbI)}orAaoXdJwMP}e{eQcRy*xeQ(2?E0dh+md?f zb#e{8zyBRzmst4Zi_$-!>tMM5*VD`ih$UETo!r zuS(BLscI^V!cot&mrOVYRjuZv=ncWnAqfF9d)?x1;tqq`$K*p>r-NLD@og0=k*__} z8**&o-25#xsA^(F1xAUpmP{N~yw<7K3O>lA+=a{bRiS&vaUd1z5*mFfk4~cFDIDfSbS&=pKhYT9>Htu;0gvi{tJ2<)yhQi^UTY<49*unBPW?WfrEL;cjq=kuD6QoZ6!w-jWdzp2v?TJ_OfA zcfnya7Y>*=;4jpCvZdWzZ{oU%TD4Brzb)y5j^UIK8BFVpyQLtZ2pBS?)kJZrbw^`g zLdV2cN|al&&v!eS8qXM}yPA^fv;^*v4jn&NSDcYeK~C8@h%?4+4+eNsL&%*NYLlc% zGg`9cEGK3t3LCb8;4?!xS3t2fUed|4Ch!fe$1@xe6H%0!Pb4U1D7Wwdw zDft@MeIawK2Y>Ue=hwa{38HRzl7p*}xg=hTf{Y z^u62pCsL^ftTn8(2=2D?GpysKWbCiX30>^%@l9`Z$ieAXvNl&h3i0`+a0ARLR@(ht zhjom)qd@$Y>@ywc+AkMMU8pKJI%8^!8|bfdX&rtMn_{Fx&QgupHt>jL%N9Ste)lEW zdfnbyIZqw=Z1xOge-->nl|pdy*I7RAS7|l3xeXVi2Y*`qQ4h+&jaAI3Wm! zijGz`XbUud<~(10ZnEy(zWSYe{5|Y3J-5(?n7UNQ=aV?2d0Sdi^;2KZdM7@wQ@_gU;vmSKN}t(C!};`j(KUPP27Kz0~QDNgPI} z?G#APNmMt2B5%Lb@_t|?mJc`Zafx9(`!$7_6cNSReYbyG{Pv9~PSBw39)@t=LvP%| znz#h83QKfV{dIgJID zAE?D9k&?i7P%fGn&)cff^82)`Cxs$@7cK2)>M6say`Whh`zFn%Wx#aL-WZ+&kopU9 zP=6K$6(K^S$~l2o(p$|L{PhJVNsmM zH`kEIk*hh3akct?ab%^D64_~04zF)J;lv-MawL@TH0GGitlIF736+XCmC|gk<77`F4S5)E`~(6Q1>3pOhL+t4d0Uajm^eUa6)YqbJx z)UON0pD51Dly}s`d|6@Lw5I!JF-ly;8qy9B0uB0rdO^YM}7B4&G=y=3Tqt=RVZTz?$Quv&=X!xW*pT|f^(I%(G zf?J#9zvzd!8Wb((CSygLIT*2329E|GQwM(Y#!c1X3rj;vTC#{UyBcN;LWV-j_xjjW zjLc4tqO7+WctPS^8>O$Ll^!HlXxA7WeJ`3|>+?B8_vvKP=lM@3)A938Z=a&~?MlY!iuc2x^Lygf$L$@T zyT{|_LtXu0Nbl*>Ts-6&ZFFbxshQB0Sdi};f|g-BYxuRz^XUw?^?~iS!`u65Eh1y( znMz>b>z4VtP+fWJ2lpqxgGOB&$%74Kom5b&hUt)r|Eo&w(RB&)Mzs@y4V}< zOQOqITxrjhyNmvdNA4?bVivImL$3GI#l)H`;SzlUVs0ydwWT_^dDR-Tu$62YUm``It+4hd)W4NBO0|FLTih{kmx_%Imp)U+ZyaWrGuy}kQf(bp&JX( zk_{|jh{rZuqEHhzbVpD-FySk0r}JmBj~fY@lP2aaFRi~4ErK{Q0)6MMfEjHg%9NVoOaI4aIuf5{)56KB6@s}z`cJG|v)xc!+XVV`X; zh%L6>{g|8qqmrMr3wg^~Z^RZ)_^*vUs{s3zvz}#ba-uK z-yg)KEk*9TC3!R1@$eLrm2egDWN?(WXSg!iv2AHe6HutbOf?5CU(LFT0$_n%XE%W> z(-Qk$&Km8qijyzw zdr%!es+4e*w&R&I+5gwDA{PC*5`UmPCTlsge2;cBS0rugzQl2u=cYbh#GVsw5Deef zl1CYk=)zQ5zBZf?R4*B?ae6ey{Te0S^bD#ud&b3br1tvEY}d-fJOM=VYp>^{tT+Gmrl-;h5_*e$w;Si zn_H$HlniHJ$005kR_WYMncsKZC@q9C-kv!f=cnufx^dax(+yVI5D{=4-2qds8;zPp zSAd<@>cji?s|F{|lH)r)EdCN(e}U49*S z^!udOiai7Au+jHaZs@mbSdQvb!Pj8AKXePRI10U7+cWpRseITzox7fc&BzjM4Y05U zPxTd-^?jtu?H(EBVDzSGyPXR+b<`Vv*uLueb90qG$}3>Oai7AIONcd;*iZv2os$KV ziyH@%TL~v)UOM_YyUeZ0Rs)9qLo96+@o*?rHWURb8zPAzMiQeV&!6m z_+{}J5<_8Caow=Mt+qR75;mvh&4#q(P|cqW%3Gd`ql-0LF=_D-U+DEtCFKyck4Ufyq6s0&WK|xnN3IY0P%`SV{{GX(KZ3-BN*2 zU1cuB0nNpbuGD(M10I}vBOyb?3#p%CQB8MZ6|$t1*(Z4G-9Di0a{~qMM!YJ`&xsIY_00%-~!DUsSB4Ok%RN`a#Z z8?>(YLRloXeqWF9l}0x zL&Yukw0+nU-WrKrJidRG8kQ^}&r=~lb{NDuJNA7dbO0Fh4|HQ2FJQdu2(dkb@UcDB z2(gqv#hAqcmE1IvlqXecZnC_2q&0%{DbIPa)@hC;n(BVqa;xh=sq!!qnpThBH=0JRJ>3vutD~;W z+~mk$n^>PTw%)=Uhug1_Ldjwr)}A3fJQZS23Z|Tc{hcfc4MOJ_7v;T7=}S|r-EaC7 zH09BJdBe}J^*bQ+Ka~L3bAO+Tu+p1BNkFv=0~*#S|E;du)pv{?kUSwz--a8{@40|= z(Y`0eM{Mu#_l9NB#Ht0km%S34PeN>cp-?{z?H^}WDsE$~oDfamxb<|FcL*9z+hwG> zRWb#&l68}8s?NEj#9@cTd6c7(P*$XK=4jIIXh4)pcEfwM(!V>wxAqe9`fl-`l9c^X zVu^*tXPpSAb^z+*`Tw+2pfPxhCV9+9vR+!rfTc;C9gRe|9AUDUSvV51Py=!%?BK~u zjsx6qs=LW4Kmlb@!^EoDF}SLBdf!JT-m@lCrUL8K5*&3WS6iQr#pJ#BlAPE4+$D>y3Yr=Kc8K#8pHg%Lg;lPI7!uIzq z`FVz-J)SK+mCzcp0j>WoiD$KH=fB(3R$PEo+qhy9xXNPWD!qt%iWpxNc49DdviG)c_co--mn-J3w@Mdplj) zi7#~hb2krDCn_iC%upitZlE&LiVM>=N2WZZuHAOI(t}qD{BE>J>{0H$;_X+*+O>6}T;k5ZYt`ULV#$Wwx^;&UW{XS+pXmDD2P~dTCd?B>(Os0&k?WT(@h9mXf%-DJ&@m zBTUi}`Y_F5!55&z6zCh_RmD30r>~+=N4(C;*LXGKH;0`uSZJrS=ldD1M__#nWe0*v z@FuO2L^1ngk=HML13ooZ{tugwIg<3IsJ~*rbQJb(g}dP(Af3z@>Q=_W zLh=6YV`KxKDnO~hAlR~(=m{b~Kh62_stmlUogf1BV{N7{$@|R6a;p#;od0m23v~Nq zZkNxd%e>Ak<@YK+e80qe%b|xqE=`vZ*w_~RF*LbLNrP3%?e7Zj<%GbGNY0HvZCJ$Z zRNN_h{OvvB`GbYQ_a(0BdM141aKmgP#(d~sUE5CHQ_#v(4r7pAI!&La6>WM*2GARCEh5vu|vG_Bv z21>H-e(K}&9@6yuMSS^|uWN{9tGp!w!C6Mq>rdc)^|1$CdLlb~50J8@hvNF@0_St# zlBjnWdCkbNyQZoVmP1(7sj^}f2s3^K*G}ekrkz^9ygw@Z#%%^Ah@luh@o!+0bi*lT zd)Uwx`vz3JT9w5Zhf88HNh;)E%0@(*EG-KE3UA1JodT>BGUA+t%-Pv9*>hMk+5cI~ zzSIOE^JXg{bH2sT3uf!ovvd#VU{vpJxFrynYzz}9+>pMulmvY&u!?s$1{eF9&z+ps zmM@u`L+sq04fOqqLQSTelQO-6XgU=V?A>sIoqTEhCq(LSe(+htDlyxH9|nW_oAWS? zC|ipNRA6m+)q>$WWqou2Lv4rj7Z8ELl`$8Wj;o+(Gj|*@pe|ZbAeE)>M*CS)+SE&D z0Va3+?+yj5WjladM$V4}+z?_#JSKcayip>>WHSSr4|9umDhLQiT%R1~rjY)^>&QOH z1`d(>>>V_{cJ#^e+t={ zvCS677`-<(J-~*(w|)vG`rz0;Jk*Tdo?Tcm(p-;;Poi&;iy2$_Rf7##asAbDgN?qT zz<9j652nkXHQJH}vsX|ZyT*zq%A<*)U`ajjlxos`T zB1yf1tL7u4oVdl(AGZkYnIOpAt(brT^KK_NJvUZ4WYDjgM=t8okMpH-6^1S58cw;E!`zCzyL!xNJ*EZ-0gSHJ?Gwg z?jQSkX6?Oa#k=-;^Y^aB%UDt6h?X^*JwFh`bZ9mcHJyDxBsI~4laSuvDK0P>8~1;I zj3$gKXyPz7jqe-Gd+5Dqm8G4a*?aqWK|(svmt(cvs!zAg)G<|X9Te2#=>83R zV^ftR&X2%@W&Dc8YsCMbG#+`!K>I(yHDW~T0>Fd_<6r{aW=hkl>k#m9sbKi( z#!&Q^CR0QI21w3cX8>d{hC@kZ@Q<-|fz%uJ#iF8FoEbaW|3!+tF=_Kp;R6^Bl}s+A zBlIpSij%nBdVDLIf!erhyqPOWAvLcmU2%IXCid6)`TKQ`jwP%2w~sV)`gc*Cyh|mm zFBQj+Z}LlXR*oYe0Y?KZpQG2t82^W@1j5FC2P=ts=ORb)pX{i0iJ)y9Z{On`ApTKg z9mR>6_p*%A{`)7%A40?g%56ixI8{X7bp{mp`&eu$yE@6}EE9gS=r8@NJOBTtQElS9 zbZ)hjZTrRIk&~HA@g$HH#>MH14koGpbNx$HqGn1jtDuub z+;5HA8TX~)CazbE;2-#&Ic1baoq>v#71zd_H=$3ZegqHnBWOx)7t)eEKhha|=-$CY za)sWXx;=aSxp?+-PL$FOWC)1?yEY>F_<$6fbfl+*#7a7`B}6LmwgfOI=>TH=c1a8q z*ZNUMLv={hA^;8TPj|LfSJs>wK7KDveB|enI2uCmsxicW)nfZ84l(gS->G~%Q}*I< z=4Ni0@wF#u{6WpkX7>Bjk1L`6N@Y!o05~zg+5Jzqa;r*sYOLIU4iA+bfE)MsXJ`lH zUjn{`{;BFp%^K9SM<}%)!Bukdkn|h&RwWCQH}Bw{urE0g)o%xZUDaxIl?Q#%9}g+Z z#9i7>awPnEzPvhc*aUVP)(Gs(E>?6m#SS<*mmlzaD9ZhhC;Wf-z9pl|iTGkMrM)`O zh!YOqpf>ngu3u)RK17xT#%UW z40s$lI&8?#^b39&z$=;l9$if;U*+n^Em&5>$@Gw(p7aYJFi2v?e-aB^(U_4c99Wu-*CFB6Y!0PZMnp;X)KNE4;l8Zv z$4YNkl79vi`vo zqxd{cbL;p>61kz?up_r}V?E`*25M#{ZeEE{%ZCTb*CewvZ)QC&kzhkicUTjX^GCAk zh@9L|+_!JaJte9LTa`Wq(l&#h2k1g_#PUtK62Oz59qZ{aU}5SxjFo5u6zoUTIUl`$ zeTH0Sn%80IWI9e@3sJ_E=d^V3LEL)ZK^c(xX`GX~cEsO85;4SH(Bn!IOF4dEn)^~U z_peA&YXmA#K^ z6b(eK6LIbsq;amCY>NX=#tJm=ct=ZbGeN2}MNP%O>s|Q!_P-OY#!kQ22-FA-ubh(C zHdg5YnraHb%mq+{Eq(oLzMry_m_-y)WxFk_*YynBU+rK)eZ#g9f}*ZuobC2%7|+Kmy~2H?&XWl#?6W!wy0K8U z4;v_CaqOfK0nVw2)!xP>=Ec33-$TT%u4!f_9t{n4vp?te;+DnOrIsjI?J~e0($fZX z_ugq0I`g|?sqP6yU@;1khX~>=Car2!y%ih_ZjaXFdi0Yd@FrPyyAu*d+NxSJ)=J3j-P9D3(!hmIBTdrwv z_Sx(drcekNzy7ATC+#j7+irxAq2aQF%puHD(mq$gALRp|81rlfm|1D{^{QA#{3Lp% zmc#6VoG^2HFrQ=vfleGu9o4g{>6B#1f>f#WUCxGO>yni$1%eu+C{+A#?;G_cIR zrkU?i-L{8tpOn0Y8c* zsmaZk;*uIQS=s!2g$I~AZ^GkZ6o(RH z$I>wO!dQA@OS63eClw2ZuAhmIHaYFTT~96JvawvCxOZUDE=-#wu``mVv$x$Su-6C< z5<28y4CvK6>&VlyCuC8CTqINIuSC5WAKum&K+0}o*%=YvF?Ds5^@$(*Nx_-nurS%8 z77wf?{w+d>Qd$J6Q;nqauA+=$u!q|S;`NW4LlhWhpPEc>8?|r=R~RO*OD0DoPG-qo zAUCr>I`gEaE9HULy1z63YSEsH*xU@B=HRb*M{FgTAU?@A&P?$$R$q7-pZ^0zz;}a^ zCo<|5%IZjQm^6hrC9?^1L>v|c9XsS29j>i{iKT<->k~pWNG*9K`9$&+1sCVTBW#=3 zOF9b~>nfS*GAHS&JsR5QUoT908Mx(PTT!aYxv9dDIdRg{3Q!cTeLtCdqAHdq@T1{HhR<(9C>7cr36kR(CO({Pnh-8pv7BMH&=uNqp2zMDv)imHdr;i&n1+X=M8TP zCjt;9$O-Eb4cA3ZY*ep494bewuS^zgiYsncM#N<1sW%NMaN;rsmvNTPz@> zU}five70Oey-Elp>ru^A=Mm*RubLgYAe|Xj5ahgi?_*OdI|U~xl8=Yndi}CHAiTk7 znw-iht*I=lIm1{pS(93$VD-(wAcIQC;pZy&?geSg@DTF(94fSvfszxfYVrwr6@sIS zsUv|!`Y!g|eigS`C<3?ayy{RCv%$)IgBz&cb44DX)mg})ej_H5rwlb|eyf+iPbh?A zQ$}1`n=z>%w@`GtDj?=MqG_^7)lJMMnM;8g7|*|j4Q6PtU{vet2`1QFnH*FE=`=Fv zX_)hrU{&YlH>4ftLJ%KGja3_1l7sVVM5iVDEN6_Q14Xtfvxt4ZqK;5G~0xkk2p48aNuAaucW?i$| z3*!*y=~F)CgQFQ%uwO^Z!A5lLEo6EvIse6-&u`oZ=GtLZPw4tr(J%J)bn$CmV@5XQ!WUkUA`_L4)TCIkHxSA0+|`*no$)=~>)KH) z^s|4~qSF>VzgI@B?Y+zL4|)gFDtXW*E7@X&e)F!@YMmf-tumPzGJd^xdJ$WYyK-!` zgucsnaLU@Je4ET$0c0+c-TufYA60@vmzL}yVE*O7=h-UpA$&Gf1Uh_>gKP?zl)#>u z^_K#kjbK#$$AqKKTv6cAbPr1Cl9YmYJsKPQ4?0EobGo!meLF|%i!z>(I1drYMp*gO zofMD!+oZM~&cd{406&to!c9r#eJO|5a&+j)4Lt|g%kLH8oc`b8haHr8Ez=U2sc>U9!gexm z3+}>PuP1l<@E-;*F&x&Vlp-{ues!uxL06#Gd+F*5b_PirPO>Hss${0vFt$_mV@Ct) znn5l5#X^V|$fNcq*}}C!`zPOdp6FIehexY7=)^{rE*w3>dG5i?x-E%?bYYAu$F7OZ z?ta2mrzv_Z#GPW3qSE}^3if1(o4^eI9W+U%C;^(RXyMK|l1p^XcP8ePboL<8X zIEa4C0Q*(DqwAP;+tFcSAOn>QkG`28d|Xk$6N%?f+&`J6MR@=I=hA*bE}^NV`_zaw zudIp1r=xvd9;LiOXJ*UkDTp ztu7OXyd-mkT+4>6pQT16%!h8uy$pq~JUIlcJ*8gP(6XA-5?P)pr`!|}N%Bn1;swR( zm^v3vB*uY831a&Neimr-m)SS6xpc~OXS7iwDx2W+Xn)j7g5uH(en{qmyh0F#2-Ttrra*c^Hl;eoXhT<7(?DmdaSAcPyHF=3^Z92v3>icqL620P5q^^K?wHn*CU ziinydM}(~BM9hsoR?HPM%_3q2n{^6Gd#>>H23qf&(dO32^Bm8;DJpKq<;i;3rP9%T z_h2x0qH)m4$ zkK(9sgczEal{l3dJ54_zYoUg6#BxGkJ`W$R{*0B0)ib3lvL#)vV$5PoskLY>lfHRs zx2+cj(hg(9Cu0OP4{A=!%-DNu`VpW_?6Iy!c$ZVnHsGDb&XU@AM4OBuRWJ@;;x@L` z2k|Bmnd3#X^VcN!AFofoQ8ykDXTeZekKhe1p2aRmgCC`NI8q3yv6>oYPfULW_LwAZuV>pR`NIxmH%lk=^+zI5meGxx4v$!DmZsK!I{+1b6?aH<6P+BiD2 zW#@f1j}&wXM^QWF!)oeY64@?A_HeIwM|0nwiV@zjtSn9inF|@v2N${WZKz-%Pf|6b zYS&8_XZB82qYc^@J5HOwAp0Ho$)RX+$TGK;U~w#tX~mAoa#Id-pZQ#SqcW-|@y*S~ ziDrXvQrP8LI5Pbk;H$OG1x<)4n1Z#7 z2k4!HYK|gk@n8Sg6@>l{c6y%^E$W5Lz`tXNui2xTHBx&v2}TOMiK_P3z;<`767|bT zyd(1F&UnkEiGT%$0|LDxmI^d(>IU1=@t}R`D<-^}(cuwkt8D0Gr z)Y8{u;yP0Tb#NeQ5LVcOH3Y_~ZB*V)9kSXl(-+WUXU2@9vv#@i>L0(32gE#pbp}kJ zLk@eEHlRq>bqI95eAd||u00s4%~sn}nJYkuW6_-nc0XMOU#!8{2(kyXvL;(-ZwgcZ z;`1$?Gc-I*9gc4-*#NrY0+&GUuM~^laoNW#fVMqI)==DRb78@MU*;pVN?`|xj3Oca zAkO5QcrU?oU;s9qJYQiEX`LA%4(DLvnc?Kk+*JRI#4PQFYl)=q`pf^QNm_= z%)556%w3WJz-jW4P~rt3*B4)6g>+T?TVK&&G#hkCS|Pu zy0r}}@|2!tm0Hc|XvzE)`6+|u6!?EBZ~Mwj?>}|h9S#_q3Tl{3h`Pr50Wp0N( zNOXH?@J8SXqEkB}50y%FL>B@ks2n&52*{*R>sgw?xQPNCLQHEHRerZCK%-7N=9<)@ z?HSgX*@QACn+2JvB;^Wy`ry13_3)dD(`0bkh_>{!D`R*#crj!NA<~fnLId8kF4~rs z=1l(BTgwACXfygEE!2{fT{7q&L$b?P0vcL{E5~NFb#OZ<`=0hM zY1xX`j}d}+u0%!hX({YXDh>kMstlJEd}Ajt90s)1=nf!6-`<}CSpGi?;Nb-rQ~E>% z?Kx^a+iD}*al69GZjeS4FWQhh1^E*A&%*yKXK1y#*Zzz@>!0xz)JgijVmp0C$~zAq zRBR}3auMemoKklN#$xYovV%(GxMwxhbio7Gbx(E`!&iF)n0DcpcIlWN2sEYkXhXgR z=-f$>$WO~ez)KfvCq{H`Jyq0`(2B%Aw$Th)aspLyJ%|BKUu=Dl%;FR;(*4+H) z%u`{*8z_@NTlw~>@EYc#y6AA}4fOIzSOJl&@4FeQJ#j(m<>5+6g|pJ_xtV!yF8;>) z`^PctC?BHu?~^T^N_z)Zq1uQuZ2+End+-!g#XQ)ju5}BHbZ@y#agT#t0@mk)A3T9^ z60xd4k(Z0kv>H2c5ejXmC<`Osna2TCLMR_ib@IyilDaMwnvAOO;v%fMz_qm>)YQv4h$=GN0i$hz}ai+cc0iFZHAVJ}30k1IS1~^zz*D)!h zWmLYfyDR@^nz#b_A7$dMs}?X{F}c7ZS=W-TgGr1>4t+j`1|EpDY$(ppIJyt8nMB1s z!HG9TMg5kNfnpg|MFg!o;LuV=fPjFtI^@nHE*aGxj$5eB?jxP_9d;v}t%9E$QzCCh zR9+^zqwDAa}pX6Srt<}y1?shy>5T;)?>x#?3q zT$-m)9i6*mPL$B)102DBq%(jQ<*mT62m@cj%XJUv7GXaxv_Gpx#IAqP_Ak3#*J~`4 z;R65J2WIbDL+xO1xl;+jI{cyW&Y`{d0GGmU+nz8E%IDm)C@;NxVP1Xj>UuoTfrOY; zW4;XGTb0(ed~3tFneqS}6YJ#Zk21z*a*fhw!=RRKpydF;^{;1p#M} z{SjzlZ(tdT>O@%MDjmP+6Vivq9eYTV=A6dfh|-QV3bx(mTY)oHLbN}nAZckbC7Y`R zpbjUXj>s4gkKe+92sV(yFVtFfuyX*GKNrVuVy>!s6)=K99|QK)uORpGSn#eG5)fRb z45d{o|5}G7)2x&Qt2!8D%Glq|{N0A20xcfpW>20WZD&fuG(IwB>?baPS*d@8FM!Jh zo0wOO>$Zve!AufN^BjqUVBpnti3H-zP+ov z+DPJSjurB=V?n2nCGm1^j-D*Uh63!-dvt1EN+zlpUSZ6D4Z~>yoSs&|llDwnga;`7 zgALMHKg%|fW{*8bOP*WAmx#Qb zZIY!NN9+#3wn`DT0D|rpUw;0bjCj3`P?BzbekT33aSR;MS!^v^*eJ9*B0V zzt~ZD7(^D3n*gw3py&Wt+x1BncIV?X66G72lNKys1zX6qvE|({!8HX}U;u8Uiayj9SFFr2b!SjILmbzteDttxr>XP3h8k07#!a%+n*9E-E_aT$ zd4rCYz_J7oHUnES4<(flB*02G=O%^26AudZ0qsOF;K!n=z%t;D0ciXz|IQE`?f! zM`3)>elV@rMf)KMt3zt(2JkR($urQ}^Ov%n)}j1SZSKnOlExR7P-{jRk+!VyDXF*F z$r39eYFAp6&E{q)?qv=XIFjs8pz$Bcx{dXvYNXK$ecyrUoQ-m1UoXc||~t&}DQ| zwl|z#0$$~|{g<@Gy}D;YsJuzE^dhpVa9dUKye|y-Tlz;qnf}J~MaB^mVz~YaODcVJ zZ&3$}`rRQUO+SXss%Qk}iP0HB-rRQK6fn?xf zZ&6;xAg}mJ@4;A~(u%(Ah&D5XUW1rxeuhN<{M)7mu5^vI$g{)?9O3kI2 zaSMR&XX!*6m=ffx&nor`ycaE;YoHqVgRj(zoS8oWda;1+ZNIq|OIvFnnY{OyWuopL z>}DKYe|HpN&7m$T!?Z}T$xs}iA;C9?{(bVCA|b6R0{7_LAJ)*94HTzS*Wj&`UwESl zfc(SPi~6)qVw!6kD@19THN-TRm4Ubq+x8JS1DSB)!Vgk5r38=TG_FGGo#|36BA7Cu z^xb8(RbxttIrsuB#CR9>VeAxDt!$I~oXDI1UvoPAseFHde4A{%y?Re}2t`pV$cFa?q_esp0t7}Lhwf0oIV z6NUQUf*jA^0Zx}vY`;M44O2{^6d zS5lp?PFiT51qzj)BEq>?U-}9UJY)>ilhgvM&FGE&@i(xhH zDrDJW&PP+GW93T^Yq!Lj`4E{GFx{ayqkq`>*Aq zpvgAv!E8P{o@97f(q4fc8gBd^k-vaU(9U1QL0z_%-`ls#^s$rnTRG&t#mjMNVu5NI z_{CqIJ4b%7lU2v2q{qD=Ek<_xswm_9(l=FzEQ1z#K=)kPEAPa4UD!2``}AKPnUKvA z?Y^a5Up2Q(`osn9*PnLw$IPM2Z#{&rY?RtK_uBI=_B+TWzKCYf?gUlsGr!6xbkI(r zMq_{2(%oV775E_~W9=1<)-}|Q$0BfEBoD@E0b)!=%PwLx9I+k+U1_wk(Mp!aorXX2lLjI z79Yiy@D6BF7aQ^C4|jM-XUJ@;;-~oH(uKZbE#G1!7^KBZy-b7ah*uZwteVlkBRAqL znug;2)Gd$ZgF*by%-oY7-hyLr zeIQ{rlbsMp{{rEaky%fmL$y?JfyQsg=pmjV6C?11xp=rrxv0xtO?G{BSLM2W6XY%! z9>q($5fj^#Cj7cg5z=mtza9hR64xmJF^XbZtGf^aKxPM?0WRo$3BHm~C#-z41ltq~ z6!|eS(B?P=*N2yI3v0{peZnKxyi3*lYc&ckY3W^4ZGqoXY0YAc@J4%0d>&PQJaw)*F-9EMZV3sf|~}|Or#1aB(ulJxo;qW zqd#Kwit^yNd0ER;X4)91#uUp;xU zj5!Mj>t#s70-xN?7FV??$m(5+_{KGuMz0ofjDeHtoIecYd-`78wvt64SLRM#{wUS1 zBs_4|wVvc)`f1JP1epX8jnS^8cQMb9S6EM;#^b(idPXrn<%_QP?SN+4FM})qRgy&p zDW8uDg;${*TgPyeJbv<;#wLf#hOImA{v8oG#8%C>wlYK?MieUSpGp#%Rw}Xb!sc*~ zPH?N9<8082x6Rk*I)bn5Jw>HKAmR$d^XtrS)^ljmgxUiR+BOI>fH8fW5IZIi)3 z^M%MxVwZtqbp01oCf2V2E0!O~M#fZRPf*)w*Q7YH-y6`&_Y@mae|~SE zAUFtQqb9i%yZD}<>r4BE|5lH$Eg(ic0c%3WZhfS8{T6%;GVID1Y?+ai;{{2pMU#gs z#TG`)y&;q2<~#N0$(wc&TYzNk)~rwd*ikq*mFTXS2K82<(3kVTX=fJ|M6-1xidbntsb0~kW01CTK z`SbDdypKUf=c(`h$>+s`bB7_34=x>4_`zYDE@k(uU8-^CDPRHRPuBW`woH#)!9B_c z-6pN!$0xc0c^f|j#>4N=@NX>=B&nWr)nBiIfpZ)DT1>z29F~^s2fG#+iwoX?^)_6m zn^)PJZWyGzHue8RQeAa<>p5;G8OlX_`07=Sx}d*Ezd>vv4J_whP<=j0+1+xNFyNEK z5ZY-BNqTKTx-vjeaR1AzPv-1zc`7xHN*1+m#f`8Ejqh^J+{Zt_kvrF(Ra7Q;H-Fpf zwS5mXu}j~4e>6d+j05p{O>LQ=T1r^Un@Ct=!4p>5VgP_|&*$Wxo+jSoge~vDa>IR# zU>+Z1uGCewXNGNEtJP>&)+4wM#6Gd%*tNej-)Jt=iCFeEVX|R+1%)NOF7^UW4&RMw zzAP^Q&b1m#dpfEUb`m$3J|%b@OZba1^*hi*HpS3)GpyI_jDi0@hKlise(aT;KG$I7<>S(ec(4jx`4jhbLxI{#-~m1 zWX~$y#Vt0^ju%U0?8#jl&)DQVJ=NuycucV!y)t%FNKH71OB(R8XIz)_KkS%^eKQFv(FtC(?6>fDcyfD; zyt(?fq*R5mo60@hOuy9%=6**XjRw2wR@e7jLO&(PL$Tm5g{gV1LGe3*+_W%-e{wQsd>3jTIha7yUo$FL~XiyODOddxE_KqhtkW~DFq(tmpYA}f$c zqD64(cJ~ToQ(0=L?=+@>E_|-8cg~qs*@K9C=oh0x9-KmnGTG<4DksA+a-FKFR9+-! zta6EJR`w%YyV9qh#zmgqx>Y70(US~`Ni7=bau1qmY66)zOxM4Wo;W5P5&*Uj=mbD|Tlov$99S12d6G!-A1lCghI zB+>+2LQB2J4dawI#a7u)>ul@YBv{1GZaGj$)Ctf281c|?bRu_isieJsd+f^_IuZ{j2HS!F|8|UCgbVoe|*}}pJD4! zpQB}fiwgQV`Znfs^t6{M%Y}>Po4E96+|<0rb`sVBr3~gg*1RO1;}_$qPeHddY;U1f zZYWbwzOVdoq|8jS|+nvhnq_Z0r@k_Zf0CbWx#>-%Xvn zD%bSkqT1X_?0%bpMVeSg`Hs&J7m>OqB_u%B(& z%ys>Iyfn0m7DdT3WO;=133*Xjg`;WdZcrVP3a1i{PH6dB8LM zbs;YzV;$==8-r&263YGpqqNVa#q7RE$BHAbr{T^Tu>r~lJfk0@kKPWYJU`UqG^KsM zQxC|dB>lz5tCbld;7}_Fd#n`u_6^#2Xm%WPnwIdtKKHov9@6+7dQNJ|E>Vjx@u}s9 z(1Mof=+DvRuVgNsZOOzPSImE|zF;<)e&p2s(^Qae*zr6^6>R(Fd;T zRQ;g5$G5#IUo;b?suCh6KVKe4wezOtu{&|4JY!70)xpU#s9C-J5FGyQIW|o!qplD~ zG|NTwvk+IF_fqRrR#ioKrKI1ftnBe=R87OOE*sASaXa(Vtl2P!qP)e?i$K($9cp4) zZV6Fi&YR?^HIPbf#viR+3xsvsa5a!Ht&3c^DTFWm9NIp=9gsFCek81C=Id|V?B?NW z8weeK&u|rJit-=BR26y;w17`Dby0T9EPh!~s~ySyvY~xHTrL+_c&RhA72z^#8_HW7y|HcvC4kUhTd=ixXREV}YL@&8^ITqKHQId*?c6%K>XVjK{l>Ab}(fBu*X& zy7*I|)wMZOUdO9NfS)?N%`jVi12M-gg1-)VDPW1OwKFsZf4maZe=FWvZyYZ=$rc!h z!{x3d-y%30Q2B~p?~!k*5HG{-%kNSY#wv@nYfbS3G_OI%_uxNDNU8F z-`Lhe>7H4GWN$Zlx4WTP^y7wrN}rsJbfD?~p2;}Se=&y4k)tNRw&_D;4{-! zeJW>mzc}F^FjmjLM#<<_+j)|WK>q9R5IH80N%x42^ks^fCu+Is?sv7frre#4-<4+R z{*`7Ibz@g+&UDza=ca*dS$*wp)^M zUH&{|fpghQ27bpUxo6a!WzGk4zoSR;5(!*@jOH!sIj@FOb+2Ha-wrCircH4w$SP5&8GIyJq*GQ#w0uAtf=*0grj``eZ(i9~GM!`_vEtfUCM;MQfhOsoJ)wJ}EuShJrbUh{&R zRA`P*ey)foc2NE#_RPhBz`+LNIWi2fn!|bAL+CAsJc;&cb4pE&Q-cOVG2ZM$6FB=E zky*AAL2O`1P#vsN{ETEd%7&Lg6s8L{n~&suy;>e-I0ud*ATH&F*guP_3wr(%6xq6+ z32IATug5&2XG*MxGy)`W#be_BAx7n~m&U@DU*4I^X{pQOaoqt8 z>BP@jPabgWKtHVr1Mq7Nk3zFdJy)geG07wZ_KGx3?~Rx?qRD~{QK9U@VB4l%FDTD4 zf)60DF_d#_O~^#c`%+_W8c#SiAU=G8TRJPshRJ-{6x$3x#DTvp4^f$Xdj4xyinC@% zJp7K{BXFl^B?n<_@;tRe<0>Fu40hz)LuY1}^0gX2RH7tbjWtF53CW$aA}sW6^)G zbtvcsJGivV9nPw5WB&ut8;||kYbE>8tWw?Lzze*6;qSaMQ5D&+wR&;bSmv;wue9U* z#kaCU)MeTpAcl%G47miS@BV}boE_H~{EsgO~4q{>KD8F5jrx_z% zC?n@iB(=qZhcdVm#PcQ;6`Ro1$MpW~mr79Djeh;NopB<)cb~MBKDoGTYi^2bh#C*4 zJu|L(Ug>Am$vkn=mz}dSZY3&^9}>JfBKGxj+%xH*k;n~UH72&~;C6tU*r5F(mH@8v(WvX^DNZ@o zDz=@-p`;>;esr2gVS!+&lZlFGC~JqQYvXk3NkKfFc&(TLzM$NX+m1~LN&IH3Omz}l~M1sD6rpvju))Qfpj zTDPZsbetLp__?f_Y@ab13;F-o?k za*OH#QO`_8!Z}_n6WoUom}A@k$T9R#gOoMT|S^t2Dzv+%v(gfysQf zOdUz@rX#k7=>owfk`H!kAocRatGM8^+L?k+{kgrqsJ^~(95qISPpRq|rs{&FfjDb# zw?X4M0GBr*EXUliVp>~oPL7iRP}cMs`%7OUBi_INW#u{ANwzriZn#w9C9JCGp-m#r zAENQ5S8+KY(PnfK*bJ+srQcUH;~W#G_%pubm!?z)LrXaE36UDd!JA&=4`B{gQdtAY zBb90WiOnOH8evf4x4?i|QrdGARG@~8jQIpRlB@J}rG74V0TJQX6s$r{%%2F=ZaGP1 zO)#<_nHefPad5>sRfkd~V+x^9vK+ahm1#oxkwHv=a=Tg=#$T z=~KLKqtE1NAiWK-_>Iq-I+T#4Pxp@s@clgwsdGMq3J~Nrh!}|N3krS@gKS+KF8_;% zvzu>G!plVcq}V(G`cliCYDB-#q}ZjYz8gljlal@yyS_^J>&6O}*y+4L0N|{$?8F%7 zU`6@I0-u0LL3A*_os_{Z%yOcuq9D+V`R zQWVC?2eM?u0-j@yZ!b8e!Yw{cf32%almJ*wMOi-Yi*&@h80lmn5Hn*cq;sW3My39- zC)l`-z;vx_8-QC7OOxP4pEC3sT*Tdi_RC}{QQ0wTdB1Cr9ztlGq&2IJ-Gpix{@S-2 zGx~2~Ya5PCPPs~F{PZnTM=V5L9Yi%z^N$OpsC-W-$W?GXisx`VXLZ5cN3?}NQ&Wdo zzc86wpNHHR?4{edHiTDo-tth+7^=FRqrPww6XJ!j+18XARGJ0U0FylDz1HFJWWw&MWY-~Bb?i{{4IaOlEcxS zV8+57u26{yOH$fA#asw9m}8BrOeJl(QWY_2VYk{vL!Q$sG{Nf~T$u~=$WQ{XTT4Oq zNj*l|v^|CZJW3hJ-hf5qYVtIi7>UoMHd)}$3Cte+IIP7W<3Y3;G?^Q-O{!g4gBFha$7RbssJZ8LklEB={g+mTBgw z!G2QQos5PsbW)IK5h`=dJ~o6<>-a9T+p9)ZY;D#@jZ6I^jp=h_J+oyE^Q-)xI;oeo z$ywOtS10lVnS{6;e9Z4Pj{9h}0wZfP7U*&38w45^kl5~izK=PxYZ6=6IyYw<8T|0M z!aSE%;+*^!x@~f-osg7`*sL%&qxvht`HDBXM~QAt%E8)NXWCd{-4Gy$E}=#-?PWLuFv(f>UEk7-{ML%99pXwK=`!8b>E?jz{>1 zLKNz_+Eoa`8a^xH)r~J`zwYA;_pq{->dCX^^Q^!|-b(h{9;dC)NGh*4O{XQnwAIMj zCLk)H`=xHx9vBUHSCziQbdnnVWbtGi=8Gb=uta*A17K72cFYh~tMU}Al%D3+QZE6~ z=Zxn&qt_Z@c3MOHpKwLz(~w;IK#`hM?Zzy^qF`7OeQ8IGoMD>p2SgA zBpEaDvn@aKSCIFxE@SjChbAHJS((DsN1~+dWRZq4&ZA$6pCM_vh)l>@Z(xPAFbs9%4d|#20wvlmQh+xps z*s6CBa3FeC(gT8Ps9~&oC`WW=fYW|T{bT)=|LtH3Pul@oMp(6mqy7>obKe#zoqt;} zE!7v2>xg9>6pl>Cqe6_0U5Eu=c@s_C@Q%Gfs9(94mzJ^k_AS4NcDk%8FT<;vE#i&W zKFqU6JZf#vEAi$J$u&(i%3r232u5b3$UTQ$*TtUMbK16e%)IP&qXxFr1T&&Ufg#jI zu~f)z+0Z(ffio#+PQ{>H;VB+`lT@0()nzbn2~&QQW_3u5 z6E#X1wldfzqD!~=EpqZJoYe}$${W9t)&WnGmG!t`H>d$thh{Qz6R5H@*6>WbZ$h=r6v z^8rTLtQIN?WgV1wwdlK@{Hx-_OItqsHY`NUR;)a|cq7`eiqfcZV6`0KD8@S;y`D%L z^CTPGeo}<|V{>IaiIdQt2;FD#wikB_htqLi5`I|^<><3;Fv=*Toem$knzhm%nhwpM z&IX&2k49rDd$iG-DB?G+w8^J<*&$>5;Qts?9P=fR@it)Lnc#|n8;74I7nSHK>Z!%2 zdnw4~3B%0l8CrM+>GN54H^k$Ug9i?bZ<4W(_!bu9baK6HJ`DmW>Z~4@DfHIwxi~Fu zhi;ki1^H(*=qIYOUpDOO0zyQ1V|QGZ^K{HVcAHO?o;y>87a?V7%55L-xu1@azh-1e z8P<)19e&K(CK9x$laK$KT&Kmomc(sL6@LAem|OgUw4*s!;oL_|4nN`3KfJ?|ZQc#6 zU&v>b#d#E+O9!m~>pa%3NEAGLhv%zC$GmHA=$S!xiLRdlX^s(jBS%yNU}zIu;t8as z7ji#*E633Lcxvk{LUipNL>t{SOb?{f9C`iaMR*`noZAB-%ZRGq#nV)$!u*Vuro*}} z;%0fI4i=>nqb3R{{}%vpK#sre#Ji#MxwxF9ec^4QeK|n}G|#eePMe8U4b6a3b zcM|hvoV9;dZ^f?H~5X+lLS9_3d$ge!0JYzJB;{eEhb&<@aB4fgwwj?aRmK z=jGG>c3t1EZ~OM;_V&bwtKZ(2&o|^S_#!&a_5N)xFj;YV;DpEe`26wh;3KH#~T#1J)WOFe!3s` zPwxpAgcNbPJ?{9)`^PtI-fp1XKfQhUbbr2mJPusQ^ATU1`<&?|R{vu2>BD2)KP|`G zZGA3p`~BnN?Qy+BJD;GH`}>#u_9YW0HYmhq`*J-1{eq#se#9t!`T)&5-`|eUQ1$iw zczk+Kr8z11^Ot?cm*<{upFZ9{L&3N0?c=BS+uQB-{^85@{(S%N;gP5&qMfAKKRlQ1 zLm1xU3fP)h>@EdT%j z2mk;8004*8zZd`i|NsC0|Nj;M6aY1VOse6_5_nJBiXnl&XM8 zQF@VHLI*{fAiY1_o@Yp&XTOe{t(bD?wcue~d-<6A90P;O(XC7-<478M zqk7fS3T!$i=xKTyYPvgj_dU!wL$S`c$|-U&a!yK(C$_`lN@K&ew`^g)KKDDdhO6%m zc~VFAPXdrsvL`zO8l+%!5VSR}I41k&9TXKn7&rLGjQaBjf{5w=zA=M{{=PXS|MxEn zM)CKJ2n754h79rdZ_}U2gZKY!1p4oq{MSyP|DK)yx&r9Gt^oS4EBLP~`2T?lxCEI` z*_xTje>M}D2nA>ar9!|aF~7DCbqoyh+R(BbMI-#FJ@M(FE1}^DkwY) zp{-AA4mHusZ&aB`olN_9t02m7LvnLsP8vaIl)TtL?%_~1HGZ4q2H4*2$ext*H$Cv!h&4&oI$zsdyn^mk>WW; z$dlD_vfBxtR-P}?f_9leyUapIFI{h@5|1jZ6cx z5?j5nJJw^8g~J6XRgzlduRK2lKSRWYm->Ug2g{gn=*cZ^!L5LY{@6Wn+uy<}j-Jsq z9+k`aXrY*qRd=I@wLOd4Ha5BHA=A1u4Kn8o>T(KlwMM$H8+$A(M)+aC=KI_S3*g=yg$-i`Dv|?zC)#l4T6+~!5*}qsV*)st(kZE^VrPBNVssr zhh3U{T|@1+>$fg&#-~a_P}F%~vOk`xW41N)3U{lda#uJ;QV5?*bb+yl{%pr^dfRy$a`kK)SBFZ=%6ANTBYGZjh5S!Px( zgvd3_HrUrm%;W0ta2-R#7UJ%?)P}S9?l#t^8-mta z{iU}`ZtD@>4hWERrA?p%gD)dYj7-!_=*C#)dc7}}b>Fq*Q`GP$yEm4>U#NW|vu|R4 zaqMDb5S-|p={pQswqYAQ5LX}X1HNlrKa7mSVTa>14qvi=@crJ7%^6@ zjcHl$1>GFbjJGr+=fyAMtr_fPCzB3HmvDl~+Spva2s)N{2@argnID@-e9s!YXXgbE zo$yv=#^z@#rdE5$flWW6fX#PYpv|qej1}O&w(fnliyUmM=V>t8#NNdXKaa>-E0f^i z8=tysH?zR%fT<4x|5o)@zQ5eGD9pYZ*uj;J$8dKaC`#+I+5H(jZh!Z+(`33~!?B`F zgS+drAnQF%J&%IAx73z2q2==>4wAlmMpbWQ;a<{=k{)Y<)wuS|(o($Q^ta%ZDPMW3 zo&c^QPlf*dRhREEZQ37SZV4~-epHY-_@H6co%E4lk^<%+tInYJ#~rqHY{M8BB~BGr zW*I#D{M(R%htoy2srREkAt0orq`aBD0ajfS7?Sd{XU|}7t^X>Iu2yZCXw&}d__#B$)4$E$uz@d*m*iZH7!?}Igs zC3LSw?2lV;+46&YDa3~f2=}#GMQ4aOk#fZ;Un4P9}EX$sZP-@*UuPSpiO>r z?Fz9OI4j-@Z$p{zz-Q-IX7S~=i87La17g7rUeuy{7Gq~NQujP;+Tk4}us;2tS6gVQ z)@I8i>p{S(k({_<((uRyuo^R>6@Rg653~f?=|%~Tf01SJ)Ya)pXh-d#1y`{ zNbqwqgqM(%6!xK!5ir}k1-LAGI4!Gvnqt6?1HlJyxv$&DW{B$lP^#=xow2|@5Tx`l zM4cQ?*ZZfZ*4~#vsDK6g^fOw%$&uK4W0aAWH)}wsnc$DL!odqiaRI!aV1eHS-_Ln4 za(gD;-%zRv3=|y6 zp7MxTLWs*C1Ka$<;UwyOSS9K0nN|~MLVqY5d*LGzIMacfg?=W!~*}b9aKxBM!pS3|L4HAe(Zr)^Y}!kcKM;a z7zF^d*zJEC)2hCR4#j7t9kmGI(VwDd;XdA7ZCO_-o|bNmfe;W;=c5zOG?Q0TBe_5f zLG z5irhheEVz)W)Im>isnj^+Lv_q^c(FBs#V!(fzf=Z`pJLVEirgZ4U;?^GrHpsSXWsdTo)7nJbz6L$&+z zm2{NK$`1F2mgwsr7d#xv*^9sgHC`7H&(OoSQsZe)-OGo|fo&O5)ergWZV2IJ;cY%} z{2&754K<3ch9hmb5+2OlFIv}d>;tF+ct&mj2$%uLLy0bQy(_?CjI*64UC}AW3X4nh z<@YP;s1x4QC#(}9TzdFsM<9f*^_py3GbYY@JogP(Z&2o8@vRYf`UZdB@`jHlAbj&R zIxAGo$&HNLa|EJJu)ey$n*;xC4+qQgP=T7Tyt_UX2mI)z5SBtZfeq!xM@#Cs5Yg zk3x<_sqtQhbPHE}(Wsf!6Q@&@BoK2j@IBMvOwg!$@{znox%(2>IW~8(GYJ9|FK~Vi z_jJWcUhrN)JY`}E-nbQ$-h9RPH{R*lt(Xj}l(B+u-@dJ}1MGYLCU7_#z}u|iPn;S@ z@^txm>eoL93a^f(%4Q$l@XeBTW^2#txVuFh7&NY*Jc-Ku9Cea~`igb?DVYne_g8y+PrJ+Ro&gy|@g_OM90oSW*~iCcZXfIZeMsMCXr2F> zRrgvI+DaBmvgK2dmo0(s_xSGH+3Y@^dhnaH!qG>~(sJbL4jp864V<7mr4vNsp7tYY zB;!O}3&c&;Ni~+HSJJS@hHxL9Y`Nq5n%dg)d*qM^A)2O(!Xch__Ohs001NT~CVE+z zlwRRElX>fw($Y3LgrEWsS#wcr`qUpC%({;6OueS8Af+d13fn3WM9Cr{h=Bl?)7NZK zOeUj6`KpEeX^PZmsEDr1R;k1rxs(93H9y3tJ9i_S92V`5BdnYB(J>54I13uStx_rY zH}><3oEkAz{=w%2 z4e0mx2pcvoRnt5KRbP1Aw@3#y?Eu)?#1%7keRFK8XZgE%TSdd83J~M2xMei$%-I@3 z{P~_OtW5q znP#CJh#xU@QrUd3xuf#!AgXgo7T=v6kTw#Ta$i+7d}U?jiU%t=S!cjbDBlDLs=t4I z1iQcSzF6S^%?%^?{vHYJX`ULI^gf0Tl0PDh_8Qk!_>Ztk+GN?2kLEmu#9Bvzs3jMq z=kK?K1pp~(Zf&hp<_t9iX@fZ5bd9iODs7d|>{rPl`6mRJ{!#>dv4|M`q6GL zS}Fqo06GWOErWR*X7)xTT=IX7;ez5NH zAp{6Q2EgCpNx<&z`Uo4ks25nmuj!OZNc`cP9|RHxFuFg3ApetEkOnGv*PHks|CVq# z!n6jB6HyTTxb0Dm^ldBLtPI#WB!;4l35nOE4to}_l|l0HgC9J`E*&i(O}JwSv2tFa z$jQ&w_Vn}wJ{|-;&_6RL^C>>&Q~j~;VIT>M9o>e>9{jj;U)>(6{px^ZjtI(=4gKJ0%)Q64<#R{``pw|xjsAg~^HFHxI^7YV_mCt&Z&?*9I^ zk`LL=&QANr{%T@=QGecqez5~$D~^q%Zj+9j@&f4XL%9F(FzKs#(8R8f`-%HVPQL4V z07fX*ulXa z6lhJ?MEwORBrmB6gP7ZeB;*2)zXuhvx>g8ngWN8be1Qq<;zV#N3C2W1@uXovw+VB#B!$CZEcUC=R~MY}C@olg(E0}NDw6pAA6A6iTm7$_Xh zEM0kA;{aQis}D^ZIr2n^p{EJOm(n_=Jj9WfF#25a{=-C*=T^CM$ zZ}d*ND~so~^)1!LA9NyPtV|RQ;4D#8e=>GwK&jCZ2o`X{aL4e$in8w|C*$h%2JzIo zOyKyd35^+xfk+R)Y1Hgm3Wmwl?_$y2vezw(Unfrj$*Xr(1Y1eYZ4K2JO&DJ^C?)RwCm`Qj)-|ZGRlKEe-#{AAZiZbv}MI%wb*9`IiH5$M0i%DCsYQT>n20 zxyTttNS?N1m%wXH=&!nb1T-O7ARZ7PAZP%1MTw>k>K?cD*2-sx{f>YVLp0cv12W0t zj36W*chBFj@%bxO{p({BWZenQ)rpDhy>>a2sL^ReLDxB!!@R^2bWvG1;05#Z?vlT(eRZ@^w%P0CU9w{Op{ z#My%Y@<$7>urQfKf=KKXQw6+Ez{y>C{FX32Z)?ki4+N@K1R%I9%*^CXiu5i)=n-vnMO#)ebMIHOgu{ zCNUfZPB|lcyyzv1C1b#xsMlJI{H3qrjeVkz_ST(`b@5?b*vYqV-n1`nFPkDyUM`sI zTNz9gE7W?*G40y{Q1ap4%v8?1t3o3nKe63dQtwNLw9-K~0Wypg38JglnOhEaYO~R*jF_IMgwc-V>{8+{jchgr0vkGgttrO%zQz1le2@ z5&6*HueClilMj-W{^HGJ9nOpLbNH_Nz)2P+JJhW8hl3Dj9#=^YBEO&PluKv4oAKBX zAp6^@3K-Mxp#{wV%aZ6jm1;8^_@2jsI^n8SCC1La7iqL!W*}VclDsXxKP$N|0qI_M;r>RBcl^w^#FHBb9ewe+DjeB0t z%*kPmxLy95oh`Zk@emqGug!T%CpoKb`vQZCn=@65jwhI|^9#g?0;0fB-Fml76L0Ph zi+Eh9iturIVDr!}GFNJ&?iPUUfN{>1dkQ)YIuFTHWoGxto$d<{xH>cJQRIXW0UVFA zvDCyRDUJJp0khp0&E!^X$cu}M3tA*Tb?Q`3Lxagb-tsSCmvdhsmZ`-`)O)X05eUTz z*sJzWUjDd}Q*@zVC%Ef(!cCWxJ*O#=lZ)FO8~b)3)HyFYbyDSeZoujRnAqJdLi&$4 zD+5SD_5^}1$27>|Z!_LLK|d6P^(+4&DvgBVy90KjyHie-9X&-2`?(Qg4#cW=@0Qz- zT}hV1&s11;>Lp{Xw;YHUXQVZ_Q}JgiWX5ul$MbTpaa{-JAFVJfZ$}P;xU{?8=%9OV z-9-j}ydA?Z5jQlS$PF+XHIv`NP+FS2lHZ1xrxMRXD76nnPy&zd&7`P<($sVL#5o{B?j2lE?2RJb6V}j5?-*jKWUWBoM>%KAN+atK- zj_LnEn&3#OtsW<@6#}}`;tX)v8D=7v8fS_KUb{{8-FHX2;!jcIQXZE@#NW)yWlzSg z#f96myl|sB#jfYt$-`(Yq4b?@Qf`?M|MO>*0o+FoBs%^F?n!wbg5yLnR%kkvU)98@ zQyd`3(idr5yP+5YJ!zO(N(rZr{}1ziu%R`+IoE+G_7_KC5c^njCQB{Q8pX`~__56Y~X0b%OFSwCsKldvH4v-y6r$0crG_%1$KZ zWE|_g5iq4!FaFVmkXU>w1jz+3u}!<7hF{XYdyD<&h^3I(K)rpgTBcRQfmQdDKzv}&Eor+;mmjwc1&ka>!H+G-a9|B zw|Uf{+(M|=AR^WrR^x?&py)Mz^*FJ$A7)m!=Y|3d=N`|P0K#^S3h5{r`R))>&UW_4 zDJnYO5IfIKo4cKxy0n|lJJ{c!R#Q{+DYemtTDf86%LUp#z+2ed1WB9O8e{lSI{Z5t zt@^1kXM0^#z1xJ@cR^P?Z%*1rQ`q>y&O|e_r|v!~WOB}1W17{D8HGl z=PY6$`qhHYD=dsSgc8n4wI89IE*2R3$2;bmxcrPgLjoCVoIFU@oX1sP%WnCKKku6LSHa`R?JOOKlvb3}!j6#;j8jQf4E9%mxqSSozZ&qkEhfi6Fy5 zGFX_=IvOoiE_be8Ji^f%upO`Ms1qFNdjVOYWa7_h6p~D_K%5|m`C@tjeW0;e8SpNu z2sBw(Q#?TwlMCR3kvs&=zQ#8@yC)egZchYzpp>hx!4ZE+!w@{%)P!lho8`f57^|II z=dHQ6EEl;mDtorZf2(k9@YI2<4M(*cK@_5?y47J-|FpSbZgBHk_zq|b9M)#dYj z4utXr03-bIc6xCUZJA9!qJUo;o;AGDxh@n3!g^aoBcmg!xbI$i-%2nssC!HX6)l#Q z+RYajU9uC;5R7z))d5w&T|lM|m&`gXkCveCplJmN`HTwds(?2?(@Ly{Y+oSV5dg*S zg1#kFQ&U#}Pv*aHHMK8J(9j)|9yv=(nFLZI$Eu$`{=c(Wb_3UqeLVJi<_e4wDpF4~ zm_NKIbJE2wv$b@_pvtVFQhH6>`IDmg*X8W(T=?n)aw0EreBK9lxTyQ^;rZ#f-TM82 zbP&n5e3&dS3Tm-n5+DGd6FMlR{fo{S0#fH*f&w`W%XRD7)(z|RM0|!GQv1%dZ*rVEeE{LqLC=XpMi>W2WH`y?+T1OMuN6T1JCH z*3X~F-MBq(v-H0YkD%$se zw`Qa1$4^n}6oB#{4i^(W`zU&Xk2WM423-%$TwC5ZEpyEHj$ow5KiKc7e75kiy1-N* zJ)0#P%*I@@*4E-K$O%_gSIvxUehp1-Br2!J%zf8hRl%hNYc} zS(+6yy8*D3T8n(zMbt_C0QXqFJILe@)-a1Z3njBQl-HsXf{u_PrkQ441v=iy> zo0t?5@{XO*MpZA_rsMaEHUM$k>F*B!#J&Eh`>DviFa9{K1Gg9_e_Y46O!j?X1RF>^ z_Nes+rcclm_iO1mdeWgF%n#$?;j#QPv@sii=A`@#2xXr}1PB%Pd0a<(8=A3};K`pbI*aqXZz5tQ_!^E-BLf_X{P5&-9da;^-XoLruO1G z9|Cx`q{;VL{w5lDz;lLKT0q4d*MwPLf3Nrc?hd15ZE{m-NNhuoTXAYFf!D^J)B|37 zsHv$b!&F~OizBrs+Z2DqNRujEP(j18Gj8YfwZZurfHi+06)vuEXrntx6BH;27m*4e51;DLB1 z_Pi9AXW8i@eDq?W0VvS-HPazAKn*`5CMM>xoG0`{M+a((?gwO2*8G5>QyM8!R;G21 zyVSvK=Yy_PnVpS>!Cl0kjIP7pzzrLWI>S&po0{-s6UlUAMY zhl#AGX|sqY$cRKv!ywiUP*FShePal{VKpZE#^zf#8h)|KVl8YC)JsHFyVqOZ5|mpY zf)lh%U`YBV-oY6}$0TDBBzB zCwsCPDmNJK*q|AHPH-?uqRf0ogoDB>t>9L+2GaU?=kOnH>ckMBhQbC_Pzs2^lagvJ zYRjG1$IO62%+b-2s34#6>)X#E5B(RJ@}S5A5(dew6&Ca7d{Da*3G_7M`E#NvXY9)t z`R?kUpcilGoSMBX@rRoSTIQhY7{>^NB2=a)@u03w1y24K{094!#?-nHdoI-_AuY3~ zm+F*R&NEkzm*}7HUYRKShBZYpD}zd zGPkf05T%^8g2kI%Ne^_dW&!%hii_ewS)t}XvNNj*dB__SZX$H<-~W(`pV3$y%-v5f z9G0j+ikeP`1VLeUE$)9X{xws(-xOqc@KEp4B*zaACYF*16@d}CCI!^M6JSqPRws(2 z98Et0O8#rZMF&{S9X`E8!|SV+pcFFgh0j34X_IvT;ZBHIRzKenuigDXNI*ftGA_uV zg|PEVs00O6!0kj>kV7$UD}z{&3CH`)j#7SaJk07Ny)U#*6qV!W#m{r)SQyT3wZe4; zj@YV<2Eqn!&$mcE;KYX}OI2JKO|mf2EjFLDz~;(lXlZ6G@3w&LIv4ptJlNbD+(o>mEvvHk>UO4qAq3Qqf_qfK`kJ%Y9o=zFQ!)HFewlF5q+LS zI(kN;Idj7%kTTKHu>FIw{HuNzSmY%mVcMup+Lv@|ia?$*99wMg4BgZQ_02@&dR&uKP)<>DuSCYUvvpfEFMn zx>XtibSOVJb&;T~{H6L*^x6a|nbOU`<$Bq7bPz(09=M-6lcJYJ$EoGEL#b``#<+6Q zx#o#$(exh>D>F~RC(nt%RlBqKee5Lp-L&wBOpX13{)pZ2-}|Si(Vq`~_%djLSloG{ z$>QjEf44pZua=6OernKb-2+jOgnS7{VrOC=H;}D=iyLf^r6hvHS%9apIUcH!d+m!o zrXbq-S&-NsC4X6t-Og5gJ#t4aOyHrZLA}?c?((v-wXFQ0>W&${(`PTc#|HO3B`M{n ze5zd9n1X@X({|@uLY!8_w}rL}egeH&vZI$R9cj|RHb6f=ZUYxkzByF$x9nowoy7lZ zS{7MJQ!W9JjWvXj*eJp&K|`Z&6^;Z+ zB>U#%AtY)NGL}LIRww4IodU{V+M~J=RHXwn#)cqJ3b5V1VY&2z2Uo914*q-$c)#V@jf=W4#ndiYN+RIk}Sgarkm>TsHuf_axzn)=q(eZJ5^3BK-d{=*%~5 za*T4sU#@L?)`ovslmz+OLfjzy{RuAm%@112GdhGqi+ltJsP3>H7aaqaU zi0wop5TzFW>rT$os# znRtJ+ZS3~;*|qCW6DAL4%ss@KqV*$ffB!Pn)z=49F7!|d)aak!qo*6pYtM1_o81%+t*5rstj(hjjaLoC|Ia7<)j&$6vgOQ$Kak<#cYQX!^(D~n0&Mg zQjJSn!Tggf()ZG%JnS(iJeKX6GL=5j9X)n6nNzi!Qm=vAtOi?t$4nNbO;42Zd|-k2 zEBJAWY-;D)b|ecUZ?goo5T7U zNxrUbYwXgJ?qOSncF~QgCsrpkQ2$V@XjWVIj05N#$kih1j_w$E2*C&{ zfu>6y8ms@#;}LStq3pWvu7c2|7u(g73vVh>Mue%BI>7$P3g4JD{wCEH+@G1*k1@C* zlLbUTKuQxD`3{JoUg_wu-Wy#^{jza-!xrhV-v0JvdO8~V5&*wLM&u#&<*NfM438__ zaKcQkvYvJ!Y8NJfM7o3X-TiB7<}~gU4c}uYvG;o#D^xxAt8Zr}%mJqEmv1FS|6=az zqOfNm#JdA(KA4Xi{|;G32NqNy&&^!~fn9IA70WBbUb%Zq@?Q2Y>o2nSvnl9b#_L4| z1yns}qOL9YD#8Q(CmtxYc*Wu|X`m8O3FiNxqmmSu?_xQk$;Qc(2&L2U_7GABa~^JL zLV?6n%x-wTrl{oSO~WP<;Y{rf{J5U6ldty4uFYR%tzQrFrrfYM0`L z-s}}QJrIn{e*DEXO~&+A49F$8Y>epXu}KCWqHp*f&zJ*M;S~@sTUn45j*liMq#6Yg zTXYP(btkTuNnW&3_RP1#TYmBzXbVWB(h|~OeoW=FGj$dwz9%#?eU;k!#=C8{yRUa< zvmYDENkt{dU|laSr<0{|Um&@Lwx>0X-dM3$^-gW9w~o{;b)pH?@t?S>!Wr%f(8xFuM-2>;*i+6xdiHngwmV{8fM%)6#o+e0`#R0|R9ujeF$mQg$JQQX7 z&XKx38=T^nWI7QQLzHDO17=(9nwy1D@y%4ZD-K<{+oHF&h5Te)6xf(q?|Qq(7$3oz zS*h>=v~+u`qhe2JQ76?M-J!ER$@xRIXkkC(KlO%93Uj<;*@n~K!Y;Q{vnDhK1TD9j zkrmx<9Ee>{uKjpJkBFP}cjUy&tG5Mg^cfDUuling>O46kHUx^9dySva)3~D8y`ur3 zKf8*_^M3V`6U)kVId_T|kgGLKk^Y#{jTv0M{ln(;N6qcOW@gVz6aqcX7yYd^jic0q zfc2-3{1PPVXC9W5Ldv{=lq9=~rs>+%hFz4eQS+z}dWQ|4Ozfsgz83HkE@U0UV>%EBT>{)%Ga}upyjr_%vL`VPIC5#E` zU8Lhxv22O94A!Z4%ZQwr%}wYZ!Y*N>2?G4)HjC8eEWK_yMs2*zSKz{O-AW?GPbb{} z&$8LCf0fN%{VAKRgs|XrOzW2KtRIeTulTGe@$uIVD}W={@Ga$qy-dS%N?g1YK|0{Y z2WYMw^R^i+kRWxZ$nb(`eJt7l$`ABRiGjX}grQ->NZKqfF253uS4KKx`3Q9WPD$(i z|F`66zr^vNY_(Z9+H?BwwL0?PBX0JKaA+e22$H4-4jhc#`ZB?l3PN4->?yJeze5*y z509M8Lnnf0O=#rPnv6K&CE&|UHi)W?gepAO`b*56azCw&XP9KOV4Pwsg9nEQitayb z-$2irCSdu1_(AzV7H}~@zL5LLzOYid=AI{R-t<*D>7brnXZi#eBbOg-Qq5NnN@fZ5 zc)&c0nYUX0?;I>4%bYl>=a1%3{l30_HX&)>psw>N_Kx+~z+tPP}%;g!Cv`$Nrvtgj{X)V$qvlwPEkLT9gq-Jc)DpE$`U=h z2=dM^MecS7U!VqyJQI!$rI^VUMS|vZdt+UL_W&P8&>iQO-6NDD>r8|f^&ypyM38dt zLB9LUP}^d6iv#r~!IQcLP~_P-8P=Mh^H^CMi|qFjgN1dxmV4fom~#{1i!87Gqi^7j z@5~g8bY$_Y=q|nKbM#KeXReR8{OM=EsozYULp94KqWYPlVzYb^5slm`R5-Z}TX8p+ zFE6PYXM{U_GAa=mE?8%G-h z>eR3HFEw&$IhkZ_V+u(34`%I#r}6>g|7IiN3dip)e1{_eUT7-gw*;&N@{iA^cZ>^MZ_-BzXH#QWR7*|YclP72mKG&|^Z*>$#h2P~V~kKZ$KAIY^>_uH zmeYo?FXtJ?qQCyptP{$M1a0pVeIOC$1CdDMfg-&(eoqLBp0M1*$b0}Cq{f-E5p z`BOlrdIttLZ7ibL`uYD;gU7tT*9`HVc+ ziT4D=Yx706hgn1aPFE z`um1jP1gmZ)BAfM5iI%#F2JY4t0ZqJCGznk-$`PC)VM0-__2|0h2oYPb&!0`eVWbI zk~4|O?R#K6k7ZGP96gV!k(d;FS$VU~VuFpAhJZ_Q7lGpc+2@O3#cQ^{NyKEt@@fP- zZ2*1C)uP81wT+2+eK1rl5EK$*D`cIx*yz!XR6@bzlfxUXymEqCG%9rMryCF}OB{8& zWRRDG@~QsnmG*yBiI$HYV1zNhrgQA)jyGbR=IJ=ECiPlef<(Ee=OqH+3q*V-ILk&% zt*7xMT-X7|-1$%e6u3OAE+F(?FoHNZJuOS%KpLfFw)w!d1}5BkE`>g9^y0G#jITo`3k`X6O)l|WPpqtbGMOT;9j1TpuKQQXAh@7yl(C?Fs= zZ2s8SW1PdV>BZ-g(t9!T{WMOA5iB#WF}F=TUp~peg1u&O4IqxlUe=o}H?#=mF{GN)w_bP0L@=R#7E+;IOS zZr01-?q_od4dF75!C{3##nBC(Az_S5_1vyd??3v%F*y$^U!wqRfTo=^*E&FbMuR3;-DJd}KRj-q&kt^j7j^tr; zvC&*5sowHqRNHL)|I!qubXuaj_5LD>0;6gzId31dhdcg(etdw5YvC)lYXmR;FTI=3 z_G|O;B0yjwQ}pBs`iT zaS23mx_qaY;^NYb?&N6ap=V}QCYgGle2p&c;s+^-be$Vs=Z%CK53AckXW+?BnMWqZ z#=6G3C*H}k?=I$I3Ndc}tJvzgnN*D9g95z=0ut8KV>zR%PaSWpd2AeyCMI5Z6Boy~ zXW;YL%nSl|EySIFd9`c$Cr!LwNnE1oeYHU+->K$iEpr;dRnsWgK{UvlBPSmuH<4R- zb+i_b$eL4c?dP_n95P6*TC(Glzr^vHW{}fEiGTT+@_7_Z477v-mfV#nMt$!dt^IVl z$#1hBe(Lt-_Gr)9`FPXMhuiRrQc_YMEn%Ogkasb+!6WRmZ8Pv4@z@R$L+8_XBI;P) zzRkal^vKQ4y(B2ulB1bkY~#u)WPC*O@Zmm(goMP>?~aa+1d*Q?rLTK)(AK##f3G!Z zJNUi7YHg3WNGrodlx7D%_l?NM*Z02W@8{Nsr!La)PP$2B3N}S5!$Nn$#dJz{TIX9g<-Tnlb#VpY)24Hk^L?yz}-rSu{-~1*hciUyz0H3B^zQ4exGsiin=-R5O4A9lEM`#H7||= zu_L3#T|R2F)nD_Sta+rF`Y3j*cLg$FWN3IY_C_FqX|8QluW^n z-JNtFp-3FOO&?@`pGe-^&C}ET^K;Uw#gxX|{>I#0=g0Hr?haM0l5*DyWkeWVtCWKT z<+jp$fC>T!{YDjd1MHxQcx;aV|84!sdPR? zt5s}!t$cIr<#}H5ovT~q_uECpM)dZ&jd{Da0PAT!|kD!3g+wf%!!`YV+7>U%mb%HSbr;%9H6lyMN`V=Clt@`)7*u= z!U|T8Gt-!mkf4XLxUW%8p-oejGu?-Z3SBo;bA#&T%bdlZ9#i)B-wBq%tqchld(K=m zT55cesrt=~Unu71+FMi{_hGLK1L~rq0dz>5qiWWsd2kzYCuSxUwF~(@Y%O*SOOmnD zG#)_h^w~Tpe=6%^ytvujv2T5klj5dsJF&bXxH(@807XE$zw$Ku(M>x6KD_VoN_^+F z-0gU(ZSpFQ^$WvANXn6-8Tw3T{WF>FV5Q$*HLFl>(Kq!E9?G{(m zWYxlRbRT59;2$zFNNQ&$L*s^Th+JPa$#_khVy&jm9!7bF{i}H_@2{Jta>MoIVaG5x z#h4lVONn9e1hvb7$tV@;4RNxF?I!!~s1`VC`52#hatWL%#AV7Hr_mRWCj?k!{St;n zpCfdFB_W+Jm)3EQ`w|7@HH?|AU5`>w)%NTC);et(xrX)sAx`&=Nl8vOFiO2?v`KS6 zNG7F~Y~`KVs{F4{9WEV2$L_c@uI!5b&39hG@n$+x0VE3aE;lKmV3qQw8F=mm&+6Xi z-KKn6+>Cv%Y3g3*>z_<`RP4!Qa^E#BPk<J32T;3lMaiO0SxR9XyO`c9wtm z&3R#onO)f{D*L`!2_Dym?oo=o(?Vr%9b+t*rhPa3>o&ho+a{ZRVOXNutQmnLZl^^b z!*-Ob+z}8hQc z1q@Sj7;a{LxwldP6(``{`)fhAm>MPFY1+{BvBs8^;0=2n?)igLpYy_)oMAC>d!M|R zktwD-6+vOFKnb1ijs2Vy7iDMvqp1l3YUQWDzB<2-tc<0bKY`VCKEHkjR&J3Ssuv5X z{1Csa2p{IUUNV9p~l9Fbb~JeBVFJou3u zj7`b)NvKT9F|3@Ho9Ij5wDTzsC2H~RK%lQJudHmvzM*)I_yUZOlDWf7o&Wa4`1J5_ z2r2bB5aM1O)$qBiYo&kXqb}YUjUYN*3T|DxubkS$$OT=lj{9tze6GgWnlfB?g&QW` z{d%i~vC1EN-Q#${(jp_0R{V|{k(rqpYTQNFEN6B}I!;&Mb5JP!l&>^5QF+8@A4=s> zfR$R%oeYaTCHkP@k0kPMxO`e3+HjDT4Z5GcFnHVorGIwmJqcJbFf+d&Yl_}u ze$txPWadhKGC%^(6cBK>nx3qu`*R8kT7ZH)1U{#JTS0;Ska+2(b`ai zKail5l^2VIa2NJP&0Ft}1S^Ahb!vl-zDn&r2a5S-HHmzc2i}ZC6*}Oh{eFJATt)v~ zQ$%_@4#MuizjPE1B*=7<89HA)B>u{Ff$q||?)B)F*%t_ko0P!8!}7%2n6jJ~#px=r zN(!H*pteYO%c$tPXvH`AB47xVt+&;fB?9s!!U@>>8zzpgcRI^#})PNk@R~dh?tCx`;?_ z^f3D@z*2n+N&Wj0CpEPH(lmm-|-dd!P1LuyW|02aRD8ks&hEApUVC zZ~XA&o!LH&z<#UvLjJnz`};iimCvn}(>3nIGyLW1zBd+9`>`=|~y3aE~7_#0J0Z4g= zCdWrvgDB|2DpN#O+?4fn1q(nK$64b_g}R29tyv!@0Hck(09HbY0us0$1u{t-}4R;}!w2XC8FLQo!Z1$%6J!0|h zW_*{uy8c|n!x-XCvfD`$#I7Npfp#Txz@fib7R!vFu~5*x`;9^%|G||@)D-n@M)fPE z1^h97-CGK(#(tD+;`Vf&E@ownd@;qR$?)e?Y2$=0 z2Tt`7We<=-z*9V4?k`O+d0)>|o31$c`-$t(4_~2}H>dt$KwpOF>n@8u`;Y8q)h(U` zI2B*W56&?7BJAz_^#;mpME_{%8o-pN-9Dw#XKmw;BJtmylA2eKTOtIhgBW1HmNA%+ zA=}`Vn81bP2`*JWYx@uEQ3D&C&LfX28?WE7I{Cw-FQ9U@5-nvC4Swl#_YP)CL2uPuqj~1drq)p;~qN_MKL6K?;8<= z&saF;^bZBLWMqy!cTJ;AoA><&@uS=eVe$us)XPA8R(XAJXy|9dC$+9*srRj9wlUTW zu=44U=M1k&6ut%q-Ghp~d*=k4PJuCa_);gy2({FRKj?Mh7kd7ELF@yA9ww8EC};@Z zolfqTay6k+_Yy3M6ZW}VAx{pqG1>%1ahHTk+P*A5sXO(e)6<*p-Ap;|>C|`Y}lbvynO_`;Vky&I54SPi;D;e1$Gb>~tzw6xh{aN4d z@B42(>YVdFuh(^5&vhLbZ-ceo5h1Z#7bJ^b3^{ix1zNoL^%`r%PI_jyXMCz3`rd+p zzh+sY{Zxow*K$PPf-=m{^{h<`p6ldMCXY<79HIycyl&GLc!^7ja+k}QF%0YyYR3!b zs498(F@&|Ika59$c2Ns?apzB(8XViUSbwbLHr(YI0c$!$d_crq-_}g2ERL{iS$#MA z*tkfhpS|t1?uB3OP0p9&lcj0u8=x2`cP<>fHxc;RnnaY)&B=8jz>Zu_mkq7kr?%EE zu`4q>>4w3EnH)2Wba8mxw|n86hoD|-d2nLQxz>v~L_LHKrL7dL4)sHTn-0m{(9`** zO_U^3fFMKnA6#QM7#i=5{u5^lS8)DOLc$_B7hm}y3K>prJ5I5A&T_U4nxMd`><#I4#~v+U;yud!$o(GX>wh`5aGTsw2ZfmCoa_^T~pI6ZlG@m~90wb}*k zJ8!lXGB8q75}*HYeB#7LF~0Z2DcYL0bos}-aoK#+y(bQ6<>M?h%|%8e0gXM+*W};X zN zbzYi>OqreXF+!Gaa^`G~KiO0$%WFi!YML;-4Wkps6-mU!RQ{RZm)x5irLZ$dPc~Xf z)WO|a^Y*sea1|?OV8EyLb+drUSJ&27^=x(tKfZvO|6AgN8EP86kEBYvF-Z_-<_TgF zKuuP-=Qd_UVd!HMK;STlrd}xX)Ow~zN{B7{L^1G;rdGJgzw1iXANaBY3cRxDP@#icf1@c9N>=ao z%u{KMb|{;kZRMZ8WFGuhV@OWk5Q3TIXH@$o&ZUzvzC<|Xm}%wx|5tF!S z)A$4Zb2P^*WE2EER1Mom#*Z5o=cr;?^5q8fDEHaNGl09iiw+A$N;Kr{b8CW;)_@L|M9?aIAZF2|X>jZffZ8a3y&v4Y33I z3+ps$CEaLtM7LAz67L+1ZhOfec$l9VKaxo8%Q?1pSa=Yy9SjXsT{h#IReM_snZBoU zW+tl==WFDYgOkA{r=pAl5|6zVl7#byyo{BjDP**|_c2)a&5yA{bY znDb^py;wOK3E|?&dO(EjmY)~6xKujZoz`=~<^Tn~N72Bl!cSNYy1=kpEe=sGu75ap zDnR#7b+d<~8@kP(VaM&}S?I0hGdoO_W@lu?n2(*;QmgEjm6Tk=_ZKP&N&P!xq$$44 zw`c4RPD-DWJ=%+iWkTaF!i;P4C0Xp4QQFos#47*2*5IX@1`}wHMg|_T8g!Lq>WNLPTPpqTtl5SyoV8(N5fvo0fTYyGfP=8r8Ky@ioIB z{(^6~U`$!&#EQcd=3LTgvW%7m&#dZOW0Mj_^BeC>9-f3VxC2oMQ|!bRrr;8_E#ZqF zXj}8$58dBA82crtG&$2F77c|H5*1~Ct^Zy;_>jFygs2p>Sx~NXEaiy<5EPfx*D|px z8MujP6YcOOIiVV#E9`${OW-2o6i-FShF7|KW|-;K)r-zFy1E5dw14m?Bs2g0Q-=sp zz{QNgBY71+A|g4TCq!jBpQm0>!b}2eLYrsF{XN1RK={UtG{^i-sw^)Y@Y1gGA-sPY z2rpH~ux=w03fv5Jc)FsWlPhyNs*R*A>gyn{3$B?v$w>i_%TEf-{ki8y43e(H+T`%P z2J~DfXtd|>3^bfXrO2A|^sZ6=4vihNonA*W-+yA2-xnmveN#vwM}bh1m;?tmBux%} zpAH%8Z6-Y^if!2VXl{Tu7Co^+x@JyKCqhfJpPg@!j^V3(2!Z$mInBq!Oc&=w7$g8l zv1^cu@%#L?YELYe6`lzeAk2@BzwR`px0`X50Lv9+HEK{u>yz*g#YlSmS33|$>%S`W z_BpuhHJC4Iw%$D7ZR9^YE|fD_5@?n3>%-$WgcMn^nJF zyF=b~YwW?yOd@Q$nyirI6O3;SBd7jR{)ygwvbe=zd`q@1zG1@ZHNvgMjiZko>%IR| z_;h0Wp{Qh0X|%}}jIk{q48rU781Iu%fAPe7(4nj2-OQJJoaLUM2!QYqtIc!hZSLf* z?p9zDxO(i&6Sf)MK(@L%h5US9)L@APeU%@$Wj+*{R;*1DZd-4>^m;gms)L#8lCG{A zl=bKL3WzcSSJb_h%|@&Jgez%JVT+3V#rOw9Ix;*Q0=xuEEE}HP$#^TBRDI62VIU@? zV(!f6lg5*&ZuL!Z#+GgIzk}vC_HzJ+2%=B%QU7&xR7tTtGo>32QI58w-4D3}XoV@( z&=H0MANB~#KFeHKvmGNW>Vt89(tO+2PXvaE+H@(e@h;Z)a>#+D9xVpTwG;-UN;7Rx z?}^0&W1wCu1iWzNG~LKWMGRJx#U}?CGG$;S)pb=GTUCSx3rfs_qv?+X=G_xz5l1Jd z^_7~{9~$UAT3rgRC?aKgcErB>`G@g3f6>L~{ynuz5~0RRWI0yAXaKBmOuvuA>FHaH zG#bx^vTw{jCxk-)Q~%U=`;3TBHkoc;eCpUo-SfA}AL!pPTnaf6K~U%= zMVD)KvX&J)EpJkvO?UJ)=tN@^J#Tv+NLtrl{lZTCcYF_(O&iJUf@-@f z$KjGBcQRYIFFzJ3!S*fusKWiSM{FeL=$}_SET!%A`?yF=bF))Z9)snU?mGLR%hHm> z!;I|M%o2$e%l5%RK$^6B+UYKy=zh+|dRw_;sxeeVA33eayqCxR?7#iWvT{Q&=;#sZB%x?v&-Bi0(~SQCFTCFUu&O)>!6_oxh;Q?kG>h%%-uA#2P_UR#$AR=(Bv zZg1|7Ye(K;vl{JA;Zo*}6vp(@>ovi3By_K7kqcCcD-S4Iq(-*99s|f-N86+6FDUAh z+ia0e7J4aTurx~_>JKCDyk4Tb)qOgm_+8JPXe7=6%$t?QUlONwE38_7d75=)YF-y|K~vixV#VNT9h zBci;h{4yUmnevE(EUNL{y{${m-*2@WTVj^S=F6P#jdrJTHSomiWKC z01mE>GcSm~(;qR~`%gSrxc=)8fM7PlNp_8)(QjlP>Lf?^>QOfW-2c4Oug@p=o7QJI zdJ)h_Lpr zCmZvC^Y8p;7&nN<7W6xbIS+}7uR7~wHYBDDK7T%tyG9ga$I!bnQM*JXPMqi@7V7e9 zLQb1VGqRXrwSNB`Zi*9!f;Y0R$R9G1MUwfNJG8+1wA>Qr!yw91QR}2MKL9qu zOj3CGW!>^VFZz-)OasW|1wXFgjVlyThM<$(I-%R%X?_%1Qc{wiVViH}Lr>*YknlwE zofh>YvZ0z)8t7u1aV~6Zk@-?X_Qv&h>hl{LKxW#aVigNI2nB)TL$a7{$h_)d!^wN* zp0VjfR;im=sWX#ifo}1sQSe={ z7j_@C;N5X$d_shF|FJV!S0p;S!Gpoh(|B6|(1oHZ>N-kzpzwt2N9-+mWcY?Z)u~UP znB@M9Ck&5i2*^WYREVmlI1I)iL|N9YJA^w4L~tQ9`~smvOIi8&7Eao1<$`W0wawP} z+wxlT_i2}H%j(=Og=4rvPn^%2AK4cbd=5q?(iP6#SbBG_{}^!2mc9q;uO3RWg186^ za0DW#IpZLKIW-%5aoII$i$}(f4+PF;yqxgD(yeJc(5)#2EwMSFX-kH#VK1$Z;nWS3 z|Fy0&cT{tAbt+cMJLkA7Zo=-recW zftwq5YBeXe8biz+x9!u(bPC6pWKZ_QaZsT8WoN0a5L4`H*&{0^yTtx030&>=vYSCe zKFtm|q{xgKtLJ!346u{Ur(nA)aWjjukFFi;v|}Pcr0(sPeG{pr#T;zMa0#@y0J%7u z(yxwBeQ!7o-zb&tB7{@UDeYgL@2q(1%Z_`P#;E#6$rx%Gcf}J|o^}ELLG-A^oLT|2 zt&g#{=#a)9fidfeI07e**-rnj`wv9zccyj~p^#|Yn%%B#vzw(XF5ME%~lUxkKlW30I73Zk)I!9FzJfgU0)Y&eD!*?^p zQS-!QcXGzQ{^-b0&gBNTcP|J88yL-dT{>haB$LCU6Q3)xaCARTh_5iIT{YFVVlO=PYOP_H8uVH zV>B`_|J5rk%~-jb+0+y^gJs&>I7I=n_dVALu-u*-&y7Tr$)b9wXgtlZv*XMciJCVL zksZf|qtyquk{X>aZ2}p$=Stoa;fwvpS+aF%M(zt^-7&zfncN zypYqvvHIsaZMl0A@2T9maLI9$mgtNw0Wz-iES9d{vBR&-5q-(=^@g1Vm2)h8i3>dI zFSC?4j`fVY$Dq$KZU;)nogH=@>*1LFk8V=CPLGOqAz|t+57K_5`5N1}aIAcpP?J%q zl@I_cQ<0g^#E_2sh1FLdhh>j|tv(h+#=~ZF6Lp3ep){=i!n|;x8|9K*MZ&7G6I^lf zXQ<(l1Qlxz$A+NP#X}U2Ct?0s3Vlm}S)CJ?Loz?Wx~jtp9hLy+we1fNHQ_0|H0v^z z6Gv{|jA=W1)5-L0!@gz3Asm2loW}}Sr#x6>b)IF8?-6CvjsG-+roFB*R59nK^}OCxP@aXgR_NGS4o3Mv`NU^tvpRSNLJ-OYSTY+R^?sLx|>95Z_e8vwep zt6v7YZP|~JkN296=PFgY929;1ERQdd*@D_Yd4O-hPG_$0B^vv7dLHjqnQf0|Cao%c zzf+`EFMG5bm6W-(e2C_mF&ow+(^^jHJ^fj*I}+GiWh!wo5`9YNnXapPk0&d-Wr|8} zgqlmaO(l|3hX;HaD)L_s9sRU(a9#?MC9mrVPw|LF-E+=V$4?KNs^qYF>hQSSjX>s; zB8Mlz7SjHYEhOb@&5M^Wvnwl4azd(OXA*?gBo zQ+(>W;$4#Pg{{N*8jsw*wX=yOZ^7bG-`BbINc6j@yYKOM4;I2$?f(8bR5mqeat*hQ zA5C8!uz$U0#eTdvy(VA|FUywCw0b#nwfn6Bc7glU9>2L2*O_v^WaR=LVGO#BDs6PB z%kS%u>%2VC+wF4x1z?Z))dr$Muf<8*M|jNKt+?T-Gk2Dab!cQH^#1*ms7x^`{y*{4)Xk@wR^T{Qi z7(0u+R6ZJ3R_VJlWY>&Jn*X){nfurhjtmbcJbDz`u(Odk)KIGXcqxAQ2n;~xgBk2u zE}ng;Nj)rDDLGY$rj=7k<(2~x?eTJ3!m2PMuyc^ZA+dgu)WM0J9u=~@9z62a&351I zMucft7dkmOJB5K_eSX3YCp8o!D5X;;4PpHxA7Z-v>2vq;7bJY#B z?eEK{9=i-p4Tb-Hy_;WRhPtY~Q(%9!!xbicj&Avlt6*PX`u_bp2&Cctjvqp)N9U-r z#kUlCN0bZSZah}EYVQ>Uq70W`uwru?Sg@ZBYa~;bo+hmu>el2ifN~xxfu`=%9kD6! zl=bgwUU6uu=vItfpI#+J@bCu#Jj}A6N@I2YMdSHXq!WSL?0;6qBD)p$*=*ZlqD_if zhg))Yz1hOQw-9-=#rEl{nV7Sl-Ib#?(dg(X^<52Q9T?=|we?JXs;RtDB31VL!@UzD zx2C`_^|8BK!^cOe$Vm8{C5~`{HpeH|yR$VErtgN52U`WHhsUh<8){#ndk*Y1<|)R! z5i)WnR_X0eQStEIBlD$7YJ6;FTckaqK;)uu2xRG+jVE*1mwa+J(h)+n;%jGGv+}}? zgfBjj6SJc9ZK-8k`utVlp?7cXf*koTKyoiE*-aVCeTznK5lAtj}59AZ}c z+{QdUz!TTJCD&@cyv%UniQzs777i3|is=1tQ4 z#Cd9~Prb8s(Og6hot%x|r+-w%6&e>~M?BOj;9r+X+}c^2k{d@ACh$*OSrv!g{O z8qBqVvtP`yy*aB*D{q#wJ#oU8MeUe_IaB;f3E!#klj6qZG#Ye23Q6M_71DC#g?>^u zx^sMa_O?-Q$LCMlhcrJ5JUImyTIVTWU8=gL0&2!H>qQh6@xo1nZMHwj$e!aSBL|F9QUBV<0-23=988RE~ z1zX$CrxSdzn2@Xh1LDP{)4NNTb%(-2-KRMwh3jmXhFeDefr^VQoJyAl6F0X6l;${{ z4;gC>-|pX^0-Hy49vWL;JxjoiL3kJ`pCL$u7 z!36!H_jgF)i%GRW(EICncLjc`j@|7F3AEvmLk0C|M;bJLMj)`X)p$mh!qU9p5)sXX`la`=AqCexKY9Z;?ND zYdCxqaddex`xXz@!W_($V@$%4p=~5|S45o&u(ZW!WC;%qd(De07+4%UbeY&+9HL^1 zK=`6)yLv_4%Jjp-sQ&8WSh@9;>!iC9i0}$b~kv?DwiAZj0q7a=yYLVBLg| z;is$EcUXbB6imE>^?8WMaT=u)WA}!&JBf_T1qgQHa>$~QMUn*Voh^afu8EAMw?Dlt zn>^6w(KRb9O-@y&Uw2xgr|}>CoW&_KjoTQ+)~j>3`C%m*w?2^twngjvVqxNxQz)9_ zS#MVAwvVV-rCe0B@16%bly%cr@~l;}3U&6X@=*f1@g}cZC3#Nc0ScH#Jf{ZMGVE^Y zSKB|NnndXh*MQafUo#n59|3L}?VqrF*wFlLf0bg-|K$dCDSdxv7do-WOf-iQ#9QgN zq-i59r1E&)_vnKjAF&dAYyf6ig(FV$?E>U~Gri>jYW&V0)bdLUuid;Kd@T%z$fc&h zLcvQPySn1udB0ZB(b6LKZg@|9wz$;Rd7w`75-Y=|Z`RSr@cN)4|J#ouz=ZQ_pY~uh zIkFXmnxVttKT7Eh6Ib7j8JGDL61vs;(KrnhshOLz;(1|n^9QCCx4?;r_rS(wT)w!& z<5i%}x0$=~^fS=cEx<$Sp%0S|P*G7#^@NQX|B~CwpZVTexr*0={?vunQ=BBd@J8)) z`l*Yp5p1tPaf}!n51~%06B0?KemkeFJP)_;rP;{>LM|~+TyOTMlOw9YtgKfMevsEH1V#*3>Qu7-PLt}|hu z2mmyIC=P}tCUM06Ji=Ic;i^)FOkmGdt`$^Xu;bf zQ&Sc|nBc_h+(waCXVUD2b;c7cq)2CfGM`-drTCXw5f?QW1G8yi6jc&D{np34mrbV9$Pc9p1j3laQ1YCTv_n z66pGJ-Too!k1Rr&_2M!c263@Gxy+vaF9>8&#dFXUx{Sj`uQxVcE##owQ~7l*wsj?i z;`lBh4UW$fpkC2H-P*kHDyNcaf?taHw_#BI?}{^>Dk@TEOx z`XnC^6}KtE9Y%)`WN(x15SYJ_S?eFP?6XmsKX#;wAVHM|>U$1F>rVE3Hj(@U;Hne7 z^(DDXYO<*4%o#Ij&N=iR)9Q1av9@@GTH#w!7h)Ml`rFQ26ni6babTQ?1lHXnVnWQ7 zT7({SVi^Cw1y)&7mhTag$;CC(T4Jy}mYhXS{69?4>SXB+@z*a2a-6u=j)p+{6gUK% z>$j80G@XS|lcexKqlpUlr_<4`adx_2RviyCe}8XDxOq+% z2Fr3Vz>$RwS0C|z=EUAag#}sn%f@X?ZZ{k$EVTTH5d~`V?iNLZBfE=dKyOE}4l61l zB}$iwCb)HldhPT}(+zPjPc%5eP=U8aebvaz0!9n(!}G5lQIW+cG*;h=kd50kjG|9@ zMSzvz9TUc|1aQvAY-X-TPmfNHj(-xm@`tF1b#pY5({^t&1FSJge=y_({0I+tl2x;n z_C%Ly&Y&8l{T9W+Sfh$VXnPln&#u!UlrO7hrKJpYa>8P-ut}|;@U(4E+M5H^kL@wR z^oDiXIEwy0T&h=26u*K36^CA?b;0+vbMK{<_8VG5=@1@#A2!Hjy?8+W6xQIr#^(3@ zID5|h5z@HK)i3*1M+0WgpP^w6HI*hG_IB2DnB)ZLiHZH(H%axkYdEXAIF&po77n&z zp3|WKMWfTnv87@anbqCyu6NS5kHER3c!Zhvr3R%7nAW5KMQ3MEao&^Ufy(4qp(yXa zyy;;<+<_(sRsz^W**GCut|uc*$K)&Tc3hg_Lp~9-eg#a5ewj)>6BH3TIuuOD*tEQKr1WCD{g$TP-4zI)JF*svvw6tQ zIrJ0Jt;oRcpKSgg+terg=Emk17kNyvs4OBZ5qPK}RT>G#KPcail8q8h;++OG_abK7 z3#c!wfBw9u2w$?YH-YHiC}iZ)FCrwA4%KAcMB!w*%FNa=JUqQ=KY>fOC>RE`edWQ6Uf zgk@&M@9@J~sl{1s#xnbfi<=hjq@_9EYreR^A2pQ88oWmqtC`23^PyH|N-oYsO3Ctw zAIL>{lj6R1bwNdksR0cw1dKtx*2^75c7a#Aa!`i1-~W3s`^Tpc^d>S<_MySERfUCv zX#IID#zvZZgh2ZSj5bzZ=wEcsJj@V-8xf<)%<8+fcycGt5Koq~17*(#D2sJoJyWqc zF2~Q~mc}n>c!Vb^Jy~^TavNQS*ozMYEXJRBEVp>#ep1ZgCmVQu{)F@Y$8g2UkBgnz ze}1WVSE}lldPPPTde0kU{Q^xsY^D)qHP21kC~K13l~MJl;?TIZEB$6x8@MjdJhzRq3H?R7j{+(ay;qCZrGg z7TAd$%4ag`OXy}}D1kk^!fl!_2A0S#VEcwUvs=D6eYLnk{RuEqk#qZHRlUJqzN}JJ z8@FR}a$G9!T++dxk?GMJhfeXrZBIO0=(OiVinI%3@7WUC?#EsFFYnUW^?;g&vS!ZC z_fFOd+#yZX;Q7aQ)mB}}cDm=y;6)nlu0{bzr90N}iuKwN#6h?rPm?Ir6RQ-MyGNLC zM(Nmkwb~WB#t!_o4eTKJ_HFl4_(aQ1JDZi!@5f@OlKvdt(#nF-!{nMICs<%L0(A1r zgNzEjdX!vJdFEKyhVMGX`hLc{vub+l@Hi0B767A6}ikM%P*SP7Ql^%bE-kuo*mUwIB?3ZNg=%eeY9XakMFKNZqVU!$hB?g~h`VJ{H>vOeD*aphk03>a}@F zmM`XKz&i!&aaXqFz$84GOqqP)t9AK|?;#C|9PyV~&rh>al}CM~U?L~1$02(63kMRx z#;k(Bc@VfDIdR|=IucOTasHH`YKLFI+Tbo4d?DS3&ipIYPDJ27@U&pI^-sowDnami z9dM|Zlm|KA{j9Kk@YBkQ;a5%8tc3cAOQ7gxdIB#k7v%wJ!u!a?3x~TxfZ+`O;1EZe?h!$L z(%RAEHa{3FO|cEY^z7G;Pib(Dyv>Q}!mzPX8_;v_=w?)r5X#JPXXG3#v*J-Od ztN5Ka^Ilh(!WaE^gEeKg_V)%r5+W1jLFHfrilHRp`qY~6H*?j+>xN=_$WVr9Cy0$5 z;7CGx$iRTickCPEOGU_Vw0ob30!Dg)HLvXd&l&BmgXNQPp$e{h}(x0q>*VYUA$tS?VNh z=j$5LD6k|7r5J<&9dfhgs1K(n2UlOEOn1*M-p9t-NZ=*I44eyVlYhYlwO42pl{1n`e(OZBaJ#!s=nFkPqgzEQa?6Z>38-b^QdtSTw?Tjqu0F zdMNiMEsZyI+37mA?KvQ0;9%-~K>Pog_~E?jFQ(uo>fr2o0Ns*=)@bRa8aKuNp?xMO z>I6a`wfftlSOohwPWNhpj3DIqK*Ht@uZVUml`~LWAOqicR2{zIp1Z+5h7aR8w2?fA zx2C6fD00oXn9MImJROs5!CLv)IKEL;Ng9L9R*O{K?+U?K*P!RTbAWgNqqn}LG5@j) z8RV^$zzm!*Ly)SIIdk~DO}#x{&XNA`@{5ar;u145;`6k%*T(mcB4ShDaP!MBgW-Vc zUI1WQj%RB$96|Fa=&w<26Vi7M_o&8~A8}R2{J;D{<9WAC;QtiE)4ZIDZ1|{DY^u~c zaErFs6C#CtVuS)uc)~-;MOuUPRgj~*$Bt;}O=Sw1ih(DtI{QSPFhnV)4o#Vjf zCn$VbCBoKMmL)de_gOdGs}Z4mAbSW3X7@uRS`zIm~~3LiZy&N_XO z9g)RWy?b^={YQ9)2(4l9NX;tO-nr{BTGTs3{E7ea0;tkBs=P+F5>HdiFEz|8OP@Xm zYPx}tSK$k)I$zgIe@NFjm!wY3^0%Xiv`UP#+Yk{MmqawFF4GX@v}+GM&Quv z&Nyh_S@k6kVg7fe87I@^e0dxkfM=85{bZ5YF$l@JjURF0?2$Y&$$}a*$0^sW5MwAR z*@H&WoPl3)D(q*;9z)YM>^oCwDSIwOvt$_ZM4SlDC}fMq!gYc{G=S@zz16wR6IRpY z-@8ZTWT(yK`AqX=;ZECYZjol*Mum-AN#%pZ2B!EA`<`?p&|OLHPI%Lck==j%(Uve> z!G5>b^8sU*M*I@n!hvn;1Si*7mlKM+n+;_SQwIsrk0CphSzO#%`de?p&oU{EO({Bb zEesbBW_SP+b9T+oq3N(-UvQ9o2#B|1Ct{l;m({|i=P_oM_kM;LQo6D&A$bl@8mU5# zgKSsrgbF$Gc>UFY>22rCyC41bUx1zK?XFl5JO;c13s#~D7ITX#0zAMj{2Jyt#PPDG zhLxE)2k$LV7BFH2$bAITiyM*|my>KAO(5|GS6-xbk4krDfdp8N`_F~e-6!KeBxY3Y z1Gqz&zU}+Vg_@SDIUxBAnv9ujP;OBlTsOC~KcWNYYTMC*pYw_8PoE~2I6BQD|)gRwcAck;7vYX3J+#dM8_wqQI-J` zFArtoe%w#Fs=LYYToo;;ulc97Ve9sG_w${%aLi*0Br>K)LtPHr5w3YY6j$|1n6FYa zvJ0mLl>p&}-`{Tk`tH+XUTkir4&ZFmibC$f;AxT6?g`0Ls7$JloJv$eIu5rfDA z->kwU)70|$YXprx9G=Vo&+)n0;OlSgwFy);Cg-|tqGmLU6%zp(|0WeZtxkTmS&xG3 zDVbIOA(+PS%!zXs(*Az;$Zp74E#M?pbbdQdRzm$px>wveAT?aK8RSiWQ}QExO5{jr zOFUJjTe~=ucw|>{_i0~h{_Aq8sF%OJS5K71KDJ@ z%a4V4;8n7my?5*MC&(<$i(QX)U5=drZNL>I?%@%+ruPa^5MTz}oq$~Dfh{0p75=8M z^c?){E?r_9m)YfjIZlXM7^RKy;fIda2M&aoE)Qa-gV~D|K#&A*-VQ3NE^Fw9S%61) zX+QZ^Cocy19{tlummFCj3R(frPezu)mqPf92gzhyrdWes|BpPbXXD^)SXm(I5&UXH zCIdGHWyE_;29g2qg+Ndx%xouqD>Zq;p=Ww%Ibq{^Q*W2gTFs-?UFU+sk;5FnK=_Ch z6YiCGxZRQkIYNrgQFYk{r-vk*BAIz$lC*-94wo&~7Hi%i2S|4QW2q14s8 zr!LKGNe`C?tB2MdVQ!=E3*LWeYtxk@{=`rnLPl7!LND8j^J2wHH>=_xO-@V13c&!Y zWn6QND?D0!P4QpZy#%oc?I+p#JW4Epn&C&mTB7OO-RIJMAcn7A*%hbo<{yXHZDK#` zctKMoam_lrs{~3MfZxYq@cYkXq{>fFU{v~{%(_J!y^%&1en%O`_5W^~G) zZ_o5YlA~#PW4sm!e5JqdbnF;@pr~>hEVJuils`J~*qNG+2XFG$Yu7Fv0eaw0nPh&u z{zp5;+qYiVMT|q`Rk?imIPOQchRspEByL#pzoX}M7-2E;q;KD@eMys{$L|)1ph~?n zJ*z8!ekv=WJ&*6N_&KcCX}#1i9#XeI9wLD`4NmdvZemSPhXcy`zdZPqMDT#0)bA>% zhMODp>C-o80@G=}TKOmc+qrdXl|w+dl|ulGV*)z9H2+w)a@PCPDj$5UMI8j` z2=rO?WQ2jc1rp?dyi`UxWx8TvxkStH_H%fea~2j0{8tv;fH?Cw5)xT;J@tQv8p9Kp}`qfz19)frl1o0+~Q6% zCRU+eY!pZ(?(Jdzsk`TyEt6+&TE5FAWTdA7S)RNIZRjYkWyz$iC7)!!4yry<%<2XPe~zv zFL2?H;lwnY-WQGYum#8d!KHlzK!HkE=p2eN+Tf-spND9^d@}R+^2porx^=soH&q9A zrB=cDc93Si^%X)-b)N`+C|F#C@x&oo^R2%&K|UdDy&;&PP9S5FXpJ7{)2A|35>3a{ zWsr+!Q3;`xS}B3(;gmeSN@y?gxuce)_)eJPwwsevO9(N=-zKHUzXeOqo9PibxKxMG z{3h)o5a$3>K&-!3GAF_*0DGjBQgBf-4;~uqhi3^&kfQ}Q9NwX3%!x%!%bdqLM3B(7 zghQS{{6_2TU%7o-LfG!obIhiF4>dm01xiiXOKV>EF@WCT;bTf8!FhDxMo{YLV>n2J z%XEO638_XZBUdNDIR35Oo|^aX1ulCnnp2mZmnze65XBr6oIxplBq%Kw2KK%V@2v(0 zs@3Ma|C;)Uw}I>te$NUTw{Zq1@S2+CmP)_=Na5x{A^B!6U zr@Sp>wz3aUzc)6-0(S0rdULeTJr&^vpm7B{l=ed!okuJC{>l~sM;!R&AI%D1{8x|U zBwfZMl4fq+v>RjnEe3xs_3!{UC{%VEwFvxVm*s>$DUwC@W%qEPIMt-V`>~KIer!|8 zEf2y;%DSe<0}R)Q#0B=)Idp zOU~gZZni}+r8lg-!4uOGLCj;SeLx**VUQdj3&?zid0ogbGIxKEw6 z+N{>XXJFHg5mwSdT<)-fINlJ%xg0=xv{!m`87NXv_~@pnmBx^JA2g@*oud&920Z>b z0p&i*-{K}}V<7L7`KeS|b)G^Sp((fs+l(|Ex?aN$gr4%C<|p{n!@!Q6=hjWpJO&e~ z#`o0dw#^0f#oM=U>#%y~=o!;w&ki+Gl1KY?ip%SZOrFR1d<&HJmg)#vlgJ>r@Sq*8Yj5mPUy3rvL)PJk<;w27K+NxNMvhz3Ppn%;$hs5dtS){?p$q1<8x(cgxxJxyExzm zbTJ_?)XGu6=|xPFMwmtN1#smD7SdQ z=8tHYBL1L~!%>#C@x)=>YS0S@(;E2$-iy^yF)27iP%pi0{4f%dcH|btydFyY))D5w zUF09<9kdD4M#$(R;Z6W6096sno7naHK??S-ktz*N`rm-xm9Ii$+n7~6RbuwGGp>}b z%uLW|j@tLB@7G-?3TsgcWFlxkFKqw#rEn-N5do+f_59*=08|b&4QSo7HS72}KL)j_ z#WrBn?0k7H-fdM{;FVKE0!Z3?$3UbFW9(_hJWwg_Z4WyS&#Z?H0@fV(NyI^h`sD`v zmJ1e4Zf_@W)5x6gvl$U16G*)PSfP+&4wn|)A{kpr~wAhtA<8Vq-;0+Q)8_jk5l}sM(e*bF|R=p$qG9ecBUE}jdFHbv= z{RL*DFVS^?>gw;GcaGix$`0cUISqyKd!wxahL4)m=LT)wDH!W>8kAIVedK*MvQ6_} zpa{@Xi`BQXQ*XR176X%`sG*sQ1EcJFq3Gv>+KtS&QuS|04mw{R{OLsxUh%)uP#+1fs@tTQd`gvMUO0SM>j3bY;2jgg=Rw(u`S6D^;ndUh?hMHs)ajto5cxntJWtN$2e4ll;* zvK*AYvXjECf4C>V@kP&lXU!T?4msc%hkb23573;^hx@};<$Pv8uW%;o2;l8DW_j5S zNA%YQB_|=yasRLmypfRn17-rB4Vl#oub3-(%bJ;UwRi9d>!0sGe;y(lvT>QO?=s+7 z*L3z;iIhZm|3GBP8(s`EcC) zc9bSu{J#vCmf!E!zPegw9Z2=X`r%uw&*6<-8-@EW6?fo`&&V$|ct@ssZ0nb#1=M6M3b1-l2KpYgd*Wd{%B2c zbfgdOyM+*kgtoXN%_73(8SYkfISt(ifjf7ghrT>Fq)aW=ms;-ZeY4NG5J2k0B8hhy z7Z(>JG^&CrLKp9g=?`;a4Lg_P80&>qcP=!J&}O!;9$!j%4_pfTh=^&i(P*_7J{AP| zihMJTot)=g=oBisPXyWg*9ODCbzfc_YW(jm>A=Vve)Tt>6r3%5IqTssVkiX&{QTKI zABY6u3O8Vp&6NCnzxC`zLX~Bl_(1oN&@wfR&b>(yD)7E&2f6&^P9o@9hTmzw@OAh8 z`|oK@a!)JfW=CCd<(Km)z=WPlq+0YEJHfH4YBaEIVAVv|+aHry{p1f4!CvH7$g9SW|j0#xvM7V9e4 zv0=k($pyegsuST4QZ6*+ln1Fwe_JCZ8*p!Q9n}$_S$3+>b`a0a%WIl`zqoOsLdN2E z<*}-Ek}Fl`*7fz~s6P(g)4?IQsPvM_c!<6hII-YUOaY{kOeWdf{B}gJ1&LNd^3H0# z%DbM@It5DZ8Oe}m?u(>TQA*FMQSj)l;vb#Dl{S(a@ArsL8y9aGE&Y%u&;#*Ik>NqL z_LwGn)Vw|~?c{_z(x}1s_poT#I=4=ZdwT8^Vf*{QxT#SNoITsz6sF6EIQase?nxv4 zJNT^~WLX|Vb(38KcF!^PyQ}tBw_;r!zwe!WIfnjbV&n(xN|O((16V}sa_HgbbnqQm z`Px#emqnPM5fB)*gx#2Lk;SpcVM7h3OeJ__dsuDN`bq6l+_x}!ZV{+nlq#THnk5iN z_3sjn^S=Xv)QM+Nb?ZgHKyKC(G;&ECSzA9A_2+%s<)_;X9HqHfuM@~P*92I%^gC_7 zqU_@@4LCkcffl`t&ixd}%j5lD8$4zb9iPQgxscLpF>;kGDa$+V6Y6Ih=*`Q_JVeuS zeaMSU0O^z_LIq;>;j+E`hQi=V=S@dXQB!<{h!@aqLN<3#eOv7qGyOXs7u>gSZ2q)W z)8i{wo|xF7Kv#9QB}B`27kEwNIHsd|>|s#=fgS3K_{u%37FomLAHC3e_9nofiKky> zmIp_NaI}aBI3*Y}!ZMk7vA{h&x|h?M6!7(lo&mpj=xP7J2dO zt1xm2P6<$n((9C;Cw$+fb{2yS=PsRmKYaMz1YMeIXP&Il?(xOMiYGImT&%$BNAR6ii3aq4rej%7d_PW*@L#V&w9H5BzPDRJz}b z#DAN!HEHw{I5uNs<2-|JD2v$*3cQIFvuRHpfbk)bX2)ph8-DCXXG!YV*htzt2pF_> zMKd3kuP_vQiR3R(EA`7R=Zu@6mCS=1(0iAOT7}oPBSEeGIM09Ps%xFil56Ev39@x~ zT$)1gqVPY_>Q&O2RD7=PTaY-aFuA*v8wMLJyOz^Wb4jej;c0Y1@-F{tG`UvXNBMdF zpo8X~N9oT=%P2P~TRd`*xOr8Omg}dY z4iSjks?EHSXr)ToBmHGueOK%7g*&{P)P3*F1%7_Kb@!A0)j2mG-_GNv3DiUatV2$B z)7s~Ju2^*o+Fdt*{V8W?;S1Q(SD$kW^Tw1rfWltCq@4OMuNW+`)1N=9dNs)9(PE#< z4$N&KOsWOw#_>SX#6&T(dheqbc6;U<eBJPXQm&crUqMn+ zUTg02jhyN?D1bhkqZNZ@)s>WohZ*>P)r;RD(SbMVa==0byl@G@d3;8~J|mC?Z%&3b zP+i@f2_+R?Jz3{veph6mx1S%nF)@xezvy~6FpxLxBdKMF_I_W}B3IlWg-yE>?;s}* z0&)pzt|6{CNeXxC>dCC4$uipRH-g|~MwQb+S zJ5(Dc$^j9iC?XyZ!2(z)Q4s{CH|Yq{1(Yr=v4Tob1Pd(`r5B}lP!I(~K$_A~A@tBf zsNp|1o_o(d_kMjpydQo(oDXO+3e9AnJ6ZaD(!mTkY6UnJaQn=owrfNGyOkv^l6?$;p-K!AvJr>L13MXx+>$xgZ}|~< ztV(YBfUj5sj2tr4!5|=6Ga)1e;%~3ak(k0TOU6_l z0q+-j^BW}AFzU41!Owo})Wu(KGyYf&5S9W;0Xk9bgIcrh>Q{fYDXL|e`rThJ?9aD{ zo5!rb5_rpaf7!(E2(j`@usv13i{3`2g(Hu*14nvxe|#+r6w-J`Dg;4I9Y1TO`(BbW zER^*5pyC^v!(sAwI#JJ_#H{DOtKvsMzzS01xtACtyhu8)a`p{v2%VWM_Q=kq4e2W{n{#hqTCU;e|Z5oadv5n18&Se3sxQp=@~#5 zUEU5~zy|*betzCQ6_OYHO!`?%X7IH&)4c2c_<<&H=DDFmuK5E9(_g8rmvcraEj>Bi zN@Q^vIZ;uEl*Sib^v%43W|G*X+~-GC9=n#_{7Bc}rkgi4l`vj*xvfh#P-1w>!gN}H zoov;<4utLbZ6{ubi0(WlrBQSjXl=7sBdZ?(*8CC#KT`sj_Y(^>6k=^Q7==BKcbc-iT&A}HrP@YGpvA*6qT@hW2JZFpcBWI!tOiE`8;oLwCbJz z7{txN&3FN~Q(0AYZT)*GZ8~NA^!kdpsQunclnK9!0^d1zuG*!YCv0ZAvhwse`{6Dj zJaj3_o3IKz^OaGzKFe|Q)uZOkw^MLi**7a^e7kFSkZtE%y#onO>YH!uU}G))eE0xS}o11MeiboWU5$91l3_wj4X6S?cv z)s>{%CdIZr)j`}5uRii+H>YY-Y*!a=WUvK^w)BLxEm0|JYby?|N%pORR%@}#7q!~6 zY~}|-JI5Kj^lw=J;#h1c_@ zD%r$e;@@W7EgkSb-;qlyLmp0z+Z%bM?Hi!&QX7oMHs^{}ZA*5)^=yUTQ8tOnm}w<> zbL)rZ8ON1o}$`r65tq^v$@UVE6OB&TH6Nc5xk$;2+CcjW9l z0o}o0P&tqbU+-1npfr<+R74oO0g}Xjq%~;-&X$hMd6!Y2q{A! zup^5`j(!z#c5T6iWwsR)1^nYbAMGj*c(A#1WQ_F3la}II&%`Mcx*rFJztIX!t~dW| zDMcf}zVle54^1}m_)_{Q*Wqp0^}X-6q3dWjqMd9_?KbjUxohN3zBP5m^{}$#W(&mxlgnDmZCvsE5lfWr;m(bzISl6YIc3(vCNgV zVp+b-7WVjR^LMt6n*VgBhSGfXJy)9^*gHB}HJb(QK#(iXUc5*N3EA%0 zm3N-^`C)2tx6#<@-cz#DM%7B&Iy)S<$H=YidQDgwPVo-Jc>m;Ol395~{*{t3HOJCC zd+&*hj-J`gP34N-3%i=?zR#zbVUud_%%|~Z%^0rGuF^;mT~cXY=i_q@sBUW@b8l0! z%GX=F9(?p@MS?DE*Z8L={SNESrfok%<@wzB6L&BjGA`06C1rMIMcRZvlgcU;iz8>6 zoIQK{z@;KpPqo+-c1Pj-nI~e!gn=4>aMM9K2iAg%PUxtxlL zJnflfeE9irV^ng?X;CZDwI>ht|CsfYtbLW-f5_p>@nYG@t}?4AxusWvW9yTOjE}5d z<>VZVczGirgwL_1#NEoDZC}KzprCDyF{kzU{pR0FIeK5><$ZqqN}LauLxJKp{;bSy z54XPRSFTw0wfFiQ&DRH*#SFDlS`wYxrjiRCe$>z_2xfwz$tGC(w=DV9Q8u{Gsl17}7v8yY*pZh6DCmqacpxI&}wV`9RPXz6;-<$hrkgUukU_sBB$*zT}( zvZEUCkCdln4&oD49C`BlDy%i;n9kO1+8@;JreqYFYTxPf{hCzeip$y+U&759jl{2C zD_$8pczi||62IRSIsCMDmhpTc!)U$i=cePmk&V8@BB@2CbC$A05&8a%8CKNj&UdxX z=e0ufGd5x2TDbQxdKr4@hfT(sYXdq&U^lH*#0ns9>nCSY;@_-B?TC!bB`G5bpK?m6)+ zBBIWzaOJK-pm=R1M`3p>HJ`L&#^Jh7hnt^z%cay0_tWhi@G+FuYjw?C z+rki=a$RB4j<@+a{WfBGFisO=9!>Y88q$hYR2A|J_=v8 z`95Fr*Czum#a9cv+rN2fT;y!*oHy<_rB&P}#+NBetGNd^*O2o4Aq1M~YF?3vTcu{N zmpVL`@%uFM1uk$rf5mf1T;Ga_0qya9HlEr}t2XW)!FY8CcSHJCuRg$sEIEySfB=H^Zwh0&!POitn?PN@XOw*BVxW5bv;p zh_1cL%J(nz7|-NeiTjfluy^MfJb8s8b1%EgAU;ERcQ2M)YyMTk?;4!oy1D8l-EqU8 z=QlH--N6+8%&~2SLinTk&dY`&bV%kGx<9(F*K1)JgeYmADs&|f#d#< zBWmLiqsQs|f2_1~Y82Wy*Qk#Z-*Ll*yoW}`wo}y6K~8N%!QF z#2iC{lU!QD``3{%(w0?)qnSOG1qFHy&&0Ip(Ju|1#W#Pa?p@eD81^a)CpzzlsjV*5 zyiZy4(VE8oDvw$4k)P+`R|;#&E|;G&m$Uil=eIUa5RYmcrqOb`x(vThdIYQUqzgSF zqfew?sV=PM0%0p_^=@2~`~n;Tnzgh%rvbQ#*LyBg%CT23^{r)P3UxtJ^QOv{`P#{u zPlG9Xt`{9H^&*PrNQ5_8(H-TlSM;-{4OF}ICGiLE5b+IbBxm2zG|a|lG5o*e3!v?yyN(n`l$G?VeO0+vHAX+A}-`H z&vP(&VYf^eYo5yOEF2%t>p!^e>|{4dy;VW}$fjh3-%n<2=ETL65f)m={3{R~4wC&0 zX;s+Okxao&_@IZw1w>oQ99FNX^%SLmSmCrCS`j9IALY2a$}_WM_YCT}JPAYfES){~ z{4FYHnw__uc64&0-aJ9`_Y%){oH#u6+*f+D7nXZsRl0wj(YGlyDokcLO~71&bZidu zxo%}e+K)a1dpK}MU$Q#{%Em5yO{VP@28+xl`O9mKteXnN1autMg1#S=?pu^LX>Cu; zJ;n64`a~lXWp8h&@vrlgtMXonG&Qr#P`#+UJF%8bnp?^(`@Yr3k$FUXlZ4uMxe?#~ zC7r#C><1R-Zl1T0t1=e}kvP%UUkR&N9#-+T&DL^N4POM)(kZ7hMGpsceYKBEzSY5U z-{=r+iB(i*4#O}x2ZyeQ?i;uh_5Gh(ju^&!TNV5LRaA0%oYXz5tTN6t*4IzCGZN*` z5NTv4Dnx4Ic`1MM7HL*T^btLg=Ue?uoEtWC%*G>HA4)vVDyEgEcMlpC3`kg#|XsLeW z?mQ0?U3!o0giK>ollHlDmYxkn`KR>WsfDckbn!*mKndJu)(@{FIPi|BR^Qt7{wSqth5IEIS6bGY zb6DIs%^;V>v_YkqaILf;XuXs8A_Cyo?b{5&+>$DxvZnFc$^9*hGpQ;UxLU@?*>@_A zENm_u`%?FGzQJq~5I#v1AfU<^jtbZi0E<<=8j1^3@-mFkL@X!gtTyLVN=66Zua-PJ z?ffyig)V&2!ali7v-Rc9B-!>0moDi*8VI(|lw7imNWP!F~LMDettI<1X-9G4U(#4b?!v!kQ;0PL=_&mZgcTtBCKTJ&mT-S%!W^L(wv z+k*tP*h9~rbghm^q1gCqtMjuDM~|k^$R33bEn!vwkrN5@Wd2V8XCc+o zb`*){B&)V3DP1cWdR9^Cc`?ReZMe@bv|^gD){lbzA^MSru;&IOng#5D%5wYaGl&AH(E%=#f0yS}oUUB$Ut1z-77z0U9L50H3;j`o`% zMabKCPp@p1{2v5d;x&_Ch7APG8Xb%;v2(VqNgvx z%IJifK|{ML36)2Wp6wLo5f7pq=``_-;pV}P_LNdY{Nv&DSUcF<(|f|+r$Ywvv#-zC>!p}7CCa{MinKsk0y~_ zPG^-}Sd4;yBztVqeFy zA8iFIA}lPN)vb`D>G8=^1o`0PuBsPAXmebRQCSywh+ z?305n#hc{dd-h(?gVy=l7X3Tkq$kZiv-edThhSTXv(C#dK#q_s(m(JKHJYVo`IFS5 zWnTZ_xK~ely6bj&D1Qd^j@QFG45LGwvMZ0wSlkVrw|#dl?WQhT z@{|%P+X~+1T3sRTM$Y{yWEGTg^850@9V~#Tz8Z0pC< zlq)Vp0Z+2#mu#$k&qwjSWxG5@m>)UfM_$2>ac6so)$9^M5O#A%fzLIN^t5>l<*9|i zC~+Sy8`Ik%aeq{(oerk;Bz-7$(JRf^A7ucnC-7w(W51_by#`j)c zhd7u%Qt>4iq3iA7a#(#J=P~gO-c>xfN!E2mp|i} zd4M1iJ33h2A1do+=$Z1!6g6;M&i5Z2b}5D{Jzl|I{?2<^zkb!3eaadheq7~aXrZ0M z`Pa1}YY83CGp}q%Ebhbk3lLY~@m%+A8Jke^X*Rxkd%wV#USa~N{d{pT6jaC5!xs(E^)T7iyI+!2eBxS)t zu8N&wyWirVl8N-5@X38rTqyfs2x9?B`1}&~2nE519X9rA3YQ)Y#5xrwuUxGxZ1wut z*1c&9M2%0H24aP!z1g(>lcI^oj3xM1wY9?T#0ue5gU0S>6V@nJx!+gmeb;~t{0qNI z@|!!Hx9aJyhD*W;aFembUP}Hgz|k;G7Eg}w3&<0a;Lh%3)hIry!#>IPHsc+c^|4aA zn>TL`dv*6Nlj@7>QB%<}n!;Ub_CE!UUJM7nxbpV$)y9_xMk7r-S-7=l#5fXMo(ZkTZ(}4%CQvYJ=jesfNvd_=nojBWw zXWs#_l0(gL2=W*%MSl^{!igIZ5V>26#}J{vm>{r}>e|Uy(PLu{gFCir!eg66h3yBThm> z@W3+<1k7!LgR^T%aJDaTk9>Bh!YFKc8v}3|mpiVY4I>FB0~;E{PDYPa^PR5G;KJmU@+LP*@2H{xca1nJ;|(8-VJl z9EGu9tL>`73u_5_^>HZCvW;70@7xtYW@`KMZ&_c-5Z?nkv!S#j=f3xHS(EIgFA$Ex z+`cWPjV*vq{pZuff*Wsf@@FfwUmVDr4lE-8SqXt* z#;QZMTLWbPIKH(kby>6B`WVLJ+YrT<=+%=MH8iU@KRQ~dcn#-}@r8Ayu%|z& zvs!+LKF#WYV747Razqmj+>)u1@wRVX7vM~EaQk{tXn)WMmAZMepxXus`Ad0uD0?B@ zzOyMJ*8dpnD{mN;iHXYAmS>!q#!JNh^i#t({zh=%J=Mk zUVqi!2dWhyub@xv#>D}}rmQ?>&83u*h~p*eJ})-2JGI9=6&@?zTM{s1Fiv}uNz*2z zt_%Y8fi8E1;fJdsS;>gFzkTw1@^dVI%j!+naFYDfB_wb+fODDW4MGt5FFrq|QxRX2 z4T;u?OhyKdY)8zK5y-gSI52jr#dg4SM#$S(U%o?3?^q5Vwahf@ydw|$i3NiY21$j zM}x+y@}OreB>1hLo>Ze`f`2AkMtXlTyYM+z?9X1Zyr}d2XS8;*bJ2Y{!ZyBR2(nGZ z!Xg10jHZugm8wNaJGUhBJ}=StrXJXPWF6iEcdTK&AGD^Um7u8$G&BIF2nSzs}oy^p5w!;A{1 z5)O>xw28zYn~n%~bu(C`_Vk;*19~J+tcoJHemK?xQZ7R#_=PV%jst7*m*cw)cmhvY zF~i33#~%vr#SStOPG3cNyR90pI12oT`pv8WE;ZTP@p*4WtOvv)DtS1u zcW7+9p)e&b4iD+fId8}Komu&}Fw~{=xpyRZGDcWMZ)W5&jdDhuDu)?mGzXgl`2E}3 z*DriOY{58(*_U0ogk0N-FZ)a9*ze9(yoY^*i-ZW1nc(x>-lH$5NIpVp>Pl^La62r+ zwMgun{Dj#wpBKcHRUutnKxfleSm0yoK7DHLDR!ko=Y|zoesgc9g8QLdKrZirtJ}p@ z)@K_(v*O$4VzJY!x5)WWbS`w@fQX==)P1iH`zTAuUtIZdImc*4;ovbU74X+-VfD5L z1y8#cKXF3*vc7zX)4(-JxkNFl@LH=d$xUIR-wE>Oe-3^b@1s*!z40m^OW^LO$P^2 z*m_$5Eh#Xexx8X1S*+040EYI4&z(K0w_jqLyI~_t?vvyf-~)<=W5SmRWJw-@(&|rL zqV(h&IhXqxN=2yxOT4$tyJ{BuKSckO(R(V!jNKI;A*fRkb-f{q9K6HYG81n|opc~yv7M@IMp34IjG|+~z z5u^?IdG9Z*kK0Tzc#?d=W>_{U7Co;jy;3yo>?|ShXTExc@t~M`nW^iX0H~K@vyEkg z|BpO*uJZJ1BwVF_tnIm#$l>P~0n!Esv*urI@l|bV1fKauI!G-5(d#3_zw=r^)EG+1 z&}%8bD0$kMWoTsY)t>4-r`$And3n(kL+F7yvnGlnbY@RxZiQ*-exSXfX3W_fTlf={&)0;yapzqw~P~czy+Ov_I=QQK1T4+sM@$O>4Iri{{K75wlHq`Juzue+! z*wfRrGwjH=a`O%r)1v8Em5vC9Z*LrQsXEM{KJQk2aHogn%7P6W`vNw649t z;*AiCPAgQ47PA!GY_4|=gW%Y~kuK>uWxPfptcg4Jm7OPf%vXvD{B=YX-LTZ1`K9eW z^l2REhwu&Vq&fp7XQf(ZSmJ@rI@&6=IFNwZy2F(Isxhulu> z-p7H-&(F{4o-DCjy$k@cAGk>)QIXvW54l{6eR!(kcVUlhMI<)E6dh@>aU7`USkq&= zz=YYv4?Koew_^E9mJ!HW4i>|_YZZMzPiCi$^>Rnd7lJT0N?(JN0zeDki1{U&-8JmM z0a+IaoK-;lCVdg8f>XuPxuDKEH#IKKJVks9{skcYz?&QFa4)dK3YVHd#)|y>@pDnpOl@Tgu)uQCmvKxAd=Qzp$E>GC8TDy^%3s(sYt_+#xdDV1-gx?CX72VL zP61`{)1fI@72|nXMUV4uZMq;ZL=SVzqrQ*|cb@sq>ZtQJ`jq>=IEng{6Xt>XzvlIB zDBy^T=Zp{>g^OX6z+tX)WxsjF9+X%7_?phj9HP#XoT{DUHf2&M5}R=~aM$WrApU?G z8w1I=V?kJY)Zx3?B#p|~baQP)_%~Pd(#9h_BjXaZlx|~Jmx-tNQBE(LnU!mY$}e2U z5B&fO%988s@qfl6t{)sk5IP#8q}9fATJpq2|bcImk+^`)L6*N9vf*vaWr!0!mSf$nGs?UBvf|| zCH&~DW?ssbK1-4$?YxTRRaRG%Jm$rw(y;{Cv^`S`#PumiBIY0w#W_Q=RFhvtW-Ln< zelg4@{$y&7f5Lqy(|i`$bg=!Pt^>3Mb9 zh7l;DK%d?@3@6Jee)F&|<>Oc6 zh?~!&0?iBT_4C@=PeH)#^P_=}HTP^s^n|}z|M!*XROnWH$=#iL%4Z=O_A1~K=sKQ= zLdxLa0Jo{0QWX{M557pvZn&*^hPVYml751unQ!PmsudvRba`Cg2xI~MmsoR#mM-AP za|@X7CX89Uam0l1c1Q5wjqrab{}HbU2Sz(&!e(cxBHf3$ zr6vqPx``7L2w`d`S2`4?rTML_245eA)W2Vo>RfZ^44&Xef9K*O<8mU+eWFncq96dh zML)6s3D|*42tEU{Fmrpkb7iY9u;x09{}Mls+4IffqVX%Mvaxe0tLk3ORt+1vbY*qY zqZAb^MNBnQR!`pCQ8ZiiVa}I$UEkz5F!^nISw>DvE;L_O0#`M^Qplbxki0aszNYw_ z5eDD;q-FOf7d%Z)Snl6B0JDS7FlRv!?Z2UR`3BT}A_$?$I6GVY!UZ%1Yu9(Ws1L^j z*n0B-B|bo@71>f zkng$PmAg~5dk%vdxB!zXptQf4>{QF4W)MPOzuMnmACrWYTf~odL@f2vq9Y^IP>K%5 z6N2&Ti&Juw8;Rf?WRsgCj|yE({aKs#qb_;A{z)eqB{?4n-6gT%?9rvj4CrG(=*32g zlRC+i?Ed!s!BP6Z4ui7Yj1{WRLv)CUh6UGNf^gsF?W6o6`_#NextPG$ZjLg@Ex9h( zoX5BLiMp>*NtCQ-3=;FO65?2Y9w`6%)9@m-dyI{G*4DBs(LHk-x0LCU*pUf%o#+Y27O;Fy z&LW94mj1AvNm%l4Wc_BSnTnNPJ$U%N@C)WS4AJ&1f*_0|lX+S4OqdoyAYbnp6IQ9e`^@TfyR~HRj^-N~N{Ti|QbjqSEBHmTFiPR4wRuMiNJ0%fd9 zK!V?V1jMl2gHBrm$!U)OVxHKDO^%qIkS`kbIEC(sh;cB0t%XV`lVEp)U&C)=I>kRA zlk9#+k+j~t$sK2&l(rQDioRQ+LvN{0!`A2aQ@4Fku89?p`ezs$0R>;R@zo8&1b1k8 zHNf=XFyo7Sh<6c>0Q$>-1x6R_YLPE)26)I6r>@X8Bg9X@M-p*c-Q=p4wo*nV95Md! zP4df3tv}V;KMbT}Ol8_q^4i4zl$MSHytvt^Q0cW*%%tJ#@;nE4!Y5~7gs%Mfuh52^ z!BcLJ%{lujSDwB^BJ5vWk+|6Yp?zO3XS2s_9%#@Rt0#{E2_Ja9R2CHM_N)l$a}8U4 zvb**n2lNcIJ*{kD6m+?|mG{ffVm~6WSxh_N=P%P~05|-*4 z8>eX0JZ6C~?}a5A&oPnPjpQ;NxaX@?nb z6J7YkOp9Ni21^J-TPnL4#>Q!>lfV9~kixn2!IyQ=7rprznKT6HB!(h?0WvfM1Ao(q zb6{-bVq(&sGSe;pkL)Y#AdTN%Q4$XhHjvt`ezHPXx;ZsQza4f6fz2Aq@7&t)P$igm z<$R{N5uE!hR&jFcv8XQNYe_cLqfq*h_wWUf`$S4t)e>WD$IB~@aosuYmT1UebNQAs&46(z{Is%_X^N7-bCI>q9 zK^^C@%--|t#Bc#r)(3bfe3@{4YVFb1vIo8BF-N#zq>%i}3c6of)N>JZGc=)e3 z*~oFeOZ!p%0FLyjb>2seQg>po112}}zJ)#%1RkFM-8`hM?(U_W#7{8m#DiComXHkU zu|klK(NiNnUK5le4G7$6v1udu+`vd%Ut-2QiN;?41`!73Uj8jtozuKqKYa!@|X4PbCt@&jOGWK45ymz$m9Ib?X=~?PhX<>@~ZUw2&m=qa=SV9Iu!~Z zTCZH-JkC`~=4E0!6;)Lq z7}9bJeZI>wpIN7;*iAs$sjFk0fAE#;Y^WIOQ`Et-0Co!bnw4&~9}8aL(hgT>*|}h* z3zJcFQum=%`>9*j?oTaWJKMR=m$|SoC+BQN)%g%7mu=}>k-7U=MLfvgKve8!$?Xt- zT>l61PL2hBN8=Fy$HG$CSCm2gl;wd7JpJFeIyc#t0t-UO&<)#Mvyp#g-Jh5SCX5Lt#xbHJteV+*g0= z{nFd-%$}I?eDj!fv-!{x{gMfz`B08f6^)MRcBWjZ=`xyK@0W)}_5F-uG|J>Vpw^iL zBX1*#pZi`cJKw$B;uhQor}qQ+osEDWqF~`@9*3oeuLv3k1vo38xp(=_+PCdW`QUmJ zNS$lzFS>sLfNz6s>f&B9hP&z3OvKwV4uAslFMyfWmFtX zw;hJTWpD^VLjnYMcL*W427(Xn7TgK$5E3jva0?zZ$Uty+Cxg4YGmqTd``-HQ_o`Rd zSyg>%clWNdfAl(CtNaF0;d517tIx0cQ+LPgxm(^8D#@g{J#SNLR0~ql~)jfl}SaNSF5rI;C#DqoAjIjvi zVn?hd$_n1=5NA7qg7G1cGJO5mpIC4VXlC@XR3ya=O0KUI!@6PTudf3()LD@gn4D7!C~BlcTHH(MF8(M{QBeyfO-UAl zfj?H4v6})>z#?|!ww#uOIM-_OP~NFwXj5HYJ4cm+f4TQi${x?1hZ{&s(NFH^*L^

      N-%(rm#D3fEyqPyp{ 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 cFN#T6{<{9 diff --git a/resources/calib/filament_flow/flowrate-test-pass2.3mf b/resources/calib/filament_flow/flowrate-test-pass2.3mf index 4d1d0c369d5a0f511aa582c1e68300947d6e8c24..97978494050f01e29cd2ffe7c7f4e0a74d70c295 100644 GIT binary patch literal 142301 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

      V^p)3@ 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 Waac_W8Rd^4;P35^_&=Bh0R9K#)6uN} literal 123202 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

      ;BZH6nObq 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 Q*f9Z^fS>(;k_7<%2h^&+)c^nh diff --git a/resources/calib/filament_flow/pass1.3mf b/resources/calib/filament_flow/pass1.3mf new file mode 100644 index 0000000000000000000000000000000000000000..794e53449204dfee029375616db096f4f6fd01f7 GIT binary patch literal 151500 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

      1CLSmp@doZ$+t#Ms9d>?j~Xi@8nJ#;4yj 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 &+R!*8JSCjk1|C-AWuJBQRe^Q>n+3T zXtr(PBv|m^Zo%E15Fog_vvBv|?(Xgc53Y-aLvVt-ySuw2U%z{wbMC(9d!GAaK~+oj ztm>-j+0|o?0Zm6?Mf#7$ts$Z|_=(lfA)-CC6i-NUxK8_yVNxv5J5LIH@X7|v3 zH%wEO^&u2vhw3BtYBRo?F?lFxEsWwTyHv0oKs-%3BTrH-LfF(NhwxH-BOkD&nTk?Y zss#Y3kmoZI_U`u}H6Ku6C`a=bP&FJ|Fg@2j(cYhHcOM_oRLAkNtH7Mk>#&4fPfaSm zs7()P2Us;x0bP${D~RWRcvAyUM&4kK(#at+^m{wM2S4t=wRdfrS$4*0(roSN1_n_M zAKZjH(j=oo-#X^(AyCTak@1obTTnqx)oJ3OntWzAL~Ckj9(9V^i5)m9Q1TZhs2@IS z_}=*Xt@oY1?LE7H*~ZV}rHo#0F!(0&kY-^{OXlohpn5svm@@gc=h%C6K^f!MPT1T* z30VZl*&I{m=$bVA$*c5fFL0BKue|fjo3p@w_ir4d+A{aiJv%qACb=5On00A!2PrgY zYMQkv>yuJe4(`ydwe#DBx3))Rird#n*Eoj<-`ocv*2SWxV#yEke(Z!VP>q@{zD5F5 zvWLJod(io>zqeTrCpY2OF<8SVCpY-d>dhU*3tl$rRf_9M15<+-FRtDJ1|io0#sZFR zT2FF>yj%2xGRdfiwn>vGC${=2lQ-^r*fOvCXM2ufhQ|dqKin3RhR@FS?)(1S3^PQf zV+>-LhS@RmjQQ%<`%r58NQ*S#jMl9ru8V}_KG0Wr-rhW4d#^t%GH559VL*5pZ1TM~ zuR?3h0WyJ=JM1>|5cGXSfl8%y``Y7}>*n*gMPtyD+$%zG!A9R%(uC&AKehise=4zc ze|NQMoI{`d^5&W%#{S37zMGlWLTa(<0VdyADhR5w8! zwr0pX5(r{dQ$_#gp z+M|-;^y1#V|KUd-}h6rH2N2)kDLYVT|K;7Ph+*;oSFan4&N}L1v=uNXK{6G|H+*t7Kk|`|3&1;E-`#Fw& z)kx&JyNWH>K{E5yhn;=x*a{1%2jXBAUfp=ttaWfvf7~c$Iu#manrE{|=TD^}K2J!R`gP6Gbg0 zb|CXZW9YYtnYeq@n%J#R49WzXPP_L7=3~>}urqMpR{hDF({NnOG>kD)RH{7%^@SrM}Z#4u_>otu}YpW2L*a0&NvDJsB*HeQ3~b z*pkXOGGn|!khW%#7Wzc`E4G`izHX{SrpfbNi)QoF_2(yzP-xsL5hJyjgS28kpy zVGdJ&zU8zIyb{=aoZATg(yIn5lY%rU*oQZv*|E)y#z>OROOKAQ0Zkhmu7*gdUe7s! zo2>aI>n!L??}tuoM)F9)(@&>(M)8f|D4kNGhgClw$82p=$!=VNEbZ#W#4wo6wd&yE z_8aR3;u*bLD2XB~e-Sy=J4Ri`wgWJx>Zj%ibk^ycZp1JR8nh&Ka#irfeX~wx8jV-ZZr0 z`jr9r*+WbU$z3ypUO0jq9(?`z_#+A2b>?ttSHxbP)rWbk!{j%^P3+ z)U%Tyjk8cHQE2~1ySg7A4~c=9y0$aC6-UC+UJ$Z`QF8N_$ zr5=S$(;az5mj-o~vFh$d=zOaiV<-gOm)h6WQ~-^;CqV;@G=W=QoBT7BB#7dd%G5Os zy5}!Mofo;;#+YQ9kBEN8)jlsHZ>}3ydU^(O@ie;A!9-3^zgC&*VVXYbrnS#r${2bW zAtNjWUI(Z-NQHe4_1Y`DW}~YKuj&yQeQ6<62y@n%f!1y4t(Z}#*?R8?;*@jO%lbjU z6%|`Ce~L^@F79lp`U#7Sh&U6!D*|L(r9X@p#$gDP4A+a>{Sy?a8-$Jx>V&ruNk5}p z60tVe{Wgf$wCRu9H)@I~oeq8U>GrGgkjygNu#AcIu)S|wN6dz|n5lGraEzbPJY$UX zEe7Yw9e0hzfo9a92t@O|_-YY3P`!^x(FwlW*PtX^XP2{1sA>uNa5CUXNn$S)3;v7V z@j<9Nj5yIEu7W!!&uepu&!l^@t%d4l2bo0ea~2E#Y}0jComtJ^KwTnfMv;=RAaPu2 zWz~J{w?*x!@P=2a?Y2e%T(jMPt>l`l2RtuNR^=ipMc(qpw;RilEwi<}n4) zmYVRiih(fZFuc|xAGlY0X#AY(?|Y^-P96PpxCFT_)xfg^>DTh8Am}`fnzJz)LH1%< zka>P$(J4l=Q8DzO<+#|$?P8hI`Ls!l-?{&^`O2f@I*VrzVj*YXVc>4ELrxE?VQMLW zHr87i_7kTo;^RB9RqGp!bsi9l5(IA^n#$QSbqOK1=&(1%u86{8OkBF4$n@im?s-al zGhIw_a7xSu!-S;Nb!&7o1@jP)kdC%bBJA*IrkJ!gxp&0vS2EvDAoXKF;G4}gKHawpRfBid@vFnwL>+#J6RXh7KZ23S~Ux=;d`>Fy0 zRH6qXr6g?3``_(G7!*On{-Vg~ovP~P0Vg)viAt8OEDRBS_}Vk(7V^^)j5bjOFV(>p zRf=rBYk!jb=|L`DomF~k=Se~pR^#4H4-}KbXCH&fx?dMXns`YMUt9DQze;@q$?Ltx zpfyZ5H;-(M9%II|cQAx(;{-*dMEL9*i8;2uF?HpaS>YZ?m1uWGYO!;3`)I{(Xl9sG z$7p7b`Y4Xrk1`HO)m#xcHOz)JzJ^j+GSM$~=IauCWsAS1&8i&1kGwX9^1>Jvr07EL zPgbU?RYc)(md?nWrrm2sa9byvr8TwE{F#g&c4$sgcx3NuP4~RP#{ONLM>}t(o|Qbg zpD~DMbOLY7Ky6~iS)2y(HOI=Bs_L&8yPJ7%ofH;#0H%5|Tom~R!4Gt28ee!%c1j+t zv}!IyXYHKru;KS}Dek)zubo2jeitTLZI=3Z1hW;~^+MdoH_fZgXnrGsu1bB1H{e(0 zPb*>yd`Bb66Es4i1=>21lAGI@y~|wiTs0ua3adIM$xmd+QF4E``7r)G=e(bDX)-*dI=fSKWy-o*$uXPS5tDwS zSh%oX=@dy**~3r*&~er(vEDxO#ww@$$x=E6r*aIqVr64u#SU`89}nTQ#Prp~uH>b| zF^C%Z75@mGj*Z*{(0&vEn63~|!OH|>-GFP^P#D&zu7GNrc$Vr^M==PNOEp!riFQ2r zHNo5@3Ydy{u1)qIHf>;|P*Q1>cBfrFrujSaJBP4AiW@z!`b!jujWqN7tbQ@p^NlE? zK-3>0#ye!i;KINvNcIXmWr;CWKAx!{AQ@H&4=90_pej`DOg)t2cIXOqc{LVTIJt~)alg!eYxRwj!ESnxS) z6-mH}C9X_8!W)jTL2hCn))m1R_WG~Jy|&>bvm~_EW<(A~9qYNjj24a%=vyYENq*V} z2cUR`*vIa0$>g$bD`e{>Dj>)7Je3WFjB*mQUcA+vT)uxbS=DPzeG}rn*;%f>ct`23 z*P8tqA>V2EcPXwNb+Wh!hBW)XZX(8TUH0Fcd#zz72(JyvcU%{J-&C)lH(bv5QcI2D zOy8Ah*lIkiEIu&RXpO1tERrM^P(~tk_%MJl9YwXA+t?`f5iotFb`o;>B0#1dM!o}5 z(HJfWWcV7=hh z#{@s#rPdL{$&Vsk{YI4?4Ec%S`=Pp3YZQ-QI3gIS2}7FvUtKSCns_2z=`%@9(7TIR zb6J|PD;GkgunhbUzAiflkqG=evO)J&AobrSG8T9IM~;Z{ZRPeqYoWCNziT(CH1NCr zzgy*hiutGV!ZMcsH2#0q`~SYqr1J8CSZC1n8aY`i`qRp*N5Vy(_e1-T*YFQt?+5U) z!bNUKzfQ$7^Vin{O8J3Qx7;m*{~pI?Wb@15N6>k!bhbrDT{V&0p7HN9JBR)V-NG^CpSOc$>D%@p zCyhQvFPihf$M^h4p_siFkWZ~{5?BD_I_%8AY_?(I8KZ!vsZ#GGIDVbd^aldZDH z`SC>XKJxx*Gvo`6i$!@?LhjRtN>8&vJ4%)*!t{lKc25T4^ix0mp=-R>D;_yS)`DgN z)f=N!RN!l_BC6C6Q!6Zj)W=qwzCYtKN)GtvsXc9fZb!n8|D+yb7y4ef@GidM zNc|GGO5K7`dldH*n9h3k$aIqLM`5D@Y3^vQu<>l*g09{ph0i6OMRjoC01A)J*iS#q zmk?-tjvp}EVg&`%+GBoQbP#`uby~6$%<#laQDqTzy)`Gn9TjINw$2u->l30SL5S`Zat9W-EAcq4!cIYpcdIV~hV zYmbGI3f8F!-vj`JWAN22t$oyxf2>E=HW!{XH$yLlWseoB(|HOegYM~ZDs{5SVMQL1 zuw)~KMxiE6|8+E&yftkUt+khK9-Wl>6eFVYaGig+NM}IU#;w~<5~J(1I9`gXGkaJ< zXf0GEAdlIjeuw;$43?SUwDJ_3!w1KT>kcP1Y9A;xkUGKQbKuxv8UY+;i?*e`B2Caf z`#TkOFu~H;F3(b3wT9YSrJFouJpEh%yC?QHET4)^bHNRWhM}>q5Q^iDeNSIixv?r5 zEQe^iaD_7g2MGwduS))rCqEmE|D!~?Xd-(YLTYfIY|aKja-VP%^N_{nQpbPGA|p~pDyl~QV5 z=obQbj@cmiZo_74iLI(W9S1$zsDshMJBsgTEW9H(aM+qy9{BX=&~>h8e+HssAZ-?x zW9s5H)07Nl#puIUAV*02o>nJ-AdJ-M@P_|^si9J(`-)6V$Mr)S8BYbNYTsDxj?dZk zZh@XlCO5S7+a+seipBb zlG(^;3b1akaMl{%cujfDXva+tD>-WZn@-H^(O0)&#d(n>Mr~OPFvygB#g1#wFC^Gfs z54uTh8uIwj-9o(eRQ9l`8)sxE-rKImuxqog>dj|(wJA*3f|7d0rDd4$xqT@7$492` zNmIPlnw^c=k}W}|(XtSgPCPACD%pzyl}}lD?lF{UqW$RK)VSckKCQ*Ia^O~_?J!%c zvL=P+3mZcU%;Vb4uV_874=kZtfBEN4=#KRP9cC_E3gfmrTp=m(Q&4p=@ zOCQ6Y(()R&--T`m=P>Rj&#VPb6Ui@o`6VWi%6sqS>nwNwh<%zmQ!fT zAS)eo;eaI{?CatU7k-VBT98K7%?Z|l;N1gjrq0lt+CT(yy>s8`K%DxI)S_wYbfI} z>!Pd8FYHbtZAf{(alj}~#D?jLw%Ae%i(=Km za5BGCRHh=8$1*=8s)3JsS{UcNktPSP%`}4pEQR9=Kg}2kS<~c_*DlQ-iSvkw|A7um zrF_0#RvEMecV>Vbz0}Yd%sp%vUG=7TMmeaFG@y#-JjjhHKw*wRSg;U{SaMCJ=7EPaJCyod7*&iDV$j>_U5h zHAvMJijP4GDQbywzv;6;{+Qs5e`-sF7fzy5dmjKmnl!^`Eo^LxHs`&DG@_2Woi55W zV2z~?MYyJ4v8_q3Wa^uxJr#5qb7}Deh?ub*S>Sap3dv1nw$-`lF1sF19T;@ zUyhIRPKrM)AaZ{esnAWV&G;P}TNN9f6r0*kA|7}Z)3KX7%11r5CNx+c?=XE&a3yLi zoCRO=v|j7IDPY+WL{H$3u~@4Vmcu{W4L1BH#@bBin`3Gyw@Z{O9IjRU0Yz*Ni5-g1 zU+#O-nP~6o%(o4$B(A+CG#dy8KO}a|EStdBxEIUD^(#N5oO+xdS4p+-XUDW;0hM&O z>yW74?G?ltMg2@;rG`_M!-fTejq7gURh)@#k;0BZU1zG9X~lss6o#C!R_eN*$moQv zuVR6%rL3g+EQg=!xPH`xS{tTloHMKA zE|S6HX`H16 z;mR6;YW1XRCg(|Wqpz96Ccoev7XO*QBKWhcZtvS{vXn$t!cQ3z@DU1fNW$v zozz%piYKO<>- znd@3%fu>*dO!BlrJC~6f&m9(Xk5=DVwS1ca7okL?j#aTLlvT1GPayamEFlL6+Bf>r z-{ZfBX;&aDwSm*z(&CUuxo#01dKE?sO+Jak45!FNO0bOOyOU|3d^M<9TshnJD;^PW z<^-GVA-vV7X^^_{5qcn}Oa_FVT6>TR-e%2bP0;6{G z{F%F-#9#HE=r)@&LD`(Gzw%3u#_gv168KWKQD=C~ z;l6nIWwDu1z|p~oeBqgEu|Gz4ZX%ZJzSYvnk-YG%)_$qkf|6!@g^jvi^LC^jQg;7I z%5i-Wf@bj0Q@*5`+0aj9ywY;k({F7`@e~dJ^DOcT7x>zox*);aC~9xEchHm$m$eF= zSuPvcVe8RBm9-E}OtNIe9D@P=jkvvMe!^y0&c16azlD^oYHb#%Xxmxaz1b_;vkZN_ zC_tzYyjGjV8#CKISDhtU2NUURLK~@j$EQg(CstV=|LaSeq9#X2pLqYZ`lVT4#Ax``H1FCqa-JsNkO<;#rjrG>ipn6Q zfb<66S8=GNNhY;2HJk;`WcXe&{tReaVStLTpEHlsMMEG;ZqA^2?-xVc94c8Uu708N zcSpWu8&x|Z#$E$1kb|*`9)62CUZL@EJRBHv(q_iy`|~1&m!<0}FxiW^r!Q#^zw|jl zx$Mg6@qoURckD93yEt^4?q^Z#uJDcxo7*f)FUf9>*v|s$nFP#G+SPxiue*)ur(_!B z8XEgUUpNC|)u@xWHHuiQk!?|SlJBA{#$?j8%~BtOU3G+rsytf2sb%v9?2WKGI!~(B zzbILfBF4YhNgYR&$N?A;h-5|Pzt=Ngj#TOC zAv;tJF3)&e?o;xNW2gD%)EWGUzl^Etf~wkI68*j&qT@X|S@Nq&0;5tqD#Ez_J7xIC zPJ-p+E9AptUiM1KCzLeEEMWkMKKAUni;DoX8z3q7 zjC9E7_86=A8Njjwu+(!QAV1@(59kp*eYR=mY*WI$dA9nDWTyN_^^P)r*1v0W1+G-ks7Hk24}Rp#xRevKHfSZl%*=r zRd*K4)gbKgYaO!mHo%VFn6~`3F1MV$fk5qIyEu0K;GYUDm+50ZAh27dJiT`6i+Xsh zdRDiW6(i6T1fWLD9{eC9*O~ zM1}2FY{Jj}!5xy?YIqvkw;7os+6&37n}xwBjFqP$+p7Nxormn$d7Jp|Xu5)@$|0LP2-=P^k27>X*`2aLTRUG7rUZ+Wg z(QmmY5}bZR#n|o!ZpXujIbZIkcl%sx3!vJyK{ZpF^9BuRnJSVpn_>_;*>j5OInJFeKrsv*&nSg9Hm3oR1!gcc_;4-GJXEyN9c8qqLxRduNcG{X2gzxI8f*6#i{ znx`{)qf;VAFC#`#Jp$Kt6AaJoM=GfJO@A)Wp3y(>wvdeb*lO}PiAbjr@t^?+!SZ5v z=)7z%|47Lhi^Y_y1VK&O3zO(bF3*TKhKop6;Fr#KvhvzQxlzaN(y6xATmh!O9-FrOF-w&4NfoT61L01Z7 zZ!4o}JapZXu4kDav0KzNy4Y&eR-B(gNIrOgJ-h77R+F0rdulmzZ=v!d+NDqWGyXr5 z2w-svJJE0|3DwD{JpiCB{#}J?0sKuRk@Zqp$Cq(>ll^wF%>TXN@$-nf9Wy+9W^d3d zb_e048FoX7pJ*GRQfzE0^jPk%{4W9D*%2OHHL{Toxvn*pl}E5gke{k8+$?|R69sQ; z53aHjyR^B4Hz6w-%h|mdNatkFro6D2uRc~?GJc&uEkZdw&LB>p88s<*3;hmwe$)I}w@1S|xkvi_u<3W-jShHiifY8~vUWLqpHY)` zL#<+1O{*JVUj%T!QhGD1A=&^BTbldYaJ2m0*~pqUp$t1gbB2hA1l*9D;PsjGrSBx) zeHdGY#f60sLDZ<%KFvir_4&}l)YLQvpeJl`5iTdre71BGoBGBDfQ0X37fmcz?$}_n zJCcbw@JA5$BIXV01;*`mi9*Si&n*h6t9tY;KuSMiO=swiA|eb>&SdVqZgavGrs{*t znr=2*NTq8F)~KKjNbA(1o>l?+wFs4+%U;uFTcMtA z<*EA8eRKkM$_LvVdy8`mGxTH)MaY-JGc5a({FcIuM#hbwHeU5-FwB+tEq^m0dQ}Qb z6s9YR0hmDK$F(|E>k5JGy751o#JhBC5xJ!TT)hg%!f3LJY*s4yugzcqYBQ@`bHL+qa#DkZi|+?m7Rs1 ztLuEmPvYPGbo!i>i+FOVTamtD3~*wZhU%ciNo{Pd?0NFHYLE5H7EdxQtgxlX?!Z!) z?0ODms1sPb1$l-xdd6|d%sO?5{0p!Tz^0a}LS4Ni7;y${^W!7dkf&vhhxo-b>`N#R zpw8HQm-*>_3lzkl(Css=h=?8#yG#UrABpfjfLHw6*NB#L#!z_t-foc#N~w(Xi6nrGoJK* zC-}bon0kknnZjYYg3MTBK-sGu=``eKSD`Hk!90LoHUU3X0Ue#p1}lTDw>UdG8@DE} zu(2eg-KS>Cj2CZZ{LV|rT8>=;jz5!9KUqrfz{}R-TU$75fq`^`v_#j>R0d{`OsIEMz_m@Vw+cBtUzxP-g< zLSys<3}dq7Fd8YSJlhyodjNr+kyiDmt?}#{AVVB~DyDPe((=rh@PJ_QX)0Sx$zZfW zj$cE~m>83qj203dj91LYtrZM}4wS_C>n0~h+l#aNuE#;cx#@(Q3WnK}OmPBvC##0l zJX=Mk_A*QEhnv##E%|!39wSO=^^U{*Bp&meLKJ)jUg^^2zK9Xd4uTw!A8;*2;bJ`Y z{(;astvJy1Qq`6rA89fsQSmyLV&(?mXmW*+5$R}j^sWLLnWrF_tn&ES6nZP^ebkiE zie*L=12ejXTD1pM73K;1-R8h=a?_#TAgu1n-i0CzhVRtHuq531wR-7P&JA9b5vp}R z5{eP4RPu094u?r6t8p4d>fx*3*@l%V>~jxSQBBCX=nRI|d}^Te&IWt2TCkF0oesZK z^{k=u?^RvDAt0zmG#|Z6j)=EqK?7Zy{GmrTvBB3=Q690Ma)8T9P*-dERdRo5q3L+~ zff&ob0UDk`0$^+}2(=s*AuM^$+F0y37D^`+9UN}Wn7;Vdzsg5%lgLIye`0pr8TTk2 zOTVZp=u%mkmGL*t9f}IS^ERr;sp(u%#7v0b&ZfWJ>ct49g_wx3bIdWdFy-KSPmc!f z$IfqXVWDZd9P35*D1xc-ls7JoZJU&0>Ntf-thz~!5sQY?X9s#-R?7RZ$bA^DVsRpR z74ztBvAP+`58pEJl9aw^f3cAuSec^R4{=p^PejCcWB9!YE-8m_AhNT0xH`64e2axw z*_VE%q<}X;84I2@2?Gx;Nr};Z2RbuAKK*#HYGip{e%*f{uE>J6VtF4?#0jjrVsaO! z-aYm!QH3q84(Q9#r>5tJ#8rVhz;j~QP4m;R4luXg7rf4j9ps^^aF6{HAO`SSQsaB% zGgte{O=O{~nq{&MFbEdss#di&`<%tjdm0~?p`2~i|K1GN&bY6ymOs;?1|BtXB-eU5 z^}R6fm)}|(PPlLTJnqXM>;U%mZ8$>9}- zN+L#n3%~}wCB!CQTH!&rT7trvsaTAd_DLL#gHrbt(qp&2vD4~Jq*!)T9rPn6WX!j|GzI^R)XjDvXkZ*)uJAio zQ)_^}_AQZqVa<4WuXnd=Whb!(JeS4vWnH%X=d<0W5TVen^`>TrRTZq>>8qyQur+1& zs#v+~)|mZ`-dL0Yt@}f2sL(f?FrJOd5#gNYk}5pZQ-FvZtg(ZA^bDlK)^pu4s2ac< zsxfRr{%0}m#B!1fL)eY~n$IP45a1w|F_*NgH5ByUzMU#_h)e!YO ztl=K_ce0$osWJ_B-ll!h85S)ZUT8#B-|6T~dw%EVom=P#Qt=pl!~w!zcb3^{yu!v~ z_PeWEomSGv@HP+(VCAnvib9m3_()`6y)Pce=dxm7`8oC#huubNoS2=0yd4UUqsL?3 z@;5CGDN8`ZQaPzaXIz)NpGj=t>?z5VuhCeeG*&M{K?uv{`qG2S>Evyn6X)##@PGDU~iemX`nxevLdvewE7MxveaW)57U1LYF z=~M0L5)8FjMRj2dq6D~ZsI|J>Mq+S?*|BHL8j@2(0YyD#%8srosmxWgSP5a$893cTr=F&3&=7F=T%`?vJPcuda?KV^VkOvZU=1DxOLtp*YY;Vwwc|^d zsSW8bJ_bfPF({aRx6Q+yz8fv8=nE?hwZ{3M5Ls2w#Bm%rtv-{1dTWS3Cgp;h15s!i zLeP5DRF{b$E+Yp|d3ei@{pnsAd&#C#4@<>S0HFsgf?*TURrTsvXXU# zqV!WOW`PpbZsW%m}8Jv`w%p<1%Hwf#{@I zmLcdJQ1JbNI1$-gd0Vewky;=8aG~7oU4+v!n(A)JSAPG&&mZ|f=9SZRsVCXlVLYUq zYBvESm%-gtw^gf#!KA8P*!En#FOLT-BX{!>j2HIJchJM|h-pk%3mq7(FT)U(PwROJ z0n4j;Ye1&m3(EUuA#rJr_vmnS8<;sD_GW}njC~zSDyh7d7EZs~oC>D4vaYq5T{0$1 z7@s(SPXTpiP}DBDZE!OGypvjB@TQr!(g^1p$5EUV4+8<#Md=@$&mBZZkfZb^@#i@& zkw*px%nY!9_2p%?rd@y5uFZe4j=GBKuv{Dq9*r^AB77OhL9+5fvyX^57QTw;%;3Ou zwJYJXS796~iM&gBkLk+JNoxyEIRP_Al|fq=cc6qiL?BD`rre6IVgPDqIg`jLg(@I> z^43;U85`9~pC1)j`WdV$Q1!H5boT8WY?VEs_|%~bZaBdLd6+(`hJr^JrufU%^yDP5 znT6K4hWbE+Xn#rTqnNx&x-8z?FE?cGr(c>qO-v7lygozB51HTtic;Ew4K>jX{da7% z;A;c4f#O0rz~Qa9KPwRl+AzXShKrl*U1KO9s?w$rv`P{-? z*IZ^-xSE*GT3sxK4h*NOfh9+kUe3Go zaSV9(4F7D?`CXA9U?=|5WN95O|G(2UX01vsK`Bs#Ujdo>|~*P{i>6?q?Msi!D- z%LEhc`B(kX#^~J}Af^dnZBbX&B7bjpnEjrfc1Zp{Tx|S#X8!w#+VwPM@B4g(YVY^v z_UA?6>z|_;zjmKL#ji?#-ok!#Q_vY^8C+gxrr?&n80x+^}n!P(c1Ki4A@Kl&}-Q0@QTL0$5YUH@0a z4msug-)BFIQ<$`{ogeFG)AK@+A=IzCq-*+ik_^GWH9z-X#ptL~U@0>oPw>pNh(;d7 z|8Uf7icjoUQ?|Ji=#@d3KHH1^(D5-V%~x$xq&yT`vW6Pop1IqXf-X&xGX1&&6Ms?v z^PB_b^a7tMVo{SDl3!Rbk!6YaLJ3dTKF81BFiA6|-|=?2mqwZcR}> zY;Q#@Yl{NJ9+XjKFN^SwXDr#T3*+5$(C}XXG?&d^!}esbO+&6dyih9A7|ycmCvrC- zfA1cYe7%f>N`X)rDW;@k3KDKPjiXU;UG<8uxE+c?ps9K_VSJYdVi}N$)?D z&Dun$ZeCX?H&IR-!ft95yUG;xdiVNETLAx0Var0T0&eZqf4Ob-6u{=5PV&pMSFJ@2 zBrk5~7<|w4CIo(qPWZGEN?47b5+^K+u)5TbqxVf>*2nU*#XS{$CHS`8Pq@e|p7nXh zZg!pC-Y8rn25B!!Rt+vaA>SfM0qF}>3vsCAscZ&RUvsbk?^qsEo|a_sIz4zeR&_Fx^{OU+VIdtIQBdKRAvfsmuu)9 zM`2pp-2sL5WaaGvN68CsQ~clYJpR1=E+mX?Q&Kw?!MqGFPFBCrmUs9AA2=@(u3R&n z@|0E&-A_siFRA36GMy-}zxMiNeav*gr-)?%}z4IJL8)z=m?{t zYkK3=o3n)XzvJmNmF44+G6IWv-=QPBvq0G90*g>U@wZ*0hi;!FQ;`NU>L_2F&jlqp z@EDAP;tl8K*k#y|C?z=>86yVxTf6FAv**w$ZYYl{Ur94+f=QJmb#P}A;~(}sl+!7x zQ7MA7nV#H9@doyCD&EeXJ|r6I3IW7C@kl!#5}z{v2xK6}j}F361Sx&^?G5aSMwI+B z?pSA+MwAO6Jf+!(y=%>qpVB>~xt)PDw0ZKAkhb({&usKm&8UsOU{{Vm$Df&O4wu6H zqHmh6pxXVSOwXx>Bo$8TIZ@`K*@|tQF)7n?L`xc{wc3mXd)8{Y%MHHeL-AgWf9@5 z=ojxhxS4H~*095NQ4vbs=Zvr;aI_TjLLB2zy>!bBr?Bb87r8;0nt74HL=#rL?-h!f z+^Y;VZ2IN<`iiIswfXxlULHgsrmXCJ@vTvLD{Jm+m=3*pnD2Gg&s)XC`sMLgZUy4; z2hHw=EW}~5ffFQeYdwKD1e&z7H!TdImiD3SM%3i#(w1O({J&pDXnmd10XNa%bAFPO zUo7kw%JXNRZWr;aYxRk=gS#jErrLtSq~}D9%c$~rn#qp@_g^In$9NM9ivR3iX6K-&eRxUzIp^bggbr6eAPAmXqCe zdHS?~et5^zsBT|fN1AsS)8J5eBX_T=aXb5Y2-+=_>S>dHG2l?r);$RoiZq85=6Xfk z-n$!_w;f)-?fq$QXgM~%>UAHub!Ph7)e+{snlgp-Z9%?pu!{$={bI?~;%yLd*RRYUTJ z`Nq#a+(5DPx>*m3-?ZND`j1#kM?XpQb_;#1& z#^a8o+Q%TrSLvK~z9X45%`0(ONS7Q@3nd%W8D?X-6NQpW(T; zuz!(EHC6f-5F-Biwrb!X^m2;y;uLfSN_VwI;Rr)v#2HAtjNs4tf+a3 zO$E^8#+phJfj@69s6S@;p6kxc>uhbPTf-d35}}qQ^z2=1+#wWc8Ok47B!|ZGC7C0; zpZAi|VMdbh0GUX9Hi%#dXYQ*2?yA|6q~Y%QNKw;B(1K2~en@dE+>4A4XOXW1Lod5B z`M>X;mD;}>RM{`H(5-#b(LA&gF$n6iZYri~89J(yr~2b)?j>9%d{?_j$b#;XCSA{5 z5=z&$LI3g;LU0f&w8j=KOfTzEyuE%-O^v&|xUhwdy#NU3jK$UG`}EQ#ZYUr&F3YaW z&cm);h|aEzTQ7_DNt}`FV}__4vNB$dCHl zSQ6nHQVBK%aJpvW7-B^56VmIhQfaAz+j3G) zfQ~rmgBXG;)>qWFdJ*-9<=JzP{=MyVH*Eku^AmciGZoeU^uocU+%Gdbdy$A>>@+jn z`W2tc`A=l5A>iFl1|vWB!s-nHf_9|H@!W~pFRAU`MblSf!@?Q%7Lo*qOm22EGbLWi+7D%O*q?>+Q{ddlv6%4u z+Awy>UfSMEMMTn3W~LgcrEWCJOvvocNLY_e%tna%NDTV1AjS-Fjh2=__{CS4sVZ6lzkJ?7&dy~Q*kOoqBkRoO?#C0I+@oFuGZ_&?fr2A2x~LVhl~_RV$ju(0Ci zO7~i+&WrKmeI~fM2|ZII|GE)7Qg!7ULb~QCiOx-MZZtT3(8jI#1vMxrlB_&Yoqo78 z^~1roB7%ax&W!4)#t1eqYVG?0r#;)M+(qoHc>mLRaxtT>?uWs4DJ(We1w^4Ez8f|5 zy|~%@CB2!!TlE)TpionO9bNQ0hD`Yq+kU04?{9kf3tfhjWV)E7%{nGIwmB-9f4+D` zCvS_Z!Z28O|E)Y-qsp{ILqC7ML)PtBx9jV7`aMVgr;1XiSfe5bpD z3>BUc;EhAdkN@iVG!|{#RBTX|+|+cE`~0l{BHYglihiuGT?J<)-Rk>3P9QQVM6T33 z_1_`AJP5| z6OP`BrV5i8Sg+9OIIH}ePpdUZ&*Ds*89Z+~q$ug2mGFe+I3@n>hx`JGeWiCD1M_)LpN`DtVaLR3aL}RkTJ|*B_m^kw1gfRC*QYDAdt`dP zeP|K6veicNXCmT`8$Slg2=`J;a}*0#l=tza2p1l73x#B685d%SxLg=i2ed9V>fvXx zla{W3jB85906mSex!X?a!r^n6;e`GY$R+$ypwn8j-u`7RkM-A-RW%cUOGd~f0K+1C zVO8y`v;7OD3qRu4I>orI(>Y(Bw=eyuW4c+|KzgnA+oJ#Hrkdi7opq49wZ}*Z){jN2 zkkE%zR#FQ!+Z!(Qjdmmu{cL;8N}daLUyuYIRKE9=RmeaE9Y!fJD8hmxXx@^>q8*Ao zXkKd*B!WQPZSAK-#i;jie z<-8U%rNTU|K)wp1FL0^~P6mZ!b2wGvm@w&jn!GTa@8i|wL9awr`_g&EI+Nl0=xcV9 zhx*`1*57$9&A7<#t$Ij3D3HS5>0RbRyEIX1G^|}n%X_4}P?f@m;)Av2oVt0K5yH?f zt4*9o1e7Ws_@FuSRf5!SjO_aNduji&H^3lqSacE&R4{d02km1EvSm|SoPW9;o2XO!$atbYr@?9f zy54=s`BsteI;veI({!$@uP7osR`FF?WDT7Jemgke5wmBT@z}Z{PxyxH6I5LJ@;+83 z00l44sv`|p9Q=4=mKzc4Lj%D#W6EpEBIEzn6!4C7A{MdS>uAj7*>i>p{WJ>cqZP5I zC6ek5w!&`;s1Xe_mRfIDGr13e19k?}R>pbNEQm^eU~F_vN&b&kpfFXoZ9>U@Z?nvKjzZ(6S6okB^bg5%l7#m?2M9iqEe%#{$ksC#}S#5+JD9IN+ z5NCl6D!^FgNjE(VN7)GIO^hQOYy$AJjuCLqjo%38MKeOlaF%(lptM`f2^$K;PEEgM zft2IIQ_Jx~3hJ?d1tle$a-tO!Wc`J&`Q%C2Qt|6H;3{W!6lgr>QedIM=Bp0f;W1oR z#^gS3+WXrn6a35x*=KC;7A@)a=V zHwAJ~>dGd%9BY+Mbg$z`1ZJ_a7Jo8gpq^`>7vT2@mvBSTqIO((aXwf}7<6Ztc_lki zye6Gn2C^U_c^T?{^hHc1SUe?F9Pv-V&r+ln6l(|sZ72K=);ElZ7-tl`4p4;Zi%a5(gaNP3T(i^1O+_qYBy_!si9 zCy2qj4mHfTUy2TL7n!~yKpQxmpwBU1g+_2K(;$RFH@;*R8JZZJUT z%1Y#=WuA|?D4pjjlJ(Z}zDjJY{m^p?F}m_>|1e#z_r2ahnwHXGN`kea(?|_o;p@BD zwLOGl8%L-tA}Lcrre(BfOcl1!VL?s?g&_HE7dr9JbiJYPM9`P5+xv0>f>!FZ-!`m; z{h{>OZY2L7S@#&DJNt$Uf3U_}W81cE+qP|UjcwbuZQHhO&+K{rd%vIFrp=u+Y0@iq z+Ft2-^mi7*xY}i@L%Gv6i&oLuf>WBiKtNY1bgR&7ibON(PbI5@tq9K^uI?+w+5h6I z%a&j(XDzXDhMvMmZII;NAs>Is$!4dFa-Zs*2KHAEfm&sX<-RNRtCZI(I#VI~6F8By ztjg+ri){c=Pn78Yhp~=nt;3d3NcF5m9{r|9J~igWv7V7gHOQn&Ljxmw1WpJCBDf$) z6-W-k_E89$wq{?OB5#fv=7*rt{$*t654nmSh$=K1&Ci)QHF7%bEkm)>Gnj8Hh-S>4 zoyws#XK9is(W*ks9~5REI#w2-)52%TW=cXGH&r>%C#UbQ-D6v`nNy00Vz!j!p;v+J z&}6KuR7bN|8i-n=WZ)s309AB0kvq}rfB98QVo#qPaiHyx@m~>WOBu~1L;lu8`kk|_ zxeER-#=6MQxUhaddIW8j86xF5W_wupAIG}nniMvhqP8CYi=PtP9vmO&F#e9hM8~D^ z(Aoe|tEKoiCN#Mpoh;0wgrhu|DVe)q#^!5}wQthD<+QEMlItT5mFBy9E4+uhfQe&z+f0 zQW*KvuUU81u47YYoG=|+zT?)RZhg{_N}bd!*u@s%_%X$)AbT2N-;9}_JKvn(8p?iH zRh~X|_?t+^{>50OQl&VXte+L!Ots845t!O;s+1clhQVDO&}0k{ViCtSME>dL%bb$6 zOL(r$>IWN8P0;}V#)N`cjBSBA79*@NzmAK+-%!>sH}4mT+4IUmo3n!S+`SvC4xdfx zT|bALIWYp$#pRUkx~vs#dYl`H%ouVop`J%uW=ULma*6p9s<%=-jDK;m-|TY|?~YV- z+74OYZvc=@gW{Afhd!C)X5`nOUCX#KyPDE~%A@F$HlLj$vUshsBY;Rx{5xaZBZ%qV z(8(nt+BQ2?*#4gb+!*KDs5BejB0gt5*%X%$%u-<~8loRo$5bZlL-|{AQ9o%4>>>AW zPfH~G9f@F`+NsebaO}{kTzSWBlIU^cF!A@jaUgrlz(jwkG6!>S zM+8IFy!oGi@J@YrMJFob#Fon9HOqcv-W~zWDCKBF!*((w1A~>SJmd}=lbqF zO?erJ7f_WdhP8KT^jARZ$`}@)-`wwk6?Ro!WTWITt0F_*j?|1i*wk-wa(MnfcXh8E zXNt)%4pV~|&4tCRLSOOg#^zr6b2#o7vr1Y|s5J*)D0OmkxiOn5T{jcbnH{&hNTqMEy$b!Jg~bZT}{-XT*0x`P(OS z8@l?Mr2uguE|ZCAxyp#8wkY5?@Mgon{^=rMYeHC+2LZ`lhfyIRvDu{CXz~Bt)!!IZ zSyZgJ=*hC_&FT5aF37Z2fYeLvRWOUj(%i4)Dm^%ATa+S@!6hV038&B8jEzyaYv?5P z{qHxLx)kGF;F$Lzk@hdYz*_4k=~rF-tu9}&oyAqlaMuiR!dw}wpkUKe!9dj^K`=E& zXlriv)-tW@M2K8a=^XwB^q}Sru$2=xpp_zu+|c3~#;7-ze_79HDn$eDUllF*7cOZ(imP z)bF1?;oDLg-6TKPJYnYQ6tQscTq0Ufo@t81aipnHSzubxc8dz#3gz;n8R|eu&q`ruQmNN-UjW(<@o}CmfqQr$>;a#)|2uL7{bd zTRM-$p>=&k)@)mLqgYFx`bW~ZrbmBJLf52d zxA19ECY8v@;;VCGeT$^M200A0j0(XpVAh8fHO7C~YNrp;W8s6fQ9h*(h6lL}<}5oY zbvb2GYN9I+Dx7oil26C@oc6~_CDSY**%+*?&+RqLvQ z!q?6Hf8hD!g4y*T?S6x^@u1KnMmX`pi_%h`t?d@5V^$4x$84kU zHqr5VHS^5DfCgjP+2^xtFxBao4Ah}}!@35qJ0mb4Ok&!r9nc?M%7$~C9i_cW$;2x*@F^}o>LjWHc)W+RGEzz=?-A#J~y431ZQCppi=to zG|oPtv?8-i2;{^>wk%Q3sLzb*3n`N!6JhONYNDG16OUTC@*~3!dOC z_J%>1mw}Rpq>qLTn?(I$@nELAL`Z%NW88n)O{K7ap}+{~!S_7;3<0HY)Zh@a7F@ap zg6Ct@aBjra^ys1c;se*bZ%mm|F<{tJznpw1BTKCt1gA|=w(}lVzwEqf;^+9cj9GetwZ zFU26VC%OZTB{?8b=5-{^sqBn~s;%49Iqrr(b~T^@5ywCl5?vULpg_gdG7}jpl^~!P zi)@|esO(|-5!S6rdUJ%2QhJJJ%gqm|`!T`NPXCL3VJ=iwEyJ>WDOzpxnefj&n}B6B zNfbBx6ZTFLmFzYIMx{3GY}^=Xp#SzC5H7M-YK&;fu+)By8qk(5wO_(esm3T+62jot zs)lL6a{D~dE#0T70^HpZrePgNiph>gbxr26dh7V+ zkR+$cUm9>|SmLAZXtUGF>WSRZ3?P3Fa?&%HmT>m8Cf3<|T9h^O?DYzgDY)E$d^bFm z0wr3vcn_fzh@b%>F;H%|$v_`(UZtXf91~$eARLBdt{i#|OWoVrvs&CTqPAE$if6S~ zqqPlDTH{|i`{)WpGeXz=CrcAshDt^FR7!d9;vvhD;8mvKz%h?5do{QX=5nNUrdeb* zbLAY3w#ScvGAi5nJqy;R6s=t7Oc;89c&JIBhZ8TmR1Sz~yID+H;r>CHcuiF?251~+o2^|tg7b{2fCvd>>ydM@a~ z_-r%uI4q$;=yr?Z3@J1!#CU_ckMY|dnJ$EVch~x%E&i0>9=#g((Ve*?~r+2Qr-XL`RqyLebQ@bUI} z|M#89;`@Dc1;?A{;`=Rtsv70>^=|*+=G)=>`hGO=G;r5>jmxwBTYdM-sO!dg+1MDF zQ6mnQ^6^-K3>K-vaszvNYV~=${k(s=2s!ZidfZzW895k0jJejqU76T;nn)=`7Hep6 zcyrUj)#cgj!Pz}JNcjacb#HBJa;kCTY=)fmQlEE@K^`Qlw0M2JzwTeXzG`=#!3G_E zKKJgPT)g<&j!#I>*KKuebQ4tI*UFMOeJ-D$H+k{E9QY}7qTymjF#mbJIeCA$d2jDT zSBlDKm74I~pFO#Id%gY}8Q|SrTW^8O!Pyvr%dvflnK_tH6?@C3LsV3m;JK-$s{pVrCD z+1kKH-`tAE&c+lF03N^t0`PxFKwSUt2jH^PSxw1$g{LzFg$M}{1Ogd^e=s+WfsY?T zz8&c=AcT1tI-ig*Uo4#%AmEt|XaeXNhJ?XsaGuHQ^65kO$W6pgw{OltYYbpWnzy#6 zHs!Q)wc`#g^O7>!8T;AaKl+{aU+30;@&a_r;5jf}{f|+eMd5i4hn0&sujw5Fw_$_- z+ze44tC3eAhRrQ}fq8#Wn9=aW)puZG+gBUv3qHNRwqG^HB*{l8$X;tI=#o_qq&-%3 zcx84^ml7eNJ5px6e2Xt{_Ze@ zY9OqKH!i)$6|e_)_|p?O@AE}}5IXPmW!h)RmzSQb-M1%GQ0~VkZ|~#fp$C=!+Y<4x z$LD@$_05)t|2qRR_NN%=u%~SI$CScO)bt2X4CdX%hm)OIsmANW$&9m$Cw3tND~pzONJZ4cBZI0_+OFfGN)c?q4iL1|3qINy4``z) zCT*9She%&i?L{!Ar>^YYR6}M`0f94(SOnyVg?8+;za_LvD?|ercbtC>=_kPec9TwU zR|@Tma#ge5!fu7oO`qlP3^mnY;ZVZ)LRF_ISzXR9CkrfW8>$oBzzJjYz(g99f`WNi z*a($mZ5QBaL%maodm*Xe>FX$}R05b<&>kC&psO{}EBe|&}86L*6|MyXM!Q_}kElY>x^l^W3Sbd6-`ao?2 z;k=nNLE;8B%yjJ0;ni{Hz1hk!c0CZTS==Z=M@O&f?2PO;REy~~p&^a-f}|d&;v&ps zimrgJ@%1Q>jf){gqVjgV045F~^P8h%;Amj*Z1Gf-FHzu~L7~($+R2nz`^gI1S2`aE z&7juGUe;?7^sik@12^n6>vExv!=I1UPEdELoqQo#XKK_MruKaA*DO)0lZ=+WX;k0) zlhr5BL~V~8#UqmO`Z>8WqbyK~Rh1-){RjyOSso?gG@cS;+2B7{xo3p1C~0~T7R`3K z_s(EFjoN7$h(wGVz`pJ4PwY%H5Fr^=%PwE49taqs=+&yi`YybA*oV5Rgzc`VW7=O0 z32${bni~jb zxrVVpV;~V}+={O!pYkw4W95cUj7~1N09_kb3IT^x^F$sO6;AR_{Hqbw@6PKN|{s!n{kS)-F+4C2!af;koZ zHk1o}c6_bP{*LG+Hn4(qa}u4H=gsUjGuld}Z=3=6wr9S+VcejVy)<*v{uMAHPw#cB zjZvt(IqdUZiElhy=4>)WG2Q5d;A(l>a5iBCA}b{~S<^v@cbv8MwVvL&qCC+gEHgBM zkRM|ry-Toq++SGAj^Oa3N{@CSVPD$72K+ZnJz#fhl}C)3*d5K#T|@yw04}f(kF9Ll zQ81*s0GR*6V*Z*4r9a!~$O4wJwN*t(ga5bbAq}W6^v8c78oa^`-NqSx#S%lvfgw|& z#g&WZZ>E7EPb2wtw>WJ1YOr1R=TjoFzSmki%-PPnD|P)pckUlQlL>7Z z@##Y(OTo8yLehPWdHyh#Jh=QHN;jFGlOq_TqBpW(^u#0giq|A%bW;o;xxjgmPWyJO zeY{A4dB7@-K_onn4kqD1 z#TLsnM+QE{53zL}nm70!7V_~{wtH-KRNFeh?u;}pd2)Fun^@OBha1YlN;3G-BgSO{ zyw^ED?9cx)d6~-kY}$}Giy&!;_>T;Q7PZXKI?S|1y0$>K52eXsGUekSra<>V*nw_l z0|KK%%8En7!iZ^UX~8nlAQQ78zLcKrhlhrkVLpLuD4a{uTg{g9G9Bod*C$N-I6uth zmPNiAF2-8$x&$?vXMJayLwD>{Ev!NnYk*~WyhC};XXhLdsK8B*(S)Yvg6I(z86z@# zPu?9Dp$@WwJ_!uGE$WdyF?~{C)j8{1ym|Gv?_pM~5E%7z1>Pnnx|0UIMYo?C^Yu&} zv=axL4w@~XUW5Ef!nRssdXDlvu(2|Al$Dv6z%y*Q0HNe!qN1j#8Z(*WHNc&%F88YT zif@P$BM)S1;E-Rel;g_}C?Z0k>aP3i)+6qc=LDq^M_?Y%U!p^hHJNZC8MFo#=vdA- zYRU5Zhy=cWKjCLPz7G!{z4)ZZ#Ub7dR(mOYvTyWReLgGu2qgJ3Z5N+7h=w-nXIe5J z2oT1pcI9*rONX`Q~N_eB!vV*?wibo+0ygkBCUmWY+v7 zfuWcxh=o{&ASLjX)olK}gqpeGfK9u_=Mnjm_(xF0x>K*=K*Tq&8oV?8=SVh4a>OXd z>%NoKW6{h4cOnbS0yl3`f>gd}_ya(J%!i$8`)xgtZly`7N4tv)WT4ro~nBt#Nl6<5q)P-Ogx+WF~%!!(a$snHHxP&G1DK4i>pBRM6g0R zv8kuNzP_t&?iM(4Psy>C7IH@7d+awaoF-}SqR#pO5nBAI)*GSJKQH>3HXoAVG23s1 z%soeUM?o%vM~a?^d%>4K<=O+yY)I(h_5J|*Rj!y6yJfMG=v_oYZ1uTJPOiBw>UdB1 zN}-%X_DGoAPI6nJmX*}NrvFY{>%dNe$#yJs8=G5h&aSwv0Jq(PFQxQj>9m%Mt91|9 zipa9o#xxHaN;LS@+(KQt$Zp!KFy?QBXFsluEwYC~>4b(yi(hRh;vRHqKnhiku5ei6 zd2Wuy^jcO+zRXL&Q^4H1MFoSs1!7r|Z{v*rR!%*Xm&TytuL>DirIFwq=Lb455UHEi zM9#WV!KP0`r>mGYrNN0hMTefrsX*49>N`$djwK0+np~1(=}1;?d}=~Ppdrkgb~3Eg zlOpJ5^YD1;{*3M};JAMR6W6*?)3!8g6iA>NWon*JxsJ*qRsbF4X^FT*`E45}+k4rO ze%}67d%cPNsV=YB{f=+MiMpDcfFdf`7v)5dJF@ERptFLXstLc^afxfp@cD`>}drqRN^u$-Qied`&Z~Jl0Ab+B*VDec9ry zOPQ|hZ7~6P;$)LVSc)BjsQ4)qq=z7WQFm$+U@ocfk_&B3n4sV1EC`9Qst$*#YT-BX-(5r=E%x32f2i#)c~4sP)E zw#|SceJMYR1;c2n_B92cGqhNC?vdNxGy#(Jpmmfohc@10ETIqJut8CF0eJNAAZ#>4 zAuPz`3z`xlMGmar4|3ft|A~-$q-%ec`uL0MO47M2M@K<`ghm&ueV#S!xp4u6*U#6s zN4fMFr>Y{p@cFNJ?Tf||1qFGVTP6rSCD9`Qb0t~7uN)sVx1m0#l!j5w{r7k0oO_e{ zd^^jaONag=0Fk*L-)4WZ7)MnbQcsn&R6GLW=KkV^h@>82Cpar9+(R|fD~j)E zRu-kKy!#Jru&p|g@sPjC?p^kk7|rI@_5;V@hiejGLC2R9ZzMu!?;QF`g|gDakpMy{ zXsXA3f`vvCj7r$}4t~{-tSOwd?f9)Q8vv%aeuktOz|DTCV62QIUmb`DZ8ddXcZ4+x z>%w00rB@P!z3TdIWci9`rzB@FRZ2fwLB_G2Z}jt3T{=^eyrYvn&m9Uh#Pk{CA8@%BPVi69)6EfKhyJ;GwE8^y1&;s`3 zO~)P$O>`H+x4ZMRfBWUh+z*|uJw9EUeE27=jd}EvGZPB|$s)vuW-A{N&x*p_B;5P; zLn?MI?LwIom0tBx7YEV0k#h~+5%=t6ce2j6v5*3bV4u3dYY-$D0FR<;b~ERJFfu{*Q(I`<B*V+z;}1mw)NhpOe`#}ic~pAc5^0`e=&4lJ2XmMyr2Xt{a<0wZ0;eV> zE|$6d^mvH)*=TXS-k>4x-iHCUkCGjOwV#%2Wb+NBZ=j64T*{7`S$EoVq1abslQYX8 zx|~_$j#QyvbQ-Fv?JB)g9t+E&OG+v)aRL&790m?2@_d$-!-1#u4>>jnb8m^poU2## ztO-Qc#Z5&4zdpcMl*SM%9OpVY6ZI4*d2pvnM_Ev>aq_h~;>uhp?F!j3(m%J{w!h3{zjT+}sF!AlBAc{G)t-JId-Lvu?+kNA?$ zmxdP2VTKTEQN86KvNdovYkBa>-q^4V9&>;$m&C|P;{zk`ov`G9j;`fqp~_ExwAv9W zB=+IQniG277>Hg(1vbqBLg4sGxRHI~H5T;b*!8?Q$oJ<_&5+986t}gtfy@D5{h({f zD?boJyvbtl6K15ye&@^opmyzrn40HZ1PE5{eNIJqxtynkA9wn8XQ1yA|91HSF$1vG z7+&bi(>3xT+~`unF=*IsJbv`ZLJ)72y1vvA1VrKez0_dj@1p-PxmYJ9Ca!Y%d~(cy z;nBHUA>028WuT1NEWY%XbQXD)pwesY7_TL7zWwnZmbLQ49#8eU&fB1p+q3LC#$eR+ zwp}r!k2t_=bOQ8&|2uwY8>UO*OL=a)^EV^LUkP|sj9oTRLH0y{gYTV!I$lm@8^Jq} z=VKm8%h)j*upYH>^n^-Ia?$1;?K|gX1`G_$)fyugp3%WI=^0{#^`50$NpktAZnT+@ z9UcAvx%z@or)g6u{f~*z9LVoo_V4h``<(yI&EA!9_UU}8;&y_$m6)R?^BXP$q*;D0ytUqn{a|34i!|iv3z{0w^@PPv|z0Vs7DAXm>Oq5(i)A(?LoreMF%|dDbKFIzdjz zI!t`C#Mi^YqJH{$4Iq$InEN$=&;;O(`~s5bqDJFu+9h0q+TLuzXTIK?Y9RbnyN4VP z-9F0oSj^tyS+~BX`Gpi(RMq)$t~Kg_`J%V^@Kb!5P;H$0nA;Q#(lm67Px!jgkp)OC zy+>L;Zk)OtW=ne?OCQyHuRoO}PyZmx&cGzwZ<8AJ3M?o;>Y)z~D`!N@fr!zyPrr$7 z6+W+HcE7nCY3wQm&qejI$fs&1_9ITOid@kBXiOTcN<^uV~m96GoF7d#kDxtjrVt%_rj~30y(-bB`y+~-ZUR2|> z1P!oRQ?tMFW@3b}6=@ZgFBOQc{TSOc_>PJnZslK8!n=(H;9+s`wnKI+69Xr8<<1-3Fvz^nsXJY8 z#99EzD+jA*z_~Y{DeQ5AHhD}BJe#ml_>8YH_mBf?<^Mx$rD(nv zh@BjQ=V9ufFZ$g(+LS+%XtZz%_ec@TU%KRNd0nY;Qqk;4Iq@Xn`4x z(~Y&lDDrW^-xY5{7`I@8_&l!EFYX{QJ^1iT778!!BgWoeaZb)MtgFlH;!QCMtWPR% zh%F0croD~I>7B#_Rk_fuSPXXch_b zEaEkdjkm?}39*mkinYw`0=#^x*eVnV-j;U!qKy&oUlgkZeloN;jY=E@sfw}Q-ls<`YG*0uP$daPu3c4m;d_a$E@ zX&P@xfOK&#?A#31#so3wz1!)Usx9}WV#(&rpwU)>HPwL=#h9GW7X-kwVewWFagfN_ zEQrz-l~UrtfeRk4DEtKgk?7tU@A8#ucRwjaZqW0 zXf!Luc1`2-Vm_m|HAN_-Nw|42@bul{S@P}VC)!%kR+M|hqw@U@YKV^K4N3oepk3|| zK{$c6G{zjc)$*Cz)rOjTD8MP zvb|0y$R5V)@(xZS>S~qJm)3@6W~mo|jmk0T(Cxd_+BRBuFX}5-;=0%5m?HSnhwyVb zF8CmeNs(d_3UQRB$DTvFovogZ)S>B5pM1F~`ldI_YZ#fdOYWv=xs~JV0$?xz z!aW1H?uFv2G0g1&LW%~$EgH{QYuA3(VI8^(rm}D|UhZEvV`Mqhe?nMg9)w=b2{gBy z-n%c~7B}Ix1+cu91OBRwftyq4Vb*;XkctI36h^QV`tcKvcnL)riuK7rxZJEpL(d@gLy^FcULV;c@S2BsYSiIv0K(t>8C z8Y&bP^6bj%bhk&tQ^UxXh=Rt8Vvs}Yok(t}FS&SB%Z1w-R(aMcpY2TpK+o_&F{u9wgP!mPD12*|0Dpzg>lvspauT( z_DY}Wove>YS_c4KWY4B?z~t$SdSeR>eOBFRzv}T&j}C%O4+aHRY*XQnp!Jz{*Dx_% z`t_vGet*0_^RcRsj%7z9H5=?(sNbowbqV({i4Eok9OjtnJQWA ziG}N)do(j$EP{;JzK{m#L@STyYZoPIg%Kt>vCMszcZPC=_3<|u@)T9+kl$xxRu}+K zPt2cj>trtWVZX>*Xk>mx_b z|LqL)t#YDs`o3{DNUspwZEbMj>Tb@eJZ}7B#}C>CA8jpB6IO&uB1@`dVq$mJYyXC? zI^3Xg<$BDkZDv6nH4HT@VG7tUn;j=Ain$4zm<*)9kjhdRqRcH)gxcviHIS^RF=9mc z=1ClTPeViV*C5O%c9JK@34ctyBepc>w+;39-QcpDHTuo{Ow|B6J{zA_OCN%0M5~Fj zEEt#1Pd3?eaD+vI89J%tf(a!7XO_b={7AJ97 z1!>wBd~+%}cwoSrbIw?#thx!lfF^YCbRnlf+as-UQl@0@VKg<7 z86G{)aH}I378iy_XUSYopS~D1Z@w_w+si{F8O~bZReA-ze1B(yZ9;p#5B~8>D4iVd zj*9h{DV7-cynh;pM*z<@lG+LhH^&-i7HTxHf;&SIAcf*Fg5;z9Q>|x8T1R_n*C2LP zEYW2zFzVe!(9f$Jxe|Qr^@12df!C<;h3+4tB9;(ehkMYEYEGnmF5`tzuelq(LLNbH zM_VzFZc$UEX)AQX+S}H8(z4vKjtoTK2f@2)TUgY~d_XTX>9J+#uhU0C`3Bcd0_-FN zVtZa08lyfHy-Vqd*4kxW)(hr5bD&i$t*gcp;0MR`6#;w&ieGir$(-j1xOx~ii|sYA@D17)G!zfp{p6#Q+Mj(4oqYG?7d9_( zA*(D&Z~pb2Li){;dSa7c^h_fQ`r_mTrzfsQpQb;3)iQ7ojQ-cXL3p{F-e_vL_fC=^ z?a`XaOo^6t7-I&6-Saq2SaIg**f{AvEh-#;w!^zBy?h*pQ7>}?^Mk|}hj$CFM{m5c z_LP3=^Vm0osJAH7A-X6=5gVJ?<_pd9{=rA5JMPc@H9MX8Q?c6u6I{)_BLM`JFw~^c zvGkO4iNNsH<=oLSm!fGqD_OhCU4_* zbu;ReQ=@{h$JF>E89$SOTSz@pRzX6~CwcwRU)@aCC*FJI8Mb5KfI6ONz3B@+lO9Fl zm)$M?sTEMm#+z@(Jqdj~lFQo&Eb2ODt?Q;B=K=!hb$3J#b`=t~HkJ!!JM-C&x&)xe zBnz>s&S@AV$8{?6K3B_@2AoKl70d%v%?AeHWSBW{sp%o|9Z#`{f>;9KKZ?;aI$xX* zTAKMG?e8GCqp1PoVm-kk-%WVW zoM-UPR!Cx|C^9Ct)7N?9e=m+d2B#`_Om9lB|D&Z0248 z7*N!azsz&3N(v+h#8K&aQWc+{-Yfx)YxxG9eRij1H9!WabSOjE?FF*>NAn;p4Q}54 zsMe+T6Ha{uti%BY7TiJH5=4)z?s_AXS#&1M2`?%m=Y^AMt5$8ezx_F##K};XI;=F{ z7O4OtV53H2kT!8$A|Wu}TynX+Zg}N|noP%_3zX@d!%w$io7>1a5a$=r;pOf;TV?qw zzr38QO`o_T6+)r`*LK(;af$U`XLQaj7w9vb(%-gj&P#A5DjaW^EkCdUeYcbf@?$Tm zZBxF~Nv=(C#Nr7bhVUEPN^3tR2=obB_n#%CV}FyZ)a9aAY-v+(muoABMI0kfoiu5= zSU;Dx7%dWpGvfv!`0$0emXJ1~fV8Y&7|E$pu2^%#=cJ=1a_#;hX$wnFx5iWlFk#nf z#ea65>sSw@Ji~?SqUzMYvQu#~t>L8|(OO}s^{6=<&SmvC^!8*S1-@m71&-n&k!yVi z1J&c{c_tNeDsEAoH?9}o;e69o&+1KY@|p?6kknG^Jm=C7hELG-0hDfJR9b~IThPWQ zlL4@-BF^5d4yWz-?e3F7Js;my;*ngq_WjK~BjY;ekrtrU@5n53vPaPZZ6z}_Dzjt` zx$~qtPAmZS!BB_8!!hY#*(Rt{F;&yL#iU^Kg1ROIjNQD9LZRQF;(DVo&s-NaSzAh` z&$6*MV>7Vb{wEU=g`sJ-nH3~}JD3dicwaZ(G%f+uv!$cD)@-@zB=M7_Wr%+FSO9c~ zpVb!}T!FPHf{yd_!#?oCj`w>Kw3IF0ymI-ROg8*gUT@78IFX(%_J?(1WfI@IxV)KZ zM#S7r6(`BbB6y1-(?}tn&=_JigDFg0Y?Q89xn_9#mc*@jdb(!)6In! z^-7`lj0*DGHAlO9$b{?u?fH!V5hu}b&u%{pk_X3GP@cg6n(JOpD-_m?b z7gxwf16A3HP86LzOY)K(F86wxwN~9TOZU9rz)KTV)-F*kL>4M{>>o~g@v)u;2V{xJ zkdqE7h&)!NZkPVP$e^?u{bT*2qbo+vG-rlJ%wZHfnpf|%H)eofgpNE~y3~$A|HN%- z1-Zxyc)WZkr$~c2o&{-@&27n%LmGrAt(nPS?-~~RhgQ(ofn`!dWv12F0U;|6?))*n zphA29?9=N-l4NghX-4s}OD7~$Ra)q>N9Xsamm1nc^pzM-^RREU-zRQ%tF@GpT)t3{ zw%Is0akD@%QK#y+ezwTtZwt7IARS>|sn}=r(1ARaO#TnngnRdd4CWRi1KN0fw zoF`MtBR=24qN7ukv4^mq8L-b%LEg0GDDBOS@7yOalG2vq(S$T+U%J>oFiL-TTQ9gL z4&72~wLJ%SbTThvj!+gC?#wv<#V0xNIYw*?{qaTTlF|##M#muVtZbR_$hIZCPEX(^ zSSQLL+*@t{k@93NlYDft)!$Y!!~rYwHj$#6Vcun)X8#^|Q=Z4mv9o%KAK*B(L27{Q zb=M+L!p6UbrlqmY9(KFBu8(|JK}#&J5zHYA>_JXp}g zz0 zK#9354fNb-aa(Ti_JW{`!sFzGSzFVbgDa_PbvAFyqTmV|6Wyz)E0h?V2}Sb#NG*|#tI3xM~i!gE~BaYPI<^9i!saQOO0 z*kuO^kPeu{5p?NARhEjV?p8s@fA>ww-3D9r0m#f6tV*W#F|C=EhWPHmK@ZQVUn>cM zDE5Ar-TQH3_!5ev)t?{l)K;HEAq7PV(AMdpb@RYcFC4Dg($sILFMoj$a|-R;wn=_c z-4o%up8L1|&R8#H$nm9qU}hO8se~TuhJOEm(c*1+5jLu=(jF-&%+#OoRCoz(U(<9+ z${R`3eNJ~J#x=Y+-$X>TX2UT2+`|odKo+7f0EL{_@k)`*(JzN1qSy?C{($?Bm`?UM zWezC`^&1+p&df$ra=DHHc4w$kuTCAK21P3x$;~VEa$t?8 zhcT`Jv#6m~e*#>BW^0>kd(F;01>32upc(cKNea46PI>Bnyw!pd0E0a6*~GM@u0z(k zSScE-8$t-8^e%235`SM43h;X*T*&|nosW-kVMRmVR-0L{)krvWIO+p%IoI3gn9eB! z^*G6k2Y=x!tXC85s~L&8waVd9-h} zGvy;TwFJncgQVeWaoKD3DV3J1$RYg~BOuBvXh_Es3Jk%$ki$QWBrUg~i(}mGcx%~B z*FeUSuila7C!1LgWr5m-kiAaWDTA(J5T^ecaM)n47QhX%orIwHL;>-P&IsO2NJ()K zQsy)D;?S z4RrTkT&P=qi1O2EuTGP1AXw)KhES;Ga36t53;dr+P$!h7m3` zx+09TkEa||1oYFr`xocXEWd_5BI9I-K7|S^2W>%Fk8d)e5EyJG?PyFaFPILS;*5Z;~0PpZpbXJyiI;63t;mF|Re zeFPTB2VR}Tz-7`pu&T!LT#{k^EP4aFL24HHQDoJ{INtj@99JEGopjIaILH4O-pDc0rcM zvhzNc!;#-=txjDRcN%2MabF%-Bd@HI0poUp3ZdlT+T<_Z=Pmd>pzIa=_Ui#;xQok?ijWS=$R zjTQ1uuQ5Elx#&qB%>ofmJgm-s>fD5+HOZWt=woXScLv%}ZZ&oJt-SOo%Bav#p(s*G z!W!wy;w>Q>RMW{)O@Tdd{q8CILUFAX6bDWEPs;T}&;99Iujm(sWsAZTRsM^e|4?En zzhTjm(o%eGsJzzcEFpT%;k5k2(dL?rkNs7ZUs+ih^+$uhVS~9{Do^py9IZ`gPmsFD zkZ+{qjIJHcu2-Qy;YaY_orZXv{qmz{r^OG-`(86sOQNS)eR=CTa$DqGia1I`$9IcH zCiJ)rHiqf$;F;2f$t68_wbrDmgqdJ+XGuW#^6C{4Y+o=}nz49+WP`j2L$d#nRiD+Y_B09S=KPR`)JGrq zCPNUxk9)@rTnk}8z!8PJA&KP^vTP^rv-c|V)g{#YW>99N?RwveG#)D@vSAkL8xMJmoG_K8eH2|K7z7mKJ_rTR7V z&?>G=XBRL7*_U-bPXU(wUYKoqBa^|)+me{q$*bh4uGAI4p~c$sqWp=nMc^>uw;C`n ze}oMKC^ZxoMj}~%CegYhL*MBxL}(Q@#4Eh65NZEBVLbXDj(NMuoWhC%lVR38pk|Zx zAnUdjK_lLFgDOq6e5~pef(|~TV3qJ8lrFu-sS{4Q42m?;9NpcJcUVl!I_pb1u`OO{ zo}bqnc8uq7k?0J&05^0D2u>6?hbXvaXS16XMX@ZQjgNdvc}w+-U>lECgV%;hsVelC zXnho1aZ358+37x4hOXvK2Qwl89;PvBmJ@0;CEMNuZoLoyWJMV&1Ew&ai69MR@nDCL z^7mKs0@2q|lGExRpou)sU5u#M5+29g3g^Q~mu3r%m&0Sx5eJ{d9lw#{-2n!TJh?2z z4>I#OaNB}|4t<}>sSFKhg!OHuXe~?NbM>6U2l2Y@ikhjhOCRQR^ z+tm>w1BE?;h74nyva({jmEtc6iTqskc4yLVFSO@om6ROUZbKQoGN>+8Tcqjon`v>v zEsO2CN*7`G+40Kfr_D_TQrsD40)UFKO~X_$ z-H_nj;<%cK*UKHBVm5Yt)*eFme!pyD@P}7`d+~ELEXOXjD#R-o>>?fVZl3g=I3Fb* z9UNqO*uGD+DZYA0XaR}k`1r?@gVLPFD?e2ii#34W7CMBeKM zBqYXRgbW&ThE$u7dg}JPRe)q_K^crnyE5-I)1QSpm?4M=w;t0^xQ7#%xmlbTJqFzZqArDW($El3|4Vdif32qg0^-Rp5T;T2*ES!0UX*hj`?p!`g-@GP5fT{A=Vc1y;Z{sCoyt z{3_J#*>GnybB!at^pgh!jwh0{TrYUTBU>UW^-4rL2E_{8TIWIF9iZMO_GnpZ=#SoX zp@;o|8l>>>O8YmKj0t8y^0Z{G^!;GiULeHv4B%TiTsX}J%Uyu0kaTViu`OR3^5l$n zzY5cEAeh?6EKnxq)^wT!1B303DWB#C_{F81a$93P)nE#_mlRLz5OuEQcAJtN-eRh_ zZPDJ_tG9wD5zt!!^0-ZV=S>?GesRHr%N~0N?r8YWhPuI|19aRX&w^58@bAbh4qc|{ z<~t0J&-lJU$Hv-N?dzu1c+|Cll1MM!y%o7Y@MaiFNJYQD*`mhCXusZOkQmsPokF19d z{YTrTevvE~&bQaF1eI?x%xa1Xjr2)erJ3I}Xs9TB=cxQO-_p?T8G*JgE9>qQ*@xg({0PpB+O(zIWp>RFhS}RLyzTW^(q!`0!vE0% zaLEyy3dq9N(CX`iA%>srosIK#sU9WG+*Fm@WAQT!71*>MQ?xNqNH+at%1?K(>G4ys zXrit$NnyAARJ@OluF#yv=l(Su2)$6_Q zD12S=N$0bMsukMF63*w0(KdVdJ)=eR-cDCnU*6oD^Sk?Hc%?A>Rt^0S#4cpfDabk_C=fk1lp^;LUS8dQ zvnXJnV@d+Qk6u&4a3h8PbWKP5M3Njs7`@i=1mIw(|4k`+X&=`;;)=f6}lysj7^vBitlLRDKoeb8M{ljh1?(QB~B#b7AMo*HZ#_N>V@k zQ~Ky%a7l30nWc4Dwlt47;)5|UG+w-1M~^zQlT}bNGyUnBxuwSU|8h#j*&%!hyG>kN zQ?;qAZ?9my8g?!gy3Mx45e4QUz2@n?zK|?5wXmS$U_SN=g_&>SvRse+e!>Hcclw`Z zDuViOZ3X1~KTMn{6O_mf=`pt1+p)$}z-(o&dSeorovGobdSJs|)hqbhUgLBM6;dX?vCe)xLV+sRZ59dx zx4*wX=aH@QkYFAYaU_>JUJg`bduk07uiq|iHJY}LMMXaOK-G`s1%p^#en~tZ9#f4B z^-Y@w(LjqXW5EnE8P1$RB=Z$gqw>G%PLn)p*iQyoVH@P^I@^#M0}s>;mXjI2#o1*C zG@>16LWj_Y{e6I7TIu#NSM7E#`>EgdM(cTg6o{3TKB9!#x7$JIApY+G!ieN@>|(j+ zvFm-+>fpfQ)jG&7<~&CJJhX_$6|U1w?_b+(b=Cs;>!$mljf0NrP_SKB#bR}a=R%pO zhTM7tknXoaA|ib~ACII&n|#UfvDK@!)R;NZyr->Yftu~k>LBZU$DTK?&$-20K2Au5 zgaY%4)_#DbB;xR%fAw0*-WL!_q*YbL=J{H5_x7eq4tr^vo3r-kE<1Yf?KqWx#?bC()3Z^oxRKDC69s9bFVA=V0Xz?Ltkjds;8q|wuMj2$onfJSV4CbU@9c*G9UDB5_NAzZC#0z>N|w%j`6q|V zqQx$zVzC&f4jZi z6ZoIeOyr=91zH(YPzgsRa#I$HUc?-fOiwJY-&fP4S;jbykPffg(x!W@DYTlixe}f>24^dFe7LlCn z6|}ixy(kjQ*vT<;srZ|A$jKm%`+t6XWUI0rXMWS1eE+#M)20>b;nv*B?59B!Oe8_{ zdy8?!u~*(p9#zsM%qQqBb6rQyu{_R<4^yeCPo;iP!BRszsh-M;-tIu}k7f&z+P69u zK&5n*kL4NP^CuGxyvWrb(3gI^V;^Tk=bmd9`RNrxGmt#&KE_D1b7rF5F-c+*FR=gJ zzAaCim&;Xoqrq9$*4E+Gt}n(9%Y{8i{8Mt{EY;O#*4E4y6<&77%;{BZVfv?z>u5WD zd#NJXiXh zHzfb4#GjPC>)YBbqF>0uM(^QvWF^n{*FlQIg}eN}9v{aXU0)O(NXA?L42!$U5G-k4 zoC;d*bLD^PaB|&OH-bPdc&z67aduI^>`L?z#0;N3C?*}iN7u}U;`3ipifg?4DmZwS zjryIkBFnW-&jMjX0geX|G$hCS`%v{%7azYJYHRyyG22;0{ko<5NKzI*g^1G2^99kE zVp|kH)guN41J^%440EU37~i=!Hopoj*sBqinpOzrvaf9WedO-(BjLuD`R0R@{_{73 z^!!+&_A|_HP((zkf7cq`ha@I-t&i)UG#z5E5u%9r zwu_SA8fOlB_55ih%`$DmNx`R0f)qb4_j$H3pzKOM{xY_@DR{`Qb}a1KuUD@ee_lqm zC?BwvouokC6KKsQNN1Kfe#*x%#;M%8#n|89-|lgiO6h?DKazap;@Vcm&rA|B&HjK& z>#DZ))d}5$O+T8t(;qXy{>{&!5rgO90$f)SmqoV(!qJ(kj}9HT;{Asg1r8`)xz82$ z#fG7`WRERoCI0z$trt<;1L-0)g@XDvP1xs_-+1|cdomRX&mvd1ceytx(s2r0hQj;& z&e6ci`z~(4$~Q^K`$G>pb#CRhhDX_=Y;(-zPltXew;EF`O)M0P)?71pCYrF3@wHjJ%n3mtYHAdHN zZDDuMPnu%&#T6~1nH8-`$ny4Xea|z#7tUAM5SibPufXFPO~GJWTGod*ma_%}K5X^fx8kTWx@3M8 zggov(rCxbb$dIGneLp9kq2*da*UiI3`}9nTt1RC)zjvWHU#46Lq!-Pu2>)BJTU->P@-&%NC~ynN`DK&HgR#INVN!l;zSY3`sBj(NG3d6=A( zkg%&;JAH&{2x*;m{`|A9@%67DYa&Y7ayERO_OL$9_Kvy5?1j@*zYnHxKO9J_MK8`) zeQfJ<+3(Dt#(Q2kq&mEkrABH(!QY$Kr()G_% zmu6Tqg>0%T9@-gM_poX{PIr7vlR@!SuH#;)0*QqnQpGV4*MI*_-^{OHqq(!)>?{y! zuJZgNNb0Acp?Qu3Q3pkxsa>Q-6*OR($W;dwJ!`YH zLwu)z_Iaog!$(H}2lv5<6UvT32;+Dov7p&qi(CUvOgs}87l-J$QKSJ0G59pq>uj3C zv007dmT^&8o#*hAMl4s;lU?zv8uv%Pc`hlOQg2wZnh3tIhr6!Hb7^voP=pN;CK^wibniP`m)y#0 zw$^TT6tZt|d*JyWexE0G(vyov!+6JRI67QXs;2i2mMJKWg{M_m=RtgR~nZ zTs37TrVt2e*71kuC%tKUoD@s~ z_Z>2^*pup+*HF>KoHsfxj zzIP`ftN2z8kH==No0KfuZ{IUk@V#(f!MA>@zISnDC9`*MS#1uzeC}Z+n)_M_QR5)8 zpWe_Ma%tP3x5p3Ogm=5BCg%4Pr^t}c9XD}=+xsRgMrVz>j;wE4#_5p|ko0~gBM(2p zPp%fRo$NLH%YXUZQZ=(hv9V2@e}?&?_AGA~^+>uSaP1Z1Rfe8_WkHS!#O#+Tnqi%J z?{Jr!H>>yPIa2$U#Ub>%&6CjY4eg#D9uNrdUvhljtiNr8W%GxC4<9&VO|&OeR1sC%WFM@o*-@R`>_I!VQ zWZrd`$7U)jDiml;Ui7}PO-iJ!yswjkcn#BXmKVx12=V~^HLx{)@;S?a#Ceso`Ct`h z+%^+fUzEDY9(A2AsG|+>V|mW^g5}3K3ST~)U5WGj?^DLImlIhyxwzVfhC*Jl+JF75 zBALd+<=&3|u#5V?$a?R1D&sbO{65FtTlS6ynMu|`vQi-;BvQx-70EismW+%-3K_}H z&L%q*WlLs-$jWvczw6ZVJm25<_5G`f`~KXY`*Xdo_qdKs=;cDBx=QsA0nt;5rVJD) z4<$wD{b!PPkkD{4*(R9saiGu{@)s}K$=X#G1@fmQjTwEOz(R>02?h*=8u*i!mD>41 ztvjW1P8hwiM7W#(Gu^+XCaF>E5JFfA+j#4>nz4RYo{Tg+DWJwO+wHuh?i$ZK%5`!$ z7xkG*>Z~NGP+afwerW}_heSvkijqpbj5Q%;oX63kE`^wo967mqm@=@JnHdS4>gX`E zzU91)B#swvXUWJvzPS+b$h9NLBfq*5_x&tRr*bJ$g!BeMB_sQUM>!ors-7U<>gj{} zb*kXZmHG0wjXgAowqJ2e?dt4X|9$UB&qA+c;MX5wX#OGnZ08sB4yWbaCJ3f(@3CC) zVwrn7=Tzd#)r8dYI=`ZIV78Iax9@dGlXrS<&x9{5O#N|r09SymyG2oy+Uxzovl zM6!UAPlu~}P+zm|d+r>u$RRP0qN`gOr|`1#k*y%hVyhnwxZ@NhibVniWX^t~Mtq<4 zO&!tf{`C75^{;RyvsV_3tvX!~JhERcAC{Cudh34y+|50e+`J`~uVQzMfH=peMld#& zdI$%YixyQqw_N(7KRqeX%dJ^|pM_MAr>qCVq>oUB?Y+tTVTv?8#QNr9GwvE}a;7`K zXjn;AVoSXvex=R;tWD)iN2yS|k58QG9lMfGCKx$t^8UOpRiHqBTs#`Nwv;v!De{s{ zyy^Gi8mf1YKRs*F^}7GHbAq^sG|(DRYA7r%pXLdHT@V$C7_U}Goiq_ljy&_h`RXdK zL5;4G$1mDVUavL*7u4yh_3VekDD=eaH8@!}7>a}H->7|#wa0H%Syvr`g2hbgZA*6K z*Z6&P%FNtqwij1BpmhX*v=<-{@%ouhOy1pdu&>(qt&J;h zXS{RfjiUQ-Cxe9KLE3>Z_n?h;pz47afbWhi{}o20b^ebj_v0hQl#^v1<+?-k68os( z;ig{?o&eGz+aZ|?eaeO^=j%Qm9rt%j8)#ghM0|TSW@he?sIz|VXYCryR(vo0bl%#- zBm15&VmM*Cro1tJJ~MjCja6@ko}|9nkPUUhG=`LsqJ>9Me=7?-w@$sGkhf^bg`{f}i#1(~KbYA^d-;=h9{!+!}D>z<;t z)1bJ*i%(g5DHUrJ|3N0O$v%GWBf&*+eQ?>15U%E_4<&Xwl;;v%f}+^D+_E$S4(iA z1v2Sb3s+f?)yBL=A*JZOi|X~J?FECIz`CFl8N#)oEmh9PeI#7S(R2`nOV~)PB0Ewj zXVY;{VUa4I?fQ9D>zVgR`psF-0inc70zzHt(Q@2C#KN8wiz~2X?h6zMzO?j*0{5b@ zHoFPq-eec4dV}C$zc8#;oo)r?^@QmyBb7~P?1FJns{i(1Nhp<8#QYKJ?~?eGUO+fh z7@ncALV-_hNo*ey3o`Mvo?Dh~CM6kKH!8SNCiKhFSKCT&XP9%9;w_(~g|-In^VF%= zx$8TRrc`~GDHzmQ_oml(WFt?9id&RjFHUwco`a>#-q0X?c%pFu1_; zyDN^YN*3A#L@O(|`h2|V!HZhYnb*sj%p+IoNuvAnQKg41PMI4F72UIPkvaqaP53Gr z3Gzk51}GkK8r=vH2>)Q?jl%8XsVbyMlm$GnI5pQSQp}6A`hVpq8<%#TwYPLvK$w7x zMI<}`Dp4|~=AEm?z~&Cg=O2XFT;3q{V!$Ie-n34zEPOkKW7 zp>qhot#%m&GR#eE5On&NxcoSlcal&UaUVl1DTmkRLcfoqZw!^V<5APGN;C}D-o4PP zK46-lQm(mm9Oq@be?4}|S@`ie0&+)P<+Qq}2ehm!p}|8%bg%l^)d)zgHND{p?kO@k zW)x+h4*Ml)B=bG<(G@Wx&2w0!o>7x2Q0jUXnPv*zAhZ$!;YWRtNDt_YpY*6PglMdI zDH~a+ojtoVtbtp6CjS(pCSHnV`jR(>U4+DVr{)TS!$t!axC*F#;h5F6Ec!pGCDKHl zW0%kjv41r^YtN>g=DQXa-n>w!w?<(QSz>Xolt~m_U|Butwm_}U*xqW4R{Nle4STUf z5o~v4m12_Q&LCQVGDGgYBs<jiOaCzySr4e2%+IwZqqgT zYbRgcAoo7Ps$pv@42ErB+?4nVEDCERCbJIYc1T2`c8=XGjr!YJ6$Cx3Tn9FSv5yh~ z(Qj8#kD9uXF+ijl9g*PK7d}GF}s*|Q-kul!mrcAGl11z*3{fF&eljjb;Lxh zHBVr&X9BwXfdP{|Qj|nHx!y>PrVGkl6S1u#iwu!IBvaVF`vU4i`+19aj)ha~T1=>N zzs97dJHW%Sa!zJPJhk0l7d62m@U^88!u51aWh8dgIwq+3S6R-Yc>l&*AGD|fJ9$D6 zA|D9hSGgG8jQhIQsqcfDXWB1)uok-H+bxD6u9nI{zuf$ zNb1$+@3&LGx}vN4__@^MBTD@4H@Bh`>ARP-QzfTOn_7ck+t%u3=8=lTL@5v`R&^d> z)B;Zm{IMn35Kwt!^^brO3N_-K|8p_e5KY7PJ0I20F?slmV#n@$)Mzd>ej@$9jjY;L zsV^1JxVg116RrWDQdwE4p9W7#w5b=}^t~&-<>jA}htSZv zhu@i}NMA5UJ@rVe5;5+{j|=qnJh66}44NuU6rlq7%tD@!@dVQZfYQK{N6aG8T1AR5 ztd`w+Ja<5pOyK-QU-)t0|)blex&fgN)jrtEjRusrjcKwO_ctLlS97 zXALgh8-`U1T*W?rDh~=}UHhA%q3JU5Wek>-}prl>s%m%Q2YaLx+Oh zj3Pas?WVA3II}~l9(ioQRG4&yfL`R_=04RlbtFNPyrO;&?_`a_$jYtr zs=U535LiS&bSY6IvkZ^JKVunHcJWctd>qOG2|l!oikD-iv-v%MSCM z7Po)&=pq7?8cd<=NUG1~QD>NfaphTwaA}m83#y=_0XUz${Cwj*65#Z;Hr8ZUaemhx zeenF9r$~xcf3CFWgpAT4w1nmFp0%F`2cNEs`srhFBA3e+|4?vn!{HH?38eis)h$gu zKLYNv<@YiR#JZK*4RymMt#=}fFDLO|yin*fZO%qRe!d}(laI~5$Bf!cp(wFG2kKA3crE@Ypn@0zo z&c*rRRqJB)`TyKQx#cPaBdN6Gj9Kk<&ZWF(ncE7!)d!vStqxW6!el(SR4o5EBFRc^ z*nXOPbem)>F3wP3hh!z--sqqIdI315cI8H&os`cUtynsUUYD&#-pt$gOigwdM=O%= z>2IyC>jYr-#1(lw6&6FFfAJ9FcBfUVxeYv!F?TF8sf|9Z1Y)`S&DDMB+ty0=tc4pK zP^F&n7jB5vp@7+^4y%`X&yORsf4IA`^8rIsXJ)7Rz0NA^|(Y1RI1 zOtwbROOk1ssb$%i!8uUWMn<588(8zfw8vYd#V%#y?KyDeSiS|>Ba}9z-a(Y4fnPjk zJZs}`=L%B3+vc!B=4#i9x92irR$JqHroYiF+j~?-cV1wID!D8EN991A(Y_gzmTUUR zHxBWk->frN)-LV$IW>i^wDzbv+JYh6=RiH+0F-a$g<$bd^Y)l1tQ?@16?k<1aw^G+j6hS|0N|Q6%Igb z$~{rIm%DY8zp$gdedDd`eErcEmoD8sK1gt=my@>sddVW|!-0;6`tFBQj~bN8wEe^o zfq9s<+S$_+_Vu?Ga9*V9O-m|!(2A4a|K!%}_=0i7N3`Ui++57sah12T>_SuWwF7eP z=!VdM0QI+)KXb_$Ntxi1T1Pz=-1m1qlvm%Hnp7W*Og``}UJ`t+y3amXV8yiKtb?V< zbbTEqj-Ctp`1F)Ax||x?|F{tcppbx1PgYfFu?F&f=0pd~_KPUANYjFrq{ymX@uzou zT3XD`pIKY{_Nv02^^>4I(phrX$d6)0P(VGi9-4?AVf*oxFk;{0lSJe#CBjD0GVU&- z4@jhtK*nhE#x&otM^7pybiL@dp8K-|1)WJcwUweU?ZewRdYAEb6*mpLcvF6HgJPY( zE8jTwbx@(CV-atlK;)yB$B{}*8JnzK!gLH4e+s|&(7t!*K4%KQ4+oJ4-eSNUOZGA` zHFb0}(qi<6q7rU;=TqWN86Q5cwt+6JCDrJns?rJJL6Lxac7z9xrUQbK%Z<&;TluP? z$`(15T)3XWqr5puRA$wUo3{Jg9s_TxsOj%IZ}v?wAOamSAGo$Ph zp_W%(OX_C_iczLJ1j)2aY`1J--q;ZfG(qH)*KCa?w=EQ2TLq};X zkO6NtwPV+sU}JWfz2T-LwYiTc168MZm&3OboCic%=Yvk=1@)644~MkuJGgv}f<8uh zDLId@>CHSxm*Hu`3sk6q&w-3`b=#wPXJzBK@F`Uy8OgUhuVvPL<-a0E+`8uu- zzDw`nRgkf~awFDzf`UABj?md`dcJP|0%B3A9DOeF#LKKK(w&_hcYd*A1;_CcnnUAz z$fZZiP#O@A$dJzs?v>yCWd|dU@r@?Ptb2;2hOA8%DE_mBs z4HH>5A7dT6pCb|1t5D2b$N1Rd@T{$E*$+DViQft<)9Q=k_1cCOxW0LqG~_zDy&!hd ziRR6S^XWHXUF#dKCn^$Y;T;=G+c&3C6JQ2<;KAJy=(8fF6ErOt1T9O zPr#MN+C^ex{G;2j@Znv(c0$RFhv!aKI)C`pC0Ev2pUdy8{^C&i^D!^noYUV|;`BLV z-*@b)l-j(Qj>Is||CxAuE5F>`c+;HLr<)^4pMv*c@2)G?zB!qCLc8~~`tQ#RZv~8} zub;$x(Jw@0$lH>*wmV;Z@E+(ybGHvWd~IThMa{!d2#%YIw~SR!82i#1(w_TmKJe$5 z2{-;$2!3?cyZ$K6j@@BaYC%?N-5GY&5!*zGlTh<#~g)yW?!_y^D`;dt4PI0u-sp zrqhjSLl6vc)p*pfnT(xV5+%D_zMmfvG(=J?T<#lgO5)hzy5Z2+P}0P&Hdf+qD;QzJ zv+<(o)6~4UR?7BE&+o5BY=-Gsn7#&g$^SSEngNG#pn z?glnSjL%iAgJv&|8NunCY~s%Ge&c%3Ehqn2iZ}3x-pm0HeQiSStTtsd+1{8EPe=>5 zdD{1F*Mz1t{xb^o&Rm3zc+9T`8yy9CgO`kti%J3tcF#PcD3n>jOe+aSZS-lsm0Bze zZlP_ac)U9yLs^qw{CqR;lKtu5L9s?N>te3t}w1;vbn}2mT)yB-$uk@E8+y3cA$XP#~}ajQyy-t>_`5- zl17uojU0}{U%RBVD3#;R{+{?EgCA}!Heu8}YGI!hcUSdMXNziMpnwKr*jEJIY#3wj zByv#JDfh(Q~?V&)~rcJa9qy!6$*ZJjBy@7EFvX@CN@eE4J0Y2R0_Q6m*Aa* zZThbE(0I&^g~0+TeF06zhmUDcA8;oI+Y`mEoK*a_VoTYrmqUEnk@Uhs31O8WNXxTc zCV8&x!L@f1h%_w#-L!s60jq&AnscUPO?@LjWLt-u%mOgAsg^}Xr0C|?daraEvAN}< z)PV|kB_{Qthx>~az*n#Eo>tg>7_WRPbDJd6nCGTdfnm(&qBEjNx61sZ_!c@$T@H)& zuKE$QnCBAWTx?0ce*IeF``|`Y|60R)8Wfm}C^aOYiAQuoxw;c2J6b^)4Pz*1HYU4W z8yTN-!FHLD*u{^N;>CY_>2396=%1ZTx)JB6@=@#cM5;$j3pK!JN{kv>wU0b@mqVIJ-zuG%h{x(TiT+E zKbZ2Q6Hr{C5Hex9ncdg>rG~rFcZsSk8QU;6am0$@CnGA7BQlG>nlb(U3e%j5*v<>& zAqh6S`S$NT7~?3Rlo|q1*kefLs0nIirJ44wvKTbSQr#Y}3WRV6%3#Skv){5{J^Qty z-FGDRn$#uO4E>e;H>e+^VHM3E?)Y7jue`|E-ee54XV0KtW(LnW_KCu6j_(X=Nl(md zNurLBt`u#+l?g=nfx&{|A1&UJcaXbHqFm-ju`7A4{iim6`;X%X)Q@iRoT%GEjr(o+ zt#52)7B9=}?(Q0zDKO#4Hs7HWo?ZxQL-!YL(_25hfn)dItBoK<*tbbWpC0}d#^kD` z#c*N05Is4yFSdT{bn(>|DBvhztUwWhaJHlTs=tQ;ZI#~8#$3l0!N zP4V#xf7m_4zsVd%D!xknAauPe^;m8^;Is3w%gD&^{ou?ii9~XrqJQc>BlSrJeqmpl zh%Fw$!f(uw$TBll8U$~KQR!yhXx6Dp{l0tWE}aS2 zP++Cz)G)A*f0@*qF zT{k!q3Fvvv4 z%$+Bo;Ci=+kU|&V%hd;jfV>3Ytq(;>Z0>(9gJFx&PV^E1`Af-II#?3b;bV5u5jK5- zNY?#=Yl_nE3p>Y95mpXU3{CF|$)^t^w`PjZx_zQJ@ZD_m93WvNHT<)P6$f&7c1x=3 zGEbLuA_m7WmKAKZ^d!3sbAVBHxf6y*&Kv8|SzG`B=t+(PY@(1#19g7GZR3Tt^2ApR@G!cgR-3S^1 z7t`{PN^oD!L?F2MNcKiO{9NyH%aV%Cx7n37|2TFQtOi6o6o`L;j9UNNH(S+I27;e9 z{X4tv7U%;7DTOLkD#!pQT~cg(^;5p!>LK^-`wG!=K2m)JOd-6Ks+9=pT=h+ zRQd{y(@rh4sM)^#q3DPySW^hcxA(&MpNyjO@{iM9qK8V^3nO_fU}L=VCjH@p5@thU ztj81{iLxQSX_zLNl&`WoYaXq0Rl;SYCw4Pi`EmF6ws=odhGiNslbR(rm~Ve}QY+6< z^J}rA3`{Cvb}DQqKXK*WDWb~(gFX0he0ZhPmfV>}s>7p|dqi|#wx@-RfHxbol-#<= zUcZlu9Gop?=i=6Rec0(3;wQriTs5I-`0W6lix23N@!5g+ z(UB@w3~&+DIep1Suay3oeH@&fTN4}PI3<)STV@PX1>~p;)?{CpuxNTde!>P^KPR^r zr|WY?37|gh+vU|oLQP1(xQM*|L(v%mto6!>B68$JgGvn=c7)m6g2uyL)Cgi|hlv-v z*j}DnmGWW!8cn44BbnPs{O#`qD72N@WQuEicw?=#)nxTht5mdkW@X3e+IDiTtr{j$ zL*_E(=#6v1WD4Hvr1G~%sgY1T&$B3Ft=lpm`e7SXW7JL<+cN*^dQXj<1`D5M<-i=&^pcw+UCC-qT80 zZlhm^=Z=PC(Kf2!N?G>Tdks(4K3VVM^{UZ&k{B^+YN1fH3G(KU0!oW$%T4nNw} z)1$51H7xXWgm{*3QRq}ohj*U8lYz#CwUaYfM+-zaI7Zw!%@eHwZ8=}x*FgRSQy*;B zR_w-3{2yoE?Gh`*z`%{>)p-dmn<-6Jc6J?gEEbCqXQv6A9Y5>#wsGR06J5HDn=ghU zDCpp6+x|h<^(>30C4n5mj84whaI_kK^I-VrPV(+zu@)D*r~0SE8;{cDHO*%Vnb$gw z#X<9yxqbZomQ)Vj{>^ezH|IKqRC@)W>NEBCWf2j~;KfjmS0(=QEzBmlV15OLoV{%0 zF{mX!Vc!u8c=&S`gaiLhsusZ3A*@B)aMN5R!i=VrZH~m_;I|K|u~%+^Wlrr=;@)v+ zY+u&aa;vDQKpXo7OIvBa-tq?F0xV!`ean|1pkfz=ieu2b8-0v(qbI9JlO3Wx*;6SVa zQH5XU|3u!?^4qgzdCPv=xeQVOS?`amjy8#HFC^byzt*5UX8XeLaAcQl*4L-fXs*n6 z6y|Wy$WcH3COqODPYHmKX)2CaI0aqwsmK<1n9G(nH?6R^50CW6!{7lpZPA6}~P{50G=Z+Nw)dBMhkt**y%Z}Hts1l#&$7gKBewYmZ z5rr&nqTxEf9ieTl2)H=;$77m;K{=TF^@dI;ldG)=?aG@w#+TnOyRk+eTbR|}p$dfY zqpIS1yBYqMRf@knRw3lR3rrr0PBRiggFniM37tAJ9!YaZHGI+LaW{SwG5NrbNh_lSwomyZ;GH-I#10PFbi09VQ315TVH^~<}{P@$&*!66*D=k zkBWb;Qs^vuG>?8G71Z}5T%n&Zk`=mcC=?x*Mtc^f1<+6-(gFZDh6Mj`%rukYV6Zk2 zxvZ)Fl~hpEyGuQ)8$L^q{*ENYnZc<8vLUX8k9T-hBb}dty_NM4md(Y*C4#?a+2*OZ zc{o_|Np?x*ur8f@_yv9|3ZIu~`vV)#$|bFHp!l$JxVpT*?e+4r_}(%cXMqA}obi4Z z_>B;m`=2Cq5FNEMXGjzk6+sH`)a_JmH)~}^6d8UucTJsFG~sCz?yFK@Mol+UILseE zeTt%hdUCq$Q667U9!kiEBXfu3jnlN^`dih=fm!~Ajho)*-_vt3xkRX7;VES?rWg!JHeXwIrb-U)4GHjm{)2Cc1M5JYU9NYS*l?)6GqyOWv zpIcme`PzZHf(+^OWlWu)Jtf2bSJ+Tt!JU1!tRf|q(6`m0;=?fA662q^CaUbsAe`}_ z;{@a(+F!_8Qg2DINL6gpf4?Hubbrx<=d`zS+m_B(Cn0duK^whY+mpUYxaoE0(V;#z zyL}j*z1ir+!LWZ%SbRo&c(b1!DhQ9fg%xv5rQ1POXG0>bBfoZJ2p|Y&KJyT@SiCkuS%rk05(?0j-;?I+YH*wN$bbL6Pz;;XIh+0682~d;DYvm8Wv2_ZV#JsQ{ zw$CdHfFbQ!3?oI@90u5Xhp?PrK@qQhP_;OA!37n3Q~--xpIP;in))+ixE1t7!C$!q zy4G^C=j&;LSlrvJKbzV@IOaP8fKjC>%7IgH=^$VFdO&?)Cu~bfsq(m2j8QEgw7s+4 z`|-hUCo{H^|1p%bn*CE%U4Es`t6Llj;p$}vF2%nWv2 zVAZcXJU{dOO5xkPp)_U3-@8vo@qvF`pJal)De=*hgoNIY>e`!&<3U~VFF1I3A{|lT zWKJ|m(zf2l7Pya3!+U76gn{UPP(y9H$9>#@!5jg?qq(ARwF6r z;2s{ro}T`B9-a}E&9T)d$FWWK8~3ilEj(sSmv(-!Ga0mHFm<$}VP8_L0D0U;e6S34 zfv}`^+bJw*=X>?f-|u;xZ$Yawg4Rio$c)N&$n4SH($C8@c;9OOi*Wu)+6WmH z!u3w?m(eN(u!355jvo%!e3Nppn#re!25Hb zqI4m-X54-v!Vh^|lKM4PMPIRU(6ew?I z)^^bE*^fQFQWlBvA^iHK_YH8G27KlesseG)(bc7bW}AP2-OXi=3y!hab!oGarNxLl z&oKw8fD9SkkMH04`Av^Xh^atAZAmBvWW~6+F`3mbG?#0Le@IQ`1AGu@A$Bov!14Sp z2SgR+@+5HPG2gRlPvTU>VkuKTlE>umKwAqY>JR-c#Hgat(Pdzkj~q`4h3Ei5K)%1v z7oH{kf@EQzq}WOv^g{-gzCK?%-k6J}zun&K@wyTz=PVKs@rv zE9A`=0#r9AY&l=x5h7|P_S3Y6725HnXQ{~k>jijON|J~4QdJvHGVq%PO@_KWSdAhd~U4uB?)5MHCA(9GHM7 zUoQtw={f$;3Sby4)LJ!7_-#X^-Q<-^so1Q_;!cLgh)ScsbQ0%Vf#7UMoKAK`jUOiE z7$YSqa93Ic6-%3@R0afGuBS1iKYDK*xvPQ3eTv+qcxw^cMGua_;A)#}mwR`6`Ko)9 zA{hUh(V2alx}zVonm&kR+Q58x-?T<>hE$u}1zH#VS3_|c_K;@7BBIEmvp?62_zcnO zu(A}wu+rYO^fu137Wj`#Dq%fV(DJSRlgri7~x33V}PEHK*r*9)uid#V?}Q zREJ!KT8@1vQ)WSno4a#sC-KRJpd*`SpX{Z)l+laAAd(0xJ8P57r$G0acAK%c?sMQE zoDpYV-?|n6a|7sovV@whqoBW`R^rx9@s)ZFcX`#zXHh{WU%?JCx2Q;-m@oH>hbQ`-;S-eO^1*io zYrakrf%C0v6dXbT;Iz|A0(RfUY!K&{e;(aLgT*=`wZ4k=`H>D8<)UNLV=k;%M4i$W z8f-&90)>@wBxY}Hw#4PDJTQDIuk0^JVbp-SAex?kJ($q2vPxwgwh(6rnY6RJJLsDg zQd`d`pW?D@UxzSObNO~$XaY{DV6C{r@5JEj1klsh2x~6xyZEvad;bF5i`d15%Fc%9 zA7RW3dwPURcT|%_@1(BcQE{By98Lw-prPU!o;b0wLjg{%u zX%@A#lar&>&m=ZJV}nO|$a`b-+0DDo`ZB*61SqGD40-$5px}9ss9i3&-?d93l811d zy3Hg0bPlWCkW+vbs8&6&tVxYyBaIWhiajM8Ech8qqneWT+T}!YiNE6>-j=u4+v-We zls#sqQL-_NCNNxWxpVop^BCjCaDpjoYfIe$!6)f= z^23OTwIf)h8W`Q@WbAZg$lxpkZK6?6enN#`@5uxXVd^9;THWCZhxLVsS-4Gbfe*Ct zEOdN`9iU!#s6|{4@YKZky1qT;D4vuKd>|OH1OJ-)8BX0c*;j!aE+pR|mzlZi6)X?g zH}WZMZ{E}1w8gxbWC+dmsMel%@>}%MQ%%O?U`e*GwbTRoMmk>$wXBWT zRAT$~ZnKf|5u@m}g3G$keSdH3@|@n~svv7U+s$lCZDkZ9`IT-xl~}#uNdi82GqNV< zM{MjMazzFyzud7#AbtL_QxHC!3d7)EzUr|j9p;kt$9oaKRdgdk%h*CKgB`bh5cLi1 z2J1DE??VY3A{hc62wtcK)mw7h=k_-Q40SQnzP$No1;*W z92^|2Vf_2_07np^9|Q@dwD|Y?6yy{pQ5)y%ZlpKvMXsyBdpEyny-DNIM~roOO+QS78T#50*zgZ(XthwAQwBinqz*(t(bC&hxPwI|N`|DR zq$oQM(GZm_IY1U*jIUIw=Y>?WGDb3wqzv}Y=C-ZeayH)-%lrNzsE58zQ z`e&E#_|d&I(0PwPv+Gi0SFX-C*NuJJd0b$8i{&A$)(5=U_3s|-YZPGI=G*$9bFrSI zJ+)pkn)=fdM(~rsQDHPV0n9Q814LUB@WYv93rXLPr+Z!n=ScuWMVD%qt-w7o-0(OI znuCm*8ol`7jE{Cf9hc}6^I0Y9eJLS{*F2DK+9e`&2H<5gkQKntX~Ji>L8O(;g3rgy z!=eeS1;kaMBig0z-#)n!J|7MtX~0WDA2%;lXiDuF`lMuAYdMv}VZ8tn#>4TJu}GkG zpOqt^@P%JbGuEI*h)QC0nZ4SOZe_aZxj??wgAc0&1V}TUzmDbX5`SVsJ2H~CAl3Bn z1H@tKa|;H(ppjf^T6$9Hj=`TjrSqZhm5ou>QqYY_V+p=cez$!a5=PNW&!-|B!CkS& zTK$MwQ;~`^5R7aShOSA`tzfz^7duj_zZ5E83aKf3xKUx+M?q;=I)BvMrD z62>O(truz1BQm`V*l??F>D4LE{WKMRb)_T(2cGvXU#I^`X(>OicKnC2;^pOqF$h}C ztrk)qzf4yKiv7t#LSpABJ$(e*qqxHe-HFm5tWCM`e|q6_sQE6_pH{Dt=Fm{`#jz3E ziP%J$Khu;iq%S$dz2&mL*JgNUOB-M?=$wd=gY+FAo)A!CNj5Kwv2kUDw06$CSCp{E2U z{NjTCW!qPbhf5fn@}lDC#v%6HJL2JNYz-e>LG7D@mSVY05gKd}YB$S3AgLhP~7fs;vp%%`~#<*pk5OdM1*1t`1@V3%q}V zCL|7mQdxmx{7pcDoW#*TMyxe5$~=C3MSBSfn2<098jxH{S$?KO;pEsDbb6vD1qL?= zA3_rY4tdja-`!3^fGmpaA)*BWvGhOcZ0zpo=nI}H&MQ+#K8~*NLZd5c*%7}6epUM zm35|F zTR+X}LJK!p!_LnX2NxgIequ4vlm-5i6In7fk??fGBlDk8CFaw@u?|E64CoswwASAUdkqW}&?z zEa-Y+AMMTn9ER5FnT3nMiK}?ZQ{UwH?)zp_61!A@T|~E^14Fz=(t{U|uuFA}jB_es z;BnGzMGN>nRY~pS>W908J_pK%^w|^Y;UZT6YUm1yBDWmXAP%x$035!#r>cFYPbrjx znMWZ+!EoGr;gm61x?n&0@nN9bZ0->Q{pz(q4Z$Rf(B*?k!Mfe|G}{^V$c%WCX~XWR zezdh(C%?ee*VVi!5AHhO(;8=hGv;RP_gz<7?+d)my}gWtg}#G#2j*{R;XEQmp6SF@ zBuQK9`uo|Dd#QnP_vB|;sjnUN9NaZTQ;5}oUg>W^Fq2uI>Be(HccA9saad7F*e)lK zQQo-v!0e5uVdKQbg(9uT$m5&D%aq$*JpsX4|D7?GH;33KomYGl5F+BZbo+kW)v;t7 zV<3XOy}dJNvv5o-M|1k9K#%HGe`Wxzb5_a?*B%k{oc6j;(?!yBca!9s4?Y@=-Q7Bf zBmFBFypv^tt*Loll|KY3<_JX z534bwr(-`zJR?Q?IQRM9oL7v>e@_d^rMY>3l~+g;^g1EOqD#5TLM3gBhf2nF13LXX zrrw+z@jtz`&(ytH=2I|&#-_%VHVUHD&gdYW*S~8tL9?5wXi;_lpgW;ZI4<;lN?|>g z)6rC%dqb&&6nARk0RzyH^;nYqToGM{J{F|$h91>6CR63G)>4>TA9g{I1H{{ zy}9di?CYgCB%N0T`HqNNY!UXBZ9unf_?xr~J^{xOtk+~L-NH1X$PzKzzmI9|zjYIE z_!*di`Kt*tc)Dcm)ce6(F?`@)5I59kSiL<2-D6@aaT3kkMIf-BrKEKf@%BU?g%67x zU{~`=a&8r$id@@x1_Nr;>jlC~ahN-e_p0^I^RN7QL%<>;hyx`Ra{AqzGcSk~qk@uK z*c-&O!-aE1(>zQZ_(g`LDIPlhWY@{Xpe0QhRzwV>pOO+Lcos8 zgF!ZD*tFes?{$j`3e-QwsJ((h8`?3`Jd?8EzW2K->L}4Brv`}?5ji_HJK9_QJ0#!V z?U%p+6-X4$Pq3CcQbeIXFhNcieBIiR?kzKSU-+)8%O4iC@eJ%tEUxS6v+KqG0kXF? zZ%0GJX;J5ZN*$gK`DP{cbEXw|gxw3)Fm+{kd$ewOOqq9XLdlbxT39AG(`e|GNvhwHxn=>CTS z3U7jWlEwc zKW}2}p2gzKFHDJs&mW`!(L>2z|KjedFA;ArwF~T=90R`#9Om%dAwv(eo$SVb38kyUmS&7>m}q&BGD3O&FDEW@AyttMx)Sh+gUME0gP0Ac!HrKoAZA~| z5dG(`46Am77kU)ppf2#0WMRWJ1dm#Svg-CvTz!7Q{>yc$C^~(L8;lO(T6-iwU&lx4 zI5|4%Q1*t;seJgD^!s6fwBA$)IZSsL9)6>`pqGD_LN-jEJ+fR*By5ad0CeT-ubhrl znE6S#R9OBucZY7v7!PnVBa~F&3TX|BvM%{bBUR;i;X{f4!#4=yJ3p`Wl0tCVxtay& zFrJk=SwWOlpI;Ee`(p>eZXVQYa74~AT8iaMP7Gl?K``kS1%NQ(&4{T+_{-2fJbT|FIiZ7JPN(WMW3b-)h<~z!#hl z3>W%U9~)Ny4i~Q*Ej3xs_aBHOAU{4uV}-|qnPUrGP`*e}+n!MIGo8vC7f+BXn^l>6 zw0&+MDK=;`WEDYk#C%?U2t21VuZwSm{S5}$BqIyhbvJ43=KPiXOQcZxlM@kjwd z@AqZNsSr(#@^y;;tNyk;!Lp2eBN{sxt$(HvCnwtlH1b%<8Oe~mz@yef8{6V3A3xA? ztsWNLf0d%DJ%Dh@Ix@^8CzoP~KZwMR-Y)@W2WhB@YKk}XG#1?B;@L#=tiI^X`yMd@ z(Lfz)(5n26e*d8m%G@{iBnGw~>Ku%G`h7)s{WYCil-hqpDUjD|1;Bd{AIN$5lqWb? zX`poKPFE7=i`mW9m9hZenIUaE7eBiDkz#6|x#YVa;l9boW{84=1P;?;IAA-Tg&MNi zy!(xqS?Vjse?W_`{ijWNv|>N$kmcy&Ux{RqPpcH1ZPeLJH%%TuICW-o^@LL!|l@(H)h! zM*`ZhtcOeP-)~-T;Ck%r+{ez#`v20)?;p?W{7)oSJ3)=|-X$?eYdj4LV?ehSWO(MGy9euueA-oM7T9yJ5T(yMpB9YQ za?Vcd+AKHeY5XuHc=xO}sY~68@WE z^39=)+y|}7HSn$hc0mxJ_i17CU!BrkB051CRMSsbXuF`gT9n=#`~AnhiYj0ie=?}& zp6pFamn%G2m7DRa8BFcuOPCdEs4%=tHC%(2AlgW&|Mu$DTG|voA6Bf@U+8b~Fep?E?w^e^`l^R0Gk^4CCqL>>x;Bc=N9-V!%^gAhk%5_5@e6JLBb zl;-7H2wDUG7jje6)z#G~5y4>iA*%;$H3!CDId$(W%Z1$@YZ!-^uv2y0&hGogUx3Fi9nbpguQjasN;mk0d+@(Tw~4`!1dC#KC`>b|wD@?omwg#uys zuPwKYx;@UkkOf3L;;g}$UHdd$pClk~@423ou;b0i!`HdUb3;-M5#L_Pj3HuE82Cce zHi+{`k8Ob?9AUgg44VN-%|D)nAhz;O9i9 zY`M9(i1QbH@vC81Bs*6$n*PtcMP@xcy~k<%7{=)k=yrTr3SA`A57yWq0Z;Yd|6}V- zps9SnxAEs3(?RBWo=aqoWS+{H2qkl&WR`i#Aw*>?sgya1Br}{ib%*jJI4P$ z`hNfK@As~EEo*&NpOv2Hxu5&l``Xua?R^8P?6MYLVeEV=q3HNXUk%AP15gVOOo1cE zPdfcOvIKGxDMEZ5>~(ZUD~-E|f0B?b#nSlzp5l8a+ZPlcRz)S@&SWvC&%b!3_z;W{ zGHg&~-#U~W;EWVM-iKDn=I|e0{IBYGjFm07u8S*5bnCU!;W~7=J%7#{>;(f;@6?AF z=cH^@vU!6g+W_MC025#nW)__3Kvo?cekR!E!8;^Srd!LoWicWI_(=gL4_W5rmn9(% zGfLgNSo8gnT$aioB9+*~KQRA|*A|oz&>@TLR(^o)!4K132ok1JclM;H0=aNVa=oZl zd`~x5gA|>vu|B^)%y|;E*j8ByvI~nMQueHdk25tybYflk@cUQ{Epo6jy7b<0V~dXS zLGah3?k4T!Mhp5b3%=IaaBFrF$9!##lC8hJ?3IbieT%wu8T z93YT_wiUlViBk$;-2N8HSF(%}OV5xtDAmLQLRa z{3Zee_OfD|LvmPv%|Bumnm&0(Uz*N;EnLhS*iNGCJZakM!u}}Ke!u?k?mehR&YE9# zHQwHODuZ45b?!ajbidl4**a8H44U}SdoW^QSWb;%)u$jyBCi};o0~r7d#p^Ho1KO! zlQ6g*W;-P-g}}FN@r`b4oJ@@w_%3v4dY_L*ikC~YiAVNjO!|Gk65Gx9LU1;nS)9`G zQZS=58N@3$I9!@tBRP*ggrP(peZFB~x_6sNDu?;6-@1@}*bQkdJR_mP=_A=53rK>L zTfa!0=HS8~b9X1AmP;-AaTv9y#oluNkN|mMsf5&T^B0e!)-?hEM~d_RrlKY#bh$B11yND4GIfGiCa zs2_6O`11Uf_PFxSUen`(Z!~wPO6+>njEx^ZQdaqTy;WS;TSBEES}cJR^4YNq|6s#y zXpr}fy7+4JFlvdA^G7KIk~=z<4Q{>l5u{j%?jB#Svh%u=hQ1_>mQ;l&8~{668s<1s znG?d0Uw=q9yPL2fZ#7=%mBm>*MHen^Kj#%zAeNwb3~G05RSUN790JHj6hcnqiDXF1 zw+}}cIsnSYX10~w4!QHzx+C^5t+s+nS8s3Xzg~a`f9uu`#?&3lecj(Z7;`1Mu~|3B zW3HaaOZ3v}vybpK_XS4dJ1zVs=Dr*lrBd_jZ>!7uKOw|lUiSS7%|@N$yfmTSd6!&{ zzetwO;mdJ(S;jOO?TXm%KRk)WsVLxt^`%eyZSIseBT;{T9a~$!W62af-g%aU{cBMD zQrGnU!D)>@*FQg`c@u=#Cr67F?Z`_q^ls5Pe{7t(-DoHIxg5)Dgjz#sbrVjkrQI*y z9aMYW(J=ds02zOVzEpC7@lUH^mdRk?>H9rVq3Pv$SC2F=ZQ;3Mm<{(Dm>=5=a^Zl$g(7MbOLTBGYDTvZthvqn7Zq< zyzNTvnzEIQQnn^g@uHgO*413O%Qc|-D6{dA^6(c5t+4cd$7`qmWR;dO#~w&II6H=N zM}4Xb<}5XH`P5c6yxTq8Pti~^?C^6CyY=%>ny@hj{~zbgx~Dh}Qo@4E@ZJTu)o7?6%91;37>l%^pi!g2M@@^115<_ zMyS$DI_}TU`&(q6kd3`_LTKNc2!ka{?unj_)bBMu1uGqhjLZnof@ zrkOYSZG-*hp6T%LnvKvY%#QCpy|^vb^BUiN?#td?2>p1DNcCkPeM5J*c==LpGK>fr5a7(%-rJX0IanzCq1>AivGR(04b|#VW%2&| zf_s$(f(5kJ5pu?N(SrFHG4rv=^gBvE)f`h(Q>oH=%-_(DIW#-BqJ6Ii3+F8E-@_q2 z_s~eRZeJ-8yTUqIfc~ahVVA~QT_npb$d+%d>pckr=!apHz$#?Zhh>R`IH<{+*Ax zg@0LeK<+cD@r%aGCkXrcUCDDte$V)3-nKN+8k~sho%)!Y|AVvFQ@uboTuR0uz;lBE zZCdcaI(zpF_Ey`@g~%DsmO4_~t804-l4c@Jbk!&|mMRuEtt9{C4uP>lg^8^C5H_l? z@ks6uzuaYehV3J`E1PFz$%387tJauSywvI1h>x=um7aUhx&P@326MV4Ih=$DNu+Lp zqY}sbyBl5iLOs%Q`$XGM+wk%bjiV+R_6*MPgk+)-+;%|l@waVOshhGdEicQm>-&eE zQXI5CgY9`rRr^(bUaxTQ^8-ijy<3bufGOzF*+rp~C^!1W36yQofng`Va|m=5nD~V^OGv>RXrozItU`He4*7L?E-3gwzT7QTpXtTL$4Vizm|o(Fk`6MJA3;#HkYiU(@lPMMy7IUQ zyVOE9<{V}qeE7)n0V@t^d`Mwj*OU5tsG(AoTH~~gf1EwVs~?A@p2!&P=Vin(ZX<=X zCIXqArdjHjn_BX$WDBuYdzmL*7x`;QWkUCq%ixV1Hg1?aZh9AuXv_9>lH^*{lOjPQ zsMjHUCax{nf2S^{1;0=Vk>uOHyxdGvlx>TOGSxgL{_`i-n}mA@m=jzo!ycuMQ}?m* zvByh@3@}lOO&oJ1e!F`oxaLS&{uuC zp&t&p)Mhxldfj={pfNTpoY(C8nOmpRS3SKA$qFMPBEU40m&P}o0n5cGy^7+5yIb>I zR0-H&Uw<+GvAcWO?|#)+d3r5s4J5uT4~5lF4kf}>$+{|rhTx{=R9~8Bccq0#LpO!< zdQEg|yVIwNe1zF;Az8*ks+Q-n02epL9J_j9@CwGJOms)EM7U`M$CY9;_`Fk>lPV=d zAoYrSF59R>CjF8^=45$PnpEE#GRG-`7o{7&#(!OTN)_+k(zGd3ye0a^zgvtzRFwX%A*|d|QUt6H@o8xf zh{$gjxi=&MB$-N-Qv_V(6lv;u^UBEAF~`5pE-Yp9?x zza$*;cHrE-XRzKaW3ATOK`|8TE?a44@zKZH-;i~ZaA(jx_+I|$M+c#*#^+)Z8<~`z zkrCFSHGVdFM5~utM+tig>CVnp$?D-25Fk2fw0BnE903LLW$2KA0hw7lk)W|q6xx`s zr%%#aLb$%8SH;HtM2`N35Ld%kir5H(#c`=uW~a z?jG41DoU=UiSg@Js*K#{L3Pc)XxKRtgO>D#1_-ydb~+A8U_>;wxSyZsyqm*%kvGn* z{h&35A1M7)cV2UkGMWy75aVL7jI2>NRV|E1ey-gQY<|2?QYx2Ak zXpzSY2P)fZUr0$AP9jtWaLUQjd5fdSPuw4TaB$p3ODn79ap;R)?{MDR+aqW+#|3&= zB|Ep)P7;H-Pq;l{aa_GkvGYOFHWQln85K3T(xCwj;TfSp5@muP|6q-pt)U^nn#AX( zBfW2Y$L8jXGe?TalSM7>lbRdys=%4AioKbt?*>jfqfq3?N!DzK946#65_|Qc&CPvI z+@5#YcQwwQ^HHq13GndK^&aX(4_kvwf)5^z}O!?Q>m1=|$LGDr3hH;v6t)bMoZ!3jN)vHQgIXGc!fr+wHQhAHpQ|GZT z$KIr94nolUWn>d4ZdtXY-cNqIv#ebEtY@?s24MQ>S`w%1*(YPMvHfmB-Prwd~OCjvUA- zQK5!rDwpu%@ENhjOds-K5TwS8Tbh+3|B(MUDLY z*YyWmOTcJoGO+{|IsM$G7QGmX7djYOuWb{EZW|>$0xEVv2W)4Iw?|8=a8&FYtEh?3 z(_BKo9#T9W5I=j?*T$$nGTsHHSZ?))fdANv0HNT5*=}kG8V=j?os1O=5kU_=d4a!6 z+Q&%|>+5H?H~;Py{dOaR!OfR0wQ3+;tz(L^;rk*SvaZ3NO}uSWw|Rtx$-nHf4qey0 z{^av2ihW<-_+5S?*K784w7}7$1hDE!r*S#d_9o#EB)Wu{9TIcssjJwO$hGX5; zsQX#jDg&m-U_F+1hu-|mz84u;6s)P}f+B-a&3F5~J{;RyA8yN_YM!PdO#CKE=DJ59 zupWf<+r-_|$+e{GWj+5__EIyWxFN!~qFGuIY&3Qv$wvg430NT7yBJJ-@cW``27(VF zm}kVF&2LtGMj_&V{xK@Dwq23qVKVa^=-+sJW|na+g7j{Wp@-)ZoVP1{_;1z?_g=hx2aOx zS}EB}DMYUV_wp;F&FMe)UVi3@W@@}Vmwj%>%a-8v9I@5_wU|BT)sF4H*6-y-;^i~9 zjoQCz@u!94;^UVs!ROx^wrn#Z2y7h~rFplVV9j;~Z5z9i-nyB=VvMXq`=$y(#qt?03sC#Bbtm6SMIPCase;)0-%e`?F3Udvcp=PV)xk zVL8&U7ATSGnP3Vrjua5aUs)kZ2AhpM26i?r>H=3}YR;6iBX4alc9#qp7<3uBTq`d$ z_$+GFn9h|@n1}zg>)x5Vm6(r!XYJYLH|0u4hCh8xWm?GRwbLmz6Vb~#hn)6XX`p#% zQH!r$#98m=Kfe5~Q0?ZGGd}|l2X9YxZTYI?_cu9oCM)aZpr7gy-DbpI&X4%=lVq|f zNCEfT_2EN{kAX{vtWfk2s)m35J!Z6o<5UQFJ$N(If2>5+`p{Tw(9+E8;b5%KFQ)o! zfn&tYrR3|SrKh1$v&mToe?*YqX4U!ip`G|7Y2Ppr8zClpM@J#XxC_jF`!SsC@&|I~ z&%evtQ9KVL23ICR`G#uj*dfxdWP=c~5= zVuFMMp@7FNemM=DvKMRC-VvOKe)-Xol#~!6sJ_m=JY3e*?Cx3Ng(GPm-Ks`G*<|?G&QvEaVm`m7!@5zlsW5DYz42UoTiu z!;vOce}_BS)(FfrgbFhtr}6P!u`evo8jHqPv+FyZCkr)c8F(Z3pVX}U>GD_}=TX>O zZbm6yJW2RM&YMi6K+MKro241-K zaN?jWU*=yq+i(+(cTo&XRSOIZR8dob!nD1;UEFEl3;uNjYK#ydJoZ8{?$5rM-+=hA zMRUuU1O^mqirLie7ElZmD{YRy^Xh4>Q4N~|Vi~Z0@Go4ycjqg8DMC#v&@xtcuLByO z?`&0%{fg!~Gd^EMjx?NhqxBUeScXguwO2}SFR#F!u90}QO}$F$9MvptU{dop4OT#x zE9x0?W;Vdg+??R~^aA-BNuH+j~h{ zOVOEkd(q=wlr}$n4@dz?TqnWmyeELyd99*8qOY%Oa;yGOQU7HCQ-fgn;qq>!gxqt3 ze!0YLhcdIrqGF*|X{0H&Zg0(|56gt3QU_e@ZEWBpgQQ{_SIcfTrA1KVH;$>>UvN{) z?}wjQZ&VQ0Eo3g`*PXy?e3o4w9~?3!BH~sBY!yU!BPk&N^?*^Yax7H5lf`ByFuXEu z!;!5yjGem^1>3Wpaary?SMDl(t$RX=e{-XE)wee*>Y`7C6sL%Ecwk2tN-Tyw`eNqi zzdMi{q?aCjAJx9fkx;<%iHT9&x^?T3Qdjllj7w?h!7+7p{NX*G3C{y`8>Y9s*jeb_ zO-4CT$DUK69`&1O>q`G{gXu<>{yELviyjxjH(aq*H1=09B7gARHC%6Dmd|vYhxsN4 z%C{$B7OEGm$3qoc{-gfW3&n{0!ie-^(L>@t)A&zp%a0VbK9JzYEgzWrf{J?>9mIr9 zoDP|6U9tJ__j$lmGNy>pFqe`oJhkGpsZcdF_RGDgC*=5zJOj#mboGbLhZNcfg6<-D z>Ke^>5r-TE9Y7o>SePIFrhF9@d=MRa3FE#FhlfQ3XuKV_qKkfbS)Q#m0@v+W_TI-= ziVGVaRlHjG?01(DU)gSm960}!YiRo8oJq%h`#pm`quqDbk@;G;tg^DC{t$+vM-fly zD7rlrY=v%^;O!z7glKUUvz=6I))s`&PU=0O;ub^N@-~p)6!l+zGTkn#1D43KLlkLH z-v6e)y3|G&m`bW^Y>;wdQ{k@iZi!gLZMqlFw8w}^;~8P!Hh5EhSi1lsdL+-0y|-?_fEutaIr)8Ug>8&}DAxqk>tUlsmU z{QOz5azIkw2u0b<{uLH7BwPcP+!66e@x*e4we|cJBwp)6EfFB}_*9zRemS+rf)Usi z$CsEa2`>1WTh08YKlAOe@82As*|NhB7OT)}Tr{ubKMouFi3m~BTt1v=Ti^QV;$m#{ z#~g@7OjPWljW!r_BtAYI3$Y#_#ee#h+zb=pj(0^qGg1rp%fWrZFWQuBWvn(z`(3Xf zB46{oD~G2*GLmDj&r!{#Yxj(QPMdFSrC^X)G2{OGi?qSWhusjf{LweBX)^AR85~lA zfYF8+)9KNRbsfx)Mex!3l#DiqrgB@+q? zjVoXxp{i{fuI69F2fU&;M2L;WjP}kF{K3ngR7dxLVbxbU%Iv|Lcr21ioIZH7z3~q4 z70tgipy&%5e-bAWv464|^9tMOz(<6jvBS>iot*OjPA^lgJips7d_|9%E_BvO7OG;u z4;iG>UoF`?90XG(cwlyMp?|kL=P)|>hC4$@!{k~r`oJ$vk2B~lTJcxx=;`f=8Rff< zx{9uKxHVw0M9>AO4;G?N^^Tv7D$UJBWFuT`w=CqZb_xC+&N=NZ1C5Mr7EHz()ID#nDzf34*3W z>8H-0iz{$De>_p}jH{d_v5)f@t=C7cW#j$&wOVMRQpNKiG3OF9=@WI5nL4)aeMOQ#3nRZ_5^iw@dd_3c~ zcA@&!rS*W9qXON-v(IQabr}TgPc$_VRm~_bTy*D*5(g3xoO8wdf*Jdc(sA09Zw3Zr zY_QH69@L19IJ5g~?<Cd_>Cxp>N#_ok;%Cf1gsOzj;V*DAgn z+6guMH4%0o*Fp!u=*BqbP|;7=%lMrubI>?s7$pa#7=OE;|J;4D_i~S)$Z?q?OwIgO z@iJd7F$_fKo#>Ax| z=-hMPbaJfcwCKcaSrSN{=={@B=L)4gN4>6 zUl<#t_2z#$4Q6&J*WqLTG4TvDrbue{0VJ& z>r*xw_usj7EE8BGtK^fueS(Kp6y_?YS5evAy(?)PgW^4rN{1~#$ni*o7g8@TtFy(g zy=u6*q~rGiW%Wt~+rk082}MQcHaE^JIYnvH=-#q6jZY(o6@+bkz3!z)jTuvrQbUG% zVS3xZgFiX1C4#2ZU&tT2&CL3f6Wr{&xbtFf&jMe1ezVUkzD|KP-0L5#qj`*QS1KwQ zzWJeiS&dVBkHrHE6g#FLPC-r&>;++NOOdbm+FMr7wD!O+=1bg#P7G{~mTpLh{d9A0d1 zJ(4YaW;1p0HZHtv_wug5cWiN5$Wi{iCl4m%?1I~dgHlWw9KJ=I)?Nj{A((!y|DK46j2vM7$|3eUO zcl;6#fe4B`iFGlEJ8?}ut3C)Hq8^eWT@SD9H&f$Tkl|@J;GqWwBL4(a)Q}`RRe{*> zS5{foJZe1e=GxDj z-9vps){orY+nio5BO-*>IVW)Vu*w5{n*-K>thoV^2J%-WIq}@pWh##Q2y#8pmi4V8rp>5 zT?L1-ky~kEQM~wCIHkUxA}cGa^7VK=Uf=lk6$OeOyJEoUH%w=G6>k8iQ0e{)eX!l8 zJf1iwi7!pgpO=HL-r+Qz@+I&H!SsX};>_qOUfBO zK3ht?oG^!wj&Q$(mx@$5O+b{~?pXiysqEGm7h8(iuNmK1mk~D5oWYd}Y33hLM$6S- zmJd9onNE0dZ<~cVhP<^2siF96{a-JD_xs^p?kL{6{Q|eV<(HAMtE?fr-w#{xVAid6 zgOQA!JmJX`nc20+PRy#*Ju4HcP$y3;R)<+PcXn0Ll^D6Pm^arnN5l|F zlC&@`D7vGQrW~=-5(7NUbyl$?CQ z%>3WhFvxXYEToD9ZaJ{BR)@*r%*Rk-jLLq8yo({@D2u999uQP7Z=p$}sX2AACu+ye zaHZegS4XgaYP*nS<2ep|@y|gzYmqd^6$V9u<$_EVoSbOL(+go4=KhS|LODL9Q1CtA zO?7q9c@6|&XbQ-WEP!IQ-DPFs`Q_WO%A_wv0bNM6Y$Q;@cntb#&RtTaz2&Uz{DFk+ zkAsZdq$qqev$!HqF|C{8ZBL~9ezJP%>;ht==%c|2r#H@rrpGafJTAwooI|hxWX}yJ z6>}>y^~d=gFCf%~I>~?XZM_4K=*+eTIyU#%wry*VZQHgzdu-dbZQHhO^X>nhbKa|a z?n^4&l}_hN^3__YqS zCUXzl_?X?aJ0jqB?A%Y1!n2}MConu>99#^joe~wILDpe&L&t>A%h2S}h2I?j;WWGV%W|CVme9tJ#6Be39GaQt_<@f6uk{zf)m0Pns zDScEHpQ{~h*NE%ct0Wzx1>emxVY{7CU~I6Qbz|jysKI|t%K{@1#~ma=yePu6 zuWbiFi*-5Czu-*k7=69(Uv`1I%Me<*_3;Z%aHJwVRU<^vGkuwduzr2 zE!GZu3@Ou`6~WQaC;8$`7$T1Vy;)nhb;^QY%|w;)2eF=}V=CAK3*rmGh6;ZtQ=#`< zMP6gt$~=U8Zb(2ZT*^D6A|<5j8P`?Ev5t%+aj+FuX8RI^L3BJY+ITgFe?Gg)12wu# zu^Tz3@yveW#n;>kw;A-CfIze?L3d~X`1*s?9ucEBgO0W);WQ)BJDe+fS?n1Xfmu7! zN=$PBMO2g?Y<{OU_(mbofWc)sU846D_GG)-y-CQ{;>1CvEtf~ke0H_l!zHrUshA30z zT#PtXP~jL~XH9$$yB%HZ>~HWJ8soYp=`jb~kxzjzU;(KC7izGpPcgUtbPZAXGyRddmZ4CD^leNz{d2U|NSC=T`x1oI65gdWR=(a-3OdY3@ zj;cUG%s!l0@*5iZ4;fOlY}`38fAbe*U*Xox1(PrQ{26t`$vs>~e&tNIYxGZn1j-kS ze4NS~N!yFRW^N{88}Lc6dR_hLG2&|ny`wj;T4czboc_5>F!jgOjo0vI2$=G@ch(BKt(ng z{hVlQ?HGpQ=sr^7Z>S4ZZvPn$TW)+fM|(f&Vc%lB-(Vy5Y;EiP&!RhpU)^o2DvGjt zxCS1wZ+gLM!^Xtil1wrV6u(%-TXj_svhrVaJ(!p(!0Z4cd0SNNKdA!t({bH2mD{M& zS=b8&L-tQVBxGjipUB zzGUfwbNgG}kAVAbo9rev;>egIaBP(*XzdrKk{}@&SYO_r;`o`oXMMa@KKTP&C)~u_ zAGmx(XwJRa_524W)317OAJnWBZmw7amryy6xCRkae9*SsmAX4J#G^*x2G0-ydn4+n zc^803P0YHNZGWIkM4oV>n>y$$j*?0!WW#*S7C?W5t)Kz3K~j*--}#7Jy+BYMr8C{# z_x)Fe&(@PtI^Jdj>iT&*=ZghaB5O4MxT`eTz}o3}n(lJGA+u&K#&hpg)lZS%XrOKyF{l{GBrL zV(?Zhh2(pT@H-CZsO3Dnofuvd8p|fpsMEWmWskU4kRVvkt$R)sT;G2butu4TK2=Jt zvrV zdSb=v;C)T^iD=vf@}cWZ+d5In$MWKQ8^^^)nO93O+sjG5%)Z;~Max5_kBKrV%oOv= z&SN2s$VhE(lbeaitt~g?>`4;nJSK|T&=bU2W|A2VsD)I_9$ta1kzPiYpnHRQli^(g zXicyyRZ*ju`b!9|1ii#6wZ|D&DCIu+a)0UR8?5{>37@7&$n0i7Gp-a+I2dUd+n!h1 zy&1$*%TWMDc2F(!_Vb7-ZNSmC_JH_;o%x}rQ`6$5As+L^(A z4F{g}Dva4G>Kpnnq_N6~_omTQmQOP>&_yJfGL!dOmfu<6a zG8{r-LlVon7O#d+bByaTz!!v&ADt#0FUiL=JtnPzcG6M9%0OdoO84$l29$;Xd0=}+ z?Q>hVMDKHJDOuSY{7WHG76H^`YH|oyWDV3M$#TVw->FWS=}4Wx4_&D-gF*KRz)kkb6&M%t9Z6WP*)Wr5mnE%3>(w91JYVFX2O*!$O0SXlU>ihXU=ADv znY_Ty&JK?w0v|U-JVPuoHk@~Vurdk;wt7KQLL4Z{>+p=j-C?6=qH|-9`7m$vK|SxJ z;g_J%C`O=~nt!R>n891ARp*Q~aLb4Fy8#|9xCK3b<=co!lQ%z2Irt@g@R-Ox65KCu zplG}%7CNQ6|0#oG_e^#*w_p{uWjrwQt<1`_~LQ%*~uZ{ z>JY%mp&hHSTcKAIhpNdPUjU2}%QL2qKX0#8ms>%` zbY+alK|Hg28##mOd&Nxd4jEVcZy?MXhH3GpEVt5Y(4uA@jX<>z+rTKvor`08diZ8v ztd8Yk?9(+f%2|+oq?fd~dSm>^T_g?L7pcaHP~^*?V4n7zL_rEf3CDGRk zKJ}w!@LZmCd8c2V^bc@J#F^frlbpHI2oND?l62juFm-?yHQ72RYd4dA3bfj{(M|ev z;>wdcqBY~LKWnhV4EZ0z@#Q1Rq1fr#7jxkYmp7y@XZ=6fDb6Hywa9y@b8WJ@bJ2>; zXNRhhk4(A`Bc)(A!@{6Y zuTL{B0QqnOs)pXKR;$cWnkH(VyVi6C{lU{@BPKf44}R_Mw%^+sy2ejfW7lVev~g%| zplKj+pNESKfBH$o-HL%*?M6ftuk#o}0J?7kVXhX{oL@mmX(@tEZBUpjo}n_u z!XOJaUoEh9pm9O-K3)Hg!{QL8XLgg1?$F+EspWI|q3hq$Q^MP9Z8@(Ifi$crx&GdD z-$O=V*el5QKnOLD8AhU+^ZqI+#>qxNwuNyCv8)tB{fF=M5pF7JKe~ z<%a1Y82XU|qSwFbSF7m0g}Bp9wAY> zrtwB@{hPZ;LEH%7@0^fa&4XkDudfVOSTYa395XsrZ(_B=>d^FXpB52NVYReSWPLz1jJ-4|=<^0MIbK{by~z$Gf(D)d^u~ z6d%79dVO-!Lxs$HpRu|LUbg)oj02z}gN)QQkS@p_S<$B1rL|w=v_sMu6rafQ%?4Qy zII#St;|921RvO5=0sM?NMDTUQ1j=EB7S`ee&I}yi>Vjs{u-9?$4w3Qo_QdGk?$OB2 zc(>6Zucre!CCd9$CIndE)4+DH_Uy%B zZ!vmCS{~{W^xYz5GO!hE_3ddO@Y~Za5Ug^siaLILcVC|80RceP4=9v^)-aFJn;&}; z0jq1qNciyzJB(^UE#_L3U_rP;q z$7bxu6M=t(0J5j&#vo;l0LN!=D)#l#o?r}x6&*kjD3YoAt}CpXRRj?-{|<8PzlJpl z?%HXI51QCFLYec-wQ^S_Ko(3dHgb;KSydAu8fs0F+>b`W==XHOr2n{}`&IDy5$$YT z%LYv9>y1WV3T)x7+=nrj=i(3wRUg9Ti{-ra6x{5PeP|n@aN0NiMw-*h^!o*NhsD9a zR=SP2ltP9PzO*7?m8;?(QG}I(N0b&MKZT+BA=x#}?oPd&fquV1JO zG$H2o(ibf^J56okXd8wS&Z;9KD_=xoW>8Hv#Y;df{?jks?Z@x$%;-D2lM!X0nM;ao=W?EZ$h{w_BV)14myXc3wu zU03)ksXGCm(5&s?%8t{rgDtHr)Q@W(p!xw`rgNC-=}O@D8?Sag5IaJtxn!@kEfCEa z@k_g>*ewwKV$9n%Ch6_tjeW;XiYcGI(WYp=&$2SIKaurtM$tx||F4Nk9XVvETO`@6 z1;HPoWDu0xrlUAqc^7v)7xsuWuR{9fVnM?0RoSHu&#`_mHI7??8EdwlN~jH4g7JOqu# zD`S-3VC%v<-BvYF!#$9VdkT~h^d+Ve99SZ}%RIlc76Lfd)BC7&$jt>YKEbXU+6SD< zCqkPp)&0aIcd7TbtxxqhKNxh`sNIUHkDja2U;!~rvy-!Z&}z;KzghluQ$`Vns!h0x z?B{tq1d|P=(Pob*10$gT8ypXQNEfEI@24U03ef3&{BNOI}va-o7ju6Fj=0mT!h8cI_xu8dI zt;FLgu_T9#x$OXy6DfW(wilaY0kP_ZR|XYLkEJFvpZVh;1O?_=oku_Cm8)1fH!rAd$iL23H3^_R@Vu|Wf%z5_ zVP;HU9NXS^cLXl*wmLD3l8_b_(lg<^8!+uVg%hftd(#2fxmYePQ5XQx;KpsUv z?o&2vY4ZR+O`zN^AXRu6ufJ}};O}`K4!hLfKkI8qem9<#dO?%1U%?=S@;*c)DD2J1 zKz!$WJPga|nR9(y^-}0*d=VLcM|2YMu~!xsgQ|GHeaXN@xEzyO1K3}ky4T4GxTzp~ zzC1`6Cn@pog}n2el$dD_Ntvd)JwRKKL{?fNJ?Z1Y+sh#o?u`hu#suoG z>>7>!yb>~-{bFz?CYOHSI8LMtOx*n;QzLj-O^i#-5#HfaIAb-CX>-m4IMJAn)U*Mi zCHEOGfqUhyJc5yNI3IM5x|n8#vN3XEreAe6Bfq@p7%hWWryr7-D@_ zUL4!M-!yCnrD@o(fS$R#>xA+M%{3?6=f0Bev9r3ktN!Y{5TW_{K)l23aa4mxH(&at zySUhEt|Pwky+$1Km{8x=*D-?u7`Qp&e}&Qd$+evU)tgfvAP5N44O-iB zQ-5VFmg+Ekv^utfb|#){SdE7V2-8>R8B<<4CvdYzJ|=&9!ucJ=X6E=xirX8IJ4i+- z2>9ArQhiKp6gs?Kl>=Xz_*ps(2R6OCraaZ+kpDr~dslzolv=b; z*u^A>(zTB@bT|a9ZeezK4=EF~tD|8GWZMnW3a5X^RHNo^N)3>1bT7jJ>HF7AKZyv} zw(XU^p^a2N3{Vz%!kHK&N5_YbO67HQA+N_0Fb5Lr(d14AD^iG!RQoH?N60#}X-@SF z6eK|#f~+JOg@BjGn+t1C>iqjlE?AC@)HAa9AN&euL75e;)w;Rw+3tp`rw@eE1jmjP z`gP7%_#-5qZh8JxIig!l0~=cGV!&)9Gabt}h!%+w=y#L3to#!C1qz4{h*a?yyW8JQ zo*9u$AtN)pEwLKYEKQ7ahTO1kCQ?W~@$t;FGWEAEm$VR?q@q1%f;he0Ktko8Uo!@O zN-HD1=OKz9e3Ya({XRr43^28ImFaos&AX0pM1^ViW<720%SrNYWu+%zbz=>hCqq0h zqWM))>g(2H?tV92E@#mN-4<t$W$eV)eJKfB7m^87EgPYZQC!sd-;Lj8O?r^ z@Ctbk+*LU@=OL#^`)=E$#xs(OmAEl^oOao6r)GXKr}cSY=e&ewoC0@xh>=)4*B zv6;}3ZKUIF_PUWq|A%#EOw3sm#<_L<&TQko{N`mRo4yHE7Ls)i{HK&6RM8Ki z8k(4MyBsbV1>26V^|M|;(*qaVm9Fpx=!EdO!!4KcNqnh-)H|S$n43Rnr zxy)H({tp2e@&j?SLTL0z`P%3O7;mCSA`dXH$Lp#=PVDrbh5q_2VfdFK z&^24-jd%wEM1%aKn;IA%?{qST`%7G9%X`5(}@5Qqu(v zAskCANjaS8dE&^#&c$likPZ0j)NG6+qO3oN|E1pAXGy?)-UgZ-;8QU7u18q;wd}u- z^V36DS2EaN)^)cUF9x+BioK!bbmI7U)qx|s%zFU)G+R%Gj5~oQ+4pm$igxIWgG@aM zs+c2!JUO#~&#}HG>`ChAdyRoSDZ<930n~ZpYY@hayfx>e);Y1lWe*4drM6QAg*SRr ze!P!B1t-n#IlK})4;KX*7Atm+?%U8vwC>?XG>s;u%(Z3)w_G zFvmr@{Eid!dBHb8hRq%=0eZ9Ia4jP-ZytO9$C-(5^@-{Th)(q6jI&6{@1i&*;?0y4 z@2AvsGST=t!&6XtVn5yWDmH*j>)_~zYY!PopyPR@3+*0kczAU-{wzCPh!Fjf@yA<( zrRV4Keg~2k(-%Km*)w7;UiE?7)Kg<7jgpyvgmF zEvP)Z+-r=4?DKT*vk3;J4k~?lv_T+sXpd&a<*&YeYPWMGcDZ5ONFCRg>s+E66bERo zFu@WIe+7u$l$Am^OCX#DC4oQLzL^)C2n zme3P1Y*An!(IRkMVm@v99g{AzUtN)3~AOEfCt$=a^L=i>U#Ogyo~ z6(Qr2VF0~Op{&-%ex88*7?8R5M#~c*8<#csC_A52&|`H{tYKu9QdDo7rX!mbi#J9vZJ111^#*KC$2orv$S3CIOICQ(FL$l9*pS!jvBx+P)gR#vHPK zhoC`{!R?@nsqJTd1I>MxUbrI}kRakFgvk*fBx3eg-X}krstJCRs}{c{L#a-hUZD;< zgzX-0JMK}vu?xX%E<7#sb#wwf|I#3-(d4hMlF6?`l&h=rff_(<>0e!5J&ggRPzi}q z=A6w^b!>0!8(FjpIRlnnm+z@k&Ga^3c~4uvAO+CGM?R9fa9t-tzp+O3PZUxV0&mk~ zq`RK%!9d`Br&?br=(Dktm)C%jRut`Hg4P5|rpWNnz!uC|?e?*b6b zj>^r}obcn4+^Ipz4j*pUEwI#Xoq!Xh{OpoDx(nlsL46k=siC>cm>nDQD}HdUW*io~*rk~*V-@{c3gCth={$;y23_j)_GdOO^m>u!BsNQe7O+<0l$Q0#Moo_^ zEja-qshgX|Cl^*>gZzWb;QMlQK|TUBTq0(Q3(X5r!W(W~Lm-5ZMeOw5O-R1R1)C+( zahJC4R`W1LTM-hn*QBf|Ubd~9c^Nhy_{=unaP?c(wIom%ph_vKow-;S-1&7m_~(z z((ThHkG7W86XP^qW~nWZ@JO*go8c^;#(k;2RCvO-jcP6?#YbdqU>VzpW6ysR`#q}Y7%||?l*$cpPB!sOR0BH`)e65z2+=_Yy4K~q zvgx;s*xs}5KO`=j|EYsMz8QjCIM+Y%_r-@?_J2nIW+66!L@Fz7lBaC2v^O>iSWkR~ z(0Mmd?ZK7b<$AqPLp+s6pgk#o_f`4KDWAI+cvy|K1$stEUg71iK~4i6O`n8oOfWSxS-<3ywEOGGL2FWVXae zan~!4)x{=~JG+yW1y1DgOdblkOX?GX9lb_wvrSv|q9W9vWYj()l_aa-7!zF)q9rPu zHKhV(qHr@XzMH8uysIT$xtC-SXQdj?2STGoUsrb8phWKj2U*BBO{T3i`r@r%{X&!| zka6b%Fb&i6L=VFgY{b>5!>LpvTK}`0((c;a!j{EB9-~pZH`BLihufkE6=$>6H(feKC+j-i6rb20(q{(^6_>q!W!SiOX6thW9hZ_CVO!9% z(J!Y@3PAq0xzEkuOFRnegs<1Rn=u35Hy4=2o2XywBUUh2w_s4;em@|KVo9CXn+UE!yf1P=qG8ta=fO>{ z%;vwUmi|-%6-N?T_3rwIoe}rdN~bON{F-GcgALt1H_%+>F%r-N5YLC}^ZPYeAx!dHNlt)aQUEd_fOsr7C`~{< z_EbKOSb*M-ke(7lUrCQXmY6~vLEt`Cf4<^5^Xa<7w##?7%Gn1&->lvBM!TcjWl2>x z?EQK^ZUalTRFFb(UCgU%P}0XA1(r@KOsY3MR5qI_;fa0|q;Na62Rt5!If^ckvRW(!^AC#}?wHA1^ znWwS6qMqZfxG}7vNfKNdyqNx1YF+jDH&Y%XQ@Ja(FDbPSELu6BR!?ctzlMEWny*aA z?JK?`_=cWZ{Ur=x;fWgM+3cN7@{hkRE7KkEgs^CKFYgSf{8OIL z9RALm$);Q$9aT0E)Vy9A8~PF}q2|G#@^58l2{eG-p7Ot=T>?rJ9mJpMKtmz_)*T6 zt1$6xLI;;Zx)sECsGGv##!ud0D15`yJ)qk;e!|ls4J4K!ePN~b)%T*dMRf{XWG@@_ z$-?#J+hNdKD%d~o^=`wlw}l26Rhm5z8FGSmE-ljl1KUtE48`idwa*%GVszs7=l;Ur zXLdTbD42_`D$ykSoI6)toh(fOLWuVqPinOcAE|ch4JS}RQGWdQfC`~{*4*I zAAddKO&HIR*Y)VIc-)QafWXBVcl<8%LQ(js4{&`gL0wGB$+3ad<=w=m6M*6Ued?i^^qCVWX5fZZaf6htk!AV%hj7 z^v|$#Na&smaye|g>~&iEL_N=P;;~z0Or5$m z68QG}#HkIzcRIr)6UwN{W4d(bM3SuZXh0%D=OAcKOJ4#}+h+FXP2^Ft4FDkUhbm7F zFB8bA{Qc3(%}mVz!b*0%J-wnmo6phP5a7 zT4o398+-wfw(ZPiNg7(FCs>^1M%BB&k@AzQV8$j>X#y2_C0c<#Xb8J5)du47z9_*y zk6zAC;P8mEYwHy!485G{*_8qV_p#V4zg_+sB$i+Yu=m7=Ol~wxX{U#8m#W?tsQxw9 zi=zsOWZ51ft5H;E5G3WtKfmG(g?X}``jEQ}+H3}5kVg^C+y$eZK5_9~l8G5NAm*=9FS8ZO4d;k!f2b;n}SBQSq#7#HQ#$pCt zryjUQnf4(gWsjlRV?b1U+tE>5WJky8CG@_*fDmP-d%533H1cHob1?KG`o~DXJ?gUD zM;a_;pS#xt?mh6kG>+i&-oFqvaUa9L^TZ3gBpLSGEU}ae0+J~gb%%qwU2PI4uh%)Z zhNS-nr0I#&7u>m{t;(w1dgsl6^I93K$Q)K9=F$f;&rXjjv=?(+_v5P65^Z(m7M~x7 z5K5m}qp`b|*I~(=ZQ+|d4M2wy7jQX~KfJI_Wguj|Lf^&y!(EhT9(1hI!5Js#yAmviH$M*wc zf;$10*<41b0M+Xcd~P&TCH1X#E_7>nJE0iHiM(($s5)xmvK+jYft8Gt>XcAc#vQ0hMY^YJ2Jm;-T_|t z@m!sgVg8eb-8jXL=qn>sk=0M!(sGiwn-;RT^h7J9vyhzxAOP}+yyJIqB-`)IvnNk1 z5O+5seF7Nh6CU)4zKj=w;=eforE7q#Sk@pjAZlGG*YD{v4;- z>8Zm1Ign{;-EeQ%$6m|ucFi}}D}M?i=Kq*LZTmfYc{n+>!5t0Mz~vJd=m3Yu9K&iH z%oy3LBX8V94;E`Q4sO=ENAOeMdG)nmh+is%@q-uwPM8z{{|v65t2K*0j!iD-W#3p$ z_Zw4Vg96ACXUP57TWElyjJ;kh**uXKM0*zRu;mY%`t}ZLcW<}CK++OG7+elK;5-56JyEQyv^4wXR9EpxuBzp*}YH1ryFjHg<6FdH9SvVoQ-PR@6qD z9CjZtb->C_JTnbO29%{nO@}KAJ7TSa877v+nF|16Ngsl@E~DCWBZ>KUp*$S_6NUyHj7t$!Bl3QEqCgnyX*scRTz>Fe4&|84JK{ zC_UAr-aplgw+zY@W=O8^U>OmkqPjor$pyf-SmPvMd}?gF@}t=gz$J;qQRT!VPY9i# z2tOowvu%6!uxS8&tVX47{EX7MKN^P@OyO3A zE@Yom7=PAiUNz$?;<&Eo{NxLF&0k@$tx>qd;OyQ z-kFNB4HeffRN%|7(~hw&p^1kmcxe`WEHW3Tj0shclP|ir%Z&9ZMgcRhH`V=OYyFKa zd!|R2bNwQY&EuhtUjd|$=W_l_r3a$$Ty=7}sfHvRqw)dw6?4fPi;+kpqpPto$k%;O zh;HHD2sbJk5)RTn9~M&a&o9BI$K=tQ;pbZE>vFq6$}|F(p5;8>(kd>e_hUx?xRh9Q@giftoRL0qYaP6-qLj2(@CR^?NtjOdf%BC{mmZl15v`3&G z5?YyAGG7jZ-py_D8zUz#ug>I`TmjD&ztfU5%B_zMOJp_2noVUQ@r&rZ(%g0v!QAta ziyQM}?INgqT}B7Qmfs)@X4L(0q!$%qY2ndgFHyh9RBb3oMY7Gbnl3FyHxHCWn7sem z-w@ID*dMq>mw$RI&y;SWn{8tKJYNkg3!Z6qAiHdeWf$eX5Da(+9HdBzRY2#fU_Vm8 zDvjc5n-NNEGWl+fn>JC|lk=4REUVYB0YbA7+yrkN0q&%%&+YVp)`lo6M-gz#ppy}e z8+@7<7*Ke?M_4JIBThBam>)l?h}AePi*@5{_0~aZ6pZQ)|bM{=|ZHzel!(t?HEJQ#Ix#-9UoO`F}}HnoR|~|DuKRoawZN3!g8Hs_(Q7`TPS=^lWJbe-qog$ zze$U!1V^x`?7Vw}%H^@xANFP5lE}aOygK#wzl>cNFj;}{M>9BttvxbYX^A!)$>%99 z6cp?L`ekG$JAngvlw+UkY%cKqW9uwpw8|Oc-Yn)uRKor>*t;96L6i=K5%G}z{YgdM@i)R4^I>BZc4(UYk|m0jUnhf0|VErkg>!>NUtl~s_; zQ`UHp02|k}G|sOxb9Ef z*~OWjt*qDAI}1M8f*v*yaci|CjT~OTg+3P-^ml7%%pr|cdblN2gZ92~V%=b}x#X%8 zjcc>IQA&#Cj_NnC3C}G*%ir*A8Z-P&MziKOQE zIbUjHe^zs zAX4yAVV=8|RF(*Tg2$sXrjfQ1-{kXuKPct=b? zopgD#;%~@lFa)`uGWk}H&DQ!(iqmVxL(k)6W?l`n;5ZJpaxfWelm--*u2I+!!FzO9 zPhyHxwNwpR5Fjh~XF&!2+G3Fd2FWjERTty_^>j`^bSpDlaswZ4f^RL*P61|6*Czmi&IOMW(5JoGEol?_RMBy!fLz!VB zyRe5$1e34@O?|{evMnZI9Un8F{D~kRw!X>dOmZM5s0mizJu;jE31sr2xN(;6s#_yY zXv56yOFQhS5}*c60CIDIMmDztuY@qt4i;CJ8ic#Y9CPzOb-RTVVEX#VOC7+`$vQ zwBT2Qy`K;dHY)k@jlX9YH6Jc+0_pUu^^5FEQp&Mv$cBd@)%v2TDU*$>z6zO77Q?=j zqR)l-x73FUb~Lo~fOT1NxK!zS>j2}IO8$JB#>G^!0?;3*&&!VC>Lm!;p5Gt)LvphT z{gsp<&9>Nh< z_}3MsC?rurNSJ}GSz*VGV8KD_y4JE&)EqN)9TXBQ-bt7ivib+$$x>V8)h0=8D^uEc zMev#zQ5UYyG=Iv+CrXNoy3~)Rl7w;+K1{I~A57XzO}Sq@rDVoMqKneAqP*Y1XL5ExdaWTGlX~xv1!|(jC zUPuY&F8d}5Y$YL|{l4@lZ5s4Y1&$(ksYiSgsx@rI2{=myN`?sLZ{JIFrtMy+d^G!w zRF~{5S{kja=cHvX^c;ak$;!$)Jps;Oe6lCt7N`x}zb%FEQyKsC!rSEYL0WB@Jj<;z zO!^Wrhgz(SeAwr=Z#*X{-k~RDi^Lv(XbXpYP|s=TTmnu>s}abjNWTcm+dEs+ee7`? z^__Y^lkYc9&d9DD<%r&2m2o&la+)5@-u7rDEYh~0>^ji&nx@rAgpDk73T-BwHzP^E)Df4VtWbOg_ypP?lzcI1R8P@{18>Gn! zy-StFwFpZw1cmGb&xOG2ii*^kY%xe<3UQ0$fIe*Bk(V_tUyDJciyxG?fwa9(5%9yg z(S(}9%g4lnWBV!>MN6$`2jvuaDU`ms`!Y%+KXkot7U&6Wk6l}_^_7GZa&d-8d_^Zf z@{SLIQ8fgD&SsHmJa$N%{avvrbq>&H9xwr!kUCvJnx~?^(-}_7_?SPX4f)zRP64ek z-Y!vaO44k0_ohCge>`|<6kZsO2mMwFXp4uE#5R@T+8N|;i6-wT3JT_1}F05CEE#m|W zQGt>mZq(M-`ATuGl`%gvhWyfwV(n5Qk$&*e1aOyLT+>t1BL(Cw*Ea}bi!qTjC^oWa zE0rc28o%AiO^=X^-jlkw74i3tnwjv|3ie!a{RlR)BrQ}CXv={k8l7QMP)1M@$tVTv z^f3&C_5cr`@aIbN6t;t@LOmULPX1InU!Q`!#t`q;OgjxnNq3){u|jSp_(LtIpqDf2 zFi4;H=S@HD;dg3%;3jj;3pDn;K1_=X>zk}93$Y!gJ0!fexAtbhllZk1F&Z^h{`2PN zU6@w~TVF{THc1cwbPOfoga38sALhHE-ng8|NuT18F4+Cz zkIAMIEr*6Ri1@qNsBypwW0qhU{RKq&o{L98^#UEGp4cNrBDZ)}MEedvp?9ro8@j-s zV+n_fSu^+C803upKPd_NFF9#@(xkUZO)htZ(+?(DqN?Kbdf{PeWcY*+KG}h|Qx)-_ zZ2SWGR3v|Rhp)9lyZc1i`k)($G9HiH@%-=y%^M05f1MT$4UwXv=8!%i#}S3x`sLs> zIZYl#CUtN%f-VuCp=ZYs873smVQ?&BGpbM1zIui`9h76V6XzJ~F*?2tmAEDRsj~w4<_u7HS!sB)isY8_Kf-V?y;CjP6u_If^6YkME zJD%ElYG_ERx~h4}A_d7f%%S@8jf3TQujQLne(3i{$n`>PHq3CBIwY6@&^;6N zin7~t30|9L_V;LmA*mDjinaPWqS3EmrMxN3H8IVVz4M6^%luDKNM7fHk45GE{(&9J zGw0;4C8t{Yu0zJn#k0RL5s@f%-*%Sl3Jm z9#Etlto~`_2>dNAF0My$HC;**t$dqi+7MPA%@oh)!o!ajrs8JrHH6woUxlC6C(E_& zg|}B4hF>_O&CSijCw~JBPe)7ghVma#AP^6huQGRIlpN7eH6HmPqi0tLANAdyyjM6r zlDM{PrdwkrFk3W88=R+|JIaRkJxN!jr>8H15Dv6k!Wt%#&$Uj5;frPZUNYey7(x#e zlX~&b?*f!^d=lB-VC2_Wm$rB%>-TO&UtI80k6j8AY2eh5HpTX012|>{s={TXv7Yj~ zYL};z|2c1CycAART|B*ak|Jx;c>nSguSrt<8*s@bzRAZ)TpSW)yV{zFkj#0`d8ceQ z2yjL?=B_JR1*WclP`AWF`kco}*|} zjM5H{O&=UtziC$YFkvsKX|nCRw4;6?79EXcl@Y^fM!;_WcUd~7Ru{-SoEUo}|J*L} z`^;06_M1O!@OMT*K|bS}(EDkW(Z*k6mj@lvxfjfV{zOX$d=a3MpLxLDoR3PH&+zbeCyEx* zN2&~UB64CQNyQ$0a&WtY%aItd^QXkP8Be|2KhvIeeMgPOUrbGYKRe{{%(eJqGuFes zyPEv-dqCl(fbV$kpak|`PiuU9pG*Y!a6b@3e2#wQ!M=yPKOfk&b}k(-APJgY5wlO+ zRt}S`y|a7kzJPL)z#udL000nwx4)$l?ZVH$7bE~=08JrV8z*BMCtW3XJ7Y&}S~qJe zKmY^)C7}Q54RHOh3Lr~iN@9>6ftTtPjzHC15k0b z5jcaE`(z#SBIhL^Ii7|c-=b6GG^TVXr1N0&W7%t{{C1Ph!J@g)!e|CX>omwprbabq z#A`>xXAcx+UlFYC&dS$OTwKHp^J?n1izvM#!s_hW^v_tr!lDHSqE8p_|E8=WtEcuq zltKTcOxMBK%8`!tpYk87asdCu(el5kN{XG30Uy9j zHRxSTlgB(qS5&O8Px}%&MNO-a(AK(`!LjmtGiJ$<;6ZeIFG`_BEe2z@42?{!?uYss z1~ag%?I^8i3{eb=!kP(V+d}nnQ(u_H>twARWiY$kwGwb-WJeCSoU9^`ioBPP_p9bd z&q*pdH8zE&n-pqbw+ zet+wKTA76Dn2fA#jf|~m|EB~5KnGAq`j-TfX#bnAf1mT;$Y{s!8~;H@{XfXk#!mW1 z`cC?EPG-*51~&TURiCC^4~IR`tR%fH~#calib_flowrate(1); }, "", nullptr, + [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(false, 1); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); append_menu_item(flowrate_menu, wxID_ANY, _L("Pass 2"), _L("Flow rate test - Pass 2"), - [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(2); }, "", nullptr, + [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(false, 2); }, "", nullptr, + [this]() {return m_plater->is_view3D_shown();; }, this); + flowrate_menu->AppendSeparator(); + append_menu_item(flowrate_menu, wxID_ANY, _L("YOLO (Recommended)"), _L("Orca YOLO flowrate calibration, 0.01 step"), + [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(true, 1); }, "", nullptr, + [this]() {return m_plater->is_view3D_shown();; }, this); + append_menu_item(flowrate_menu, wxID_ANY, _L("YOLO (perfectionist version)"), _L("Orca YOLO flowrate calibration, 0.005 step"), + [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(true, 2); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); m_topbar->GetCalibMenu()->AppendSubMenu(flowrate_menu, _L("Flow rate")); append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Pressure advance"), _L("Pressure advance"), @@ -2909,13 +2916,20 @@ void MainFrame::init_menubar_as_editor() // Flowrate auto flowrate_menu = new wxMenu(); append_menu_item(flowrate_menu, wxID_ANY, _L("Pass 1"), _L("Flow rate test - Pass 1"), - [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(1); }, "", nullptr, + [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(false, 1); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); append_menu_item(flowrate_menu, wxID_ANY, _L("Pass 2"), _L("Flow rate test - Pass 2"), - [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(2); }, "", nullptr, + [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(false, 2); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); append_submenu(calib_menu,flowrate_menu,wxID_ANY,_L("Flow rate"),_L("Flow rate"),"", [this]() {return m_plater->is_view3D_shown();; }); + flowrate_menu->AppendSeparator(); + append_menu_item(flowrate_menu, wxID_ANY, _L("YOLO (Recommended)"), _L("Orca YOLO flowrate calibration, 0.01 step"), + [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(true, 1); }, "", nullptr, + [this]() {return m_plater->is_view3D_shown();; }, this); + append_menu_item(flowrate_menu, wxID_ANY, _L("YOLO (perfectionist version)"), _L("Orca YOLO flowrate calibration, 0.005 step"), + [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(true, 2); }, "", nullptr, + [this]() {return m_plater->is_view3D_shown();; }, this); // PA append_menu_item(calib_menu, wxID_ANY, _L("Pressure advance"), _L("Pressure advance"), diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 7950f9a669..469bba9117 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9646,21 +9646,11 @@ void Plater::_calib_pa_select_added_objects() { } } -void Plater::calib_flowrate(int pass) { - if (pass != 1 && pass != 2) - return; - const auto calib_name = wxString::Format(L"Flowrate Test - Pass%d", pass); - if (new_project(false, false, calib_name) == wxID_CANCEL) - return; - - wxGetApp().mainframe->select_tab(size_t(MainFrame::tp3DEditor)); - - if(pass == 1) - add_model(false, (boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "filament_flow" / "flowrate-test-pass1.3mf").string()); - else - add_model(false, (boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "filament_flow" / "flowrate-test-pass2.3mf").string()); - - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; +// Adjust settings for flowrate calibration +// For linear mode, pass 1 means normal version while pass 2 mean "for perfectionists" version +void adjust_settings_for_flowrate_calib(ModelObjectPtrs& objects, bool linear, int pass) +{ +auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; auto printerConfig = &wxGetApp().preset_bundle->printers.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; @@ -9670,37 +9660,47 @@ void Plater::calib_flowrate(int pass) { assert(nozzle_diameter_config->values.size() > 0); float nozzle_diameter = nozzle_diameter_config->values[0]; float xyScale = nozzle_diameter / 0.6; - //scale z to have 7 layers + //scale z to have 10 layers + // 2 bottom, 5 top, 3 sparse infill double first_layer_height = print_config->option("initial_layer_print_height")->value; double layer_height = nozzle_diameter / 2.0; // prefer 0.2 layer height for 0.4 nozzle first_layer_height = std::max(first_layer_height, layer_height); - float zscale = (first_layer_height + 6 * layer_height) / 1.4; + float zscale = (first_layer_height + 9 * layer_height) / 2; // only enlarge if (xyScale > 1.2) { - for (auto _obj : model().objects) + for (auto _obj : objects) _obj->scale(xyScale, xyScale, zscale); } else { - for (auto _obj : model().objects) + for (auto _obj : objects) _obj->scale(1, 1, zscale); } + auto cur_flowrate = filament_config->option("filament_flow_ratio")->get_at(0); Flow infill_flow = Flow(nozzle_diameter * 1.2f, layer_height, nozzle_diameter); double filament_max_volumetric_speed = filament_config->option("filament_max_volumetric_speed")->get_at(0); - double max_infill_speed = filament_max_volumetric_speed / (infill_flow.mm3_per_mm() * (pass == 1 ? 1.2 : 1)); + double max_infill_speed; + if (linear) + max_infill_speed = filament_max_volumetric_speed / + (infill_flow.mm3_per_mm() * (cur_flowrate + (pass == 2 ? 0.035 : 0.05)) / cur_flowrate); + else + max_infill_speed = filament_max_volumetric_speed / (infill_flow.mm3_per_mm() * (pass == 1 ? 1.2 : 1)); double internal_solid_speed = std::floor(std::min(print_config->opt_float("internal_solid_infill_speed"), max_infill_speed)); double top_surface_speed = std::floor(std::min(print_config->opt_float("top_surface_speed"), max_infill_speed)); // adjust parameters - for (auto _obj : model().objects) { + for (auto _obj : objects) { _obj->ensure_on_bed(); - _obj->config.set_key_value("wall_loops", new ConfigOptionInt(3)); + _obj->config.set_key_value("wall_loops", new ConfigOptionInt(1)); _obj->config.set_key_value("only_one_wall_top", new ConfigOptionBool(true)); + _obj->config.set_key_value("thick_internal_bridges", new ConfigOptionBool(false)); _obj->config.set_key_value("sparse_infill_density", new ConfigOptionPercent(35)); _obj->config.set_key_value("min_width_top_surface", new ConfigOptionFloatOrPercent(100,true)); - _obj->config.set_key_value("bottom_shell_layers", new ConfigOptionInt(1)); + _obj->config.set_key_value("bottom_shell_layers", new ConfigOptionInt(2)); _obj->config.set_key_value("top_shell_layers", new ConfigOptionInt(5)); + _obj->config.set_key_value("top_shell_thickness", new ConfigOptionFloat(0)); + _obj->config.set_key_value("bottom_shell_thickness", new ConfigOptionFloat(0)); _obj->config.set_key_value("detect_thin_wall", new ConfigOptionBool(true)); _obj->config.set_key_value("filter_out_gap_fill", new ConfigOptionFloat(0)); _obj->config.set_key_value("sparse_infill_pattern", new ConfigOptionEnum(ipRectilinear)); @@ -9724,14 +9724,18 @@ void Plater::calib_flowrate(int pass) { if (obj_name[0] == 'm') obj_name[0] = '-'; auto modifier = stof(obj_name); - _obj->config.set_key_value("print_flow_ratio", new ConfigOptionFloat(1.0f + modifier/100.f)); + if(linear) + _obj->config.set_key_value("print_flow_ratio", new ConfigOptionFloat((cur_flowrate + modifier)/cur_flowrate)); + else + _obj->config.set_key_value("print_flow_ratio", new ConfigOptionFloat(1.0f + modifier/100.f)); + } print_config->set_key_value("layer_height", new ConfigOptionFloat(layer_height)); print_config->set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); print_config->set_key_value("initial_layer_print_height", new ConfigOptionFloat(first_layer_height)); print_config->set_key_value("reduce_crossing_wall", new ConfigOptionBool(true)); - //filament_config->set_key_value("filament_max_volumetric_speed", new ConfigOptionFloats{ 9. }); + wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty(); @@ -9741,6 +9745,43 @@ void Plater::calib_flowrate(int pass) { wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config(); } +void Plater::calib_flowrate(bool is_linear, int pass) { + if (pass != 1 && pass != 2) + return; + wxString calib_name; + if (is_linear) { + calib_name = L"Orca YOLO Flow Calibration"; + if (pass == 2) + calib_name += L" - Perfectionist version"; + } else + calib_name = wxString::Format(L"Flowrate Test - Pass%d", pass); + + if (new_project(false, false, calib_name) == wxID_CANCEL) + return; + + wxGetApp().mainframe->select_tab(size_t(MainFrame::tp3DEditor)); + + if (is_linear) { + if (pass == 1) + add_model(false, + (boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "filament_flow" / "Orca-LinearFlow.3mf").string()); + else + add_model(false, + (boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "filament_flow" / "Orca-LinearFlow_fine.3mf").string()); + } else { + if (pass == 1) + add_model(false, + (boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "filament_flow" / "flowrate-test-pass1.3mf").string()); + else + add_model(false, + (boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "filament_flow" / "flowrate-test-pass2.3mf").string()); + } + + adjust_settings_for_flowrate_calib(model().objects, is_linear, pass); + wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config(); +} + + void Plater::calib_temp(const Calib_Params& params) { const auto calib_temp_name = wxString::Format(L"Nozzle temperature test"); new_project(false, false, calib_temp_name); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 16396631a8..109e7845dc 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -259,7 +259,7 @@ public: // SoftFever void calib_pa(const Calib_Params& params); - void calib_flowrate(int pass); + void calib_flowrate(bool is_linear, int pass); void calib_temp(const Calib_Params& params); void calib_max_vol_speed(const Calib_Params& params); void calib_retraction(const Calib_Params& params); From 491f360dfde077ba68125493659c35efb83b11eb Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Thu, 22 Aug 2024 19:02:58 +0300 Subject: [PATCH 131/151] Reduce warnings: remove unused variables (#6499) Removed unused variables --- src/OrcaSlicer.cpp | 1 - src/libslic3r/Format/bbs_3mf.cpp | 1 - src/slic3r/GUI/DeviceManager.cpp | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 1 - src/slic3r/GUI/GLTexture.cpp | 1 - src/slic3r/GUI/GUI_App.cpp | 12 +++++------- src/slic3r/GUI/GUI_Factories.cpp | 1 - src/slic3r/GUI/GUI_ObjectList.cpp | 2 +- src/slic3r/GUI/Jobs/PrintJob.cpp | 3 +-- src/slic3r/GUI/Jobs/SendJob.cpp | 1 - src/slic3r/GUI/ModelMall.cpp | 2 +- src/slic3r/GUI/PartPlate.cpp | 8 ++++---- src/slic3r/GUI/Plater.cpp | 9 ++++----- src/slic3r/GUI/Project.cpp | 2 +- src/slic3r/GUI/Search.cpp | 1 - src/slic3r/GUI/UserManager.cpp | 2 +- src/slic3r/GUI/WebDownPluginDlg.cpp | 2 +- src/slic3r/GUI/Widgets/WebView.cpp | 2 +- 18 files changed, 21 insertions(+), 32 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index bb52a0aea1..5ec7d97d9d 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -1190,7 +1190,6 @@ int CLI::run(int argc, char **argv) //BBS: add plate data related logic PlateDataPtrs plate_data_src; std::vector plate_obj_size_infos; - int arrange_option; int plate_to_slice = 0, filament_count = 0, duplicate_count = 0, real_duplicate_count = 0; bool first_file = true, is_bbl_3mf = false, need_arrange = true, has_thumbnails = false, up_config_to_date = false, normative_check = true, duplicate_single_object = false, use_first_fila_as_default = false, minimum_save = false, enable_timelapse = false; bool allow_rotations = true, skip_modified_gcodes = false, avoid_extrusion_cali_region = false, skip_useless_pick = false, allow_newer_file = false; diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 90f4536b95..206fc2aacd 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -878,7 +878,6 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool extract_object_model() { mz_zip_archive archive; - mz_zip_archive_file_stat stat; mz_zip_zero_struct(&archive); if (!open_zip_reader(&archive, zip_path)) { diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index a79dd0a027..4c4eb37c60 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -5662,7 +5662,7 @@ void DeviceManager::parse_user_print_info(std::string body) } } } - catch (std::exception& e) { + catch (std::exception&) { ; } } diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 6365b88a26..5f45d9b1c5 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -8434,7 +8434,6 @@ void GLCanvas3D::_render_assemble_info() const auto canvas_h = float(get_canvas_size().get_height()); float space_size = imgui->get_style_scaling() * 8.0f; float caption_max = imgui->calc_text_size(_L("Total Volume:")).x + 3 * space_size; - char buf[3][64]; ImGuiIO& io = ImGui::GetIO(); ImFont* font = io.Fonts->Fonts[0]; diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index 79cbb77370..be0b402653 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -470,7 +470,6 @@ void GLTexture::reset() bool GLTexture::generate_from_text_string(const std::string& text_str, wxFont &font, wxColor background, wxColor foreground) { - int w,h,hl; return generate_from_text(text_str, font, background, foreground); } diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index eb5ae0c38a..4c89e966b7 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1026,7 +1026,7 @@ void GUI_App::post_init() try { std::time_t lw_t = boost::filesystem::last_write_time(temp_path) ; files_vec.push_back({ lw_t, temp_path.filename().string() }); - } catch (const std::exception &ex) { + } catch (const std::exception &) { } } std::sort(files_vec.begin(), files_vec.end(), []( @@ -3365,7 +3365,7 @@ if (res) { mainframe->refresh_plugin_tips(); // BBS: remove SLA related message } - } catch (std::exception &e) { + } catch (std::exception &) { // wxMessageBox(e.what(), "", MB_OK); } } @@ -3379,7 +3379,7 @@ void GUI_App::ShowDownNetPluginDlg() { return; DownloadProgressDialog dlg(_L("Downloading Bambu Network Plug-in")); dlg.ShowModal(); - } catch (std::exception &e) { + } catch (std::exception &) { ; } } @@ -3396,7 +3396,7 @@ void GUI_App::ShowUserLogin(bool show) login_dlg = new ZUserLogin(); } login_dlg->ShowModal(); - } catch (std::exception &e) { + } catch (std::exception &) { ; } } else { @@ -3418,7 +3418,7 @@ void GUI_App::ShowOnlyFilament() { // BBS: remove SLA related message } - } catch (std::exception &e) { + } catch (std::exception &) { // wxMessageBox(e.what(), "", MB_OK); } } @@ -6507,8 +6507,6 @@ static bool del_win_registry(HKEY hkeyHive, const wchar_t *pszVar, const wchar_t return false; if (!bDidntExist) { - DWORD dwDisposition; - HKEY hkey; iRC = ::RegDeleteKeyExW(hkeyHive, pszVar, KEY_ALL_ACCESS, 0); if (iRC == ERROR_SUCCESS) { return true; diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index ee19b25497..3cd5c2e057 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -1977,7 +1977,6 @@ void MenuFactory::append_menu_item_set_printable(wxMenu* menu) for (wxDataViewItem item : sels) { ItemType type = list->GetModel()->GetItemType(item); - bool check; if (type != itInstance && type != itObject) continue; else { diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 30846abf51..e1fc0b0f18 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2006,7 +2006,7 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo try { model = Model::read_from_file(input_file, nullptr, nullptr, LoadStrategy::LoadModel); } - catch (std::exception& e) { + catch (std::exception&) { // auto msg = _L("Error!") + " " + input_file + " : " + e.what() + "."; auto msg = _L("Error!") + " " + _L("Failed to get the model data in the current file."); show_error(parent, msg); diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index a54310c234..31bbccfb96 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -150,7 +150,6 @@ void PrintJob::process(Ctl &ctl) ctl.call_on_main_thread([this] { prepare(); }).wait(); int result = -1; - unsigned int http_code; std::string http_body; int total_plate_num = plate_data.plate_count; @@ -312,7 +311,7 @@ void PrintJob::process(Ctl &ctl) try { stl_design_id = std::stoi(wxGetApp().model().stl_design_id); } - catch (const std::exception& e) { + catch (const std::exception&) { stl_design_id = 0; } params.stl_design_id = stl_design_id; diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index 6566060546..1964aa24ec 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -111,7 +111,6 @@ void SendJob::process(Ctl &ctl) NetworkAgent* m_agent = wxGetApp().getAgent(); AppConfig* config = wxGetApp().app_config; int result = -1; - unsigned int http_code; std::string http_body; if (this->connection_type == "lan") { diff --git a/src/slic3r/GUI/ModelMall.cpp b/src/slic3r/GUI/ModelMall.cpp index f14de1ebf0..45833ba80c 100644 --- a/src/slic3r/GUI/ModelMall.cpp +++ b/src/slic3r/GUI/ModelMall.cpp @@ -133,7 +133,7 @@ namespace GUI { } } - catch (std::exception& e) { + catch (std::exception&) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 7f2353a304..ce65811936 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -2522,7 +2522,7 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) { auto compute_points = [&print_polygon](Vec2d& center, double radius, double start_angle, double stop_angle, int count) { - double angle, angle_steps; + double angle_steps; angle_steps = (stop_angle - start_angle) / (count - 1); for(int j = 0; j < count; j++ ) { @@ -2541,7 +2541,7 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) { const Vec2d& p = m_shape[i]; Vec2d center; - double start_angle, stop_angle, angle_steps, radius_x, radius_y, radius; + double start_angle, stop_angle, radius_x, radius_y, radius; switch (i) { case 0: radius = 5.f; @@ -2592,7 +2592,7 @@ void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) { auto compute_exclude_points = [&exclude_polygon](Vec2d& center, double radius, double start_angle, double stop_angle, int count) { - double angle, angle_steps; + double angle_steps; angle_steps = (stop_angle - start_angle) / (count - 1); for(int j = 0; j < count; j++ ) { @@ -2611,7 +2611,7 @@ void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) { const Vec2d& p = m_exclude_area[i]; Vec2d center; - double start_angle, stop_angle, angle_steps, radius_x, radius_y, radius; + double start_angle, stop_angle, radius; switch (i) { case 0: radius = 5.f; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 469bba9117..34eaa55be9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9083,7 +9083,7 @@ void Plater::import_model_id(wxString download_info) } } - catch (const std::exception& error) + catch (const std::exception&) { //wxString sError = error.what(); } @@ -9125,7 +9125,6 @@ void Plater::import_model_id(wxString download_info) // if (!m_agent) return; int res = 0; - unsigned int http_code; std::string http_body; msg = _L("prepare 3mf file..."); @@ -9164,7 +9163,7 @@ void Plater::import_model_id(wxString download_info) if (sFile == filename) is_already_exist = true; } } - catch (const std::exception& error) + catch (const std::exception&) { //wxString sError = error.what(); } @@ -12604,7 +12603,7 @@ int Plater::send_gcode(int plate_idx, Export3mfProgressFn proFn) p->m_print_job_data._3mf_path = fs::path(plate->get_tmp_gcode_path()); p->m_print_job_data._3mf_path.replace_extension("3mf"); } - catch (std::exception& e) { + catch (std::exception&) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } @@ -12637,7 +12636,7 @@ int Plater::export_config_3mf(int plate_idx, Export3mfProgressFn proFn) try { p->m_print_job_data._3mf_config_path = fs::path(plate->get_temp_config_3mf_path()); } - catch (std::exception& e) { + catch (std::exception&) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index 003d0e4cdd..e69ba143db 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -266,7 +266,7 @@ void ProjectPanel::OnScriptMessage(wxWebViewEvent& evt) } } - catch (std::exception& e) { + catch (std::exception&) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index c8a661769f..958f3b2b2e 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -816,7 +816,6 @@ void SearchDialog::OnCheck(wxCommandEvent &event) void SearchDialog::OnMotion(wxMouseEvent &event) { wxDataViewItem item; - wxDataViewColumn *col; wxWindow * win = this; // search_list->HitTest(wxGetMousePosition() - win->GetScreenPosition(), item, col); diff --git a/src/slic3r/GUI/UserManager.cpp b/src/slic3r/GUI/UserManager.cpp index 29f5f2d137..4d3c1aceb2 100644 --- a/src/slic3r/GUI/UserManager.cpp +++ b/src/slic3r/GUI/UserManager.cpp @@ -41,7 +41,7 @@ int UserManager::parse_json(std::string payload) //bind if (j_pre["bind"]["command"].get() == "bind") { std::string dev_id; - std:; string result; + std::string result; if (j_pre["bind"].contains("dev_id")) { dev_id = j_pre["bind"]["dev_id"].get(); diff --git a/src/slic3r/GUI/WebDownPluginDlg.cpp b/src/slic3r/GUI/WebDownPluginDlg.cpp index 82d2816f2e..a4f3cc93ce 100644 --- a/src/slic3r/GUI/WebDownPluginDlg.cpp +++ b/src/slic3r/GUI/WebDownPluginDlg.cpp @@ -227,7 +227,7 @@ void DownPluginFrame::OnScriptMessage(wxWebViewEvent &evt) auto plugin_folder = (boost::filesystem::path(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data()) / "plugins").make_preferred().string(); desktop_open_any_folder(plugin_folder); } - } catch (std::exception &e) { + } catch (std::exception &) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index 11f431c308..a84a150416 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -373,7 +373,7 @@ bool WebView::RunScript(wxWebView *webView, wxString const &javascript) }, NULL); return true; #endif - } catch (std::exception &e) { + } catch (std::exception &) { return false; } } From 08ce73fb45d253e4f79d552f74db9dc340879934 Mon Sep 17 00:00:00 2001 From: Eren <68923754+PhenixNoir@users.noreply.github.com> Date: Thu, 22 Aug 2024 19:03:36 +0300 Subject: [PATCH 132/151] Update OrcaSlicer_tr.po (#6511) Incorrect mmu flush sentences corrected. Still might not be 100% accurate, but better this way --- localization/i18n/tr/OrcaSlicer_tr.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 37922c257d..a01233b2fc 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -1816,16 +1816,16 @@ msgid "Scale an object to fit the build volume" msgstr "Bir nesneyi yapı hacmine uyacak şekilde ölçeklendirin" msgid "Flush Options" -msgstr "Hizalama Seçenekleri" +msgstr "Akıtma Seçenekleri" msgid "Flush into objects' infill" -msgstr "Nesnelerin dolgusuna hizalayın" +msgstr "Nesnelerin dolgusuna akıtın" msgid "Flush into this object" -msgstr "Bu nesnenin içine hizala" +msgstr "Bu nesneye akıt" msgid "Flush into objects' support" -msgstr "Nesnelerin desteğine hizalayın" +msgstr "Nesnelerin desteğine akıt" msgid "Edit in Parameter Table" msgstr "Parametre tablosunda düzenle" From 36cb8f3bc873a33add29a08dcf7151412b97aa7c Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Thu, 22 Aug 2024 17:05:43 +0100 Subject: [PATCH 133/151] Updated chamber temperature control tooltips (#6517) --- src/libslic3r/PrintConfig.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index df57b11ed1..d3c3554a58 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4755,15 +4755,21 @@ void PrintConfigDef::init_fff_params() def = this->add("activate_chamber_temp_control",coBools); def->label = L("Activate temperature control"); - def->tooltip = L("Enable this option for chamber temperature control. An M191 command will be added before \"machine_start_gcode\"\nG-code commands: M141/M191 S(0-255)"); + def->tooltip = L("Enable this option for automated chamber temperature control. This option activates the emitting of an M191 command before the \"machine_start_gcode\"\n which sets the " + "chamber temperature and waits until it is reached. In addition, it emits an M141 command at the end of the print to turn off the chamber heater, if present. \n\n" + "This option relies on the firmware supporting the M191 and M141 commands either via macros or natively and is usually used when an active chamber heater is installed."); def->mode = comSimple; def->set_default_value(new ConfigOptionBools{false}); def = this->add("chamber_temperature", coInts); def->label = L("Chamber temperature"); - def->tooltip = L("Higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and so on." - "At the same time, the air filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and other low temperature materials," - "the actual chamber temperature should not be high to avoid cloggings, so 0 which stands for turning off is highly recommended" + def->tooltip = L("For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength. " + "However, at the same time, a higher chamber temperature will reduce the efficiency of air filtration for ABS and ASA. \n\n" + "For PLA, PETG, TPU, PVA, and other low-temperature materials, this option should be disabled (set to 0) as the chamber temperature should be low to avoid extruder clogging caused " + "by material softening at the heat break.\n\n" + "If enabled, this parameter also sets a gcode variable named chamber_temperature, which can be used to pass the desired chamber temperature to your print start macro, " + "or a heat soak macro like this: PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may be useful if your printer does not support M141/M191 commands, or if you desire " + "to handle heat soaking in the print start macro if no active chamber heater is installed." ); def->sidetext = L("°C"); def->full_label = L("Chamber temperature"); From 5b707f09ee32cb0b18da39798dd77ff5edb7935f Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Thu, 22 Aug 2024 17:16:38 +0100 Subject: [PATCH 134/151] Revert "Take filament flow ratio into account when displaying flow in gcode legend" (#6525) This reverts commit ff53f401be68cece5f4cae7a45d0c0116753ffbf. --- src/libslic3r/GCode/GCodeProcessor.cpp | 19 ++----------------- src/libslic3r/GCode/GCodeProcessor.hpp | 2 -- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 852bebda31..757939637e 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -47,7 +47,6 @@ static const float DEFAULT_FILAMENT_DIAMETER = 1.75f; static const int DEFAULT_FILAMENT_HRC = 0; static const float DEFAULT_FILAMENT_DENSITY = 1.245f; static const float DEFAULT_FILAMENT_COST = 29.99f; -static const float DEFAULT_FILAMENT_FLOW_RATIOS = 1.0f; static const int DEFAULT_FILAMENT_VITRIFICATION_TEMPERATURE = 0; static const Slic3r::Vec3f DEFAULT_EXTRUDER_OFFSET = Slic3r::Vec3f::Zero(); @@ -955,7 +954,6 @@ void GCodeProcessorResult::reset() { required_nozzle_HRC = std::vector(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_HRC); filament_densities = std::vector(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_DENSITY); filament_costs = std::vector(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_COST); - filament_flow_ratios = std::vector(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_FLOW_RATIOS); custom_gcode_per_print_z = std::vector(); spiral_vase_layers = std::vector>>(); bed_match_result = BedMatchResult(true); @@ -1078,7 +1076,6 @@ void GCodeProcessor::apply_config(const PrintConfig& config) m_result.filament_densities.resize(extruders_count); m_result.filament_vitrification_temperature.resize(extruders_count); m_result.filament_costs.resize(extruders_count); - m_result.filament_flow_ratios.resize(extruders_count); m_extruder_temps.resize(extruders_count); m_extruder_temps_config.resize(extruders_count); m_extruder_temps_first_layer_config.resize(extruders_count); @@ -1098,7 +1095,6 @@ void GCodeProcessor::apply_config(const PrintConfig& config) m_result.filament_densities[i] = static_cast(config.filament_density.get_at(i)); m_result.filament_vitrification_temperature[i] = static_cast(config.temperature_vitrification.get_at(i)); m_result.filament_costs[i] = static_cast(config.filament_cost.get_at(i)); - m_result.filament_flow_ratios[i] = static_cast(config.filament_flow_ratio.get_at(i)); } if (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfKlipper || m_flavor == gcfRepRapFirmware) { @@ -1262,15 +1258,6 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) m_result.filament_costs.emplace_back(DEFAULT_FILAMENT_COST); } - // Orca: filament flow ratio - const ConfigOptionFloats* filament_flow_ratios = config.option("filament_flow_ratio"); - if (filament_flow_ratios != nullptr) { - m_result.filament_flow_ratios.clear(); - m_result.filament_flow_ratios.resize(filament_flow_ratios->values.size()); - for (size_t i = 0; i < filament_flow_ratios->values.size(); ++i) - m_result.filament_flow_ratios[i]=static_cast(filament_flow_ratios->values[i]); - } - //BBS const ConfigOptionInts* filament_vitrification_temperature = config.option("temperature_vitrification"); if (filament_vitrification_temperature != nullptr) { @@ -2930,7 +2917,6 @@ void GCodeProcessor::process_G0(const GCodeReader::GCodeLine& line) void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line, const std::optional& remaining_internal_g1_lines) { float filament_diameter = (static_cast(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back(); - float filament_flowratio = (static_cast(m_extruder_id) < m_result.filament_flow_ratios.size()) ? m_result.filament_flow_ratios[m_extruder_id] : m_result.filament_flow_ratios.back(); float filament_radius = 0.5f * filament_diameter; float area_filament_cross_section = static_cast(M_PI) * sqr(filament_radius); auto absolute_position = [this, area_filament_cross_section](Axis axis, const GCodeReader::GCodeLine& lineG1) { @@ -3008,7 +2994,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line, const std::o m_used_filaments.increase_model_caches(volume_extruded_filament); } // volume extruded filament / tool displacement = area toolpath cross section - m_mm3_per_mm = area_toolpath_cross_section * filament_flowratio; + m_mm3_per_mm = area_toolpath_cross_section; #if ENABLE_GCODE_VIEWER_DATA_CHECKING m_mm3_per_mm_compare.update(area_toolpath_cross_section, m_extrusion_role); #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING @@ -3359,7 +3345,6 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line, const std::o void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line) { float filament_diameter = (static_cast(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back(); - float filament_flowratio = (static_cast(m_extruder_id) < m_result.filament_flow_ratios.size()) ? m_result.filament_flow_ratios[m_extruder_id] : m_result.filament_flow_ratios.back(); float filament_radius = 0.5f * filament_diameter; float area_filament_cross_section = static_cast(M_PI) * sqr(filament_radius); auto absolute_position = [this, area_filament_cross_section](Axis axis, const GCodeReader::GCodeLine& lineG2_3) { @@ -3488,7 +3473,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line) m_used_filaments.increase_model_caches(volume_extruded_filament); } //BBS: volume extruded filament / tool displacement = area toolpath cross section - m_mm3_per_mm = area_toolpath_cross_section * filament_flowratio; + m_mm3_per_mm = area_toolpath_cross_section; #if ENABLE_GCODE_VIEWER_DATA_CHECKING m_mm3_per_mm_compare.update(area_toolpath_cross_section, m_extrusion_role); #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index da47cea688..21403cc205 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -215,7 +215,6 @@ class Print; std::vector required_nozzle_HRC; std::vector filament_densities; std::vector filament_costs; - std::vector filament_flow_ratios; std::vector filament_vitrification_temperature; PrintEstimatedStatistics print_statistics; std::vector custom_gcode_per_print_z; @@ -251,7 +250,6 @@ class Print; filament_diameters = other.filament_diameters; filament_densities = other.filament_densities; filament_costs = other.filament_costs; - filament_flow_ratios = other.filament_flow_ratios; print_statistics = other.print_statistics; custom_gcode_per_print_z = other.custom_gcode_per_print_z; spiral_vase_layers = other.spiral_vase_layers; From 72bb970c7fb022c27cc8fdd3378baee66cf80d1a Mon Sep 17 00:00:00 2001 From: FlyingbearOfficial <150423627+FlyingbearOfficial@users.noreply.github.com> Date: Fri, 23 Aug 2024 19:23:30 +0800 Subject: [PATCH 135/151] upgrade start_gcode (#6541) * Update FlyingBear S1 0.4 nozzle.json * Update 0.16mm Optimal @FlyingBear Reborn3.json * Update 0.16mm Optimal @FlyingBear S1.json * Update fdm_process_common.json * Update fdm_klipper_common.json * Update fdm_machine_common.json * Update fdm_klipper_common.json * Update fdm_machine_common.json * Update fdm_process_common.json * Update fdm_process_common_S1.json fix some parameters * Update fdm_process_common.json * Update FlyingBear S1 0.4 nozzle.json * Update 0.08mm Extra Fine @FlyingBear S1.json * Update 0.12mm Fine @FlyingBear S1.json * Update 0.16mm Optimal @FlyingBear S1.json * Update 0.20mm Standard @FlyingBear S1.json * Update 0.24mm Draft @FlyingBear S1.json * Update 0.08mm Extra Fine @FlyingBear Reborn3.json * Update 0.12mm Fine @FlyingBear Reborn3.json * Update 0.16mm Optimal @FlyingBear Reborn3.json * Update 0.20mm Standard @FlyingBear Reborn3.json * Update 0.24mm Draft @FlyingBear Reborn3.json * Update FlyingBear S1 0.4 nozzle.json --- .../FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json index 7ac0390672..e8452b5c24 100644 --- a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json +++ b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json @@ -115,7 +115,7 @@ "0" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";v2.9.1-20240620;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", + "machine_start_gcode": ";v2.9.2-20240814;\n;wiping nozzle start\nM106 P3 S0\nM140 S[bed_temperature_initial_layer_single]\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F10000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nG1 Z5\nM190 S[bed_temperature_initial_layer_single]\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F8000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0 F400\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\n;G1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\n;G92 E0 ;reset extruder\nG1 E3 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", "machine_unload_filament_time": "0", "max_layer_height": [ "0.28" From e0ce18b54f7b13bcd29f147e8e6e3fbfdb85bc41 Mon Sep 17 00:00:00 2001 From: InfimechOfficial <144992637+InfimechOfficial@users.noreply.github.com> Date: Fri, 23 Aug 2024 19:23:55 +0800 Subject: [PATCH 136/151] upgrade start_gcode (#6540) * Update fdm_klipper_common.json * Update fdm_machine_common.json * Update fdm_klipper_common.json * Update fdm_machine_common.json --- resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json | 2 +- resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json | 2 +- resources/profiles/InfiMech/machine/fdm_klipper_common.json | 2 +- resources/profiles/InfiMech/machine/fdm_machine_common.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json index 5355d44295..2d1e2aaa55 100644 --- a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json +++ b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json @@ -112,7 +112,7 @@ "0" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";v2.9.1-20240620;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", + "machine_start_gcode": ";v2.9.2-20240814;\n;wiping nozzle start\nM106 P3 S0\nM140 S[bed_temperature_initial_layer_single]\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F10000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nG1 Z5\nM190 S[bed_temperature_initial_layer_single]\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F8000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0 F400\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\n;G1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\n;G92 E0 ;reset extruder\nG1 E3 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", "machine_unload_filament_time": "0", "max_layer_height": [ "0.28" diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json index 540e10e977..31eedc682c 100644 --- a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json +++ b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json @@ -112,7 +112,7 @@ "0" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";v2.9.1-20240620;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", + "machine_start_gcode": ";v2.9.2-20240814;\n;wiping nozzle start\nM106 P3 S0\nM140 S[bed_temperature_initial_layer_single]\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F10000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nG1 Z5\nM190 S[bed_temperature_initial_layer_single]\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F8000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0 F400\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\n;G1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\n;G92 E0 ;reset extruder\nG1 E3 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", "machine_unload_filament_time": "0", "max_layer_height": [ "0.28" diff --git a/resources/profiles/InfiMech/machine/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/fdm_klipper_common.json index abbdab157f..23d50fef1e 100644 --- a/resources/profiles/InfiMech/machine/fdm_klipper_common.json +++ b/resources/profiles/InfiMech/machine/fdm_klipper_common.json @@ -112,7 +112,7 @@ "0" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";v2.9.1-20240620;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", + "machine_start_gcode": ";v2.9.2-20240814;\n;wiping nozzle start\nM106 P3 S0\nM140 S[bed_temperature_initial_layer_single]\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F10000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nG1 Z5\nM190 S[bed_temperature_initial_layer_single]\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F8000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0 F400\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\n;G1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\n;G92 E0 ;reset extruder\nG1 E3 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", "machine_unload_filament_time": "0", "max_layer_height": [ "0.28" diff --git a/resources/profiles/InfiMech/machine/fdm_machine_common.json b/resources/profiles/InfiMech/machine/fdm_machine_common.json index 9a8caa0aa9..00dca16a19 100644 --- a/resources/profiles/InfiMech/machine/fdm_machine_common.json +++ b/resources/profiles/InfiMech/machine/fdm_machine_common.json @@ -112,7 +112,7 @@ "0" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";v2.9.1-20240620;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", + "machine_start_gcode": ";v2.9.2-20240814;\n;wiping nozzle start\nM106 P3 S0\nM140 S[bed_temperature_initial_layer_single]\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F10000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nG1 Z5\nM190 S[bed_temperature_initial_layer_single]\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F8000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0 F400\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\n;G1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\n;G92 E0 ;reset extruder\nG1 E3 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", "machine_unload_filament_time": "0", "max_layer_height": [ "0.28" From 57dc559c7faac4ccd7d38faf6688cf1e8ce96299 Mon Sep 17 00:00:00 2001 From: J-D <16978110+createthisnl@users.noreply.github.com> Date: Fri, 23 Aug 2024 13:24:30 +0200 Subject: [PATCH 137/151] Update Dutch language (#6542) Spelling errors corrected. Incorrect translations corrected. Added several untranslated parts. --- localization/i18n/nl/OrcaSlicer_nl.po | 6899 +++++++++++-------------- 1 file changed, 3117 insertions(+), 3782 deletions(-) diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index a34760c9bc..48573c2b04 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -4,12 +4,15 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-03 18:54+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" -"X-Generator: Localazy (https://localazy.com)\n" +"X-Generator: Poedit 3.4.4\n" msgid "Supports Painting" msgstr "Ondersteuning (Support) tekenen" @@ -103,16 +106,15 @@ msgid "Gizmo-Place on Face" msgstr "Plaats op vlak" msgid "Lay on face" -msgstr "Op deze zijde neerleggen." +msgstr "Op zijde leggen" #, boost-format msgid "" -"Filament count exceeds the maximum number that painting tool supports. only " -"the first %1% filaments will be available in painting tool." +"Filament count exceeds the maximum number that painting tool supports. only the first %1% " +"filaments will be available in painting tool." msgstr "" -"Het aantal filamenten overschrijdt het maximale aantal dat het " -"tekengereedschap ondersteunt. Alleen de eerste %1% filamenten zijn " -"beschikbaar in de tekentool." +"Het aantal filamenten overschrijdt het maximale aantal dat het tekengereedschap " +"ondersteunt. Alleen de eerste %1% filamenten zijn beschikbaar in de tekentool." msgid "Color Painting" msgstr "Kleuren schilderen" @@ -254,7 +256,7 @@ msgid "World coordinates" msgstr "Wereldcoördinaten" msgid "Object coordinates" -msgstr "" +msgstr "Objectcoördinaten" msgid "°" msgstr "°" @@ -267,7 +269,7 @@ msgid "%" msgstr "%" msgid "uniform scale" -msgstr "Uniform schalen" +msgstr "uniform schalen" msgid "Planar" msgstr "Planair" @@ -291,7 +293,7 @@ msgid "Snap" msgstr "Snap" msgid "Prism" -msgstr "" +msgstr "Prisma" msgid "Frustum" msgstr "Frustum" @@ -309,7 +311,7 @@ msgid "Place on cut" msgstr "Op kniplijn plaatsen" msgid "Flip upside down" -msgstr "" +msgstr "Draai ondersteboven" msgid "Connectors" msgstr "Verbindingen" @@ -520,8 +522,7 @@ msgstr "Snij met behulp van vlak" msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" -"Niet-gevormde randen worden veroorzaakt door snijgereedschap: wil je dit nu " -"herstellen?" +"hiet-gevormde randen worden veroorzaakt door snijgereedschap: wil je dit nu herstellen?" msgid "Repairing model object" msgstr "Model object repareren" @@ -543,11 +544,11 @@ msgstr "Decimeren verhouding" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is " -"highly recommended to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is highly recommended " +"to simplify the model." msgstr "" -"Het verwerken van model '%1%' met meer dan 1 miljoen driehoeken kan traag " -"zijn. Het wordt sterk aanbevolen om het model te vereenvoudigen." +"Het verwerken van model '%1%' met meer dan 1 miljoen driehoeken kan traag zijn. Het wordt " +"sterk aanbevolen om het model te vereenvoudigen." msgid "Simplify model" msgstr "Model vereenvoudigen" @@ -557,8 +558,7 @@ msgstr "Vereenvoudigen" msgid "Simplification is currently only allowed when a single part is selected" msgstr "" -"Vereenvoudiging is momenteel alleen toegestaan wanneer één enkel onderdeel " -"is geselecteerd" +"Vereenvoudiging is momenteel alleen toegestaan wanneer één enkel onderdeel is geselecteerd" msgid "Error" msgstr "Fout" @@ -668,11 +668,11 @@ msgstr "Tekstvorm" #. TRN - Title in Undo/Redo stack after rotate with text around emboss axe msgid "Text rotate" -msgstr "" +msgstr "Text draaien" #. TRN - Title in Undo/Redo stack after move with text along emboss axe - From surface msgid "Text move" -msgstr "" +msgstr "Text verplaatsen" msgid "Set Mirror" msgstr "Stel spiegeling in" @@ -717,8 +717,7 @@ msgid "Advanced" msgstr "Geavanceerd" msgid "" -"The text cannot be written using the selected font. Please try choosing a " -"different font." +"The text cannot be written using the selected font. Please try choosing a different font." msgstr "" msgid "Embossed text cannot contain only white spaces." @@ -750,27 +749,26 @@ msgstr "" #, boost-format msgid "Font \"%1%\" can't be selected." -msgstr "" +msgstr "Lettertype \"%1%\" kan niet worden geselecteerd." msgid "Operation" msgstr "" msgid "Join" -msgstr "" +msgstr "Samenvoegen" msgid "Click to change text into object part." -msgstr "" +msgstr "Klik om tekst in objectgedeelte te veranderen." msgid "You can't change a type of the last solid part of the object." -msgstr "" -"U kunt het type van het laatste onderdeel van een object niet wijzigen." +msgstr "U kunt het type van het laatste onderdeel van een object niet wijzigen." msgctxt "EmbossOperation" msgid "Cut" msgstr "Knippen" msgid "Click to change part type into negative volume." -msgstr "" +msgstr "Klik om het onderdeeltype te wijzigen naar een negatief volume." msgid "Modifier" msgstr "Aanpasser" @@ -783,80 +781,80 @@ msgstr "" #, boost-format msgid "Rename style(%1%) for embossing text" -msgstr "" +msgstr "Stijl(%1%) hernoemen voor reliëftekst" msgid "Name can't be empty." -msgstr "" +msgstr "Naam mag niet leeg zijn." msgid "Name has to be unique." -msgstr "" +msgstr "Naam moet uniek zijn." msgid "OK" -msgstr "Offline" +msgstr "OK" msgid "Rename style" -msgstr "" +msgstr "Stijl hernoemen" msgid "Rename current style." -msgstr "" +msgstr "Huidige stijl hernoemen." msgid "Can't rename temporary style." -msgstr "" +msgstr "Kan tijdelijke stijl niet hernoemen." msgid "First Add style to list." -msgstr "" +msgstr "Voeg eerst een stijl toe aan de lijst." #, boost-format msgid "Save %1% style" -msgstr "" +msgstr "Bewaar %1% stijl" msgid "No changes to save." -msgstr "" +msgstr "Geen wijzigingen om op te slaan." msgid "New name of style" -msgstr "" +msgstr "Nieuwe naam van stijl" msgid "Save as new style" -msgstr "" +msgstr "Opslaan als nieuwe stijl" msgid "Only valid font can be added to style." -msgstr "" +msgstr "Alleen geldige lettertypen kunnen aan de stijl worden toegevoegd." msgid "Add style to my list." -msgstr "" +msgstr "Voeg stijl toe aan mijn lijst." msgid "Save as new style." -msgstr "" +msgstr "Opslaan als nieuwe stijl." msgid "Remove style" -msgstr "" +msgstr "Stijl verwijderen" msgid "Can't remove the last existing style." -msgstr "" +msgstr "Kan de laatst bestaande stijl niet verwijderen." #, boost-format msgid "Are you sure you want to permanently remove the \"%1%\" style?" -msgstr "" +msgstr "Weet u zeker dat u de stijl \"%1%\" permanent wilt verwijderen?" #, boost-format msgid "Delete \"%1%\" style." -msgstr "" +msgstr "Stijl \"%1%\" verwijderen." #, boost-format msgid "Can't delete \"%1%\". It is last style." -msgstr "" +msgstr "Kan \"%1%\" niet verwijderen. Het is de laatste stijl." #, boost-format msgid "Can't delete temporary style \"%1%\"." -msgstr "" +msgstr "Kan tijdelijke stijl \"%1%\" niet verwijderen." #, boost-format msgid "Modified style \"%1%\"" -msgstr "" +msgstr "Gewijzigde stijl \"%1%\"" #, boost-format msgid "Current style is \"%1%\"" -msgstr "" +msgstr "Huidige stijl is \"%1%\"" #, boost-format msgid "" @@ -864,13 +862,16 @@ msgid "" "\n" "Would you like to continue anyway?" msgstr "" +"Stijl wijzigen naar \"%1%\" zal de huidige stijlwijziging ongedaan maken.\n" +"\n" +"Wilt u toch doorgaan?" msgid "Not valid style." -msgstr "" +msgstr "Ongeldige stijl." #, boost-format msgid "Style \"%1%\" can't be used and will be removed from a list." -msgstr "" +msgstr "Stijl \"%1%\" kan niet worden gebruikt en wordt uit de lijst verwijderd." msgid "Unset italic" msgstr "" @@ -925,18 +926,18 @@ msgstr "Bovenste" msgctxt "Alignment" msgid "Middle" -msgstr "" +msgstr "Midden" msgctxt "Alignment" msgid "Bottom" msgstr "Onderste" msgid "Revert alignment." -msgstr "" +msgstr "Uitlijning terugdraaien." #. TRN EmbossGizmo: font units msgid "points" -msgstr "" +msgstr "punten" msgid "Revert gap between characters" msgstr "" @@ -991,9 +992,11 @@ msgstr "" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Application selected a similar " -"one(\"%2%\"). You have to specify font for enable edit text." +"Can't load exactly same font(\"%1%\"). Application selected a similar one(\"%2%\"). You " +"have to specify font for enable edit text." msgstr "" +"Kan niet exact hetzelfde lettertype laden(\"%1%\"). Er is een vergelijkbaar lettertype(\"%2%" +"\") geselecteerd. U moet een lettertype opgeven om tekst te kunnen bewerken." msgid "No symbol" msgstr "" @@ -1002,7 +1005,7 @@ msgid "Loading" msgstr "Laden" msgid "In queue" -msgstr "" +msgstr "In wachtrij" #. TRN - Input label. Be short as possible #. Height of one text line - Font Ascent @@ -1077,7 +1080,7 @@ msgid "Leave SVG gizmo" msgstr "" msgid "SVG actions" -msgstr "" +msgstr "SVG acties" msgid "SVG" msgstr "SVG" @@ -1108,9 +1111,7 @@ msgstr "" msgid "Path can't be healed from selfintersection and multiple points." msgstr "" -msgid "" -"Final shape constains selfintersection or multiple points with same " -"coordinate." +msgid "Final shape constains selfintersection or multiple points with same coordinate." msgstr "" #, boost-format @@ -1336,8 +1337,7 @@ msgid "%1% was replaced with %2%" msgstr "%1% werd vervangen door %2%" msgid "The configuration may be generated by a newer version of OrcaSlicer." -msgstr "" -"De configuratie was mogelijks met een nieuwere versie Orcaslicer gemaakt." +msgstr "De configuratie was mogelijks met een nieuwere versie Orcaslicer gemaakt." msgid "Some values have been replaced. Please check them:" msgstr "Sommige waarden zijn aangepast. Controleer deze alstublieft:" @@ -1352,32 +1352,28 @@ msgid "Machine" msgstr "Machine" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "" -"Het onfiguratiepakket werd geladen, maar sommige waarden werden niet herkend." +msgstr "Het onfiguratiepakket werd geladen, maar sommige waarden werden niet herkend." #, boost-format -msgid "" -"Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "" -"Configuratiebestand “%1%” werd geladen, maar sommige waarden werden niet " -"herkend." +msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "Configuratiebestand “%1%” werd geladen, maar sommige waarden werden niet herkend." msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. " -"It will be appreciated if you report the issue to our team." +"OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be " +"appreciated if you report the issue to our team." msgstr "" -"OrcaSlicer zal sluiten, omdat het geen geheugen meer heeft. Dit kan een bug " -"zijn. Ons team een rapport schrijven over deze fout wordt erg gewaardeerd." +"OrcaSlicer zal sluiten, omdat het geen geheugen meer heeft. Dit kan een bug zijn. Ons team " +"een rapport schrijven over deze fout wordt erg gewaardeerd." msgid "Fatal error" msgstr "Fatale fout" msgid "" -"OrcaSlicer will terminate because of a localization error. It will be " -"appreciated if you report the specific scenario this issue happened." +"OrcaSlicer will terminate because of a localization error. It will be appreciated if you " +"report the specific scenario this issue happened." msgstr "" -"OrcaSlicer zal sluiten door een vertalingsfout. Ons team een rapport " -"schrijven over de situatie waar dit zich voor deed wordt erg gewaardeerd." +"OrcaSlicer zal sluiten door een vertalingsfout. Ons team een rapport schrijven over de " +"situatie waar dit zich voor deed wordt erg gewaardeerd." msgid "Critical error" msgstr "Kritieke fout" @@ -1403,12 +1399,11 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "Verbinding met %s is mislukt! [SN: %s, code=%s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " -"features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" "Click Yes to install it now." msgstr "" -"OrcaSlicer heeft het MicroSoft WebView2 Runtime nodig om bepaalde functies " -"in werking te stellen.\n" +"OrcaSlicer heeft het MicroSoft WebView2 Runtime nodig om bepaalde functies in werking te " +"stellen.\n" "Klik Ja om het nu te installeren." msgid "WebView2 Runtime" @@ -1430,8 +1425,7 @@ msgstr "Configuratie wordt geladen" #, c-format, boost-format msgid "Click to download new version in default browser: %s" -msgstr "" -"Klik hier om de nieuwe versie te downloaden in je standaard browser: %s" +msgstr "Klik hier om de nieuwe versie te downloaden in je standaard browser: %s" msgid "The Orca Slicer needs an upgrade" msgstr "Orca Slicer heeft een upgrade nodig" @@ -1445,8 +1439,7 @@ msgstr "Informatie" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will " -"not be affected." +"Please note, application settings will be lost, but printer profiles will not be affected." msgstr "" msgid "Rebuild" @@ -1468,7 +1461,7 @@ msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Kies één of meer bestanden (3mf/step/stl/svg/obj/amf):" msgid "Choose ZIP file" -msgstr "" +msgstr "Kies ZIP bestand" msgid "Choose one file (gcode/3mf):" msgstr "Kies één bestand (gcode/3mf):" @@ -1477,11 +1470,11 @@ msgid "Some presets are modified." msgstr "Sommige voorinstellingen zijn aangepast." msgid "" -"You can keep the modifield presets to the new project, discard or save " -"changes as new presets." +"You can keep the modifield presets to the new project, discard or save changes as new " +"presets." msgstr "" -"Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project ze " -"laten vervallen of opslaan als nieuwe voorinstelling." +"Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project ze laten vervallen " +"of opslaan als nieuwe voorinstelling." msgid "User logged out" msgstr "Gebruiker is uitgelogd" @@ -1493,28 +1486,28 @@ msgid "Open Project" msgstr "Open project" msgid "" -"The version of Orca Slicer is too low and needs to be updated to the latest " -"version before it can be used normally" +"The version of Orca Slicer is too low and needs to be updated to the latest version before " +"it can be used normally" msgstr "" -"De versie van Orca Slicer is te oud en dient te worden bijgewerkt naar de " -"nieuwste versie voordat deze normaal kan worden gebruikt" +"De versie van Orca Slicer is te oud en dient te worden bijgewerkt naar de nieuwste versie " +"voordat deze normaal kan worden gebruikt" msgid "Privacy Policy Update" msgstr "Privacy Policy Update" msgid "" -"The number of user presets cached in the cloud has exceeded the upper limit, " -"newly created user presets can only be used locally." +"The number of user presets cached in the cloud has exceeded the upper limit, newly created " +"user presets can only be used locally." msgstr "" -"Het aantal gebruikersvoorinstellingen dat in de cloud is opgeslagen, heeft " -"de bovengrens overschreden. Nieuw gemaakte gebruikersvoorinstellingen kunnen " -"alleen lokaal worden gebruikt." +"Het aantal gebruikersvoorinstellingen dat in de cloud is opgeslagen, heeft de bovengrens " +"overschreden. Nieuw gemaakte gebruikersvoorinstellingen kunnen alleen lokaal worden " +"gebruikt." msgid "Sync user presets" msgstr "Synchroniseer gebruikersvoorinstellingen" msgid "Loading user preset" -msgstr "Voorinstelling voor gebruiker laden" +msgstr "Gebruikersvoorinstelling laden" msgid "Switching application language" msgstr "De taal van de applicatie wordt aangepast" @@ -1541,8 +1534,8 @@ msgid "Select a G-code file:" msgstr "Selecteer een G-code bestand:" msgid "" -"Could not start URL download. Destination folder is not set. Please choose " -"destination folder in Configuration Wizard." +"Could not start URL download. Destination folder is not set. Please choose destination " +"folder in Configuration Wizard." msgstr "" msgid "Import File" @@ -1703,9 +1696,9 @@ msgid "Orca String Hell" msgstr "" msgid "" -"This model features text embossment on the top surface. For optimal results, " -"it is advisable to set the 'One Wall Threshold(min_width_top_surface)' to 0 " -"for the 'Only One Wall on Top Surfaces' to work best.\n" +"This model features text embossment on the top surface. For optimal results, it is " +"advisable to set the 'One Wall Threshold(min_width_top_surface)' to 0 for the 'Only One " +"Wall on Top Surfaces' to work best.\n" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" @@ -1772,7 +1765,7 @@ msgid "Filament %d" msgstr "Filament %d" msgid "current" -msgstr "Huidige" +msgstr "huidige" msgid "Scale to build volume" msgstr "Schalen naar bruikbaar volume" @@ -1811,12 +1804,10 @@ msgid "Assemble" msgstr "Monteren" msgid "Assemble the selected objects to an object with multiple parts" -msgstr "" -"Monteer de geselecteerde objecten tot een object bestaande uit meerdere delen" +msgstr "Monteer de geselecteerde objecten tot een object bestaande uit meerdere delen" msgid "Assemble the selected objects to an object with single part" -msgstr "" -"Monteer de geselecteerde objecten tot een object bestaande uit 1 onderdeel" +msgstr "Monteer de geselecteerde objecten tot een object bestaande uit 1 onderdeel" msgid "Mesh boolean" msgstr "Mesh booleaan" @@ -1894,8 +1885,7 @@ msgid "Auto orientation" msgstr "Automatisch oriënteren" msgid "Auto orient the object to improve print quality." -msgstr "" -"Automatisch oriënteren van het object om de printkwaliteit te verbeteren." +msgstr "Automatisch oriënteren van het object om de printkwaliteit te verbeteren." msgid "Select All" msgstr "Alles selecteren" @@ -1991,25 +1981,21 @@ msgstr[0] "%1$d non-manifold edges@%1$d non-manifold edges" msgstr[1] "%1$d non-manifold edges@%1$d non-manifold edges" msgid "Right click the icon to fix model object" -msgstr "" -"Klik met de rechter muisknop op het pictogram om het modelobject te repareren" +msgstr "Klik met de rechter muisknop op het pictogram om het modelobject te repareren" msgid "Right button click the icon to drop the object settings" -msgstr "" -"Klik met de rechter muisknop op het pictogram om de objectinstellingen te " -"verwijderen" +msgstr "Klik met de rechter muisknop op het pictogram om de objectinstellingen te verwijderen" msgid "Click the icon to reset all settings of the object" msgstr "Klik op het icoon om alle instellingen van het object terug te zetten" msgid "Right button click the icon to drop the object printable property" msgstr "" -"Klik met de rechter muisknop op het pictogram om de printbare eigenschap van " -"het object te verwijderen" +"Klik met de rechter muisknop op het pictogram om de printbare eigenschap van het object te " +"verwijderen" msgid "Click the icon to toggle printable property of the object" -msgstr "" -"Klik op het pictogram om de afdruk eigenschap van het object in te schakelen" +msgstr "Klik op het pictogram om de afdruk eigenschap van het object in te schakelen" msgid "Click the icon to edit support painting of the object" msgstr "Klik op het pictogram om de support van het object te bewerken" @@ -2037,15 +2023,12 @@ msgstr "Aanpasser toevoegen" msgid "Switch to per-object setting mode to edit modifier settings." msgstr "" -"Schakel over naar instellingsmodus per object om instellingen van de " -"aanpassing te bewerken." +"Schakel over naar instellingsmodus per object om instellingen van de aanpassing te bewerken." -msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." +msgid "Switch to per-object setting mode to edit process settings of selected objects." msgstr "" -"Schakel over naar de instellingsmodus per object om procesinstellingen van " -"geselecteerde objecten te bewerken." +"Schakel over naar de instellingsmodus per object om procesinstellingen van geselecteerde " +"objecten te bewerken." msgid "Delete connector from object which is a part of cut" msgstr "Verwijder verbinding van object dat deel is van een knipbewerking" @@ -2056,25 +2039,23 @@ msgstr "Verwijder vast onderdeel van object dat deel is van een knipbewerking" msgid "Delete negative volume from object which is a part of cut" msgstr "Verwijder negatief volume van object dat deel is van een knipbewerking" -msgid "" -"To save cut correspondence you can delete all connectors from all related " -"objects." +msgid "To save cut correspondence you can delete all connectors from all related objects." msgstr "" -"Om de knipovereenkomst op te slaan kan je alle verbindingen verwijderen uit " -"gerelateerde objecten." +"Om de knipovereenkomst op te slaan kan je alle verbindingen verwijderen uit gerelateerde " +"objecten." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut infornation " +"first." msgstr "" "This action will break a cut correspondence.\n" "After that, model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut information first." +"To manipulate with solid parts or negative volumes you have to invalidate cut information " +"first." msgid "Delete all connectors" msgstr "Verwijder alle vberbindingen" @@ -2083,9 +2064,7 @@ msgid "Deleting the last solid part is not allowed." msgstr "Het is niet toegestaand om het laaste vaste deel te verwijderen." msgid "The target object contains only one part and can not be splited." -msgstr "" -"Het doelbestand bevat slechts 1 onderdeel en kan daarom niet worden " -"opgesplitst." +msgstr "Het doelbestand bevat slechts 1 onderdeel en kan daarom niet worden opgesplitst." msgid "Assembly" msgstr "Montage" @@ -2126,22 +2105,18 @@ msgstr "Laag" msgid "Selection conflicts" msgstr "Selectieconflicten" -msgid "" -"If first selected item is an object, the second one should also be object." +msgid "If first selected item is an object, the second one should also be object." msgstr "" -"Als het eerste geselecteerde item een object is, dient het tweede item ook " -"een object te zijn." +"Als het eerste geselecteerde item een object is, dient het tweede item ook een object te " +"zijn." -msgid "" -"If first selected item is a part, the second one should be part in the same " -"object." +msgid "If first selected item is a part, the second one should be part in the same object." msgstr "" -"Als het eerst geselecteerde item een onderdeel is, moet het tweede een " -"onderdeel van hetzelfde object zijn." +"Als het eerst geselecteerde item een onderdeel is, moet het tweede een onderdeel van " +"hetzelfde object zijn." msgid "The type of the last solid object part is not to be changed." -msgstr "" -"Het type van het laatste solide object onderdeel kan niet worden veranderd." +msgstr "Het type van het laatste solide object onderdeel kan niet worden veranderd." msgid "Negative Part" msgstr "Negatief deel" @@ -2167,11 +2142,9 @@ msgstr "Hernoemen" msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" msgstr[0] "" -"De volgende model objecten zijn gerepareerd@De volgende model objecten zijn " -"gerepareerd" +"De volgende model objecten zijn gerepareerd@De volgende model objecten zijn gerepareerd" msgstr[1] "" -"De volgende model objecten zijn gerepareerd@De volgende model objecten zijn " -"gerepareerd" +"De volgende model objecten zijn gerepareerd@De volgende model objecten zijn gerepareerd" msgid "Failed to repair following model object" msgid_plural "Failed to repair following model objects" @@ -2200,9 +2173,7 @@ msgid "Invalid numeric." msgstr "Onjuist getal." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "" -"één cel kan alleen naar één of meerdere cellen in dezelfde kolom worden " -"gekopieerd" +msgstr "één cel kan alleen naar één of meerdere cellen in dezelfde kolom worden gekopieerd" msgid "multiple cells copy is not supported" msgstr "Het kopiëren van meerdere cellen wordt niet ondersteund." @@ -2262,13 +2233,13 @@ msgid "More" msgstr "Meer" msgid "Open Preferences." -msgstr "Voorkeuren openen" +msgstr "Voorkeuren openen." msgid "Open next tip." -msgstr "Volgende tip openen" +msgstr "Volgende tip openen." msgid "Open Documentation in web browser." -msgstr "Documentatie openen in een webbrowser" +msgstr "Documentatie openen in een webbrowser." msgid "Color" msgstr "Kleur" @@ -2301,7 +2272,7 @@ msgid "Jump to Layer" msgstr "Spring naar laag" msgid "Please enter the layer number" -msgstr "Voer het laagnummer in." +msgstr "Voer het laagnummer in" msgid "Add Pause" msgstr "Pauze toevoegen" @@ -2322,7 +2293,7 @@ msgid "Insert template custom G-code at the beginning of this layer." msgstr "Insert template custom G-code at the beginning of this layer." msgid "Filament " -msgstr "Filament" +msgstr "Filament " msgid "Change filament at the beginning of this layer." msgstr "Change filament at the beginning of this layer." @@ -2376,7 +2347,7 @@ msgid "Connecting..." msgstr "Verbinden..." msgid "?" -msgstr " ?" +msgstr "?" msgid "/" msgstr "/" @@ -2416,8 +2387,7 @@ msgstr "AMS kalibreren..." msgid "A problem occurred during calibration. Click to view the solution." msgstr "" -"Er is een probleem opgetreden tijdens de kalibratie. Klik om de oplossing te " -"bekijken." +"Er is een probleem opgetreden tijdens de kalibratie. Klik om de oplossing te bekijken." msgid "Calibrate again" msgstr "Opnieuw kalibreren" @@ -2429,13 +2399,13 @@ msgid "Idling..." msgstr "Inactief..." msgid "Heat the nozzle" -msgstr "Verwarm de nozzle" +msgstr "Verwarm het mondstuk" msgid "Cut filament" msgstr "Filament afsnijden" msgid "Pull back current filament" -msgstr "huidig filament terugtrekken" +msgstr "Huidig filament terugtrekken" msgid "Push new filament into extruder" msgstr "Nieuw filament in de extruder laden" @@ -2456,11 +2426,11 @@ msgid "Grab new filament" msgstr "Grab new filament" msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " -"load or unload filaments." +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload " +"filaments." msgstr "" -"Kies een AMS-sleuf en druk op de knop \"Laden\" of \"Lossen\" om automatisch " -"filament te laden of te ontladen." +"Kies een AMS-sleuf en druk op de knop \"Laden\" of \"Lossen\" om automatisch filament te " +"laden of te ontladen." msgid "Edit" msgstr "Bewerken" @@ -2486,34 +2456,30 @@ msgid "Arranging..." msgstr "Rangschikken..." msgid "Arranging" -msgstr "Rangschikken..." +msgstr "Rangschikken" msgid "Arranging canceled." msgstr "Rangschikken geannuleerd." -msgid "" -"Arranging is done but there are unpacked items. Reduce spacing and try again." +msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." msgstr "" -"Rangschikken voltooid, sommige zaken konden niet geranschikt worden. " -"Verklein de afstand en probeer het opnieuw." +"Rangschikken voltooid, sommige zaken konden niet geranschikt worden. Verklein de afstand en " +"probeer het opnieuw." msgid "Arranging done." msgstr "Rangschikken voltooid." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"Het rangschikken is mislukt. Er zijn enkele uitzonderingen gevonden tijdens " -"het verwerken van het object." +"Het rangschikken is mislukt. Er zijn enkele uitzonderingen gevonden tijdens het verwerken " +"van het object." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" -"De volgende objecten zijn niet gerangschikt omdat ze niet op het printbed " -"passen:\n" +"De volgende objecten zijn niet gerangschikt omdat ze niet op het printbed passen:\n" "%s" msgid "" @@ -2531,10 +2497,10 @@ msgstr "" "Het is niet mogelijk om automatisch te orienteren op dit printbed." msgid "Orienting..." -msgstr "Oriënteren " +msgstr "Oriënteren..." msgid "Orienting" -msgstr "Oriënteren " +msgstr "Oriënteren" msgid "Orienting canceled." msgstr "" @@ -2582,11 +2548,11 @@ msgid "Print file not found. please slice again." msgstr "Print file not found; please slice again." msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again." +"The print file exceeds the maximum allowable size (1GB). Please simplify the model and " +"slice again." msgstr "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again." +"The print file exceeds the maximum allowable size (1GB). Please simplify the model and " +"slice again." msgid "Failed to send the print job. Please try again." msgstr "Het verzenden van de printopdracht is mislukt. Probeer het opnieuw." @@ -2594,28 +2560,17 @@ msgstr "Het verzenden van de printopdracht is mislukt. Probeer het opnieuw." msgid "Failed to upload file to ftp. Please try again." msgstr "Failed to upload file to ftp. Please try again." -msgid "" -"Check the current status of the bambu server by clicking on the link above." -msgstr "" -"Check the current status of the Bambu Lab server by clicking on the link " -"above." +msgid "Check the current status of the bambu server by clicking on the link above." +msgstr "Check the current status of the Bambu Lab server by clicking on the link above." -msgid "" -"The size of the print file is too large. Please adjust the file size and try " -"again." -msgstr "" -"The size of the print file is too large. Please adjust the file size and try " -"again." +msgid "The size of the print file is too large. Please adjust the file size and try again." +msgstr "The size of the print file is too large. Please adjust the file size and try again." msgid "Print file not found, Please slice it again and send it for printing." msgstr "Print file not found; please slice it again and send it for printing." -msgid "" -"Failed to upload print file to FTP. Please check the network status and try " -"again." -msgstr "" -"Failed to upload print file via FTP. Please check the network status and try " -"again." +msgid "Failed to upload print file to FTP. Please check the network status and try again." +msgstr "Failed to upload print file via FTP. Please check the network status and try again." msgid "Sending print job over LAN" msgstr "Printopdracht verzenden via LAN" @@ -2641,13 +2596,10 @@ msgstr "Succesvol verzonden. Springt automatisch naar de apparaatpagina in %ss" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" -msgstr "" -"Succesvol verzonden. Springt automatisch naar de volgende pagina in %ss" +msgstr "Succesvol verzonden. Springt automatisch naar de volgende pagina in %ss" msgid "An SD card needs to be inserted before printing via LAN." -msgstr "" -"Er moet een MicroSD-kaart worden geplaatst voordat er via LAN kan worden " -"afgedrukt." +msgstr "Er moet een MicroSD-kaart worden geplaatst voordat er via LAN kan worden afgedrukt." msgid "Sending gcode file over LAN" msgstr "G-codebestand verzenden via LAN" @@ -2661,18 +2613,17 @@ msgstr "Succesvol verzonden. Sluit de huidige pagina in %s s" msgid "An SD card needs to be inserted before sending to printer." msgstr "" -"Een MicroSD-kaart moet worden geplaatst voordat er iets naar de printer " -"wordt gestuurd." +"Een MicroSD-kaart moet worden geplaatst voordat er iets naar de printer wordt gestuurd." msgid "Importing SLA archive" msgstr "Importing SLA archive" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer preset first " +"before importing that SLA archive." msgstr "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer presets first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer presets first " +"before importing that SLA archive." msgid "Importing canceled." msgstr "Importing canceled." @@ -2681,11 +2632,11 @@ msgid "Importing done." msgstr "Importing done." msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets were used as " +"fallback." msgstr "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets were used as " +"fallback." msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "You cannot load an SLA project with a multi-part object on the bed" @@ -2706,7 +2657,7 @@ msgid "Cancelled" msgstr "Geannuleerd" msgid "Install successfully." -msgstr "Succesvol geïnstalleerd" +msgstr "Succesvol geïnstalleerd." msgid "Installing" msgstr "Installeren" @@ -2736,12 +2687,11 @@ msgid "Libraries" msgstr "Bibliotheken" msgid "" -"This software uses open source components whose copyright and other " -"proprietary rights belong to their respective owners" +"This software uses open source components whose copyright and other proprietary rights " +"belong to their respective owners" msgstr "" -"Deze software maakt gebruik van open source-componenten waarvan het " -"auteursrecht en andere rechten eigendom zijn van hun respectievelijke " -"eigenaren." +"Deze software maakt gebruik van open source-componenten waarvan het auteursrecht en andere " +"rechten eigendom zijn van hun respectievelijke eigenaren." #, c-format, boost-format msgid "About %s" @@ -2757,15 +2707,10 @@ msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." -msgstr "" -"PrusaSlicer is oorspronkelijk gebaseerd op Slic3r van Alessandro Ranellucci." +msgstr "PrusaSlicer is oorspronkelijk gebaseerd op Slic3r van Alessandro Ranellucci." -msgid "" -"Slic3r was created by Alessandro Ranellucci with the help of many other " -"contributors." -msgstr "" -"Slic3r is gemaakt door Alessandro Ranellucci met de hulp van vele andere " -"bijdragers." +msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." +msgstr "Slic3r is gemaakt door Alessandro Ranellucci met de hulp van vele andere bijdragers." msgid "Version" msgstr "Versie" @@ -2786,7 +2731,7 @@ msgid "" "Nozzle\n" "Temperature" msgstr "" -"Nozzle\n" +"Mondstuk\n" "temperatuur" msgid "max" @@ -2803,9 +2748,7 @@ msgid "SN" msgstr "SN" msgid "Setting AMS slot information while printing is not supported" -msgstr "" -"Het instellen van AMS slot informatie tijdens het printen wordt niet " -"ondersteund." +msgstr "Het instellen van AMS slot informatie tijdens het printen wordt niet ondersteund." msgid "Factors of Flow Dynamics Calibration" msgstr "Factoren van Flow Dynamics Calibration" @@ -2846,23 +2789,22 @@ msgid "Dynamic flow calibration" msgstr "Dynamic flow calibration" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration results. Please fill " +"in the same values as the actual printing. They can be auto-filled by selecting a filament " +"preset." msgstr "" -"De temperatuur van de nozzle en de maximale volumetrische snelheid zijn van " -"invloed op de kalibratieresultaten. Voer dezelfde waarden in als bij de " -"daadwerkelijke afdruk. Ze kunnen automatisch worden gevuld door een " -"voorinstelling voor filamenten te selecteren." +"De temperatuur van het mondstuk en de maximale volumetrische snelheid zijn van invloed op " +"de kalibratieresultaten. Voer dezelfde waarden in als bij de daadwerkelijke afdruk. Ze " +"kunnen automatisch worden gevuld door een voorinstelling voor filamenten te selecteren." msgid "Nozzle Diameter" -msgstr "Diameter van de nozzle" +msgstr "Mondstukdiameter" msgid "Bed Type" msgstr "Bed type" msgid "Nozzle temperature" -msgstr "Nozzle temperatuur" +msgstr "Mondstuk temperatuur" msgid "Bed Temperature" msgstr "Bed Temperatuur" @@ -2886,13 +2828,11 @@ msgid "Next" msgstr "Volgende" msgid "" -"Calibration completed. Please find the most uniform extrusion line on your " -"hot bed like the picture below, and fill the value on its left side into the " -"factor K input box." +"Calibration completed. Please find the most uniform extrusion line on your hot bed like the " +"picture below, and fill the value on its left side into the factor K input box." msgstr "" -"Kalibratie voltooid. Zoek de meest uniforme extrusielijn op uw hotbed, zoals " -"op de afbeelding hieronder, en vul de waarde aan de linkerkant in het " -"invoervak factor K in." +"Kalibratie voltooid. Zoek de meest uniforme extrusielijn op uw hotbed, zoals op de " +"afbeelding hieronder, en vul de waarde aan de linkerkant in het invoervak factor K in." msgid "Save" msgstr "Bewaar" @@ -2923,11 +2863,10 @@ msgstr "Stap" msgid "AMS Slots" msgstr "AMS Slots" -msgid "" -"Note: Only the AMS slots loaded with the same material type can be selected." +msgid "Note: Only the AMS slots loaded with the same material type can be selected." msgstr "" -"Opmerking: Alleen de AMS-slots die met hetzelfde materiaaltype zijn geladen, " -"kunnen worden geselecteerd." +"Opmerking: Alleen de AMS-slots die met hetzelfde materiaaltype zijn geladen, kunnen worden " +"geselecteerd." msgid "Enable AMS" msgstr "AMS inschakelen" @@ -2945,21 +2884,18 @@ msgid "Current Cabin humidity" msgstr "Current Cabin humidity" msgid "" -"Please change the desiccant when it is too wet. The indicator may not " -"represent accurately in following cases : when the lid is open or the " -"desiccant pack is changed. it take hours to absorb the moisture, low " -"temperatures also slow down the process." +"Please change the desiccant when it is too wet. The indicator may not represent accurately " +"in following cases : when the lid is open or the desiccant pack is changed. it take hours " +"to absorb the moisture, low temperatures also slow down the process." msgstr "" -"Please change the desiccant when it is too wet. The indicator may not " -"represent accurately in following cases: when the lid is open or the " -"desiccant pack is changed. It takes a few hours to absorb the moisture, and " -"low temperatures also slow down the process." +"Please change the desiccant when it is too wet. The indicator may not represent accurately " +"in following cases: when the lid is open or the desiccant pack is changed. It takes a few " +"hours to absorb the moisture, and low temperatures also slow down the process." -msgid "" -"Config which AMS slot should be used for a filament used in the print job" +msgid "Config which AMS slot should be used for a filament used in the print job" msgstr "" -"Configureer welke AMS-sleuf moet worden gebruikt voor een filament dat voor " -"de printopdracht wordt gebruikt." +"Configureer welke AMS-sleuf moet worden gebruikt voor een filament dat voor de " +"printopdracht wordt gebruikt." msgid "Filament used in this print job" msgstr "Filament gebruikt in deze printopdracht" @@ -2983,11 +2919,11 @@ msgid "Print with filaments mounted on the back of the chassis" msgstr "Print met filament op een externe spoel" msgid "" -"When the current material run out, the printer will continue to print in the " -"following order." +"When the current material run out, the printer will continue to print in the following " +"order." msgstr "" -"Als het huidige materiaal op is, gaat de printer verder met afdrukken in de " -"volgende volgorde." +"Als het huidige materiaal op is, gaat de printer verder met afdrukken in de volgende " +"volgorde." msgid "Group" msgstr "Group" @@ -2995,21 +2931,17 @@ msgstr "Group" msgid "The printer does not currently support auto refill." msgstr "De printer ondersteunt automatisch bijvullen momenteel niet." -msgid "" -"AMS filament backup is not enabled, please enable it in the AMS settings." -msgstr "" -"AMS filament backup is not enabled; please enable it in the AMS settings." +msgid "AMS filament backup is not enabled, please enable it in the AMS settings." +msgstr "AMS filament backup is not enabled; please enable it in the AMS settings." msgid "" -"If there are two identical filaments in AMS, AMS filament backup will be " -"enabled. \n" -"(Currently supporting automatic supply of consumables with the same brand, " -"material type, and color)" +"If there are two identical filaments in AMS, AMS filament backup will be enabled. \n" +"(Currently supporting automatic supply of consumables with the same brand, material type, " +"and color)" msgstr "" -"If there are two identical filaments in an AMS, AMS filament backup will be " -"enabled. \n" -"(This currently supports automatic supply of consumables with the same " -"brand, material type, and color)" +"If there are two identical filaments in an AMS, AMS filament backup will be enabled. \n" +"(This currently supports automatic supply of consumables with the same brand, material " +"type, and color)" msgid "DRY" msgstr "DRY" @@ -3024,78 +2956,74 @@ msgid "Insertion update" msgstr "Update gegevens bij invoeren" msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a new Bambu Lab " +"filament. This takes about 20 seconds." msgstr "" -"De AMS zal automatisch de filamentinformatie lezen bij het plaatsen van een " -"nieuw Bambu Lab filament. Dit duurt ongeveer 20 seconden." +"De AMS zal automatisch de filamentinformatie lezen bij het plaatsen van een nieuw Bambu Lab " +"filament. Dit duurt ongeveer 20 seconden." msgid "" -"Note: if a new filament is inserted during printing, the AMS will not " -"automatically read any information until printing is completed." +"Note: if a new filament is inserted during printing, the AMS will not automatically read " +"any information until printing is completed." msgstr "" -"Opmerking: als er tijdens het printen een nieuw filament wordt geplaatst, " -"zal het AMS niet automatisch informatie lezen totdat het printen is voltooid." +"Opmerking: als er tijdens het printen een nieuw filament wordt geplaatst, zal het AMS niet " +"automatisch informatie lezen totdat het printen is voltooid." msgid "" -"When inserting a new filament, the AMS will not automatically read its " -"information, leaving it blank for you to enter manually." +"When inserting a new filament, the AMS will not automatically read its information, leaving " +"it blank for you to enter manually." msgstr "" -"Bij het laden van nieuw filament zal de informatie niet automatisch " -"ingelezen worden door de AMS, de informatie kan door uzelf worden ingegeven." +"Bij het laden van nieuw filament zal de informatie niet automatisch ingelezen worden door " +"de AMS, de informatie kan door uzelf worden ingegeven." msgid "Power on update" msgstr "Update gegevens bij aanzetten" msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." +"The AMS will automatically read the information of inserted filament on start-up. It will " +"take about 1 minute.The reading process will roll filament spools." msgstr "" -"De AMS leest automatisch de informatie van het ingevoegde filament bij het " -"opstarten. Dit duurt ongeveer 1 minuut. Tijdens het leesproces zullen de " -"filamentspoelen rollen." +"De AMS leest automatisch de informatie van het ingevoegde filament bij het opstarten. Dit " +"duurt ongeveer 1 minuut. Tijdens het leesproces zullen de filamentspoelen rollen." msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." +"The AMS will not automatically read information from inserted filament during startup and " +"will continue to use the information recorded before the last shutdown." msgstr "" -"De informatie van het geladen filament zal niet automatisch gelezen worden " -"door de AMS tijdens het opstarten. De tijdens de laatste keer uitzetten " -"opgeslagen informatie zal gebruikt worden." +"De informatie van het geladen filament zal niet automatisch gelezen worden door de AMS " +"tijdens het opstarten. De tijdens de laatste keer uitzetten opgeslagen informatie zal " +"gebruikt worden." msgid "Update remaining capacity" msgstr "Resterende capaciteit bijwerken" msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament " -"info is updated. During printing, remaining capacity will be updated " -"automatically." +"The AMS will estimate Bambu filament's remaining capacity after the filament info is " +"updated. During printing, remaining capacity will be updated automatically." msgstr "" -"De AMS zal een schatting maken van de resterende capaciteit van het Bambu-" -"filament nadat de filamentinformatie is bijgewerkt. Tijdens het afdrukken " -"wordt de resterende capaciteit automatisch bijgewerkt." +"De AMS zal een schatting maken van de resterende capaciteit van het Bambu-filament nadat de " +"filamentinformatie is bijgewerkt. Tijdens het afdrukken wordt de resterende capaciteit " +"automatisch bijgewerkt." msgid "AMS filament backup" msgstr "AMS filament backup" msgid "" -"AMS will continue to another spool with the same properties of filament " -"automatically when current filament runs out" +"AMS will continue to another spool with the same properties of filament automatically when " +"current filament runs out" msgstr "" -"AMS gaat automatisch verder met een andere spoel met dezelfde filament " -"eigenschappen wanneer het huidige filament op is." +"AMS gaat automatisch verder met een andere spoel met dezelfde filament eigenschappen " +"wanneer het huidige filament op is." msgid "Air Printing Detection" msgstr "Air Printing Detection" msgid "" -"Detects clogging and filament grinding, halting printing immediately to " -"conserve time and filament." +"Detects clogging and filament grinding, halting printing immediately to conserve time and " +"filament." msgstr "" -"Detects clogging and filament grinding, halting printing immediately to " -"conserve time and filament." +"Detects clogging and filament grinding, halting printing immediately to conserve time and " +"filament." msgid "File" msgstr "Bestand" @@ -3104,18 +3032,18 @@ msgid "Calibration" msgstr "Kalibratie" msgid "" -"Failed to download the plug-in. Please check your firewall settings and vpn " -"software, check and retry." +"Failed to download the plug-in. Please check your firewall settings and vpn software, check " +"and retry." msgstr "" -"Het downloaden van de plug-in is mislukt. Controleer je firewall-" -"instellingen en VPN-software en probeer het opnieuw." +"Het downloaden van de plug-in is mislukt. Controleer je firewall-instellingen en VPN-" +"software en probeer het opnieuw." msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted " -"by anti-virus software." +"Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus " +"software." msgstr "" -"De installatie van de plug-in is mislukt. Controleer of deze is geblokkeerd " -"of verwijderd door anti-virussoftware." +"De installatie van de plug-in is mislukt. Controleer of deze is geblokkeerd of verwijderd " +"door anti-virussoftware." msgid "click here to see more info" msgstr "klik hier voor meer informatie" @@ -3124,21 +3052,18 @@ msgid "Please home all axes (click " msgstr "Centreer alle assen (klik" msgid "" -") to locate the toolhead's position. This prevents device moving beyond the " -"printable boundary and causing equipment wear." +") to locate the toolhead's position. This prevents device moving beyond the printable " +"boundary and causing equipment wear." msgstr "" -") om de positie van de gereedschapskop te bepalen. Dit voorkomt dat het " -"apparaat de printbare grens overschrijdt en dat apparatuur slijt." +") om de positie van de gereedschapskop te bepalen. Dit voorkomt dat het apparaat de " +"printbare grens overschrijdt en dat apparatuur slijt." msgid "Go Home" msgstr "Near home positie" -msgid "" -"A error occurred. Maybe memory of system is not enough or it's a bug of the " -"program" +msgid "A error occurred. Maybe memory of system is not enough or it's a bug of the program" msgstr "" -"Er is een probleem opgetreden. Er is geen vrij geheugen of er een is een bug " -"opgetreden" +"Er is een probleem opgetreden. Er is geen vrij geheugen of er een is een bug opgetreden" msgid "Please save project and restart the program. " msgstr "Sla uw project alstublieft op en herstart het programma. " @@ -3181,47 +3106,46 @@ msgstr "Onbekende fout opgetreden tijdens exporteren van de G-code." #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. Maybe the SD " -"card is write locked?\n" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write " +"locked?\n" "Error message: %1%" msgstr "" -"Fout bij het exporteren naar output-G-code. Is de SD-kaart geblokkeerd tegen " -"schrijven?\n" +"Fout bij het exporteren naar output-G-code. Is de SD-kaart geblokkeerd tegen schrijven?\n" "Foutbericht: %1%" #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. There might be " -"problem with target device, please try exporting again or using different " -"device. The corrupted output G-code is at %1%.tmp." +"Copying of the temporary G-code to the output G-code failed. There might be problem with " +"target device, please try exporting again or using different device. The corrupted output G-" +"code is at %1%.tmp." msgstr "" -"Fout bij het exporteren naar output-G-code. Het probleem ligt mogelijk bij " -"het doelapparaat. Probeer het opnieuw te exporteren of gebruik een ander " -"apparat. De beschadigde G-code is opgeslagen als %1%.tmp." +"Fout bij het exporteren naar output-G-code. Het probleem ligt mogelijk bij het " +"doelapparaat. Probeer het opnieuw te exporteren of gebruik een ander apparat. De " +"beschadigde G-code is opgeslagen als %1%.tmp." #, boost-format msgid "" -"Renaming of the G-code after copying to the selected destination folder has " -"failed. Current path is %1%.tmp. Please try exporting again." +"Renaming of the G-code after copying to the selected destination folder has failed. Current " +"path is %1%.tmp. Please try exporting again." msgstr "" -"Fout bij het exporteren naar output-G-code. Hernoemen van het bestand " -"mislukt. Huidige locatie is %1%.tmp. Probeer opnieuw te exporteren." +"Fout bij het exporteren naar output-G-code. Hernoemen van het bestand mislukt. Huidige " +"locatie is %1%.tmp. Probeer opnieuw te exporteren." #, boost-format msgid "" -"Copying of the temporary G-code has finished but the original code at %1% " -"couldn't be opened during copy check. The output G-code is at %2%.tmp." +"Copying of the temporary G-code has finished but the original code at %1% couldn't be " +"opened during copy check. The output G-code is at %2%.tmp." msgstr "" -"Fout bij het exporteren naar output-G-code. Exporteren gelukt, maar kan het " -"bestand %1% niet openen om te controleren. De output is %2%.tmp." +"Fout bij het exporteren naar output-G-code. Exporteren gelukt, maar kan het bestand %1% " +"niet openen om te controleren. De output is %2%.tmp." #, boost-format msgid "" -"Copying of the temporary G-code has finished but the exported code couldn't " -"be opened during copy check. The output G-code is at %1%.tmp." +"Copying of the temporary G-code has finished but the exported code couldn't be opened " +"during copy check. The output G-code is at %1%.tmp." msgstr "" -"Fout bij het exporteren naar output-G-code. Exporteren gelukt, maar kan het " -"bestand niet openen om te controleren. De output is %1%.tmp." +"Fout bij het exporteren naar output-G-code. Exporteren gelukt, maar kan het bestand niet " +"openen om te controleren. De output is %1%.tmp." #, boost-format msgid "G-code file exported to %1%" @@ -3241,8 +3165,7 @@ msgstr "" "Bronbestand %2%." msgid "Copying of the temporary G-code to the output G-code failed" -msgstr "" -"Het kopiëren van de tijdelijke G-code naar de G-uitvoercode is mislukt." +msgstr "Het kopiëren van de tijdelijke G-code naar de G-uitvoercode is mislukt." #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" @@ -3298,8 +3221,7 @@ msgstr "Device Status" msgid "Actions" msgstr "Actions" -msgid "" -"Please select the devices you would like to manage here (up to 6 devices)" +msgid "Please select the devices you would like to manage here (up to 6 devices)" msgstr "" msgid "Add" @@ -3429,19 +3351,17 @@ msgid "Send to" msgstr "" msgid "" -"printers at the same time.(It depends on how many devices can undergo " -"heating at the same time.)" +"printers at the same time.(It depends on how many devices can undergo heating at the same " +"time.)" msgstr "" -"printers at the same time. (It depends on how many devices can undergo " -"heating at the same time.)" +"printers at the same time. (It depends on how many devices can undergo heating at the same " +"time.)" msgid "Wait" msgstr "Wait" -msgid "" -"minute each batch.(It depends on how long it takes to complete the heating.)" -msgstr "" -"minute each batch. (It depends on how long it takes to complete heating.)" +msgid "minute each batch.(It depends on how long it takes to complete the heating.)" +msgstr "minute each batch. (It depends on how long it takes to complete heating.)" msgid "Send" msgstr "Versturen" @@ -3450,10 +3370,10 @@ msgid "Name is invalid;" msgstr "Naam is ongeldig;" msgid "illegal characters:" -msgstr "Niet toegestande karakters:" +msgstr "niet toegestane karakters:" msgid "illegal suffix:" -msgstr "Ongeldig achtervoegsel:" +msgstr "ongeldig achtervoegsel:" msgid "The name is not allowed to be empty." msgstr "Het is niet toegestaand om de naam leeg te laten." @@ -3473,19 +3393,14 @@ msgstr "Begin" msgid "Size in X and Y of the rectangular plate." msgstr "Maat in X en Y van de vierkante printplaat." -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." +msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "" -"Afstand van het 0,0 G-code coordinaat gezien vanuit de linker voorhoek van " -"het printbed." +"Afstand van het 0,0 G-code coordinaat gezien vanuit de linker voorhoek van het printbed." -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." +msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "" -"Diameter van het printbed, ervan uitgaande dat de thuispositie (0,0) in het " -"midden van het bed is." +"Diameter van het printbed, ervan uitgaande dat de thuispositie (0,0) in het midden van het " +"bed is." msgid "Rectangular" msgstr "Rechthoekig" @@ -3512,8 +3427,7 @@ msgid "Model" msgstr "Model" msgid "Choose an STL file to import bed shape from:" -msgstr "" -"Kies een STL bestand waar de vorm van het printbed uit opgehaald kan worden:" +msgstr "Kies een STL bestand waar de vorm van het printbed uit opgehaald kan worden:" msgid "Invalid file format." msgstr "Ongeldig bestandsformaat." @@ -3524,15 +3438,13 @@ msgstr "Fout: Ongeldig model" msgid "The selected file contains no geometry." msgstr "Het gekozen bestand bevat geen geometrische data." -msgid "" -"The selected file contains several disjoint areas. This is not supported." +msgid "The selected file contains several disjoint areas. This is not supported." msgstr "" -"Het geselecteerde bestand bevat verschillende onsamenhangende gebieden. Dit " -"is niet toegestaan." +"Het geselecteerde bestand bevat verschillende onsamenhangende gebieden. Dit is niet " +"toegestaan." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "" -"Kies een bestand om de textuur van het printbed uit op te halen (PNG/SVG):" +msgstr "Kies een bestand om de textuur van het printbed uit op te halen (PNG/SVG):" msgid "Choose an STL file to import bed model from:" msgstr "Kies een STL bestand waaruit het printbed model geladen kan worden:" @@ -3541,18 +3453,18 @@ msgid "Bed Shape" msgstr "Printbed vorm" msgid "" -"The recommended minimum temperature is less than 190 degree or the " -"recommended maximum temperature is greater than 300 degree.\n" +"The recommended minimum temperature is less than 190 degree or the recommended maximum " +"temperature is greater than 300 degree.\n" msgstr "" "De aanbevolen minimumtemperatuur is lager dan 190 graden of de aanbevolen " "maximumtemperatuur is hoger dan 300 graden.\n" msgid "" -"The recommended minimum temperature cannot be higher than the recommended " -"maximum temperature.\n" +"The recommended minimum temperature cannot be higher than the recommended maximum " +"temperature.\n" msgstr "" -"The recommended minimum temperature cannot be higher than the recommended " -"maximum temperature.\n" +"The recommended minimum temperature cannot be higher than the recommended maximum " +"temperature.\n" msgid "Please check.\n" msgstr "Controleer het.\n" @@ -3562,18 +3474,14 @@ msgid "" "Please make sure whether to use the temperature to print.\n" "\n" msgstr "" -"Het kan zijn dat de nozzle verstopt raakt indien er geprint wordt met een " -"temperatuur buiten de voorgestelde range.\n" +"Het kan zijn dat het mondstuk verstopt raakt indien er geprint wordt met een temperatuur " +"buiten de voorgestelde range.\n" "Controleer en bevestig de temperatuur voordat u verder gaat met printen.\n" "\n" #, c-format, boost-format -msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " -"centigrade" -msgstr "" -"De geadviseerde nozzle temperatuur voor dit type filament is [%d, %d] graden " -"Celcius" +msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" +msgstr "De aanbevolen mondstuk temperatuur voor dit type filament is [%d, %d] graden Celsius" msgid "" "Too small max volumetric speed.\n" @@ -3584,13 +3492,12 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature," -"it may result in material softening and clogging.The maximum safe " -"temperature for the material is %d" +"Current chamber temperature is higher than the material's safe temperature,it may result in " +"material softening and clogging.The maximum safe temperature for the material is %d" msgstr "" -"Current chamber temperature is higher than the material's safe temperature; " -"this may result in material softening and nozzle clogs.The maximum safe " -"temperature for the material is %d" +"De huidige kamertemperatuur is hoger dan de veilige temperatuur van het materiaal; dit kan " +"leiden tot verzachting van het materiaal en verstoppingen van het mondstuk. De maximale " +"veilige temperatuur voor het materiaal is %d" msgid "" "Too small layer height.\n" @@ -3616,17 +3523,15 @@ msgstr "" "De hoogte voor de eerste laag wordt teruggezet naar 0.2." msgid "" -"This setting is only used for model size tunning with small value in some " -"cases.\n" +"This setting is only used for model size tunning with small value in some cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Deze instelling wordt in sommige gevallen alleen gebruikt voor " -"modelafmetingen met een kleine waarde.\n" -"Als bijvoorbeeld de modelgrootte een kleine fout heeft en moeilijk te " -"monteren is.\n" +"Deze instelling wordt in sommige gevallen alleen gebruikt voor modelafmetingen met een " +"kleine waarde.\n" +"Als bijvoorbeeld de modelgrootte een kleine fout heeft en moeilijk te monteren is.\n" "Gebruik voor het afstemmen van grote prints de shaal functie.\n" "\n" "De waarde wordt teruggezet naar 0." @@ -3639,33 +3544,30 @@ msgid "" "The value will be reset to 0." msgstr "" "Het is niet reëel om een grote \"elephant foot\" compensatie in te stellen\n" -"Controleer andere instellingen indien er echt een groot \"elephant foot\" " -"effect optreeft.\n" +"Controleer andere instellingen indien er echt een groot \"elephant foot\" effect optreeft.\n" "Het kan bijvoorbeeld zijn dat de temperatuur van het printbed te hoog is.\n" "\n" "De waarde wordt teruggezet naar 0." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness " -"is set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness is set to All. " msgstr "" msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable " -"alternate extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable alternate extra wall\n" "No - Dont use alternate extra wall" msgstr "" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support " -"Layer Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support Layer Height is " +"on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"Prime tower werkt niet wanneer adaptieve laag hoogte of onafhankelijke " -"support laaghoogte is ingeschakeld.\n" +"Prime tower werkt niet wanneer adaptieve laag hoogte of onafhankelijke support laaghoogte " +"is ingeschakeld.\n" "Welke instelling wilt u gebruiken\n" "JA - laat de prime-tower aan staan\n" "NO - laat adaptieve laag en onafhankelijke support-laaghoogte ingeschakeld" @@ -3687,8 +3589,7 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"Prime tower werkt niet wanneer onafhankelijke support laag hoogte is " -"ingeschakeld.\n" +"Prime tower werkt niet wanneer onafhankelijke support laag hoogte is ingeschakeld.\n" "Welke instelling wilt u gebruiken\n" "JA - laat de prime-tower aan staan\n" "NO - laat onafhankelijke support-laag-hoogte ingeschakeld" @@ -3706,11 +3607,11 @@ msgid "" msgstr "" msgid "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell " -"layers is 0, sparse infill density is 0 and timelapse type is traditional." +"Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, " +"sparse infill density is 0 and timelapse type is traditional." msgstr "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell " -"layers is 0, sparse infill density is 0 and timelapse type is traditional." +"Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, " +"sparse infill density is 0 and timelapse type is traditional." msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Maar machines met een I3-structuur genereren geen timelapsevideo's." @@ -3764,7 +3665,7 @@ msgid "Homing toolhead" msgstr "Printkop naar beginpositie" msgid "Cleaning nozzle tip" -msgstr "Nozzle wordt schoongemaakt" +msgstr "Mondstuk wordt schoongemaakt" msgid "Checking extruder temperature" msgstr "Extruder temperatuur wordt gecontroleerd" @@ -3782,7 +3683,7 @@ msgid "Calibrating extrusion flow" msgstr "De extrusieflow kalibreren" msgid "Paused due to nozzle temperature malfunction" -msgstr "Onderbroken vanwege storing in de nozzle temperatuur" +msgstr "Onderbroken vanwege storing in de temperatuur van het mondstuk" msgid "Paused due to heat bed temperature malfunction" msgstr "Onderbroken vanwege storing in de temperatuur van het printbed" @@ -3803,8 +3704,7 @@ msgid "Paused due to AMS lost" msgstr "Gepauzeerd wegens verlies van AMS" msgid "Paused due to low speed of the heat break fan" -msgstr "" -"Gepauzeerd vanwege lage snelheid van de ventilator voor warmteonderbreking" +msgstr "Gepauzeerd vanwege lage snelheid van de ventilator voor warmteonderbreking" msgid "Paused due to chamber temperature control error" msgstr "Gepauzeerd vanwege een fout in de temperatuurregeling van de kamer" @@ -3819,7 +3719,7 @@ msgid "Motor noise showoff" msgstr "Motorgeluid showoff" msgid "Nozzle filament covered detected pause" -msgstr "Nozzle filament bedekt gedetecteerde pauze" +msgstr "Mondstuk filament bedekt gedetecteerde pauze" msgid "Cutter error pause" msgstr "Pauze bij snijfout" @@ -3855,39 +3755,32 @@ msgid "Update failed." msgstr "Updaten mislukt." msgid "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" -"TPU) is not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds 45℃.In order to " +"avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is not allowed to be loaded." msgstr "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃. In order to avoid extruder clogging, low temperature filament (PLA/PETG/" -"TPU) is not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds 45℃. In order to " +"avoid extruder clogging, low temperature filament (PLA/PETG/TPU) is not allowed to be " +"loaded." msgid "" -"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " -"avoid extruder clogging,it is not allowed to set the chamber temperature " -"above 45℃." +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to avoid extruder " +"clogging,it is not allowed to set the chamber temperature above 45℃." msgstr "" -"Low temperature filament (PLA/PETG/TPU) is loaded in the extruder. In order " -"to avoid extruder clogging, it is not allowed to set the chamber temperature " -"above 45℃." +"Low temperature filament (PLA/PETG/TPU) is loaded in the extruder. In order to avoid " +"extruder clogging, it is not allowed to set the chamber temperature above 45℃." msgid "" -"When you set the chamber temperature below 40℃, the chamber temperature " -"control will not be activated. And the target chamber temperature will " -"automatically be set to 0℃." +"When you set the chamber temperature below 40℃, the chamber temperature control will not be " +"activated. And the target chamber temperature will automatically be set to 0℃." msgstr "" -"When you set the chamber temperature below 40℃, the chamber temperature " -"control will not be activated, and the target chamber temperature will " -"automatically be set to 0℃." +"When you set the chamber temperature below 40℃, the chamber temperature control will not be " +"activated, and the target chamber temperature will automatically be set to 0℃." msgid "Failed to start printing job" msgstr "Het starten van de printopdracht is mislukt" -msgid "" -"This calibration does not support the currently selected nozzle diameter" -msgstr "" -"Deze kalibratie ondersteunt de momenteel geselecteerde mondstukdiameter niet" +msgid "This calibration does not support the currently selected nozzle diameter" +msgstr "Deze kalibratie ondersteunt de momenteel geselecteerde mondstukdiameter niet" msgid "Current flowrate cali param is invalid" msgstr "Huidige stroomsnelheid cali param is ongeldig" @@ -3908,18 +3801,18 @@ msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF wordt niet ondersteund door AMS." msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to " -"dry it before use." +"Damp PVA will become flexible and get stuck inside AMS,please take care to dry it before " +"use." msgstr "" -"Vochtige PVA zal flexibel worden en vast komen te zitten in de AMS, zorg er " -"dus voor dat je het droogt voor gebruik." +"Vochtige PVA zal flexibel worden en vast komen te zitten in de AMS, zorg er dus voor dat je " +"het droogt voor gebruik." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, please use " +"with caution." msgstr "" -"CF/GF-filamenten zijn hard en bros. Ze kunnen gemakkelijk breken of vast " -"komen te zitten in AMS." +"CF/GF-filamenten zijn hard en bros. Ze kunnen gemakkelijk breken of vast komen te zitten in " +"AMS." msgid "default" msgstr "Standaard" @@ -4018,11 +3911,8 @@ msgstr "" "NEE voor %s %s." #, boost-format -msgid "" -"Invalid input format. Expected vector of dimensions in the following format: " -"\"%1%\"" -msgstr "" -"Ongeldige invoer. Verwachte waarde moet in het volgende format: \"%1%\"" +msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" +msgstr "Ongeldige invoer. Verwachte waarde moet in het volgende format: \"%1%\"" msgid "Input value is out of range" msgstr "Ingevoerde waarde valt buiten het bereik" @@ -4059,13 +3949,13 @@ msgid "Layer Time (log)" msgstr "Laagtijd (logboek)" msgid "Height: " -msgstr "Hoogte:" +msgstr "Hoogte: " msgid "Width: " -msgstr "Breedte:" +msgstr "Breedte: " msgid "Speed: " -msgstr "Snelheid:" +msgstr "Snelheid: " msgid "Flow: " msgstr "Flow: " @@ -4366,8 +4256,8 @@ msgstr "Maat:" #, c-format, boost-format msgid "" -"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " -"separate the conflicted objects farther (%s <-> %s)." +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate the " +"conflicted objects farther (%s <-> %s)." msgstr "" msgid "An object is layed over the boundary of plate." @@ -4384,13 +4274,12 @@ msgstr "Alleen het object waaraan gewerkt wordt is zichtbaar." msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and " -"confirming that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and confirming that the " +"height is within the build volume." msgstr "" -"Een object is over de grens van de plaat geplaatst of overschrijdt de " -"hoogtelimiet.\n" -"Los het probleem op door het geheel op of van de plaat te verplaatsen, en " -"controleer of de hoogte binnen het bouwvolume valt." +"Een object is over de grens van de plaat geplaatst of overschrijdt de hoogtelimiet.\n" +"Los het probleem op door het geheel op of van de plaat te verplaatsen, en controleer of de " +"hoogte binnen het bouwvolume valt." msgid "Calibration step selection" msgstr "Kalibratiestap selectie" @@ -4411,12 +4300,12 @@ msgid "Calibration program" msgstr "Kalibratie programma" msgid "" -"The calibration program detects the status of your device automatically to " -"minimize deviation.\n" +"The calibration program detects the status of your device automatically to minimize " +"deviation.\n" "It keeps the device performing optimally." msgstr "" -"Het kalibratieprogramma detecteert automatisch de status van uw apparaat om " -"afwijkingen te minimaliseren.\n" +"Het kalibratieprogramma detecteert automatisch de status van uw apparaat om afwijkingen te " +"minimaliseren.\n" "Het zorgt ervoor dat het apparaat optimaal blijft presteren." msgid "Calibration Flow" @@ -4908,15 +4797,13 @@ msgstr "Selecteer het te laden profiel:" #, c-format, boost-format msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "" -"There are %d configs imported. (Only non-system and compatible configs)" +msgid_plural "There are %d configs imported. (Only non-system and compatible configs)" msgstr[0] "" msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing " -"the configs." +"Hint: Make sure you have added the corresponding printer before importing the configs." msgstr "" msgid "Import result" @@ -4954,32 +4841,24 @@ msgid "Player is malfunctioning. Please reinstall the system player." msgstr "De speler werkt niet goed. Installeer de systeemspeler opnieuw." msgid "The player is not loaded, please click \"play\" button to retry." -msgstr "" -"De speler is niet geladen; klik op de \"play\" knop om het opnieuw te " -"proberen." +msgstr "De speler is niet geladen; klik op de \"play\" knop om het opnieuw te proberen." msgid "Please confirm if the printer is connected." msgstr "Controleer of de printer is aangesloten." -msgid "" -"The printer is currently busy downloading. Please try again after it " -"finishes." +msgid "The printer is currently busy downloading. Please try again after it finishes." msgstr "" -"De printer is momenteel bezig met downloaden. Probeer het opnieuw nadat het " -"is voltooid." +"De printer is momenteel bezig met downloaden. Probeer het opnieuw nadat het is voltooid." msgid "Printer camera is malfunctioning." msgstr "De printercamera werkt niet goed." msgid "Problem occured. Please update the printer firmware and try again." msgstr "" -"Er heeft zich een probleem voorgedaan. Werk de printerfirmware bij en " -"probeer het opnieuw." +"Er heeft zich een probleem voorgedaan. Werk de printerfirmware bij en probeer het opnieuw." -msgid "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." -msgstr "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgstr "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgid "Please enter the IP of printer to connect." msgstr "Voer het IP-adres in van de printer waarmee u verbinding wilt maken." @@ -4991,11 +4870,11 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Verbinding mislukt. Controleer het netwerk en probeer het opnieuw" msgid "" -"Please check the network and try again, You can restart or update the " -"printer if the issue persists." +"Please check the network and try again, You can restart or update the printer if the issue " +"persists." msgstr "" -"Controleer het netwerk en probeer het opnieuw. U kunt de printer opnieuw " -"opstarten of bijwerken als het probleem zich blijft voordoen." +"Controleer het netwerk en probeer het opnieuw. U kunt de printer opnieuw opstarten of " +"bijwerken als het probleem zich blijft voordoen." msgid "The printer has been logged out and cannot connect." msgstr "De printer is afgemeld en kan geen verbinding maken." @@ -5090,7 +4969,7 @@ msgid "Reload file list from printer." msgstr "Reload file list from printer." msgid "No printers." -msgstr "Geen printers" +msgstr "Geen printers." #, c-format, boost-format msgid "Connect failed [%d]!" @@ -5109,11 +4988,11 @@ msgid "Initialize failed (Device connection not ready)!" msgstr "Initialization failed (Device connection not ready)!" msgid "" -"Browsing file in SD card is not supported in current firmware. Please update " -"the printer firmware." +"Browsing file in SD card is not supported in current firmware. Please update the printer " +"firmware." msgstr "" -"Browsing file in SD card is not supported in current firmware. Please update " -"the printer firmware." +"Browsing file in SD card is not supported in current firmware. Please update the printer " +"firmware." msgid "Initialize failed (Storage unavailable, insert SD card.)!" msgstr "" @@ -5130,8 +5009,7 @@ msgstr "Initialisatie is mislukt (%s)!" #, c-format, boost-format msgid "You are going to delete %u file from printer. Are you sure to continue?" -msgid_plural "" -"You are going to delete %u files from printer. Are you sure to continue?" +msgid_plural "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" msgstr[1] "" @@ -5155,8 +5033,8 @@ msgid "Failed to parse model information." msgstr "Mislukt bij het parsen van modelinformatie." msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " -"and export a new .gcode.3mf file." +"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and export a " +"new .gcode.3mf file." msgstr "" #, c-format, boost-format @@ -5188,11 +5066,11 @@ msgid "Downloading %d%%..." msgstr "%d%% downloaden..." msgid "" -"Reconnecting the printer, the operation cannot be completed immediately, " -"please try again later." +"Reconnecting the printer, the operation cannot be completed immediately, please try again " +"later." msgstr "" -"Reconnecting the printer, the operation cannot be completed immediately, " -"please try again later." +"Reconnecting the printer, the operation cannot be completed immediately, please try again " +"later." msgid "File does not exist." msgstr "Bestand bestaat niet." @@ -5211,7 +5089,7 @@ msgid "Error code: %d" msgstr "Foutcode: %d" msgid "Speed:" -msgstr "Snelheid" +msgstr "Snelheid:" msgid "Deadzone:" msgstr "Deadzone:" @@ -5271,12 +5149,8 @@ msgstr "" msgid "How do you like this printing file?" msgstr "Wat vind je van dit afdrukbestand?" -msgid "" -"(The model has already been rated. Your rating will overwrite the previous " -"rating.)" -msgstr "" -"(Het model is al beoordeeld. Uw beoordeling overschrijft de vorige " -"beoordeling)." +msgid "(The model has already been rated. Your rating will overwrite the previous rating.)" +msgstr "(Het model is al beoordeeld. Uw beoordeling overschrijft de vorige beoordeling)." msgid "Rate" msgstr "Tarief" @@ -5350,12 +5224,8 @@ msgstr "Layer: %s" msgid "Layer: %d/%d" msgstr "Layer: %d/%d" -msgid "" -"Please heat the nozzle to above 170 degree before loading or unloading " -"filament." -msgstr "" -"Verwarm het mondstuk tot boven de 170 graden voordat u filament laadt of " -"lost." +msgid "Please heat the nozzle to above 170 degree before loading or unloading filament." +msgstr "Verwarm het mondstuk tot boven de 170 graden voordat u filament laadt of lost." msgid "Still unload" msgstr "Nog steeds aan het ontladen" @@ -5367,11 +5237,11 @@ msgid "Please select an AMS slot before calibration" msgstr "Selecteer een AMS-slot voor de kalibratie." msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please " -"unload the filament and try again." +"Cannot read filament info: the filament is loaded to the tool head,please unload the " +"filament and try again." msgstr "" -"Kan de filament informatie niet lezen: het filament is in de printkop " -"geladen; verwijder het filament en probeer het opnieuw." +"Kan de filament informatie niet lezen: het filament is in de printkop geladen; verwijder " +"het filament en probeer het opnieuw." msgid "This only takes effect during printing" msgstr "Dit is alleen van kracht tijdens het printen" @@ -5437,12 +5307,12 @@ msgid " can not be opened\n" msgstr " cannot be opened\n" msgid "" -"The following issues occurred during the process of uploading images. Do you " -"want to ignore them?\n" +"The following issues occurred during the process of uploading images. Do you want to ignore " +"them?\n" "\n" msgstr "" -"De volgende problemen deden zich voor tijdens het uploaden van afbeeldingen. " -"Wil je ze negeren?\n" +"De volgende problemen deden zich voor tijdens het uploaden van afbeeldingen. Wil je ze " +"negeren?\n" "\n" msgid "info" @@ -5450,8 +5320,7 @@ msgstr "Informatie" msgid "Synchronizing the printing results. Please retry a few seconds later." msgstr "" -"De afdrukresultaten worden gesynchroniseerd. Probeer het een paar seconden " -"later opnieuw." +"De afdrukresultaten worden gesynchroniseerd. Probeer het een paar seconden later opnieuw." msgid "Upload failed\n" msgstr "Uploaden mislukt\n" @@ -5481,11 +5350,10 @@ msgstr "" "Would you like to redirect to the webpage to give a rating?" msgid "" -"Some of your images failed to upload. Would you like to redirect to the " -"webpage for rating?" +"Some of your images failed to upload. Would you like to redirect to the webpage for rating?" msgstr "" -"Sommige afbeeldingen zijn niet geüpload. Wilt u doorverwijzen naar de " -"webpagina voor beoordeling?" +"Sommige afbeeldingen zijn niet geüpload. Wilt u doorverwijzen naar de webpagina voor " +"beoordeling?" msgid "You can select up to 16 images." msgstr "Je kunt tot 16 afbeeldingen selecteren." @@ -5536,9 +5404,7 @@ msgstr "Overslaan" msgid "Newer 3mf version" msgstr "Nieuwere versie 3mf" -msgid "" -"The 3mf file version is in Beta and it is newer than the current OrcaSlicer " -"version." +msgid "The 3mf file version is in Beta and it is newer than the current OrcaSlicer version." msgstr "" msgid "If you would like to try Orca Slicer Beta, you may click to" @@ -5554,10 +5420,10 @@ msgid "Update your Orca Slicer could enable all functionality in the 3mf file." msgstr "" msgid "Current Version: " -msgstr "Huidige versie:" +msgstr "Huidige versie: " msgid "Latest Version: " -msgstr "Laatste versie:" +msgstr "Laatste versie: " msgid "Not for now" msgstr "Not for now" @@ -5581,7 +5447,7 @@ msgid "Undo integration was successful." msgstr "Het ongedaan maken van de integratie is gelukt." msgid "New network plug-in available." -msgstr "Nieuwe netwerk plug-in beschikbaar" +msgstr "Nieuwe netwerk plug-in beschikbaar." msgid "Details" msgstr "Détails" @@ -5596,10 +5462,10 @@ msgid "Undo integration failed." msgstr "Het ongedaan maken van de integratie is mislukt." msgid "Exporting." -msgstr "Exporteren" +msgstr "Exporteren." msgid "Software has New version." -msgstr "Er is een update beschikbaar!" +msgstr "Er is een update beschikbaar." msgid "Goto download page." msgstr "Ga naar de download pagina." @@ -5614,21 +5480,19 @@ msgstr "Safely remove hardware." msgid "%1$d Object has custom supports." msgid_plural "%1$d Objects have custom supports." msgstr[0] "" -"%1$d de objecten hebben handmatig toegevoegde supports.@%1$d de objecten " -"hebben handmatig toegevoegde supports." +"%1$d de objecten hebben handmatig toegevoegde supports.@%1$d de objecten hebben handmatig " +"toegevoegde supports." msgstr[1] "" -"%1$d de objecten hebben handmatig toegevoegde supports.@%1$d de objecten " -"hebben handmatig toegevoegde supports." +"%1$d de objecten hebben handmatig toegevoegde supports.@%1$d de objecten hebben handmatig " +"toegevoegde supports." #, c-format, boost-format msgid "%1$d Object has color painting." msgid_plural "%1$d Objects have color painting." msgstr[0] "" -"%1$d De objecten hebben geschilderde kleuren.@%1$d De objecten hebben " -"geschilderde kleuren." +"%1$d De objecten hebben geschilderde kleuren.@%1$d De objecten hebben geschilderde kleuren." msgstr[1] "" -"%1$d De objecten hebben geschilderde kleuren.@%1$d De objecten hebben " -"geschilderde kleuren." +"%1$d De objecten hebben geschilderde kleuren.@%1$d De objecten hebben geschilderde kleuren." #, c-format, boost-format msgid "%1$d object was loaded as a part of cut object." @@ -5696,12 +5560,10 @@ msgstr "Lagen" msgid "Range" msgstr "Bereik" -msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" +msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" msgstr "" -"De toepassing kan niet volledig naar behoren functioneren omdat de " -"geinstalleerde versie van OpenGL lager is dan 2.0.\n" +"De toepassing kan niet volledig naar behoren functioneren omdat de geinstalleerde versie " +"van OpenGL lager is dan 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Upgrade uw videokaart drivers." @@ -5738,12 +5600,11 @@ msgid "Enable detection of build plate position" msgstr "Detectie van de positie van de printplaat inschakelen" msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." +"The localization tag of build plate is detected, and printing is paused if the tag is not " +"in predefined range." msgstr "" -"De lokalisatietag van de bouwplaat wordt gedetecteerd en het afdrukken wordt " -"gepauzeerd als de tag zich niet binnen het vooraf gedefinieerde bereik " -"bevindt." +"De lokalisatietag van de bouwplaat wordt gedetecteerd en het afdrukken wordt gepauzeerd als " +"de tag zich niet binnen het vooraf gedefinieerde bereik bevindt." msgid "First Layer Inspection" msgstr "Inspectie van de eerste laag" @@ -5758,13 +5619,14 @@ msgid "Filament Tangle Detect" msgstr "Filament Tangle Detection" msgid "Nozzle Clumping Detection" -msgstr "Nozzle Clumping Detection" +msgstr "Detectie van klontvorming in mondstuk" msgid "Check if the nozzle is clumping by filament or other foreign objects." -msgstr "Check if the nozzle is clumping by filament or other foreign objects." +msgstr "" +"Controleer of er klonten in het mondstuk zitten door filament of andere vreemde voorwerpen." msgid "Nozzle Type" -msgstr "Nozzle Type" +msgstr "Mondstuk Type" msgid "Stainless Steel" msgstr "Roestvrij staal" @@ -5873,28 +5735,21 @@ msgstr "Zoek plaat, object en onderdeel." msgid "Pellets" msgstr "" -msgid "" -"No AMS filaments. Please select a printer in 'Device' page to load AMS info." -msgstr "" -"Geen AMS filamenten. Selecteer een printer in 'Apparaat' pagina om AMS info " -"te laden." +msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgstr "Geen AMS filamenten. Selecteer een printer in 'Apparaat' pagina om AMS info te laden." msgid "Sync filaments with AMS" msgstr "Synchroniseer filamenten met AMS" msgid "" -"Sync filaments with AMS will drop all current selected filament presets and " -"colors. Do you want to continue?" +"Sync filaments with AMS will drop all current selected filament presets and colors. Do you " +"want to continue?" msgstr "" -"Door filamenten te synchroniseren met de AMS zullen alle huidige " -"geselecteerde filament presets en kleuren wegvallen. Wilt u doorgaan?" +"Door filamenten te synchroniseren met de AMS zullen alle huidige geselecteerde filament " +"presets en kleuren wegvallen. Wilt u doorgaan?" -msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" -msgstr "" -"Already did a synchronization; do you want to sync only changes or resync " -"all?" +msgid "Already did a synchronization, do you want to sync only changes or resync all?" +msgstr "Already did a synchronization; do you want to sync only changes or resync all?" msgid "Sync" msgstr "Sync" @@ -5903,14 +5758,11 @@ msgid "Resync" msgstr "Resync" msgid "There are no compatible filaments, and sync is not performed." -msgstr "" -"Er zijn geen compatibele filamenten en er wordt geen synchronisatie " -"uitgevoerd." +msgstr "Er zijn geen compatibele filamenten en er wordt geen synchronisatie uitgevoerd." msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " -"presets." +"There are some unknown filaments mapped to generic preset. Please update Orca Slicer or " +"restart Orca Slicer to check if there is an update to system presets." msgstr "" #, boost-format @@ -5918,49 +5770,44 @@ msgid "Do you want to save changes to \"%1%\"?" msgstr "Wilt u de wijzigingen opslaan in \"%1%\"?" #, c-format, boost-format -msgid "" -"Successfully unmounted. The device %s(%s) can now be safely removed from the " -"computer." +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." msgstr "" -"Succesvol ontkoppeld. Het apparaat %s(%s) kan nu veilig van de computer " -"worden verwijderd." +"Succesvol ontkoppeld. Het apparaat %s(%s) kan nu veilig van de computer worden verwijderd." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." msgstr "Het uitwerpen van apparaat %s(%s) is mislukt." msgid "Previous unsaved project detected, do you want to restore it?" -msgstr "" -"Er is niet opgeslagen project data gedectereerd, wilt u deze herstellen?" +msgstr "Er is niet opgeslagen project data gedectereerd, wilt u deze herstellen?" msgid "Restore" msgstr "Herstellen" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be " -"clogged when printing this filament in a closed enclosure. Please open the " -"front door and/or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be clogged when printing " +"this filament in a closed enclosure. Please open the front door and/or remove the upper " +"glass." msgstr "" -"The current heatbed temperature is relatively high. The nozzle may clog when " -"printing this filament in a closed environment. Please open the front door " -"and/or remove the upper glass." +"De huidige warmtebedtemperatuur is relatief hoog. Het mondstuk kan verstopt raken bij het " +"printen van dit filament in een gesloten omgeving. Open de voordeur en/of verwijder het " +"bovenste glas." msgid "" -"The nozzle hardness required by the filament is higher than the default " -"nozzle hardness of the printer. Please replace the hardened nozzle or " -"filament, otherwise, the nozzle will be attrited or damaged." +"The nozzle hardness required by the filament is higher than the default nozzle hardness of " +"the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be " +"attrited or damaged." msgstr "" -"De door het filament vereiste hardheid van de nozzle is hoger dan de " -"standaard hardheid van de nozzle van de printer. Vervang de geharde nozzle " -"of het filament, anders raakt de nozzle versleten of beschadigd." +"De door het filament vereiste hardheid van het mondstuk is hoger dan de standaard hardheid " +"van het mondstuk van de printer. Vervang het geharde mondstuk of het filament, anders raakt " +"het mondstuk versleten of beschadigd." msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. " -"It is recommended to change to smooth mode." +"Enabling traditional timelapse photography may cause surface imperfections. It is " +"recommended to change to smooth mode." msgstr "" -"Het inschakelen van traditionele timelapse-fotografie kan oneffenheden in " -"het oppervlak veroorzaken. Het wordt aanbevolen om over te schakelen naar de " -"vloeiende modus." +"Het inschakelen van traditionele timelapse-fotografie kan oneffenheden in het oppervlak " +"veroorzaken. Het wordt aanbevolen om over te schakelen naar de vloeiende modus." msgid "Expand sidebar" msgstr "Zijbalk uitklappen" @@ -5973,30 +5820,25 @@ msgid "Loading file: %s" msgstr "Bestand laden: %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." -msgstr "" -"De 3mf is niet van Orca Slicer, er worden alleen geometriegegevens geladen." +msgstr "De 3mf is niet van Orca Slicer, er worden alleen geometriegegevens geladen." msgid "Load 3mf" msgstr "Laad 3mf" #, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Found following keys " -"unrecognized:" +msgid "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" msgstr "" -"Versie %s van de 3mf is nieuwer dan versie %s van %s. De volgende sleutels " -"worden niet herkend:" +"Versie %s van de 3mf is nieuwer dan versie %s van %s. De volgende sleutels worden niet " +"herkend:" msgid "You'd better upgrade your software.\n" msgstr "U dient de software te upgraden.\n" #, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " -"software." +msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." msgstr "" -"Versie %s van de 3mf is nieuwer dan versie %s van %s. Wij stellen voor om uw " -"software te upgraden." +"Versie %s van de 3mf is nieuwer dan versie %s van %s. Wij stellen voor om uw software te " +"upgraden." msgid "Invalid values found in the 3mf:" msgstr "Invalid values found in the 3mf:" @@ -6008,26 +5850,21 @@ msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "The 3mf has following modified G-code in filament or printer presets:" msgid "" -"Please confirm that these modified G-codes are safe to prevent any damage to " -"the machine!" +"Please confirm that these modified G-codes are safe to prevent any damage to the machine!" msgstr "" -"Controleer of deze aangepaste G-codes veilig zijn om schade aan de machine " -"te voorkomen!" +"Controleer of deze aangepaste G-codes veilig zijn om schade aan de machine te voorkomen!" msgid "Modified G-codes" msgstr "Modified G-code" msgid "The 3mf has following customized filament or printer presets:" -msgstr "" -"De 3mf heeft de volgende aangepaste voorinstellingen voor filament of " -"printer:" +msgstr "De 3mf heeft de volgende aangepaste voorinstellingen voor filament of printer:" msgid "" -"Please confirm that the G-codes within these presets are safe to prevent any " -"damage to the machine!" +"Please confirm that the G-codes within these presets are safe to prevent any damage to the " +"machine!" msgstr "" -"Controleer of de G-codes in deze presets veilig zijn om schade aan de " -"machine te voorkomen!" +"Controleer of de G-codes in deze presets veilig zijn om schade aan de machine te voorkomen!" msgid "Customized Preset" msgstr "Aangepaste voorinstelling" @@ -6036,17 +5873,14 @@ msgid "Name of components inside step file is not UTF8 format!" msgstr "Naam van componenten in step-bestand is niet UTF8-formaat!" msgid "The name may show garbage characters!" -msgstr "" -"Vanwege niet-ondersteunde tekstcodering kunnen er onjuiste tekens " -"verschijnen!" +msgstr "Vanwege niet-ondersteunde tekstcodering kunnen er onjuiste tekens verschijnen!" msgid "Remember my choice." msgstr "Remember my choice." #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "" -"Kan bestand \"%1%\" niet laden. Er is een ongeldige configuratie gevonden." +msgstr "Kan bestand \"%1%\" niet laden. Er is een ongeldige configuratie gevonden." msgid "Objects with zero volume removed" msgstr "Objecten zonder inhoud zijn verwijderd" @@ -6070,8 +5904,7 @@ msgid "" "Instead of considering them as multiple objects, should \n" "the file be loaded as a single object having multiple parts?" msgstr "" -"Dit bestand bevat verschillende objecten die op verschillende hoogten zijn " -"geplaatst.\n" +"Dit bestand bevat verschillende objecten die op verschillende hoogten zijn geplaatst.\n" "In plaats van ze te beschouwen als meerdere objecten, moet\n" "het bestand worden geladen als een enkel object met meerdere delen?" @@ -6079,9 +5912,7 @@ msgid "Multi-part object detected" msgstr "Object met meerdere onderdelen gedetecteerd" msgid "Load these files as a single object with multiple parts?\n" -msgstr "" -"Wilt u deze bestanden laden als een enkel object bestaande uit meerdere " -"onderdelen?\n" +msgstr "Wilt u deze bestanden laden als een enkel object bestaande uit meerdere onderdelen?\n" msgid "Object with multiple parts was detected" msgstr "Er is een object met meerdere onderdelen gedetecteerd" @@ -6090,19 +5921,18 @@ msgid "The file does not contain any geometry data." msgstr "Het bestand bevat geen geometriegegevens." msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." +"Your object appears to be too large. It will be scaled down to fit the heat bed " +"automatically." msgstr "" msgid "Object too large" msgstr "Object te groot" msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" +"Your object appears to be too large, Do you want to scale it down to fit the heat bed " +"automatically?" msgstr "" -"Uw object lijkt te groot. Wilt u het verkleinen zodat het automatisch op het " -"printbed past?" +"Uw object lijkt te groot. Wilt u het verkleinen zodat het automatisch op het printbed past?" msgid "Export STL file:" msgstr "Exporteer STL bestand:" @@ -6164,7 +5994,7 @@ msgid "Please select a file" msgstr "Selecteer een bestand" msgid "Do you want to replace it" -msgstr "Do you want to replace it?" +msgstr "Wilt u deze vervangen?" msgid "Message" msgstr "Bericht" @@ -6197,24 +6027,21 @@ msgstr "Slicing printbed %d" msgid "Please resolve the slicing errors and publish again." msgstr "Los aub de slicing fouten op en publiceer opnieuw." -msgid "" -"Network Plug-in is not detected. Network related features are unavailable." +msgid "Network Plug-in is not detected. Network related features are unavailable." msgstr "" -"Netwerk plug-in is niet gedetecteerd. Netwerkgerelateerde functies zijn niet " -"beschikbaar." +"Netwerk plug-in is niet gedetecteerd. Netwerkgerelateerde functies zijn niet beschikbaar." msgid "" "Preview only mode:\n" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" "Voorvertoning modus:\n" -"Het geladen bestand bevat alleen G-code, hierdoor is het niet mogelijk om " -"naar de pagina Voorbereiden schakelen." +"Het geladen bestand bevat alleen G-code, hierdoor is het niet mogelijk om naar de pagina " +"Voorbereiden schakelen." msgid "You can keep the modified presets to the new project or discard them" msgstr "" -"Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project of ze " -"laten vervallen" +"Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project of ze laten vervallen" msgid "Creating a new project" msgstr "Start een nieuw project" @@ -6224,12 +6051,11 @@ msgstr "Project laden" msgid "" "Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the " -"project file." +"Please check whether the folder exists online or if other programs open the project file." msgstr "" "Het is niet gelukt om het project op te slaan.\n" -"Controleer of de map online bestaat of dat het projectbestand in andere " -"programma's is geopend." +"Controleer of de map online bestaat of dat het projectbestand in andere programma's is " +"geopend." msgid "Save project" msgstr "Project opslaan" @@ -6253,9 +6079,7 @@ msgstr "Download failed; File size exception." msgid "Project downloaded %d%%" msgstr "Project %d%% gedownload" -msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." +msgid "Importing to Orca Slicer failed. Please download the file and manually import it." msgstr "" msgid "Import SLA archive" @@ -6265,7 +6089,7 @@ msgid "The selected file" msgstr "Het geselecteerde bestand" msgid "does not contain valid gcode." -msgstr "Bevat geen geldige Gcode" +msgstr "Bevat geen geldige G-code" msgid "Error occurs while loading G-code file" msgstr "Er is een fout opgetreden tijdens het laden van het G-codebestand." @@ -6273,16 +6097,17 @@ msgstr "Er is een fout opgetreden tijdens het laden van het G-codebestand." #. TRN %1% is archive path #, boost-format msgid "Loading of a ZIP archive on path %1% has failed." -msgstr "" +msgstr "Het laden van een ZIP-archief op pad %1% is mislukt." #. TRN: First argument = path to file, second argument = error description #, boost-format msgid "Failed to unzip file to %1%: %2%" -msgstr "" +msgstr "Kan het bestand niet uitpakken naar %1%: %2%" #, boost-format msgid "Failed to find unzipped file at %1%. Unzipping of file has failed." msgstr "" +"Kan het uitgepakte bestand op %1% niet vinden. Het uitpakken van het bestand is mislukt." msgid "Drop project file" msgstr "Projectbestand neerzetten" @@ -6313,8 +6138,8 @@ msgstr "Alle objecten zullen verwijderd worden, doorgaan?" msgid "The current project has unsaved changes, save it before continue?" msgstr "" -"Het huidige project heeft niet-opgeslagen wijzigingen. Wilt u eerst opslaan " -"voordat u verder gaat?" +"Het huidige project heeft niet-opgeslagen wijzigingen. Wilt u eerst opslaan voordat u " +"verder gaat?" msgid "Number of copies:" msgstr "Aantal kopieën:" @@ -6339,18 +6164,17 @@ msgstr "Bewaar het geslicede bestand als:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." +"The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" -"Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de " -"printer worden bekeken." +"Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de printer worden " +"bekeken." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts will be kept. You " +"may fix the meshes and try again." msgstr "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts will be kept. You " +"may fix the meshes and try again." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -6369,8 +6193,7 @@ msgid "Reason: \"%1%\" and another part have no intersection." msgstr "Reason: \"%1%\" and another part have no intersection." msgid "" -"Are you sure you want to store original SVGs with their local paths into the " -"3MF file?\n" +"Are you sure you want to store original SVGs with their local paths into the 3MF file?\n" "If you hit 'NO', all SVGs in the project will not be editable any more." msgstr "" @@ -6388,8 +6211,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Afdrukken per object:\n" -"Het wordt geadviseerd om automatisch rangschikken te gebruiken om botsingen " -"tijdens het afdrukken te voorkomen." +"Het wordt geadviseerd om automatisch rangschikken te gebruiken om botsingen tijdens het " +"afdrukken te voorkomen." msgid "Send G-code" msgstr "Verstuur G-code" @@ -6398,8 +6221,7 @@ msgid "Send to printer" msgstr "Stuur naar printer" msgid "Custom supports and color painting were removed before repairing." -msgstr "" -"Handmatig aangebrachte support en kleuren zijn verwijderd voor het repareren." +msgstr "Handmatig aangebrachte support en kleuren zijn verwijderd voor het repareren." msgid "Optimize Rotation" msgstr "" @@ -6450,23 +6272,22 @@ msgid "Tips:" msgstr "Tips:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model " -"on Orca Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca " +"Slicer(windows) or CAD softwares." msgstr "" +"De functie \"Model repareren\" is momenteel alleen beschikbaar op Windows. Repareer het " +"model met OrcaSlicer (Windows) of andere CAD-software." #, c-format, boost-format msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you still want to do " +"this printing, please set this filament's bed temperature to non zero." msgstr "" -"Plate% d: %s is not suggested for use printing filament %s(%s). If you still " -"want to do this print job, please set this filament's bed temperature to a " -"number that is not zero." +"Plate% d: %s is not suggested for use printing filament %s(%s). If you still want to do " +"this print job, please set this filament's bed temperature to a number that is not zero." msgid "Switching the language requires application restart.\n" -msgstr "" -"Om de taal te wijzigen dient de toepassing opnieuw opgestart te worden.\n" +msgstr "Om de taal te wijzigen dient de toepassing opnieuw opgestart te worden.\n" msgid "Do you want to continue?" msgstr "Wilt u doorgaan?" @@ -6484,7 +6305,7 @@ msgid "Region selection" msgstr "Regio selectie" msgid "Second" -msgstr "Seconde" +msgstr "seconde(n)" msgid "Browse" msgstr "Browsen" @@ -6493,19 +6314,19 @@ msgid "Choose Download Directory" msgstr "Kies Downloadmap" msgid "Associate" -msgstr "" +msgstr "Associeer" msgid "with OrcaSlicer so that Orca can open models from" -msgstr "" +msgstr "met OrcaSlicer zodat Orca modellen kan openen van" msgid "Current Association: " -msgstr "" +msgstr "Huidige associatie: " msgid "Current Instance" -msgstr "" +msgstr "Huidige instantie" msgid "Current Instance Path: " -msgstr "" +msgstr "Huidig instancepad: " msgid "General Settings" msgstr "Algemene instellingen" @@ -6529,21 +6350,24 @@ msgid "Login Region" msgstr "Inlogregio" msgid "Stealth Mode" -msgstr "" +msgstr "Stealth-modus" msgid "" -"This stops the transmission of data to Bambu's cloud services. Users who " -"don't use BBL machines or use LAN mode only can safely turn on this function." +"This stops the transmission of data to Bambu's cloud services. Users who don't use BBL " +"machines or use LAN mode only can safely turn on this function." msgstr "" +"Hiermee wordt het versturen van gegevens naar Bambu's cloudservices gestopt. Gebruikers die " +"geen BambuLab-machines gebruiken of alleen de LAN-modus gebruiken, kunnen deze functie " +"veilig inschakelen." msgid "Enable network plugin" -msgstr "" +msgstr "Netwerkplug-in inschakelen" msgid "Check for stable updates only" -msgstr "" +msgstr "Alleen op stabiele updates controleren" msgid "Metric" -msgstr "Metriek" +msgstr "Metrisch" msgid "Imperial" msgstr "Imperiaal" @@ -6552,201 +6376,200 @@ msgid "Units" msgstr "Eenheden" msgid "Allow only one OrcaSlicer instance" -msgstr "" +msgstr "Sta slechts één OrcaSlicer-instantie toe" msgid "" -"On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. " -"In such case this settings will allow only one instance." +"On OSX there is always only one instance of app running by default. However it is allowed " +"to run multiple instances of same app from the command line. In such case this settings " +"will allow only one instance." msgstr "" -"Op OSX is er standaard altijd maar één instantie van een app actief. Het is " -"echter toegestaan om meerdere instanties van dezelfde app uit te voeren " -"vanaf de opdrachtregel. In dat geval staat deze instelling slechts één " -"instantie toe." +"In OSX is er standaard altijd maar één instantie van een app actief. Het is echter " +"toegestaan om meerdere instanties van dezelfde app uit te voeren vanaf de opdrachtregel. In " +"dat geval staat deze instelling slechts één instantie toe." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the " -"same OrcaSlicer is already running, that instance will be reactivated " -"instead." +"If this is enabled, when starting OrcaSlicer and another instance of the same OrcaSlicer is " +"already running, that instance will be reactivated instead." msgstr "" +"Als deze optie is ingeschakeld, wordt OrcaSlicer opnieuw geactiveerd wanneer er al een " +"ander exemplaar van OrcaSlicer is gestart." msgid "Home" msgstr "Thuis" msgid "Default Page" -msgstr "" +msgstr "Startpagina" msgid "Set the page opened on startup." -msgstr "" +msgstr "Stel de pagina in die wordt geopend bij het opstarten." msgid "Touchpad" -msgstr "" +msgstr "Touchpad" msgid "Camera style" -msgstr "" +msgstr "Camera stijl" msgid "" "Select camera navigation style.\n" "Default: LMB+move for rotation, RMB/MMB+move for panning.\n" "Touchpad: Alt+move for rotation, Shift+move for panning." msgstr "" +"Selecteer cameranavigatiestijl.\n" +"Standaard: LMB+bewegen voor rotatie, RMB/MMB+bewegen voor pannen.\n" +"Touchpad: Alt+bewegen voor rotatie, Shift+bewegen voor pannen." msgid "Zoom to mouse position" -msgstr "Zoom to mouse position" +msgstr "Zoomen naar muispositie" msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." +"Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window " +"center." msgstr "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." +"Zoom in op de positie van de muisaanwijzer in de 3D-weergave, in plaats van op het midden " +"van het venster." msgid "Use free camera" msgstr "Gebruik vrij beweegbare camera" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" -"Als dit is ingeschakeld wordt de vrij beweegbare camera gebruikt, anders een " -"vaste camera." +"Als dit is ingeschakeld wordt de vrij beweegbare camera gebruikt, anders een vaste camera." msgid "Reverse mouse zoom" -msgstr "" +msgstr "Omgekeerde muiszoom" msgid "If enabled, reverses the direction of zoom with mouse wheel." -msgstr "" +msgstr "Als deze optie is ingeschakeld, wordt de zoomrichting met het muiswiel omgedraaid." msgid "Show splash screen" msgstr "Toon startscherm" msgid "Show the splash screen during startup." -msgstr "" +msgstr "Toon het opstartscherm tijdens het opstarten." msgid "Show \"Tip of the day\" notification after start" msgstr "Toon de melding 'Tip van de dag' na het starten" msgid "If enabled, useful hints are displayed at startup." -msgstr "" -"Indien ingeschakeld, worden bij het opstarten nuttige tips weergegeven." +msgstr "Indien ingeschakeld, worden bij het opstarten nuttige tips weergegeven." msgid "Flushing volumes: Auto-calculate everytime the color changed." -msgstr "" -"Spoelvolumes: Automatisch berekenen telkens wanneer de kleur verandert." +msgstr "Spoelvolumes: Automatisch berekenen telkens wanneer de kleur verandert." msgid "If enabled, auto-calculate everytime the color changed." msgstr "" -"Als deze optie is ingeschakeld, wordt elke keer dat de kleur verandert " -"automatisch berekend." +"Als deze optie is ingeschakeld, wordt elke keer dat de kleur verandert automatisch berekend." -msgid "" -"Flushing volumes: Auto-calculate every time when the filament is changed." -msgstr "Flushing volumes: Auto-calculate every time the filament is changed." +msgid "Flushing volumes: Auto-calculate every time when the filament is changed." +msgstr "Spoelvolumes: Automatisch berekenen telkens wanneer het filament wordt vervangen." msgid "If enabled, auto-calculate every time when filament is changed" -msgstr "If enabled, auto-calculate every time filament is changed" +msgstr "" +"Als dit is ingeschakeld, wordt er automatisch berekend telkens wanneer het filament wordt " +"verwisseld" msgid "Remember printer configuration" -msgstr "" +msgstr "Printerconfiguratie onthouden" msgid "" -"If enabled, Orca will remember and switch filament/process configuration for " -"each printer automatically." +"If enabled, Orca will remember and switch filament/process configuration for each printer " +"automatically." msgstr "" +"Als dit is ingeschakeld, onthoudt Orca automatisch de filament-/procesconfiguratie voor " +"elke printer en schakelt deze automatisch om." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "" +msgstr "Beheer van meerdere apparaten (Werkt nadat Orca opnieuw is opgestart)." msgid "" -"With this option enabled, you can send a task to multiple devices at the " -"same time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the same time and " +"manage multiple devices." msgstr "" -"With this option enabled, you can send a task to multiple devices at the " -"same time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the same time and " +"manage multiple devices." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "Plaat automatisch rangschikken na het klonen" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Automatische rangschikking van de plaat na het klonen van een object" msgid "Network" msgstr "Netwerk" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Gebruikersvoorinstellingen automatisch synchroniseren (printer/filament/" -"proces)" +msgstr "Gebruikersvoorinstellingen automatisch synchroniseren (printer/filament/proces)" msgid "User Sync" msgstr "Gebruiker synchroniseren" msgid "Update built-in Presets automatically." -msgstr "Update built-in presets automatically." +msgstr "Ingebouwde voorinstellingen automatisch bijwerken." msgid "System Sync" -msgstr "System Sync" +msgstr "Systeemsync" msgid "Clear my choice on the unsaved presets." -msgstr "Clear my choice on the unsaved presets." +msgstr "Wis keuze voor niet-opgeslagen presets." msgid "Associate files to OrcaSlicer" -msgstr "Koppel bestanden aan Orca Slicer" +msgstr "Koppel bestanden aan OrcaSlicer" msgid "Associate .3mf files to OrcaSlicer" -msgstr "Koppel .3mf-bestanden aan Orca Slicer" +msgstr "Koppel .3mf-bestanden aan OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" msgstr "" -"Indien ingeschakeld, wordt Orca Slicer ingesteld als de standaardtoepassing " -"om .3mf-bestanden te openen" +"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing om .3mf-" +"bestanden te openen" msgid "Associate .stl files to OrcaSlicer" -msgstr "Koppel .stl-bestanden aan Orca Slicer" +msgstr "Koppel .stl-bestanden aan OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" msgstr "" -"Indien ingeschakeld, wordt Orca Slicer ingesteld als de standaardtoepassing " -"om .stl-bestanden te openen" +"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing om .stl-" +"bestanden te openen" msgid "Associate .step/.stp files to OrcaSlicer" -msgstr "Koppel .step/.stp bestanden aan Orca Slicer" +msgstr "Koppel .step/.stp bestanden aan OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" msgstr "" -"Indien ingeschakeld, wordt Orca Slicer ingesteld als de standaardtoepassing " -"om .step-bestanden te openen" +"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing om .step-" +"bestanden te openen" msgid "Associate web links to OrcaSlicer" -msgstr "" +msgstr "Koppel weblinks aan OrcaSlicer" msgid "Associate URLs to OrcaSlicer" -msgstr "" +msgstr "Koppel URL's aan OrcaSlicer" msgid "Maximum recent projects" -msgstr "Maximum recent projects" +msgstr "Maximale recente projecten" msgid "Maximum count of recent projects" -msgstr "Maximum count of recent projects" +msgstr "Maximaal aantal recente projecten" msgid "Clear my choice on the unsaved projects." -msgstr "Clear my choice on the unsaved projects." +msgstr "Wis keuze voor niet-opgeslagen projecten." msgid "No warnings when loading 3MF with modified G-codes" -msgstr "No warnings when loading 3MF with modified G-code" +msgstr "Geen waarschuwingen bij het laden van 3MF met aangepaste G-codes" msgid "Auto-Backup" -msgstr "Automatisch backup maken" +msgstr "Automatisch een back-up maken" -msgid "" -"Backup your project periodically for restoring from the occasional crash." +msgid "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Backup your project periodically to help with restoring from an occasional " +"Maak regelmatig een back-up van uw project, zodat u het kunt herstellen na een incidentele " "crash." msgid "every" -msgstr "every" +msgstr "elke" msgid "The peroid of backup in seconds." -msgstr "The period of backup in seconds." +msgstr "De periode van de back-up in seconden." msgid "Downloads" msgstr "Downloads" @@ -6761,7 +6584,7 @@ msgid "Develop mode" msgstr "Ontwikkelmodus" msgid "Skip AMS blacklist check" -msgstr "Skip AMS blacklist check" +msgstr "AMS-zwartelijstcontrole overslaan" msgid "Home page and daily tips" msgstr "Startpagina en dagelijkse tips" @@ -6812,19 +6635,19 @@ msgid "Log Level" msgstr "Log level" msgid "fatal" -msgstr "Fataal" +msgstr "fataal" msgid "error" -msgstr "Fout" +msgstr "fout" msgid "warning" msgstr "waarschuwing" msgid "debug" -msgstr "Debuggen" +msgstr "debug" msgid "trace" -msgstr "Traceren" +msgstr "trace" msgid "Host Setting" msgstr "Host-instelling" @@ -6842,10 +6665,10 @@ msgid "Product host" msgstr "Producthost" msgid "debug save button" -msgstr "Debuggen opslaan knop" +msgstr "debug opslaan knop" msgid "save debug settings" -msgstr "Bewaar debug instellingen" +msgstr "bewaar debug instellingen" msgid "DEBUG settings have saved successfully!" msgstr "De debug instellingen zijn succesvol opgeslagen!" @@ -6902,13 +6725,13 @@ msgid "Customize" msgstr "Aanpassen" msgid "Other layer filament sequence" -msgstr "Other layer filament sequence" +msgstr "Filamentvolgorde van andere lagen" msgid "Please input layer value (>= 2)." -msgstr "Please input layer value (>= 2)." +msgstr "Voer de laagwaarde in (>= 2)." msgid "Plate name" -msgstr "Plate name" +msgstr "Plaat naam" msgid "Same as Global Print Sequence" msgstr "Same as Global Print Sequence" @@ -6917,10 +6740,10 @@ msgid "Print sequence" msgstr "Afdrukvolgorde" msgid "Same as Global" -msgstr "Same as Global" +msgstr "Hetzelfde als globaal" msgid "Disable" -msgstr "Disable" +msgstr "Uitschakelen" msgid "Spiral vase" msgstr "Spiraalvaas" @@ -6935,16 +6758,16 @@ msgid "Same as Global Bed Type" msgstr "Hetzelfde als Global Bed Type" msgid "By Layer" -msgstr "By Layer" +msgstr "Op laag" msgid "By Object" -msgstr "By Object" +msgstr "Op object" msgid "Accept" -msgstr "Accept" +msgstr "Accepteer" msgid "Log Out" -msgstr "Log Out" +msgstr "Uitloggen" msgid "Slice all plate to obtain time and filament estimation" msgstr "" @@ -6961,8 +6784,7 @@ msgid "Jump to model publish web page" msgstr "Ga naar de website om het model te publiceren" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "" -"Notitie: het voorbereiden kan enkele minuten duren. Even geduld alstublieft." +msgstr "Notitie: het voorbereiden kan enkele minuten duren. Even geduld alstublieft." msgid "Publish" msgstr "Publiceren" @@ -6987,13 +6809,13 @@ msgid "User Preset" msgstr "Gebruikersvoorinstelling" msgid "Preset Inside Project" -msgstr "Voorinstelling Project Inside" +msgstr "Voorinstelling binnen project" msgid "Name is unavailable." msgstr "Naam is niet beschikbaar." msgid "Overwrite a system profile is not allowed" -msgstr "Het overschrijven van een systeem profiel is niet toegestaand" +msgstr "Het overschrijven van een systeem profiel is niet toegestaan" #, boost-format msgid "Preset \"%1%\" already exists." @@ -7001,24 +6823,22 @@ msgstr "Voorinstelling \"%1%\" bestaat al." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "" -"Voorinstelling \"%1%\" bestaat al en is niet compatibel met de huidige " -"printer." +msgstr "Voorinstelling \"%1%\" bestaat al en is niet compatibel met de huidige printer." msgid "Please note that saving action will replace this preset" msgstr "Let er aub op dat opslaan de voorinstelling zal overschrijven" msgid "The name cannot be the same as a preset alias name." msgstr "" -"Er kan niet voor een naam gekozen worden die hetzelfde is als de naam van " -"een voorinstelling." +"Er kan niet voor een naam gekozen worden die hetzelfde is als de naam van een " +"voorinstelling." msgid "Save preset" msgstr "Bewaar voorinstelling" msgctxt "PresetName" msgid "Copy" -msgstr "Kopie" +msgstr "Kopiëren" #, boost-format msgid "Printer \"%1%\" is selected with preset \"%2%\"" @@ -7034,8 +6854,7 @@ msgstr "Voor \"%1%\", dient \"%2%\" veranderd te worden in \"%3%\" " #, boost-format msgid "For \"%1%\", add \"%2%\" as a new preset" -msgstr "" -"Voor \"%1%\", dient \"%2%\" toegevoegd te worden als nieuwe voorinstelling" +msgstr "Voor \"%1%\", dient \"%2%\" toegevoegd te worden als nieuwe voorinstelling" #, boost-format msgid "Simply switch to \"%1%\"" @@ -7072,22 +6891,22 @@ msgid "Busy" msgstr "Bezet" msgid "Bambu Cool Plate" -msgstr "Bambu Cool (koude) Plate" +msgstr "Bambu koelplaat" msgid "PLA Plate" -msgstr "PLA Plate" +msgstr "PLA plaat" msgid "Bambu Engineering Plate" -msgstr "Bambu Engineering (technische) plate" +msgstr "Bambu Engineering plaat" msgid "Bambu Smooth PEI Plate" -msgstr "" +msgstr "Bambu gladde PEI-plaat" msgid "High temperature Plate" -msgstr "Plaat op hoge temperatuur" +msgstr "Hoge temperatuur plaat" msgid "Bambu Textured PEI Plate" -msgstr "" +msgstr "Bambu getextureerde PEI-plaat" msgid "Send print job to" msgstr "Stuur de printtaak naar" @@ -7099,7 +6918,7 @@ msgid "Click here if you can't connect to the printer" msgstr "Klik hier als je geen verbinding kunt maken met de printer" msgid "send completed" -msgstr "Versturen gelukt" +msgstr "versturen gelukt" msgid "Error code" msgstr "Error code" @@ -7118,134 +6937,118 @@ msgstr "Time-out tijdens synchronisatie van apparaatinformatie" msgid "Cannot send the print job when the printer is updating firmware" msgstr "" -"Kan geen printopdracht verzenden terwijl de printer bezig is met het updaten " -"van de firmware" +"Kan geen printopdracht verzenden terwijl de printer bezig is met het updaten van de firmware" -msgid "" -"The printer is executing instructions. Please restart printing after it ends" +msgid "The printer is executing instructions. Please restart printing after it ends" msgstr "" -"De printer is instructies aan het uitvoeren. Begin opnieuw met printen nadat " -"dit is voltooid" +"De printer is instructies aan het uitvoeren. Begin opnieuw met printen nadat dit is voltooid" msgid "The printer is busy on other print job" -msgstr "De printer is bezig met een andere printtaak." +msgstr "De printer is bezig met een andere printtaak" #, c-format, boost-format msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer " -"firmware to support AMS slot assignment." +"Filament %s exceeds the number of AMS slots. Please update the printer firmware to support " +"AMS slot assignment." msgstr "" -"Filament %s overschrijdt het aantal AMS-sleuven. Update de firmware van de " -"printer om de toewijzing van AMS-sleuven te ondersteunen." +"Filament %s overschrijdt het aantal AMS-sleuven. Update de firmware van de printer om de " +"toewijzing van AMS-sleuven te ondersteunen." msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware " +"Filament exceeds the number of AMS slots. Please update the printer firmware to support AMS " +"slot assignment." +msgstr "" +"Het filament overschrijdt het aantal AMS-sleuven. Update de firmware van de printer om de " +"toewijzing van AMS-sleuven te ondersteunen." + +msgid "" +"Filaments to AMS slots mappings have been established. You can click a filament above to " +"change its mapping AMS slot" +msgstr "" +"De toewijzingen van filamenten aan AMS-slots zijn vastgesteld. U kunt op een filament " +"hierboven klikken om de toewijzing van het AMS slot te wijzigen" + +msgid "" +"Please click each filament above to specify its mapping AMS slot before sending the print " +"job" +msgstr "" +"Klik op elk filament hierboven om de bijbehorende AMS-sleuf op te geven voordat u de " +"printopdracht verzendt" + +#, c-format, boost-format +msgid "" +"Filament %s does not match the filament in AMS slot %s. Please update the printer firmware " "to support AMS slot assignment." msgstr "" -"Het filament overschrijdt het aantal AMS-sleuven. Update de firmware van de " +"Filament %s komt niet overeen met het filament in AMS-sleuf %s. Werk de firmware van de " +"printer bij om de toewijzing van AMS-sleuven te ondersteunen." + +msgid "" +"Filament does not match the filament in AMS slot. Please update the printer firmware to " +"support AMS slot assignment." +msgstr "" +"Het filament komt niet overeen met het filament in de AMS-sleuf. Update de firmware van de " "printer om de toewijzing van AMS-sleuven te ondersteunen." -msgid "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" +msgid "The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" -"De toewijzingen van filamenten aan AMS-slots zijn vastgesteld. U kunt op een " -"filament hierboven klikken om de toewijzing van het AMS slot te wijzigen" - -msgid "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" -msgstr "" -"Klik op elk filament hierboven om de bijbehorende AMS-sleuf op te geven " -"voordat u de printopdracht verzendt" - -#, c-format, boost-format -msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the " -"printer firmware to support AMS slot assignment." -msgstr "" -"Filament %s komt niet overeen met het filament in AMS-sleuf %s. Werk de " -"firmware van de printer bij om de toewijzing van AMS-sleuven te ondersteunen." - -msgid "" -"Filament does not match the filament in AMS slot. Please update the printer " -"firmware to support AMS slot assignment." -msgstr "" -"Het filament komt niet overeen met het filament in de AMS-sleuf. Update de " -"firmware van de printer om de toewijzing van AMS-sleuven te ondersteunen." - -msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." -msgstr "" -"De firmware van de printer ondersteunt alleen sequentiële toewijzing van " -"filament => AMS-sleuf." +"De firmware van de printer ondersteunt alleen sequentiële toewijzing van filament => AMS-" +"sleuf." msgid "An SD card needs to be inserted before printing." msgstr "Er moet een MicroSD-kaart worden geplaatst voordat u kunt afdrukken." #, c-format, boost-format msgid "" -"The selected printer (%s) is incompatible with the chosen printer profile in " -"the slicer (%s)." +"The selected printer (%s) is incompatible with the chosen printer profile in the slicer " +"(%s)." msgstr "" -"The selected printer (%s) is incompatible with the chosen printer profile in " -"the slicer (%s)." +"The selected printer (%s) is incompatible with the chosen printer profile in the slicer " +"(%s)." msgid "An SD card needs to be inserted to record timelapse." -msgstr "" -"Er moet een MicroSD-kaart worden geplaatst om een timelapse op te nemen." +msgstr "Er moet een MicroSD-kaart worden geplaatst om een timelapse op te nemen." -msgid "" -"Cannot send the print job to a printer whose firmware is required to get " -"updated." +msgid "Cannot send the print job to a printer whose firmware is required to get updated." msgstr "" -"Kan de printopdracht niet naar een printer sturen waarvan de firmware moet " -"worden bijgewerkt." +"Kan de printopdracht niet naar een printer sturen waarvan de firmware moet worden " +"bijgewerkt." msgid "Cannot send the print job for empty plate" -msgstr "Kan geen afdruktaak verzenden voor een lege plaat." +msgstr "Kan geen afdruktaak verzenden voor een lege plaat" msgid "This printer does not support printing all plates" -msgstr "" -"Deze printer biedt geen ondersteuning voor het afdrukken van alle platen" +msgstr "Deze printer biedt geen ondersteuning voor het afdrukken van alle platen" msgid "" -"When enable spiral vase mode, machines with I3 structure will not generate " -"timelapse videos." +"When enable spiral vase mode, machines with I3 structure will not generate timelapse videos." msgstr "" -"When spiral vase mode is enabled, machines with I3 structure will not " -"generate timelapse videos." +"When spiral vase mode is enabled, machines with I3 structure will not generate timelapse " +"videos." -msgid "" -"Timelapse is not supported because Print sequence is set to \"By object\"." +msgid "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Timelapse wordt niet ondersteund omdat Afdruksequentie is ingesteld op \"Per " -"object\"." +"Timelapse wordt niet ondersteund omdat Afdruksequentie is ingesteld op \"Per object\"." msgid "Errors" msgstr "Fouten" msgid "Please check the following:" -msgstr "Please check the following:" +msgstr "Controleer het volgende:" msgid "" -"The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer " -"type for slicing." +"The printer type selected when generating G-Code is not consistent with the currently " +"selected printer. It is recommended that you use the same printer type for slicing." msgstr "" -"The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer " -"type for slicing." +"The printer type selected when generating G-Code is not consistent with the currently " +"selected printer. It is recommended that you use the same printer type for slicing." msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." +"There are some unknown filaments in the AMS mappings. Please check whether they are the " +"required filaments. If they are okay, press \"Confirm\" to start printing." msgstr "" -"Er zijn enkele onbekende filamenten in de AMS mappings. Controleer of het de " -"vereiste filamenten zijn. Als ze in orde zijn, klikt u op \"Bevestigen\" om " -"het afdrukken te starten." +"Er zijn enkele onbekende filamenten in de AMS mappings. Controleer of het de vereiste " +"filamenten zijn. Als ze in orde zijn, klikt u op \"Bevestigen\" om het afdrukken te starten." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7256,41 +7059,34 @@ msgid "nozzle memorized: %.2f %s" msgstr "mondstuk onthouden: %.2f %s" msgid "" -"Your nozzle diameter in sliced file is not consistent with memorized nozzle. " -"If you changed your nozzle lately, please go to Device > Printer Parts to " -"change settings." +"Your nozzle diameter in sliced file is not consistent with memorized nozzle. If you changed " +"your nozzle lately, please go to Device > Printer Parts to change settings." msgstr "" -"Your nozzle diameter in sliced file is not consistent with the saved nozzle. " -"If you changed your nozzle lately, please go to Device > Printer Parts to " -"change settings." +"De dieameter van het mondstuk in het bestand komt niet overeen met het opgeslagen mondstuk. " +"Als u uw mondstuk onlangs hebt gewijzigd, ga dan naar Apparaat > Printeronderdelen om de " +"instellingen te wijzigen." #, c-format, boost-format -msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" +msgid "Printing high temperature material(%s material) with %s may cause nozzle damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" +"Het printen van materiaal met een hoge temperatuur (%s materiaal) met %s kan schade aan het " +"mondstuk veroorzaken" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." -msgid "" -"Please click the confirm button if you still want to proceed with printing." -msgstr "" -"Please click the confirm button if you still want to proceed with printing." +msgid "Please click the confirm button if you still want to proceed with printing." +msgstr "Please click the confirm button if you still want to proceed with printing." + +msgid "Connecting to the printer. Unable to cancel during the connection process." +msgstr "Aansluiten op de printer. Kan niet annuleren tijdens het verbindingsproces." msgid "" -"Connecting to the printer. Unable to cancel during the connection process." +"Caution to use! Flow calibration on Textured PEI Plate may fail due to the scattered " +"surface." msgstr "" -"Aansluiten op de printer. Kan niet annuleren tijdens het verbindingsproces." - -msgid "" -"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " -"scattered surface." -msgstr "" -"Let op bij gebruik! Flowkalibratie op de PEI-plaat met structuur kan " -"mislukken vanwege het verstrooide oppervlak." +"Let op bij gebruik! Flowkalibratie op de PEI-plaat met structuur kan mislukken vanwege het " +"verstrooide oppervlak." msgid "Automatic flow calibration using Micro Lidar" msgstr "Automatic flow calibration using the Micro Lidar" @@ -7299,7 +7095,7 @@ msgid "Modifying the device name" msgstr "De naam van het apparaat wijzigen" msgid "Bind with Pin Code" -msgstr "Bind with Pin Code" +msgstr "Koppelen met pincode" msgid "Send to Printer SD card" msgstr "Verzenden naar de MicroSD-kaart in de printer" @@ -7308,51 +7104,47 @@ msgid "Cannot send the print task when the upgrade is in progress" msgstr "Kan de printtaak niet verzenden wanneer de upgrade wordt uitgevoerd" msgid "The selected printer is incompatible with the chosen printer presets." -msgstr "" -"De geselecteerde printer is niet compatibel met de gekozen " -"printervoorinstellingen." +msgstr "De geselecteerde printer is niet compatibel met de gekozen printervoorinstellingen." msgid "An SD card needs to be inserted before send to printer SD card." -msgstr "" -"A MicroSD card needs to be inserted before sending to the printer SD card." +msgstr "A MicroSD card needs to be inserted before sending to the printer SD card." msgid "The printer is required to be in the same LAN as Orca Slicer." msgstr "De printer moet zich in hetzelfde LAN bevinden als Orca Slicer." msgid "The printer does not support sending to printer SD card." msgstr "" -"De printer biedt geen ondersteuning voor het verzenden naar de microSD-kaart " -"van de printer." +"De printer biedt geen ondersteuning voor het verzenden naar de microSD-kaart van de printer." msgid "Slice ok." -msgstr "Slice gelukt" +msgstr "Slice gelukt." msgid "View all Daily tips" msgstr "Bekijk alle dagelijkse tips" msgid "Failed to create socket" -msgstr "Failed to create socket" +msgstr "Kan socket niet maken" msgid "Failed to connect socket" -msgstr "Failed to connect socket" +msgstr "Kan niet verbinden met socket" msgid "Failed to publish login request" -msgstr "Failed to publish login request" +msgstr "Kan loginverzoek niet publiceren" msgid "Get ticket from device timeout" -msgstr "Timeout getting ticket from device" +msgstr "Time-out bij het ophalen van ticket van apparaat" msgid "Get ticket from server timeout" -msgstr "Timeout getting ticket from server" +msgstr "Time-out bij het ophalen van ticket van server" msgid "Failed to post ticket to server" -msgstr "Failed to post ticket to server" +msgstr "Het is niet gelukt om het ticket naar de server te plaatsen" msgid "Failed to parse login report reason" -msgstr "Failed to parse login report reason" +msgstr "Kan de reden van het loginrapport niet parseren" msgid "Receive login report timeout" -msgstr "Receive login report timeout" +msgstr "Time-out voor loginrapport ontvangen" msgid "Unknown Failure" msgstr "Onbekende fout" @@ -7361,23 +7153,23 @@ msgid "" "Please Find the Pin Code in Account page on printer screen,\n" " and type in the Pin Code below." msgstr "" -"Please Find the Pin Code in Account page on printer screen,\n" -" and type in the Pin Code below." +"Zoek de pincode op de accountpagina op het printerscherm,\n" +" en typ hieronder de pincode." msgid "Can't find Pin Code?" -msgstr "Can't find Pin Code?" +msgstr "Pincode niet gevonden?" msgid "Pin Code" -msgstr "Pin Code" +msgstr "Pincode" msgid "Binding..." msgstr "Binding..." msgid "Please confirm on the printer screen" -msgstr "Please confirm on the printer screen" +msgstr "Bevestig dit op het printerscherm" msgid "Log in failed. Please check the Pin Code." -msgstr "Log in failed. Please check the Pin Code." +msgstr "Inloggen mislukt. Controleer de pincode." msgid "Log in printer" msgstr "Inloggen op printer" @@ -7386,32 +7178,32 @@ msgid "Would you like to log in this printer with current account?" msgstr "Wil je met het huidige account inloggen op de printer?" msgid "Check the reason" -msgstr "Check the reason" +msgstr "Controleer de reden" msgid "Read and accept" -msgstr "Read and accept" +msgstr "Lezen en accepteren" msgid "Terms and Conditions" -msgstr "Terms and Conditions" +msgstr "Algemene voorwaarden" msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the termsand conditions.By clicking to agree to use your " -"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " -"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " -"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, please read " +"the termsand conditions.By clicking to agree to use your Bambu Lab device, you agree to " +"abide by the Privacy Policyand Terms of Use(collectively, the \"Terms\"). If you do not " +"comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment " +"and services." msgstr "" -"Thank you for purchasing a Bambu Lab device. Before using your Bambu Lab " -"device, please read the terms and conditions. By clicking to agree to use " -"your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of " -"Use (collectively, the \"Terms\"). If you do not comply with or agree to the " -"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +"Thank you for purchasing a Bambu Lab device. Before using your Bambu Lab device, please " +"read the terms and conditions. By clicking to agree to use your Bambu Lab device, you agree " +"to abide by the Privacy Policy and Terms of Use (collectively, the \"Terms\"). If you do " +"not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab " +"equipment and services." msgid "and" -msgstr "and" +msgstr "en" msgid "Privacy Policy" -msgstr "Privacy Policy" +msgstr "Privacybeleid" msgid "We ask for your help to improve everyone's printer" msgstr "We ask for your help to improve everyone's printer" @@ -7421,29 +7213,25 @@ msgstr "Statement about User Experience Improvement Program" #, c-format, boost-format msgid "" -"In the 3D Printing community, we learn from each other's successes and " -"failures to adjust our own slicing parameters and settings. %s follows the " -"same principle and uses machine learning to improve its performance from the " -"successes and failures of the vast number of prints by our users. We are " -"training %s to be smarter by feeding them the real-world data. If you are " -"willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +"In the 3D Printing community, we learn from each other's successes and failures to adjust " +"our own slicing parameters and settings. %s follows the same principle and uses machine " +"learning to improve its performance from the successes and failures of the vast number of " +"prints by our users. We are training %s to be smarter by feeding them the real-world data. " +"If you are willing, this service will access information from your error logs and usage " +"logs, which may include information described in Privacy Policy. We will not collect any " +"Personal Data by which an individual can be identified directly or indirectly, including " +"without limitation names, addresses, payment information, or phone numbers. By enabling " +"this service, you agree to these terms and the statement about Privacy Policy." msgstr "" -"In the 3D Printing community, we learn from each other's successes and " -"failures to adjust our own slicing parameters and settings. %s follows the " -"same principle and uses machine learning to improve its performance from the " -"successes and failures of the vast number of prints by our users. We are " -"training %s to be smarter by feeding them the real-world data. If you are " -"willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +"In the 3D Printing community, we learn from each other's successes and failures to adjust " +"our own slicing parameters and settings. %s follows the same principle and uses machine " +"learning to improve its performance from the successes and failures of the vast number of " +"prints by our users. We are training %s to be smarter by feeding them the real-world data. " +"If you are willing, this service will access information from your error logs and usage " +"logs, which may include information described in Privacy Policy. We will not collect any " +"Personal Data by which an individual can be identified directly or indirectly, including " +"without limitation names, addresses, payment information, or phone numbers. By enabling " +"this service, you agree to these terms and the statement about Privacy Policy." msgid "Statement on User Experience Improvement Plan" msgstr "Statement on User Experience Improvement Plan" @@ -7462,8 +7250,7 @@ msgstr "Eerst inloggen aub." msgid "There was a problem connecting to the printer. Please try again." msgstr "" -"Er is een probleem opgetreden tijdens het verbinden met de printer. Probeer " -"het opnieuw." +"Er is een probleem opgetreden tijdens het verbinden met de printer. Probeer het opnieuw." msgid "Failed to log out." msgstr "Uitloggen mislukt." @@ -7480,38 +7267,33 @@ msgid "Search in preset" msgstr "Zoeken in voorinstelling" msgid "Click to reset all settings to the last saved preset." -msgstr "" -"Klik om alle instellingen terug te zetten naar de laatst opgeslagen " -"voorinstelling." +msgstr "Klik om alle instellingen terug te zetten naar de laatst opgeslagen voorinstelling." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the model without prime " +"tower. Are you sure you want to disable prime tower?" msgstr "" -"Een Prime-toren is vereist voor een vloeiende timeplase-modus. Er kunnen " -"gebreken ontstaan aan het model zonder prime-toren. Weet je zeker dat je de " -"prime-toren wilt uitschakelen?" +"Een Prime-toren is vereist voor een vloeiende timeplase-modus. Er kunnen gebreken ontstaan " +"aan het model zonder prime-toren. Weet je zeker dat je de prime-toren wilt uitschakelen?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the model without prime " +"tower. Do you want to enable prime tower?" msgstr "" -"Een prime-toren is vereist voor een vloeiende timelapse-modus. Er kunnen " -"gebreken ontstaan aan het model zonder prime-toren. Wilt u de prime-toren " -"inschakelen?" +"Een prime-toren is vereist voor een vloeiende timelapse-modus. Er kunnen gebreken ontstaan " +"aan het model zonder prime-toren. Wilt u de prime-toren inschakelen?" msgid "Still print by object?" msgstr "Print je nog steeds per object?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller " -"support volume but weaker strength.\n" +"We have added an experimental style \"Tree Slim\" that features smaller support volume but " +"weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" "We hebben een experimentele stijl toegevoegd, „Tree Slim”, met een kleiner " "ondersteuningsvolume maar een zwakkere sterkte.\n" -"We raden aan om het te gebruiken met: 0 interfacelagen, 0 bovenafstand, 2 " -"muren." +"We raden aan om het te gebruiken met: 0 interfacelagen, 0 bovenafstand, 2 muren." msgid "" "Change these settings automatically? \n" @@ -7519,46 +7301,52 @@ msgid "" "No - Do not change these settings for me" msgstr "" "Deze instellingen automatisch wijzigen? \n" -"Ja - Wijzig deze instellingen automatisch.\n" -"Nee - Wijzig deze instellingen niet voor mij." +"Ja - Wijzig deze instellingen automatisch\n" +"Nee - Wijzig deze instellingen niet voor mij" msgid "" -"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." +"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following settings: at " +"least 2 interface layers, at least 0.1mm top z distance or using support materials on " +"interface." msgstr "" -"Voor de stijlen „Tree Strong” en „Tree Hybrid” raden we de volgende " -"instellingen aan: ten minste 2 interfacelagen, ten minste 0,1 mm op z " -"afstand of gebruik support materiaal op de interface." +"Voor de stijlen „Tree Strong” en „Tree Hybrid” raden we de volgende instellingen aan: ten " +"minste 2 interfacelagen, ten minste 0,1 mm op z afstand of gebruik support materiaal op de " +"interface." msgid "" -"When using support material for the support interface, We recommend the " -"following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable " -"independent support layer height" +"When using support material for the support interface, We recommend the following " +"settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable independent support " +"layer height" msgstr "" -"When using support material for the support interface, we recommend the " -"following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable " -"independent support layer height" +"When using support material for the support interface, we recommend the following " +"settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable independent support " +"layer height" msgid "" -"Enabling this option will modify the model's shape. If your print requires " -"precise dimensions or is part of an assembly, it's important to double-check " -"whether this change in geometry impacts the functionality of your print." +"Enabling this option will modify the model's shape. If your print requires precise " +"dimensions or is part of an assembly, it's important to double-check whether this change in " +"geometry impacts the functionality of your print." msgstr "" +"Als u deze optie inschakelt, wordt de vorm van het model aangepast. Als uw afdruk precieze " +"afmetingen vereist of deel uitmaakt van een samenstelling, is het belangrijk om te " +"controleren of deze geometrie verandering van invloed is op de functionaliteit van uw " +"afdruk." msgid "Are you sure you want to enable this option?" -msgstr "" +msgstr "Weet u zeker dat u deze optie wilt inschakelen?" msgid "" "Layer height is too small.\n" "It will set to min_layer_height\n" msgstr "" +"Laaghoogte is te klein.\n" +"Het zal worden ingesteld op min_layer_height\n" msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " -"height limits ,this may cause printing quality issues." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits ,this " +"may cause printing quality issues." msgstr "" "De laaghoogte overschrijdt de limiet in Printerinstellingen -> Extruder -> " "Laaghoogtelimieten, dit kan problemen met de afdrukkwaliteit veroorzaken." @@ -7573,37 +7361,36 @@ msgid "Ignore" msgstr "Negeer" msgid "" -"Experimental feature: Retracting and cutting off the filament at a greater " -"distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other " -"printing complications." +"Experimental feature: Retracting and cutting off the filament at a greater distance during " +"filament changes to minimize flush.Although it can notably reduce flush, it may also " +"elevate the risk of nozzle clogs or other printing complications." msgstr "" -"Experimental feature: Retracting and cutting off the filament at a greater " -"distance during filament changes to minimize flush. Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other " -"printing complications." +"Experimentele functie: Het filament op grotere afstand terugtrekken en afsnijden tijdens " +"filamentwisselingen om flush te minimaliseren. Hoewel het het doorspoelen aanzienlijk kan " +"verminderen, kan het ook het risico op een verstopt mondstuk of andere printcomplicaties " +"vergroten." msgid "" -"Experimental feature: Retracting and cutting off the filament at a greater " -"distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other printing " -"complications.Please use with the latest printer firmware." +"Experimental feature: Retracting and cutting off the filament at a greater distance during " +"filament changes to minimize flush.Although it can notably reduce flush, it may also " +"elevate the risk of nozzle clogs or other printing complications.Please use with the latest " +"printer firmware." msgstr "" -"Experimental feature: Retracting and cutting off the filament at a greater " -"distance during filament changes to minimize flush. Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other printing " -"complications. Please use with the latest printer firmware." +"Experimentele functie: Het filament op grotere afstand terugtrekken en afsnijden tijdens " +"filamentwisselingen om flush te minimaliseren. Hoewel het het doorspoelen aanzienlijk kan " +"verminderen, kan het ook het risico op een verstopt mondstuk of andere printcomplicaties " +"vergroten. Gebruik dit met de nieuwste printerfirmware." msgid "" -"When recording timelapse without toolhead, it is recommended to add a " -"\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe " +"Tower\" \n" +"by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse " +"Wipe Tower\"." msgstr "" -"Bij het opnemen van timelapse zonder toolhead is het aan te raden om een " -"„Timelapse Wipe Tower” toe te voegen \n" -"door met de rechtermuisknop op de lege positie van de bouwplaat te klikken " -"en „Add Primitive” ->\"Timelapse Wipe Tower” te kiezen." +"Bij het opnemen van timelapse zonder toolhead is het aan te raden om een „Timelapse Wipe " +"Tower” toe te voegen \n" +"door met de rechtermuisknop op de lege positie van de bouwplaat te klikken en „Add " +"Primitive” ->\"Timelapse Wipe Tower” te kiezen." msgid "Line width" msgstr "Lijn dikte" @@ -7618,13 +7405,13 @@ msgid "Wall generator" msgstr "Wandgenerator" msgid "Walls and surfaces" -msgstr "" +msgstr "Wanden en oppervlakten" msgid "Bridging" -msgstr "" +msgstr "Overbruggen" msgid "Overhangs" -msgstr "" +msgstr "Overhangen" msgid "Walls" msgstr "Wanden" @@ -7642,20 +7429,19 @@ msgid "Overhang speed" msgstr "Snelheid voor overhangende gebieden" msgid "" -"This is the speed for various overhang degrees. Overhang degrees are " -"expressed as a percentage of line width. 0 speed means no slowing down for " -"the overhang degree range and wall speed is used" +"This is the speed for various overhang degrees. Overhang degrees are expressed as a " +"percentage of line width. 0 speed means no slowing down for the overhang degree range and " +"wall speed is used" msgstr "" -"Dit is de snelheid voor diverse overhanggraden. Overhanggraden worden " -"uitgedrukt als een percentage van de laag breedte. 0 betekend dat er niet " -"afgeremd wordt voor overhanggraden en dat dezelfde snelheid als voor wanden " -"gebruikt wordt." +"Dit is de snelheid voor diverse overhanggraden. Overhanggraden worden uitgedrukt als een " +"percentage van de laag breedte. 0 betekend dat er niet afgeremd wordt voor overhanggraden " +"en dat dezelfde snelheid als voor wanden gebruikt wordt" msgid "Bridge" msgstr "Brug" msgid "Set speed for external and internal bridges" -msgstr "" +msgstr "Snelheid instellen voor externe en interne bruggen" msgid "Travel speed" msgstr "Verplaatsing-sneleheid" @@ -7676,7 +7462,7 @@ msgid "Tree supports" msgstr "" msgid "Multimaterial" -msgstr "" +msgstr "Multimateriaal" msgid "Prime tower" msgstr "Prime toren" @@ -7700,7 +7486,7 @@ msgid "Post-processing Scripts" msgstr "Post-processing Scripts" msgid "Notes" -msgstr "Notes" +msgstr "Opmerkingen" msgid "Frequent" msgstr "Veelgebruikt" @@ -7708,20 +7494,18 @@ msgstr "Veelgebruikt" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time " -"estimation." +"Please remove it, or will beat G-code visualization and printing time estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time " -"estimation." +"Please remove them, or will beat G-code visualization and printing time estimation." msgstr[0] "" "De volgende regel %s bevat gereserveerde trefwoorden.\n" -"Verwijder deze woorden alstublieft, anders overschrijven deze de G-code-" -"visualisatie en de schatting van de afdruktijd.@" +"Verwijder deze woorden alstublieft, anders overschrijven deze de G-code-visualisatie en de " +"schatting van de afdruktijd." msgstr[1] "" "De volgende regel %s bevat gereserveerde trefwoorden.\n" -"Verwijder deze woorden alstublieft, anders overschrijven deze de G-code-" -"visualisatie en de schatting van de afdruktijd.@" +"Verwijder deze woorden alstublieft, anders overschrijven deze de G-code-visualisatie en de " +"schatting van de afdruktijd." msgid "Reserved keywords found" msgstr "Gereserveerde zoekworden gevonden" @@ -7733,15 +7517,14 @@ msgid "Retraction" msgstr "Terugtrekken (retraction)" msgid "Basic information" -msgstr "Basis informatie" +msgstr "Basisinformatie" msgid "Recommended nozzle temperature" -msgstr "Aanbevolen nozzle temperatuur" +msgstr "Aanbevolen mondstuk temperatuur" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" -"De geadviseerde nozzle temperatuur voor dit filament. 0 betekend dat er geen " -"voorgestelde waarde is " +"De geadviseerde mondstuk temperatuur voor dit filament. 0 betekend dat er geen waarde is" msgid "Flow ratio and Pressure Advance" msgstr "" @@ -7753,54 +7536,51 @@ msgid "Print temperature" msgstr "Print temperatuur" msgid "Nozzle" -msgstr "Nozzle" +msgstr "Mondstuk" msgid "Nozzle temperature when printing" -msgstr "Nozzle temperatuur tijdens printen" +msgstr "Mondstuk temperatuur tijdens printen" msgid "Cool plate" -msgstr "Cool (koud) printbed" +msgstr "Koudeplaat" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does not support " +"to print on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur wanneer de koelplaat is geïnstalleerd. Een waarde " -"van 0 betekent dat het filament printen op de Cool Plate niet ondersteunt." +"Dit is de bedtemperatuur wanneer de koelplaat is geïnstalleerd. Een waarde van 0 betekent " +"dat het filament printen op de Cool Plate niet ondersteunt." msgid "Engineering plate" -msgstr "Engineering plate (technisch printbed)" +msgstr "Engineering plaat" msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature when engineering plate is installed. Value 0 means the filament does not " +"support to print on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur wanneer de technische plaat is geïnstalleerd. Een " -"waarde van 0 betekent dat het filament afdrukken op de Engineering Plate " -"niet ondersteunt." +"Dit is de bedtemperatuur wanneer de technische plaat is geïnstalleerd. Een waarde van 0 " +"betekent dat het filament afdrukken op de Engineering Plate niet ondersteunt." msgid "Smooth PEI Plate / High Temp Plate" -msgstr "Gladde PEI Plaat / Hoge Temp Plaat" +msgstr "Gladde PEI-plaat / Hoge temperatuurplaat" msgid "" -"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " -"Value 0 means the filament does not support to print on the Smooth PEI Plate/" -"High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. Value 0 means " +"the filament does not support to print on the Smooth PEI Plate/High Temp Plate" msgstr "" -"Bedtemperatuur wanneer gladde PEI-plaat/hoge temperatuurplaat is " -"geïnstalleerd. Waarde 0 betekent dat het filament niet geschikt is voor " -"afdrukken op de gladde PEI-plaat/hoge temperatuurplaat." +"Bedtemperatuur wanneer gladde PEI-plaat/hoge temperatuurplaat is geïnstalleerd. Waarde 0 " +"betekent dat het filament niet geschikt is voor afdrukken op de gladde PEI-plaat/hoge " +"temperatuurplaat." msgid "Textured PEI Plate" -msgstr "PEI plaat met structuur" +msgstr "Getextureerde PEI-plaat" msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" msgstr "" -"Bedtemperatuur wanneer een getextureerde PEI-plaat is geïnstalleerd. 0 " -"betekent dat het filament niet wordt ondersteund op de getextureerde PEI-" -"plaat" +"Bedtemperatuur wanneer een getextureerde PEI-plaat is geïnstalleerd. 0 betekent dat het " +"filament niet wordt ondersteund op de getextureerde PEI-plaat" msgid "Volumetric speed limitation" msgstr "Volumetrische snelheidsbeperking" @@ -7818,26 +7598,24 @@ msgid "Min fan speed threshold" msgstr "Minimale snelheidsdrempel ventilator snelheid" msgid "" -"Part cooling fan speed will start to run at min speed when the estimated " -"layer time is no longer than the layer time in setting. When layer time is " -"shorter than threshold, fan speed is interpolated between the minimum and " -"maximum fan speed according to layer printing time" +"Part cooling fan speed will start to run at min speed when the estimated layer time is no " +"longer than the layer time in setting. When layer time is shorter than threshold, fan speed " +"is interpolated between the minimum and maximum fan speed according to layer printing time" msgstr "" -"De snelheid van de printkop ventilator begint op minimale snelheid te " -"draaien wanneer de geschatte printtijd voor de laag niet langer is dan de " -"printtijd in de instelling. Wanneer de printtijd korter is dan de " -"drempelwaarde, wordt de ventilatorsnelheid geïnterpoleerd tussen de minimale " -"en maximale ventilatorsnelheid volgens de printtijd van de laag" +"De snelheid van de printkop ventilator begint op minimale snelheid te draaien wanneer de " +"geschatte printtijd voor de laag niet langer is dan de printtijd in de instelling. Wanneer " +"de printtijd korter is dan de drempelwaarde, wordt de ventilatorsnelheid geïnterpoleerd " +"tussen de minimale en maximale ventilatorsnelheid volgens de printtijd van de laag" msgid "Max fan speed threshold" msgstr "Snelheidsdrempel ventilatorsnelheid" msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the setting value" +"Part cooling fan speed will be max when the estimated layer time is shorter than the " +"setting value" msgstr "" -"De snelheid van de printkop ventilator zal maximaal zijn als de inschatte " -"tijd voor het printen van de laag lager is dan de ingestelde waarde" +"De snelheid van de printkop ventilator zal maximaal zijn als de inschatte tijd voor het " +"printen van de laag lager is dan de ingestelde waarde" msgid "Auxiliary part cooling fan" msgstr "Extra koel ventilator" @@ -7952,12 +7730,12 @@ msgstr "" msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder " -"nozzle diameter value?" +"Do you want to change the diameter for all extruders to first extruder nozzle diameter " +"value?" msgstr "" msgid "Nozzle diameter" -msgstr "Nozzle diameter" +msgstr "Mondstuk diameter" msgid "Wipe tower" msgstr "Afveegblok" @@ -7966,8 +7744,8 @@ msgid "Single extruder multimaterial parameters" msgstr "Parameter voor multi-material met één extruder" msgid "" -"This is a single extruder multimaterial printer, diameters of all extruders " -"will be set to the new value. Do you want to proceed?" +"This is a single extruder multimaterial printer, diameters of all extruders will be set to " +"the new value. Do you want to proceed?" msgstr "" msgid "Layer height limits" @@ -7996,15 +7774,14 @@ msgstr "Losgemaakt" #, c-format, boost-format msgid "" -"%d Filament Preset and %d Process Preset is attached to this printer. Those " -"presets would be deleted if the printer is deleted." +"%d Filament Preset and %d Process Preset is attached to this printer. Those presets would " +"be deleted if the printer is deleted." msgstr "" -"%d Filament Preset en %d Process Preset zijn gekoppeld aan deze printer. " -"Deze voorinstellingen worden verwijderd als de printer wordt verwijderd." +"%d Filament Preset en %d Process Preset zijn gekoppeld aan deze printer. Deze " +"voorinstellingen worden verwijderd als de printer wordt verwijderd." msgid "Presets inherited by other presets can not be deleted!" -msgstr "" -"Presets die door andere presets worden geërfd, kunnen niet worden verwijderd!" +msgstr "Presets die door andere presets worden geërfd, kunnen niet worden verwijderd!" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." @@ -8023,12 +7800,12 @@ msgstr[1] "De volgende voorinstelling zal ook verwijderd worden@" msgid "" "Are you sure to delete the selected preset? \n" -"If the preset corresponds to a filament currently in use on your printer, " -"please reset the filament information for that slot." +"If the preset corresponds to a filament currently in use on your printer, please reset the " +"filament information for that slot." msgstr "" "Weet je zeker dat je de geselecteerde preset wilt verwijderen? \n" -"Als de voorinstelling overeenkomt met een filament dat momenteel in gebruik " -"is op je printer, reset dan de filamentinformatie voor die sleuf." +"Als de voorinstelling overeenkomt met een filament dat momenteel in gebruik is op je " +"printer, reset dan de filamentinformatie voor die sleuf." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -8041,13 +7818,11 @@ msgid "Set" msgstr "Instellen" msgid "Click to reset current value and attach to the global value." -msgstr "" -"Klik om de huidige waarde terug te zetten en de globale waarde toe te passen." +msgstr "Klik om de huidige waarde terug te zetten en de globale waarde toe te passen." msgid "Click to drop current modify and reset to saved value." msgstr "" -"Klik om de huidige aanpassingen te verwerpen en terug te gaan naar de " -"standaard instelling." +"Klik om de huidige aanpassingen te verwerpen en terug te gaan naar de standaard instelling." msgid "Process Settings" msgstr "Procesinstellingen" @@ -8092,9 +7867,7 @@ msgid "Keep the selected options." msgstr "Bewaar de geselecteerde opties." msgid "Transfer the selected options to the newly selected preset." -msgstr "" -"Breng de geselecteerde opties over naar de nieuwe geselecteerde " -"voorinstelling" +msgstr "Breng de geselecteerde opties over naar de nieuwe geselecteerde voorinstelling" #, boost-format msgid "" @@ -8109,30 +7882,28 @@ msgid "" "Transfer the selected options to the newly selected preset \n" "\"%1%\"." msgstr "" -"Breng de geselecteerde opties over naar de nieuwe geselecteerde " -"voorinstelling\n" +"Breng de geselecteerde opties over naar de nieuwe geselecteerde voorinstelling\n" "\"%1%\"." #, boost-format msgid "Preset \"%1%\" contains the following unsaved changes:" -msgstr "" -"Voorinstelling \"%1%\" bevat de navolgende nog niet opgeslagen aanpassingen:" +msgstr "Voorinstelling \"%1%\" bevat de navolgende nog niet opgeslagen aanpassingen:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it contains the following " +"unsaved changes:" msgstr "" -"Voorinstelling \"%1%\" is niet compatibel met het nieuwe printer profiel en " -"bevat de navolgende nog niet opgeslagen aanpassingen:" +"Voorinstelling \"%1%\" is niet compatibel met het nieuwe printer profiel en bevat de " +"navolgende nog niet opgeslagen aanpassingen:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it contains the following " +"unsaved changes:" msgstr "" -"Voorinstelling \"%1%\" is niet compatibel met het niet proces profiel en " -"bevat de navolgende nog niet opgeslagen aanpassingen:" +"Voorinstelling \"%1%\" is niet compatibel met het niet proces profiel en bevat de " +"navolgende nog niet opgeslagen aanpassingen:" #, boost-format msgid "You have changed some settings of preset \"%1%\". " @@ -8147,8 +7918,8 @@ msgstr "" msgid "" "\n" -"You can save or discard the preset values you have modified, or choose to " -"transfer the values you have modified to the new preset." +"You can save or discard the preset values you have modified, or choose to transfer the " +"values you have modified to the new preset." msgstr "" msgid "You have previously modified your settings." @@ -8156,8 +7927,8 @@ msgstr "You have previously modified your settings." msgid "" "\n" -"You can discard the preset values you have modified, or choose to transfer " -"the modified values to the new project" +"You can discard the preset values you have modified, or choose to transfer the modified " +"values to the new project" msgstr "" msgid "Extruders count" @@ -8175,22 +7946,19 @@ msgstr "Toon alle presets (inclusief incompatibele)" msgid "Select presets to compare" msgstr "Select presets to compare" -msgid "" -"You can only transfer to current active profile because it has been modified." +msgid "You can only transfer to current active profile because it has been modified." msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close " -"this dialog." +"Note: New modified presets will be selected in settings tabs after close this dialog." msgstr "" msgid "Transfer values from left to right" msgstr "" msgid "" -"If enabled, this dialog can be used for transfer selected values from left " -"to right preset." +"If enabled, this dialog can be used for transfer selected values from left to right preset." msgstr "" msgid "Add File" @@ -8235,9 +8003,7 @@ msgid "Configuration update" msgstr "Configuratie update" msgid "A new configuration package available, Do you want to install it?" -msgstr "" -"Er is een installatiebestand met een nieuwe configuratie. Wilt u deze " -"installeren?" +msgstr "Er is een installatiebestand met een nieuwe configuratie. Wilt u deze installeren?" msgid "Description:" msgstr "Omschrijving:" @@ -8261,9 +8027,7 @@ msgid "Exit %s" msgstr "Exit %s" msgid "the Configuration package is incompatible with current APP." -msgstr "" -"Het configuratie bestand is niet compatibel met de huidige versie van Bambu " -"Studio." +msgstr "Het configuratie bestand is niet compatibel met de huidige versie van Bambu Studio." msgid "Configuration updates" msgstr "Configuratie updates" @@ -8332,26 +8096,24 @@ msgid "Ramming customization" msgstr "Ramming aanpassen" msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM " +"printer. Its purpose is to properly shape the end of the unloaded filament so it does not " +"prevent insertion of the new filament and can itself be reinserted later. This phase is " +"important and different materials can require different extrusion speeds to get the good " +"shape. For this reason, the extrusion rates during ramming are adjustable.\n" "\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." +"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder " +"wheel grinding into filament etc." msgstr "" -"Ramming wordt gebruikt voor het snel extruderen vlak voor een toolwisseling " -"bij multi-materialprinters met één extruder. Het doel daarvan is om het " -"einde van het ongeladen filament goed te vormen (zodat het later weer " -"geladen kan worden) en nieuw filament niet verhinderd wordt. Deze fase is " -"belangrijk. Verschillende materialen vereisen verschillende " -"extrusiesnelheden voor de juiste vorm. Daarom zijn de waarden tijdens de " -"ramming aan te passen.\n" +"Ramming wordt gebruikt voor het snel extruderen vlak voor een toolwisseling bij multi-" +"materialprinters met één extruder. Het doel daarvan is om het einde van het ongeladen " +"filament goed te vormen (zodat het later weer geladen kan worden) en nieuw filament niet " +"verhinderd wordt. Deze fase is belangrijk. Verschillende materialen vereisen verschillende " +"extrusiesnelheden voor de juiste vorm. Daarom zijn de waarden tijdens de ramming aan te " +"passen.\n" "\n" -"Dit is een expert-level instelling. Onjuiste aanpassingen kunnen zorgen voor " -"verstoppingen en andere problemen." +"Dit is een expert-level instelling. Onjuiste aanpassingen kunnen zorgen voor verstoppingen " +"en andere problemen." msgid "Total ramming time" msgstr "Totale ramming-tijd" @@ -8378,8 +8140,8 @@ msgid "Flushing volumes for filament change" msgstr "Volumes reinigen voor filament wijziging" msgid "" -"Orca would re-calculate your flushing volumes everytime the filaments color " -"changed. You could disable the auto-calculate in Orca Slicer > Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color changed. You " +"could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -8391,8 +8153,7 @@ msgstr "Suggestie: Spoelvolume in bereik [%d, %d]" #, c-format, boost-format msgid "The multiplier should be in range [%.2f, %.2f]." -msgstr "" -"De vermenigvuldigingsfactor moet in het bereik liggen van [%.2f, %.2f]." +msgstr "De vermenigvuldigingsfactor moet in het bereik liggen van [%.2f, %.2f]." msgid "Multiplier" msgstr "Vermenigvuldiger" @@ -8413,29 +8174,29 @@ msgid "To" msgstr "Naar" msgid "" -"Windows Media Player is required for this task! Do you want to enable " -"'Windows Media Player' for your operation system?" +"Windows Media Player is required for this task! Do you want to enable 'Windows Media " +"Player' for your operation system?" msgstr "" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes " -"to re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes to re-register " +"it. You will be promoted twice" msgstr "" msgid "" -"Missing BambuSource component registered for media playing! Please re-" -"install BambuStutio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-install BambuStutio " +"or seek after-sales help." msgstr "" msgid "" -"Using a BambuSource from a different install, video play may not work " -"correctly! Press Yes to fix it." +"Using a BambuSource from a different install, video play may not work correctly! Press Yes " +"to fix it." msgstr "" msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to " -"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" -"libav packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try " +"installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca " +"Slicer?)" msgstr "" msgid "Bambu Network plug-in not detected." @@ -8469,9 +8230,7 @@ msgid "Paste from clipboard" msgstr "Plakken vanuit klembord" msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "" -"Dialoogvenster met instellingen voor 3Dconnexion-apparaten weergeven/" -"verbergen" +msgstr "Dialoogvenster met instellingen voor 3Dconnexion-apparaten weergeven/verbergen" msgid "Switch table page" msgstr "Schakeltabel pagina" @@ -8501,13 +8260,12 @@ msgid "Shift+R" msgstr "Shift+R" msgid "" -"Auto orientates selected objects or all objects.If there are selected " -"objects, it just orientates the selected ones.Otherwise, it will orientates " -"all objects in the current disk." +"Auto orientates selected objects or all objects.If there are selected objects, it just " +"orientates the selected ones.Otherwise, it will orientates all objects in the current disk." msgstr "" -"Oriënteert automatisch geselecteerde objecten of alle objecten. Als er " -"geselecteerde objecten zijn, oriënteert het alleen de geselecteerde " -"objecten. Anders oriënteert het alle objecten op de disk." +"Oriënteert automatisch geselecteerde objecten of alle objecten. Als er geselecteerde " +"objecten zijn, oriënteert het alleen de geselecteerde objecten. Anders oriënteert het alle " +"objecten op de disk." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -8645,16 +8403,13 @@ msgid "Delete objects, parts, modifiers " msgstr "Verwijder objecten, onderdelen, aanpassingen " msgid "Select the object/part and press space to change the name" -msgstr "" -"Selecteer het object/onderdeel en druk op de spatiebalk om de naam aan te " -"passen" +msgstr "Selecteer het object/onderdeel en druk op de spatiebalk om de naam aan te passen" msgid "Mouse click" msgstr "Muisklik" msgid "Select the object/part and mouse click to change the name" -msgstr "" -"Selecteer het object/onderdeel en rechtermuisklik om de naam aan te passen" +msgstr "Selecteer het object/onderdeel en rechtermuisklik om de naam aan te passen" msgid "Objects List" msgstr "Objecten lijst" @@ -8699,16 +8454,14 @@ msgstr "versie %s update informatie:" msgid "Network plug-in update" msgstr "Netwerk plug-in update" -msgid "" -"Click OK to update the Network plug-in when Orca Slicer launches next time." +msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Klik op OK om de netwerkplug-in bij te werken wanneer Orca Slicer de " -"volgende keer wordt gestart." +"Klik op OK om de netwerkplug-in bij te werken wanneer Orca Slicer de volgende keer wordt " +"gestart." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" -msgstr "" -"Een nieuwe netwerk plug-in (%s) is beschikbaar. Wilt je deze installeren?" +msgstr "Een nieuwe netwerk plug-in (%s) is beschikbaar. Wilt je deze installeren?" msgid "New version of Orca Slicer" msgstr "Nieuwe versie van Orca Slicer" @@ -8761,18 +8514,15 @@ msgstr "Bevestig en update het mondstuk" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN-verbinding mislukt (verzenden afdrukbestand)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "" -"Stap 1, bevestig dat Orca Slicer en uw printer zich in hetzelfde LAN " -"bevinden." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "Stap 1, bevestig dat Orca Slicer en uw printer zich in hetzelfde LAN bevinden." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." +"Step 2, if the IP and Access Code below are different from the actual values on your " +"printer, please correct them." msgstr "" -"Stap 2, als het IP-adres en de toegangscode hieronder afwijken van de " -"werkelijke waarden op uw printer, corrigeer ze dan." +"Stap 2, als het IP-adres en de toegangscode hieronder afwijken van de werkelijke waarden op " +"uw printer, corrigeer ze dan." msgid "IP" msgstr "IP" @@ -8784,8 +8534,7 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "Waar vind je het IP-adres en de toegangscode van je printer?" msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Stap 3: Ping het IP-adres om te controleren op pakketverlies en latentie." +msgstr "Stap 3: Ping het IP-adres om te controleren op pakketverlies en latentie." msgid "Test" msgstr "Test" @@ -8810,7 +8559,7 @@ msgid "Serial:" msgstr "Serienummer:" msgid "Version:" -msgstr "Versie" +msgstr "Versie:" msgid "Update firmware" msgstr "Firmware bijwerken" @@ -8822,7 +8571,7 @@ msgid "Latest version" msgstr "Nieuwste versie" msgid "Updating" -msgstr "Bijwerken…" +msgstr "Bijwerken" msgid "Updating failed" msgstr "Bijwerken mislukt" @@ -8831,29 +8580,28 @@ msgid "Updating successful" msgstr "Update geslaagd" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not turn off the power " +"while the printer is updating." msgstr "" -"Weet u zeker dat u de firmware wilt bijwerken? Dit duurt ongeveer 10 " -"minuten. Zet de printer NIET uit tijdens dit proces." +"Weet u zeker dat u de firmware wilt bijwerken? Dit duurt ongeveer 10 minuten. Zet de " +"printer NIET uit tijdens dit proces." msgid "" -"An important update was detected and needs to be run before printing can " -"continue. Do you want to update now? You can also update later from 'Upgrade " -"firmware'." +"An important update was detected and needs to be run before printing can continue. Do you " +"want to update now? You can also update later from 'Upgrade firmware'." msgstr "" -"Er is een belangrijke update gedetecteerd die moet worden uitgevoerd voordat " -"het printen kan worden voortgezet. Wil je nu updaten? Je kunt ook later " -"updaten via 'Firmware bijwerken'." +"Er is een belangrijke update gedetecteerd die moet worden uitgevoerd voordat het printen " +"kan worden voortgezet. Wil je nu updaten? Je kunt ook later updaten via 'Firmware " +"bijwerken'." msgid "" -"The firmware version is abnormal. Repairing and updating are required before " -"printing. Do you want to update now? You can also update later on printer or " -"update next time starting Orca." +"The firmware version is abnormal. Repairing and updating are required before printing. Do " +"you want to update now? You can also update later on printer or update next time starting " +"Orca." msgstr "" -"De firmwareversie is abnormaal. Repareren en bijwerken is vereist voor het " -"afdrukken. Wil je nu updaten? Je kunt ook later op de printer updaten of " -"updaten wanneer je Orca Slicer de volgende keer start." +"De firmwareversie is abnormaal. Repareren en bijwerken is vereist voor het afdrukken. Wil " +"je nu updaten? Je kunt ook later op de printer updaten of updaten wanneer je Orca Slicer de " +"volgende keer start." msgid "Extension Board" msgstr "Extension Board" @@ -8911,8 +8659,7 @@ msgid "Copying of file %1% to %2% failed: %3%" msgstr "Het kopieeren van bestand %1% naar %2% is mislukt: %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "" -"Controleer niet-opgeslagen wijzigingen voordat u de configuratie bijwerkt." +msgstr "Controleer niet-opgeslagen wijzigingen voordat u de configuratie bijwerkt." msgid "Configuration package: " msgstr "" @@ -8924,36 +8671,29 @@ msgid "Open G-code file:" msgstr "Open G-code bestand:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." +"One object has empty initial layer and can't be printed. Please Cut the bottom or enable " +"supports." msgstr "" -"Eén object heeft een lege eerste laag en kan niet geprint worden. Knip een " -"stuk van de bodem van het object of genereer support." +"Eén object heeft een lege eerste laag en kan niet geprint worden. Knip een stuk van de " +"bodem van het object of genereer support." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." -msgstr "" -"Het object heeft lege lagen tussen %1% en %2% en kan daarom niet geprint " -"worden." +msgstr "Het object heeft lege lagen tussen %1% en %2% en kan daarom niet geprint worden." #, boost-format msgid "Object: %1%" msgstr "Object: %1%" -msgid "" -"Maybe parts of the object at these height are too thin, or the object has " -"faulty mesh" +msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" msgstr "" -"Delen van het object op deze hoogts kunnen te dun zijn of het object kan een " -"defect in de constructie hebben." +"Delen van het object op deze hoogts kunnen te dun zijn of het object kan een defect in de " +"constructie hebben." msgid "No object can be printed. Maybe too small" -msgstr "" -"Er kunnen geen objecten geprint worden. Het kan zijn dat ze te klein zijn." +msgstr "Er kunnen geen objecten geprint worden. Het kan zijn dat ze te klein zijn." -msgid "" -"Your print is very close to the priming regions. Make sure there is no " -"collision." +msgid "Your print is very close to the priming regions. Make sure there is no collision." msgstr "" msgid "" @@ -9009,12 +8749,12 @@ msgstr "Meerdere" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" -"Kan de lijndikte van %1% niet berekenen omdat de waarde van \"%2%\" niet " -"opgehaald kan worden" +"Kan de lijndikte van %1% niet berekenen omdat de waarde van \"%2%\" niet opgehaald kan " +"worden" msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height and extrusion " +"width" msgstr "" msgid "undefined error" @@ -9111,11 +8851,10 @@ msgid "write callback failed" msgstr "callback schrijven is mislukt" #, boost-format -msgid "" -"%1% is too close to exclusion area, there may be collisions when printing." +msgid "%1% is too close to exclusion area, there may be collisions when printing." msgstr "" -"%1% bevindt zich te dicht bij het uitsluitingsgebied. Er kunnen botsingen " -"optreden tijdens het afdrukken." +"%1% bevindt zich te dicht bij het uitsluitingsgebied. Er kunnen botsingen optreden tijdens " +"het afdrukken." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -9126,59 +8865,46 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% is te hoog en er kunnen botsingen ontstaan." msgid " is too close to others, there may be collisions when printing." -msgstr "" -"staat te dicht bij anderen; er kunnen botsingen optreden tijdens het " -"afdrukken." +msgstr "staat te dicht bij anderen; er kunnen botsingen optreden tijdens het afdrukken." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "" -"is te dicht bij het uitsluitingsgebied, er botsingen optreden tijdens het " -"printen." +msgstr "is te dicht bij het uitsluitingsgebied, er botsingen optreden tijdens het printen." msgid "Prime Tower" msgstr "Prime toren" msgid " is too close to others, and collisions may be caused.\n" -msgstr "" -"staat te dicht bij andere objecten en er kunnen botsingen worden " -"veroorzaakt.\n" +msgstr "staat te dicht bij andere objecten en er kunnen botsingen worden veroorzaakt.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" msgstr "" -" bevindt zich te dicht bij het uitsluitingsgebied en er zullen botsingen " -"worden veroorzaakt.\n" +" bevindt zich te dicht bij het uitsluitingsgebied en er zullen botsingen worden " +"veroorzaakt.\n" msgid "" -"Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" +"Can not print multiple filaments which have large difference of temperature together. " +"Otherwise, the extruder and nozzle may be blocked or damaged during printing" msgstr "" "Het is niet mogelijk om met meerdere filamenten te printen die een groot " -"temperatuurverschil hebben. Anders kunnen de extruder en de nozzle tijdens " -"het afdrukken worden geblokkeerd of beschadigd" +"temperatuurverschil hebben. Anders kunnen de extruder en het mondstuk tijdens het afdrukken " +"worden geblokkeerd of beschadigd" msgid "No extrusions under current settings." msgstr "Geen extrusion onder de huidige instellingen" -msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is " -"enabled." +msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "" -"Vloeiende modus van timelapse wordt niet ondersteund wanneer \"per object\" " -"sequentie is ingeschakeld." +"Vloeiende modus van timelapse wordt niet ondersteund wanneer \"per object\" sequentie is " +"ingeschakeld." msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." +"Please select \"By object\" print sequence to print multiple objects in spiral vase mode." msgstr "" -"Selecteer de afdrukvolgorde \"per object\" om meerdere objecten in " -"spiraalvaasmodus af te drukken." +"Selecteer de afdrukvolgorde \"per object\" om meerdere objecten in spiraalvaasmodus af te " +"drukken." -msgid "" -"The spiral vase mode does not work when an object contains more than one " -"materials." -msgstr "" -"Spiraal (vaas) modus werkt niet als een object meer dan 1 filament bevalt." +msgid "The spiral vase mode does not work when an object contains more than one materials." +msgstr "Spiraal (vaas) modus werkt niet als een object meer dan 1 filament bevalt." #, boost-format msgid "The object %1% exceeds the maximum build volume height." @@ -9186,82 +8912,70 @@ msgstr "" #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds the maximum build " +"volume height." msgstr "" msgid "" -"You might want to reduce the size of your model or change current print " -"settings and retry." +"You might want to reduce the size of your model or change current print settings and retry." msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "Variabele laaghoogte wordt niet ondersteund met organische steunen." msgid "" -"Different nozzle diameters and different filament diameters may not work " -"well when the prime tower is enabled. It's very experimental, so please " -"proceed with caution." +"Different nozzle diameters and different filament diameters may not work well when the " +"prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "" msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." +"The Wipe Tower is currently only supported with the relative extruder addressing " +"(use_relative_e_distances=1)." msgstr "" -"De Wipe Tower wordt momenteel alleen ondersteund met de relatieve " -"extruderadressering (use_relative_e_distances=1)." +"De Wipe Tower wordt momenteel alleen ondersteund met de relatieve extruderadressering " +"(use_relative_e_distances=1)." msgid "" -"Ooze prevention is only supported with the wipe tower when " -"'single_extruder_multi_material' is off." +"Ooze prevention is only supported with the wipe tower when 'single_extruder_multi_material' " +"is off." msgstr "" msgid "" -"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " -"RepRapFirmware and Repetier G-code flavors." +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware " +"and Repetier G-code flavors." msgstr "" -"De prime tower wordt momenteel alleen ondersteund voor de Marlin, RepRap/" -"Sprinter, RepRapFirmware en Repetier G-code smaken." +"De prime tower wordt momenteel alleen ondersteund voor de Marlin, RepRap/Sprinter, " +"RepRapFirmware en Repetier G-code smaken." msgid "The prime tower is not supported in \"By object\" print." msgstr "Een prime-toren wordt niet ondersteund bij het \"per object\" printen." msgid "" -"The prime tower is not supported when adaptive layer height is on. It " -"requires that all objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It requires that all " +"objects have the same layer height." msgstr "" -"Een prime toren wordt niet ondersteund tijdens het printen met adaptieve " -"laaghoogte. Voor het werken met een prime toren is het van belang dat alle " -"lagen dezelfde laaghoogte hebben." +"Een prime toren wordt niet ondersteund tijdens het printen met adaptieve laaghoogte. Voor " +"het werken met een prime toren is het van belang dat alle lagen dezelfde laaghoogte hebben." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"Een prime toren vereist dat elke \"support opening\" een veelvoud van de " -"laaghoogte is." +"Een prime toren vereist dat elke \"support opening\" een veelvoud van de laaghoogte is." msgid "The prime tower requires that all objects have the same layer heights" msgstr "Een prime toren vereist dat alle objecten dezelfde laaghoogte hebben." msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" +"The prime tower requires that all objects are printed over the same number of raft layers" msgstr "" -"Een prime-toren vereist dat alle objecten op hetzelfde aantal raftlagen " -"worden afgedrukt." +"Een prime-toren vereist dat alle objecten op hetzelfde aantal raftlagen worden afgedrukt." -msgid "" -"The prime tower requires that all objects are sliced with the same layer " -"heights." -msgstr "" -"Een prime toren vereist dat alle objecten met dezelfde laaghoogte gesliced " -"worden." +msgid "The prime tower requires that all objects are sliced with the same layer heights." +msgstr "Een prime toren vereist dat alle objecten met dezelfde laaghoogte gesliced worden." -msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +msgid "The prime tower is only supported if all objects have the same variable layer height" msgstr "" -"De prime toren wordt alleen ondersteund als alle objecten dezelfde variabele " -"laaghoogte hebben" +"De prime toren wordt alleen ondersteund als alle objecten dezelfde variabele laaghoogte " +"hebben" msgid "Too small line width" msgstr "Te kleine lijnbreedte" @@ -9269,91 +8983,79 @@ msgstr "Te kleine lijnbreedte" msgid "Too large line width" msgstr "Te groote lijnbreedte" -msgid "" -"The prime tower requires that support has the same layer height with object." -msgstr "" -"Een prime toren vereist dat support dezelfde laaghoogte heeft als het object." +msgid "The prime tower requires that support has the same layer height with object." +msgstr "Een prime toren vereist dat support dezelfde laaghoogte heeft als het object." msgid "" -"Organic support tree tip diameter must not be smaller than support material " -"extrusion width." +"Organic support tree tip diameter must not be smaller than support material extrusion width." msgstr "" msgid "" -"Organic support branch diameter must not be smaller than 2x support material " -"extrusion width." +"Organic support branch diameter must not be smaller than 2x support material extrusion " +"width." msgstr "" -msgid "" -"Organic support branch diameter must not be smaller than support tree tip " -"diameter." +msgid "Organic support branch diameter must not be smaller than support tree tip diameter." msgstr "" -msgid "" -"Support enforcers are used but support is not enabled. Please enable support." -msgstr "" -"Er zijn support handhavers ingesteld, maar support staat uit. Schakel " -"support in." +msgid "Support enforcers are used but support is not enabled. Please enable support." +msgstr "Er zijn support handhavers ingesteld, maar support staat uit. Schakel support in." msgid "Layer height cannot exceed nozzle diameter" -msgstr "De laaghoogte kan niet groter zijn dan de diameter van de nozzle" +msgstr "De laaghoogte kan niet groter zijn dan de diameter van het mondstuk" msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " -"layer_gcode." +"Relative extruder addressing requires resetting the extruder position at each layer to " +"prevent loss of floating point accuracy. Add \"G92 E0\" to layer_gcode." msgstr "" -"Relatieve extruderwaarden vereist het resetten van de extruderpositie op " -"elke laag om decimale onnauwkeurigheid te voorkomen. Voeg \"G92 E0\" toe aan " -"layer_gcode." +"Relatieve extruderwaarden vereist het resetten van de extruderpositie op elke laag om " +"decimale onnauwkeurigheid te voorkomen. Voeg \"G92 E0\" toe aan layer_gcode." msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " -"absolute extruder addressing." +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute extruder " +"addressing." msgstr "" -"\"G92 E0\" gevonden in before_layer_gcode, wat niet compatibel is met " -"absolute positionering." - -msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " -"extruder addressing." -msgstr "" -"\"G92 E0\" gevonden in layer_gcode, wat niet compatibel is met absolute " +"\"G92 E0\" gevonden in before_layer_gcode, wat niet compatibel is met absolute " "positionering." +msgid "" +"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder " +"addressing." +msgstr "" +"\"G92 E0\" gevonden in layer_gcode, wat niet compatibel is met absolute positionering." + #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" msgstr "Printbed %d: %s ondersteunt filament %s niet." -msgid "" -"Setting the jerk speed too low could lead to artifacts on curved surfaces" +msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" msgstr "" msgid "" "The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/" "machine_max_jerk_y).\n" -"Orca will automatically cap the jerk speed to ensure it doesn't surpass the " -"printer's capabilities.\n" -"You can adjust the maximum jerk setting in your printer's configuration to " -"get higher speeds." +"Orca will automatically cap the jerk speed to ensure it doesn't surpass the printer's " +"capabilities.\n" +"You can adjust the maximum jerk setting in your printer's configuration to get higher " +"speeds." msgstr "" msgid "" "The acceleration setting exceeds the printer's maximum acceleration " "(machine_max_acceleration_extruding).\n" -"Orca will automatically cap the acceleration speed to ensure it doesn't " -"surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your " -"printer's configuration to get higher speeds." +"Orca will automatically cap the acceleration speed to ensure it doesn't surpass the " +"printer's capabilities.\n" +"You can adjust the machine_max_acceleration_extruding value in your printer's configuration " +"to get higher speeds." msgstr "" msgid "" -"The travel acceleration setting exceeds the printer's maximum travel " -"acceleration (machine_max_acceleration_travel).\n" -"Orca will automatically cap the travel acceleration speed to ensure it " -"doesn't surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_travel value in your printer's " -"configuration to get higher speeds." +"The travel acceleration setting exceeds the printer's maximum travel acceleration " +"(machine_max_acceleration_travel).\n" +"Orca will automatically cap the travel acceleration speed to ensure it doesn't surpass the " +"printer's capabilities.\n" +"You can adjust the machine_max_acceleration_travel value in your printer's configuration to " +"get higher speeds." msgstr "" msgid "Generating skirt & brim" @@ -9375,14 +9077,13 @@ msgid "Bed exclude area" msgstr "Uitgesloten printbed gebied" msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front " -"left corner to cut filament during filament change. The area is expressed as " -"polygon by points in following format: \"XxY, XxY, ...\"" +"Unprintable area in XY plane. For example, X1 Series printers use the front left corner to " +"cut filament during filament change. The area is expressed as polygon by points in " +"following format: \"XxY, XxY, ...\"" msgstr "" -"Onafdrukbaar gebied in XY-vlak. Printers uit de X1-serie gebruiken " -"bijvoorbeeld de linkervoorhoek om filament af te snijden tijdens het " -"verwisselen van filament. Het gebied wordt uitgedrukt als polygoon door " -"punten in het volgende formaat: „xxY, xxY,...”" +"Onafdrukbaar gebied in XY-vlak. Printers uit de X1-serie gebruiken bijvoorbeeld de " +"linkervoorhoek om filament af te snijden tijdens het verwisselen van filament. Het gebied " +"wordt uitgedrukt als polygoon door punten in het volgende formaat: „xxY, xxY,...”" msgid "Bed custom texture" msgstr "Bed aangepaste textuur" @@ -9393,43 +9094,42 @@ msgstr "Bed aangepast model" msgid "Elephant foot compensation" msgstr "\"Elephant foot\" compensatie" -msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "" -"Hierdoor krimpt de eerste laag op de bouwplaat om het \"elephant foot\" " -"effect te compenseren." +"Hierdoor krimpt de eerste laag op de bouwplaat om het \"elephant foot\" effect te " +"compenseren." msgid "Elephant foot compensation layers" -msgstr "" +msgstr "\"Elephant foot\" compensatielagen" msgid "" -"The number of layers on which the elephant foot compensation will be active. " -"The first layer will be shrunk by the elephant foot compensation value, then " -"the next layers will be linearly shrunk less, up to the layer indicated by " -"this value." +"The number of layers on which the elephant foot compensation will be active. The first " +"layer will be shrunk by the elephant foot compensation value, then the next layers will be " +"linearly shrunk less, up to the layer indicated by this value." msgstr "" +"Het aantal lagen waarop de \"elephant foot\" compensatie actief zal zijn. De eerste laag " +"zal worden verkleind met de \"elephant foot\" compensatiewaarde, daarna zullen de volgende " +"lagen lineair minder worden verkleind, tot aan de laag die wordt aangegeven door deze " +"waarde." msgid "layers" msgstr "Lagen" msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and " -"more printing time" +"Slicing height for each layer. Smaller layer height means more accurate and more printing " +"time" msgstr "" -"Dit is de hoogte voor iedere laag. Kleinere laaghoogtes geven een grotere " -"nauwkeurigheid maar een langere printtijd." +"Dit is de hoogte voor iedere laag. Kleinere laaghoogtes geven een grotere nauwkeurigheid " +"maar een langere printtijd." msgid "Printable height" msgstr "Hoogte waarbinnen geprint kan worden" msgid "Maximum printable height which is limited by mechanism of printer" -msgstr "" -"Dit is de maximale printbare hoogte gelimiteerd door de constructie van de " -"printer" +msgstr "Dit is de maximale printbare hoogte gelimiteerd door de constructie van de printer" msgid "Preferred orientation" -msgstr "" +msgstr "Voorkeursoriëntatie" msgid "Automatically orient stls on the Z-axis upon initial import" msgstr "" @@ -9438,46 +9138,43 @@ msgid "Printer preset names" msgstr "Namen van printer voorinstellingen" msgid "Use 3rd-party print host" -msgstr "" +msgstr "Gebruik een printhost van derden" msgid "Allow controlling BambuLab's printer through 3rd party print hosts" -msgstr "" +msgstr "Toestaan om een BambuLab printer te besturen via printhosts van derden" msgid "Hostname, IP or URL" msgstr "Hostnaam, IP of URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should " -"contain the hostname, IP address or URL of the printer host instance. Print " -"host behind HAProxy with basic auth enabled can be accessed by putting the " -"user name and password into the URL in the following format: https://" -"username:password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should contain the " +"hostname, IP address or URL of the printer host instance. Print host behind HAProxy with " +"basic auth enabled can be accessed by putting the user name and password into the URL in " +"the following format: https://username:password@your-octopi-address/" msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " -"de hostnaam, het IP-adres of de URL van de printerhostinstantie bevatten. " -"Printhost achter HAProxy met ingeschakelde basisauthenticatie is " -"toegankelijk door de gebruikersnaam en het wachtwoord in de volgende " -"indeling in de URL te plaatsen: https://username:password@your-octopi-" +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet de hostnaam, " +"het IP-adres of de URL van de printerhostinstantie bevatten. Printhost achter HAProxy met " +"ingeschakelde basisauthenticatie is toegankelijk door de gebruikersnaam en het wachtwoord " +"in de volgende indeling in de URL te plaatsen: https://username:password@your-octopi-" "address/" msgid "Device UI" msgstr "UI van het apparaat" -msgid "" -"Specify the URL of your device user interface if it's not same as print_host" +msgid "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Geef de URL op van de gebruikersinterface van uw apparaat als deze niet " -"hetzelfde is als print_host" +"Geef de URL op van de gebruikersinterface van uw apparaat als deze niet hetzelfde is als " +"print_host" msgid "API Key / Password" msgstr "API sleutel / wachtwoord" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should " -"contain the API Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should contain the API " +"Key or the password required for authentication." msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " -"de API-sleutel of het wachtwoord bevatten dat nodig is voor authenticatie." +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet de API-sleutel " +"of het wachtwoord bevatten dat nodig is voor authenticatie." msgid "Name of the printer" msgstr "Naam van de printer" @@ -9486,13 +9183,12 @@ msgid "HTTPS CA File" msgstr "HTTPS CA Bestand" msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem " +"format. If left blank, the default OS CA certificate repository is used." msgstr "" -"Een aangepast CA-certificaatbestand kan worden gespecificeerd voor HTTPS " -"OctoPrint-verbindingen, in crt/pem-formaat. Indien leeg gelaten, wordt de " -"standaard opslagplaats voor OS CA-certificaten gebruikt." +"Een aangepast CA-certificaatbestand kan worden gespecificeerd voor HTTPS OctoPrint-" +"verbindingen, in crt/pem-formaat. Indien leeg gelaten, wordt de standaard opslagplaats voor " +"OS CA-certificaten gebruikt." msgid "User" msgstr "Gebruiker" @@ -9504,13 +9200,12 @@ msgid "Ignore HTTPS certificate revocation checks" msgstr "HTTPS-certificaatintrekkingscontroles negeren" msgid "" -"Ignore HTTPS certificate revocation checks in case of missing or offline " -"distribution points. One may want to enable this option for self signed " -"certificates if connection fails." +"Ignore HTTPS certificate revocation checks in case of missing or offline distribution " +"points. One may want to enable this option for self signed certificates if connection fails." msgstr "" -"HTTPS-certificaatherroepingscontroles negeren in geval van ontbrekende of " -"offline distributiepunten. Men kan deze optie inschakelen voor " -"zelfondertekende certificaten als de verbinding mislukt." +"HTTPS-certificaatherroepingscontroles negeren in geval van ontbrekende of offline " +"distributiepunten. Men kan deze optie inschakelen voor zelfondertekende certificaten als de " +"verbinding mislukt." msgid "Names of presets related to the physical printer" msgstr "Namen van voorinstellingen gerelateerd aan de fysieke printer" @@ -9529,23 +9224,21 @@ msgstr "Vermijd het oversteken van walls" msgid "Detour and avoid to travel across wall which may cause blob on surface" msgstr "" -"Omweg om te voorkomen dat de printkop over wanden verplaatst, dit zou " -"namelijk klodders op het oppervlak kunnen veroorzaken" +"Omweg om te voorkomen dat de printkop over wanden verplaatst, dit zou namelijk klodders op " +"het oppervlak kunnen veroorzaken" msgid "Avoid crossing wall - Max detour length" msgstr "Walls vermijden - Maximale omleidingslengte" msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the " -"detour distance is large than this value. Detour length could be specified " -"either as an absolute value or as percentage (for example 50%) of a direct " -"travel path. Zero to disable" +"Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is " +"large than this value. Detour length could be specified either as an absolute value or as " +"percentage (for example 50%) of a direct travel path. Zero to disable" msgstr "" -"Maximale omleidingsafstand om te voorkomen dat een muur wordt overgestoken: " -"De printer zal geen omweg maken als de omleidingsafstand groter is dan deze " -"waarde. De lengte van de omleiding kan worden gespecificeerd als absolute " -"waarde of als percentage (bijvoorbeeld 50%) van een directe reisroute. Een " -"waarde van 0 zal dit uitschakelen." +"Maximale omleidingsafstand om te voorkomen dat een muur wordt overgestoken: De printer zal " +"geen omweg maken als de omleidingsafstand groter is dan deze waarde. De lengte van de " +"omleiding kan worden gespecificeerd als absolute waarde of als percentage (bijvoorbeeld " +"50%) van een directe reisroute. Een waarde van 0 zal dit uitschakelen." msgid "mm or %" msgstr "mm of %" @@ -9554,36 +9247,35 @@ msgid "Other layers" msgstr "Andere lagen" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not " +"support to print on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur voor alle lagen behalve de eerste. Een waarde van 0 " -"betekent dat het filament het afdrukken op de Cool Plate niet ondersteunt." +"Dit is de bedtemperatuur voor alle lagen behalve de eerste. Een waarde van 0 betekent dat " +"het filament het afdrukken op de Cool Plate niet ondersteunt." msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not " +"support to print on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van " -"0 betekent dat het filament afdrukken op de Engineering Plate niet " -"ondersteunt." +"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van 0 betekent dat " +"het filament afdrukken op de Engineering Plate niet ondersteunt." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not " +"support to print on the High Temp Plate" msgstr "" -"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van " -"0 betekent dat het filament printen op de High Temp Plate niet ondersteunt." +"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van 0 betekent dat " +"het filament printen op de High Temp Plate niet ondersteunt." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" msgstr "" -"Bedtemperatuur na de eerste laag. 0 betekent dat het filament niet wordt " -"ondersteund op de getextureerde PEI-plaat." +"Bedtemperatuur na de eerste laag. 0 betekent dat het filament niet wordt ondersteund op de " +"getextureerde PEI-plaat." msgid "Initial layer" msgstr "Eerste laag" @@ -9592,32 +9284,32 @@ msgid "Initial layer bed temperature" msgstr "Printbed temperatuur voor de eerste laag" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Cool Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print " +"on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " -"filament printen op de Cool Plate niet ondersteunt." +"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het filament " +"printen op de Cool Plate niet ondersteunt." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Engineering Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print " +"on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " -"filament afdrukken op de Engineering Plate niet ondersteunt." +"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het filament " +"afdrukken op de Engineering Plate niet ondersteunt." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the High Temp Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print " +"on the High Temp Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " -"filament printen op de High Temp Plate niet ondersteunt." +"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het filament " +"printen op de High Temp Plate niet ondersteunt." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print " +"on the Textured PEI Plate" msgstr "" -"De bedtemperatuur van de eerste laag 0 betekent dat het filament niet wordt " -"ondersteund op de getextureerde PEI-plaat." +"De bedtemperatuur van de eerste laag 0 betekent dat het filament niet wordt ondersteund op " +"de getextureerde PEI-plaat." msgid "Bed types supported by the printer" msgstr "Printbedden ondersteund door de printer" @@ -9641,48 +9333,44 @@ msgid "Other layers filament sequence" msgstr "Other layers filament sequence" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "" -"De G-code wordt bij iedere laagwisseling toegevoegd voor het optillen van Z" +msgstr "De G-code wordt bij iedere laagwisseling toegevoegd voor het optillen van Z" msgid "Bottom shell layers" msgstr "Aantal bodemlagen" msgid "" -"This is the number of solid layers of bottom shell, including the bottom " -"surface layer. When the thickness calculated by this value is thinner than " -"bottom shell thickness, the bottom shell layers will be increased" +"This is the number of solid layers of bottom shell, including the bottom surface layer. " +"When the thickness calculated by this value is thinner than bottom shell thickness, the " +"bottom shell layers will be increased" msgstr "" -"Dit is het aantal vaste lagen van de onderkant inclusief de onderste " -"oppervlaktelaag. Wanneer de door deze waarde berekende dikte dunner is dan " -"de dikte van de onderste laag, worden de onderste lagen vergroot" +"Dit is het aantal vaste lagen van de onderkant inclusief de onderste oppervlaktelaag. " +"Wanneer de door deze waarde berekende dikte dunner is dan de dikte van de onderste laag, " +"worden de onderste lagen vergroot" msgid "Bottom shell thickness" msgstr "Bodemdikte" msgid "" -"The number of bottom solid layers is increased when slicing if the thickness " -"calculated by bottom shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" +"The number of bottom solid layers is increased when slicing if the thickness calculated by " +"bottom shell layers is thinner than this value. This can avoid having too thin shell when " +"layer height is small. 0 means that this setting is disabled and thickness of bottom shell " +"is absolutely determained by bottom shell layers" msgstr "" -"Het aantal onderste solide lagen wordt verhoogd tijdens het slicen als de " -"totale dikte van de onderste lagen lager is dan deze waarde. Dit zorgt " -"ervoor dat de schaal niet te dun is bij een lage laaghoogte. 0 betekend dat " -"deze instelling niet actief is en dat de dikte van de bodem bepaald wordt " -"door het aantal bodem lagen." +"Het aantal onderste solide lagen wordt verhoogd tijdens het slicen als de totale dikte van " +"de onderste lagen lager is dan deze waarde. Dit zorgt ervoor dat de schaal niet te dun is " +"bij een lage laaghoogte. 0 betekend dat deze instelling niet actief is en dat de dikte van " +"de bodem bepaald wordt door het aantal bodem lagen." msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected surfaces. The minimum gap length that will be filled can " +"be controlled from the filter out tiny gaps option below.\n" "\n" "Options:\n" "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" "3. Nowhere: Disables gap fill\n" msgstr "" @@ -9690,96 +9378,94 @@ msgid "Everywhere" msgstr "Overal" msgid "Top and bottom surfaces" -msgstr "" +msgstr "Boven- en onderoppervlakken" msgid "Nowhere" -msgstr "" +msgstr "Nergens" msgid "Force cooling for overhang and bridge" msgstr "Forceer koeling voor overhangende delen en bruggen (bridge)" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and bridge to get better " +"cooling" msgstr "" -"Schakel deze optie in om de snelheid van de koelventilator van de printkop " -"te optimaliseren voor overhang en bruggen" +"Schakel deze optie in om de snelheid van de koelventilator van de printkop te optimaliseren " +"voor overhang en bruggen" msgid "Fan speed for overhang" msgstr "Ventilator snelheid voor overhangende delen" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang wall which has " +"large overhang degree. Forcing cooling for overhang and bridge can get better quality for " +"these part" msgstr "" -"Forceer de koelventilator van de printkop om deze snelheid te hebben bij het " -"afdrukken van een brug of overhangende muur met een grote overhanggraad. Het " -"forceren van koeling voor overhang en brug kan een resulteren in een betere " -"kwaliteit voor dit onderdeel" +"Forceer de koelventilator van de printkop om deze snelheid te hebben bij het afdrukken van " +"een brug of overhangende muur met een grote overhanggraad. Het forceren van koeling voor " +"overhang en brug kan een resulteren in een betere kwaliteit voor dit onderdeel" msgid "Cooling overhang threshold" msgstr "Drempel voor overhang koeling" #, c-format msgid "" -"Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" +"Force cooling fan to be specific speed when overhang degree of printed part exceeds this " +"value. Expressed as percentage which indicides how much width of the line without support " +"from lower layer. 0% means forcing cooling for all outer wall no matter how much overhang " +"degree" msgstr "" -"Dwingt de koelventilator tot een bepaalde snelheid wanneer de overhanggraad " -"van het geprinte deel deze waarde overschrijdt. Dit wordt uitgedrukt als een " -"percentage dat aangeeft hoe breed de lijn is zonder steun van de onderste " -"laag. 0%% betekent koeling afdwingen voor de hele buitenwand, ongeacht de " -"overhanggraad." +"Dwingt de koelventilator tot een bepaalde snelheid wanneer de overhanggraad van het " +"geprinte deel deze waarde overschrijdt. Dit wordt uitgedrukt als een percentage dat " +"aangeeft hoe breed de lijn is zonder steun van de onderste laag. 0%% betekent koeling " +"afdwingen voor de hele buitenwand, ongeacht de overhanggraad." msgid "Bridge infill direction" -msgstr "" +msgstr "Bruginvulling richting" msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for " -"external bridges. Use 180°for zero angle." +"Bridging angle override. If left to zero, the bridging angle will be calculated " +"automatically. Otherwise the provided angle will be used for external bridges. Use 180°for " +"zero angle." msgstr "" -"Overbrugingshoek overschrijven. 0 betekent dat de overbruggingshoek " -"automatisch wordt berekend. Anders wordt de opgegeven hoek gebruikt voor " -"externe bruggen. Gebruik 180° voor een hoek van nul." +"Overbrugingshoek overschrijven. 0 betekent dat de overbruggingshoek automatisch wordt " +"berekend. Anders wordt de opgegeven hoek gebruikt voor externe bruggen. Gebruik 180° voor " +"een hoek van nul." msgid "Bridge density" -msgstr "" +msgstr "Brugdichtheid" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "" +msgstr "Dichtheid van externe bruggen. 100% betekent massieve brug. Standaard is 100%." msgid "Bridge flow ratio" msgstr "Brugflow" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, " +"to improve sag" msgstr "" -"Verlaag deze waarde iets (bijvoorbeeld 0,9) om de hoeveelheid materiaal voor " -"bruggen te verminderen, dit om doorzakken te voorkomen." +"Verlaag deze waarde iets (bijvoorbeeld 0,9) om de hoeveelheid materiaal voor bruggen te " +"verminderen, dit om doorzakken te voorkomen." msgid "Internal bridge flow ratio" msgstr "" msgid "" -"This value governs the thickness of the internal bridge layer. This is the " -"first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"This value governs the thickness of the internal bridge layer. This is the first layer over " +"sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality " +"over sparse infill." msgstr "" msgid "Top surface flow ratio" msgstr "Flowratio bovenoppervlak" msgid "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"This factor affects the amount of material for top solid infill. You can decrease it " +"slightly to have smooth surface finish" msgstr "" -"Deze factor beïnvloedt de hoeveelheid materiaal voor de bovenste vaste " -"vulling. Je kunt het iets verminderen om een glad oppervlak te krijgen." +"Deze factor beïnvloedt de hoeveelheid materiaal voor de bovenste vaste vulling. Je kunt het " +"iets verminderen om een glad oppervlak te krijgen." msgid "Bottom surface flow ratio" msgstr "" @@ -9791,66 +9477,58 @@ msgid "Precise wall" msgstr "" msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves " -"layer consistency.\n" -"Note: This setting will only take effect if the wall sequence is configured " -"to Inner-Outer" +"Improve shell precision by adjusting outer wall spacing. This also improves layer " +"consistency.\n" +"Note: This setting will only take effect if the wall sequence is configured to Inner-Outer" msgstr "" msgid "Only one wall on top surfaces" msgstr "Slechts één wand op de bovenste oppervlakken" -msgid "" -"Use only one wall on flat top surface, to give more space to the top infill " -"pattern" +msgid "Use only one wall on flat top surface, to give more space to the top infill pattern" msgstr "" -"Gebruik slechts één wand op het vlakke bovenvlak, om meer ruimte te geven " -"aan het bovenste invulpatroon" +"Gebruik slechts één wand op het vlakke bovenvlak, om meer ruimte te geven aan het bovenste " +"invulpatroon" msgid "One wall threshold" msgstr "" #, no-c-format, no-boost-format msgid "" -"If a top surface has to be printed and it's partially covered by another " -"layer, it won't be considered at a top layer where its width is below this " -"value. This can be useful to not let the 'one perimeter on top' trigger on " -"surface that should be covered only by perimeters. This value can be a mm or " -"a % of the perimeter extrusion width.\n" -"Warning: If enabled, artifacts can be created if you have some thin features " -"on the next layer, like letters. Set this setting to 0 to remove these " -"artifacts." +"If a top surface has to be printed and it's partially covered by another layer, it won't be " +"considered at a top layer where its width is below this value. This can be useful to not " +"let the 'one perimeter on top' trigger on surface that should be covered only by " +"perimeters. This value can be a mm or a % of the perimeter extrusion width.\n" +"Warning: If enabled, artifacts can be created if you have some thin features on the next " +"layer, like letters. Set this setting to 0 to remove these artifacts." msgstr "" msgid "Only one wall on first layer" msgstr "Only one wall on first layer" -msgid "" -"Use only one wall on first layer, to give more space to the bottom infill " -"pattern" +msgid "Use only one wall on first layer, to give more space to the bottom infill pattern" msgstr "" msgid "Extra perimeters on overhangs" msgstr "" msgid "" -"Create additional perimeter paths over steep overhangs and areas where " -"bridges cannot be anchored. " +"Create additional perimeter paths over steep overhangs and areas where bridges cannot be " +"anchored. " msgstr "" msgid "Reverse on odd" -msgstr "" +msgstr "Overhang omkering" msgid "Overhang reversal" msgstr "" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on odd layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction on odd " +"layers. This alternating pattern can drastically improve steep overhangs.\n" "\n" -"This setting can also help reduce part warping due to the reduction of " -"stresses in the part walls." +"This setting can also help reduce part warping due to the reduction of stresses in the part " +"walls." msgstr "" msgid "Reverse only internal perimeters" @@ -9859,24 +9537,23 @@ msgstr "" msgid "" "Apply the reverse perimeters logic only on internal perimeters. \n" "\n" -"This setting greatly reduces part stresses as they are now distributed in " -"alternating directions. This should reduce part warping while also " -"maintaining external wall quality. This feature can be very useful for warp " -"prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over " +"This setting greatly reduces part stresses as they are now distributed in alternating " +"directions. This should reduce part warping while also maintaining external wall quality. " +"This feature can be very useful for warp prone material, like ABS/ASA, and also for elastic " +"filaments, like TPU and Silk PLA. It can also help reduce warping on floating regions over " "supports.\n" "\n" -"For this setting to be the most effective, it is recomended to set the " -"Reverse Threshold to 0 so that all internal walls print in alternating " -"directions on odd layers irrespective of their overhang degree." +"For this setting to be the most effective, it is recomended to set the Reverse Threshold to " +"0 so that all internal walls print in alternating directions on odd layers irrespective of " +"their overhang degree." msgstr "" msgid "Bridge counterbore holes" msgstr "" msgid "" -"This option creates bridges for counterbore holes, allowing them to be " -"printed without support. Available modes include:\n" +"This option creates bridges for counterbore holes, allowing them to be printed without " +"support. Available modes include:\n" "1. None: No bridge is created.\n" "2. Partially Bridged: Only a part of the unsupported area will be bridged.\n" "3. Sacrificial Layer: A full sacrificial bridge layer is created." @@ -9896,8 +9573,8 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Number of mm the overhang need to be for the reversal to be considered " -"useful. Can be a % of the perimeter width.\n" +"Number of mm the overhang need to be for the reversal to be considered useful. Can be a % " +"of the perimeter width.\n" "Value 0 enables reversal on every odd layers regardless." msgstr "" @@ -9912,15 +9589,15 @@ msgstr "Afremmen voor overhangende delen" msgid "Enable this option to slow printing down for different overhang degree" msgstr "" -"Schakel deze optie in om de snelheid omlaag te brengen voor verschillende " -"overhangende hoeken" +"Schakel deze optie in om de snelheid omlaag te brengen voor verschillende overhangende " +"hoeken" msgid "Slow down for curled perimeters" msgstr "" msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow printing down in areas where potential curled perimeters may " +"exist" msgstr "" msgid "mm/s or %" @@ -9939,8 +9616,8 @@ msgid "Internal" msgstr "" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridge. If the value is expressed as a percentage, it will be calculated " +"based on the bridge_speed. Default value is 150%." msgstr "" msgid "Brim width" @@ -9953,21 +9630,19 @@ msgid "Brim type" msgstr "Rand type" msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analysed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of models. Auto means " +"the brim width is analysed and calculated automatically." msgstr "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analyzed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of models. Auto means " +"the brim width is analyzed and calculated automatically." msgid "Brim-object gap" msgstr "Ruimte tussen rand en object" -msgid "" -"A gap between innermost brim line and object can make brim be removed more " -"easily" +msgid "A gap between innermost brim line and object can make brim be removed more easily" msgstr "" -"Dit creëert ruimte tussen de binnenste brimlijn en het object en zorgt " -"ervoor dat het object eenvoudiger van het printbed kan worden verwijderd." +"Dit creëert ruimte tussen de binnenste brimlijn en het object en zorgt ervoor dat het " +"object eenvoudiger van het printbed kan worden verwijderd." msgid "Brim ears" msgstr "" @@ -9988,8 +9663,8 @@ msgid "Brim ear detection radius" msgstr "" msgid "" -"The geometry will be decimated before dectecting sharp angles. This " -"parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This parameter indicates the " +"minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" @@ -10010,8 +9685,8 @@ msgstr "Conditie van -geschikte proces profielen" msgid "Print sequence, layer by layer or object by object" msgstr "" -"Hiermee wordt de afdrukvolgorde bepaald, zodat u kunt kiezen tussen laag " -"voor laag of object voor object printen." +"Hiermee wordt de afdrukvolgorde bepaald, zodat u kunt kiezen tussen laag voor laag of " +"object voor object printen." msgid "By layer" msgstr "Op basis van laag" @@ -10032,25 +9707,21 @@ msgid "Slow printing down for better layer cooling" msgstr "Printsnelheid omlaag brengen zodat de laag beter kan koelen" msgid "" -"Enable this option to slow printing speed down to make the final layer time " -"not shorter than the layer time threshold in \"Max fan speed threshold\", so " -"that layer can be cooled for longer time. This can improve the cooling " -"quality for needle and small details" +"Enable this option to slow printing speed down to make the final layer time not shorter " +"than the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled " +"for longer time. This can improve the cooling quality for needle and small details" msgstr "" -"Schakel deze optie in om de afdruksnelheid te verlagen om de laatste laag " -"printtijd niet korter te maken dan de laagtijddrempel in \"Maximale " -"ventilatorsnelheidsdrempel\", zodat de laag langer kan worden gekoeld. Dit " -"kan de koelkwaliteit voor kleine details verbeteren" +"Schakel deze optie in om de afdruksnelheid te verlagen om de laatste laag printtijd niet " +"korter te maken dan de laagtijddrempel in \"Maximale ventilatorsnelheidsdrempel\", zodat de " +"laag langer kan worden gekoeld. Dit kan de koelkwaliteit voor kleine details verbeteren" msgid "Normal printing" msgstr "Normaal printen" -msgid "" -"The default acceleration of both normal printing and travel except initial " -"layer" +msgid "The default acceleration of both normal printing and travel except initial layer" msgstr "" -"Dit is de standaard versnelling voor zowel normaal printen en verplaatsen " -"behalve voor de eerste laag" +"Dit is de standaard versnelling voor zowel normaal printen en verplaatsen behalve voor de " +"eerste laag" msgid "mm/s²" msgstr "mm/s²" @@ -10059,8 +9730,7 @@ msgid "Default filament profile" msgstr "Standaard filament profiel" msgid "Default filament profile when switch to this machine profile" -msgstr "" -"Standaard filamentprofiel bij het overschakelen naar dit machineprofiel" +msgstr "Standaard filamentprofiel bij het overschakelen naar dit machineprofiel" msgid "Default process profile" msgstr "Standaard proces profiel" @@ -10078,11 +9748,11 @@ msgid "Fan speed" msgstr "Ventilator snelheid" msgid "" -"Speed of exhaust fan during printing.This speed will overwrite the speed in " -"filament custom gcode" +"Speed of exhaust fan during printing.This speed will overwrite the speed in filament custom " +"gcode" msgstr "" -"Snelheid van de afzuigventilator tijdens het printen. Deze snelheid " -"overschrijft de snelheid in de aangepaste g-code van het filament." +"Snelheid van de afzuigventilator tijdens het printen. Deze snelheid overschrijft de " +"snelheid in de aangepaste g-code van het filament." msgid "Speed of exhaust fan after printing completes" msgstr "" @@ -10091,76 +9761,70 @@ msgid "No cooling for the first" msgstr "Geen koeling voor de eerste" msgid "" -"Close all cooling fan for the first certain layers. Cooling fan of the first " -"layer used to be closed to get better build plate adhesion" +"Close all cooling fan for the first certain layers. Cooling fan of the first layer used to " +"be closed to get better build plate adhesion" msgstr "" -"Schakel alle ventilatoren uit voor de eerste lagen. Het wordt geadviseerd om " -"de koel ventilator voor de eerste laag uit te schakelen om een betere " -"hechting met het printbed te krijgen" +"Schakel alle ventilatoren uit voor de eerste lagen. Het wordt geadviseerd om de koel " +"ventilator voor de eerste laag uit te schakelen om een betere hechting met het printbed te " +"krijgen" msgid "Don't support bridges" msgstr "Geen support bij bruggen toepassen" msgid "" -"Don't support the whole bridge area which make support very large. Bridge " -"usually can be printing directly without support if not very long" +"Don't support the whole bridge area which make support very large. Bridge usually can be " +"printing directly without support if not very long" msgstr "" -"Dit schakelt de ondersteuning (support) voor bruggebieden uit, waardoor de " -"ondersteuning (support) erg groot kan worden. Bruggen kunnen meestal direct " -"zonder ondersteuning (support) worden afgedrukt als ze niet erg lang zijn." +"Dit schakelt de ondersteuning (support) voor bruggebieden uit, waardoor de ondersteuning " +"(support) erg groot kan worden. Bruggen kunnen meestal direct zonder ondersteuning " +"(support) worden afgedrukt als ze niet erg lang zijn." msgid "Thick bridges" msgstr "Dikke bruggen" msgid "" -"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." +"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." msgstr "" -"Indien ingeschakeld, zijn bruggen betrouwbaarder en kunnen ze langere " -"afstanden overbruggen, maar ze kunnen er slechter uitzien. Indien " -"uitgeschakeld, zien bruggen er beter uit, maar zijn ze alleen betrouwbaar " -"voor kortere afstanden." +"Indien ingeschakeld, zijn bruggen betrouwbaarder en kunnen ze langere afstanden " +"overbruggen, maar ze kunnen er slechter uitzien. Indien uitgeschakeld, zien bruggen er " +"beter uit, maar zijn ze alleen betrouwbaar voor kortere afstanden." msgid "Thick internal bridges" msgstr "" msgid "" -"If enabled, thick internal bridges will be used. It's usually recommended to " -"have this feature turned on. However, consider turning it off if you are " -"using large nozzles." +"If enabled, thick internal bridges will be used. It's usually recommended to have this " +"feature turned on. However, consider turning it off if you are using large nozzles." msgstr "" msgid "Don't filter out small internal bridges (beta)" msgstr "" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted " -"or curved models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted or curved " +"models.\n" "\n" -"By default, small internal bridges are filtered out and the internal solid " -"infill is printed directly over the sparse infill. This works well in most " -"cases, speeding up printing without too much compromise on top surface " -"quality. \n" +"By default, small internal bridges are filtered out and the internal solid infill is " +"printed directly over the sparse infill. This works well in most cases, speeding up " +"printing without too much compromise on top surface quality. \n" "\n" -"However, in heavily slanted or curved models especially where too low sparse " -"infill density is used, this may result in curling of the unsupported solid " -"infill, causing pillowing.\n" +"However, in heavily slanted or curved models especially where too low sparse infill density " +"is used, this may result in curling of the unsupported solid infill, causing pillowing.\n" "\n" -"Enabling this option will print internal bridge layer over slightly " -"unsupported internal solid infill. The options below control the amount of " -"filtering, i.e. the amount of internal bridges created.\n" +"Enabling this option will print internal bridge layer over slightly unsupported internal " +"solid infill. The options below control the amount of filtering, i.e. the amount of " +"internal bridges created.\n" "\n" -"Disabled - Disables this option. This is the default behaviour and works " -"well in most cases.\n" +"Disabled - Disables this option. This is the default behaviour and works well in most " +"cases.\n" "\n" -"Limited filtering - Creates internal bridges on heavily slanted surfaces, " -"while avoiding creating uncessesary interal bridges. This works well for " -"most difficult models.\n" +"Limited filtering - Creates internal bridges on heavily slanted surfaces, while avoiding " +"creating uncessesary interal bridges. This works well for most difficult models.\n" "\n" -"No filtering - Creates internal bridges on every potential internal " -"overhang. This option is useful for heavily slanted top surface models. " -"However, in most cases it creates too many unecessary bridges." +"No filtering - Creates internal bridges on every potential internal overhang. This option " +"is useful for heavily slanted top surface models. However, in most cases it creates too " +"many unecessary bridges." msgstr "" msgid "Disabled" @@ -10176,13 +9840,12 @@ msgid "Max bridge length" msgstr "Maximale bruglengte" msgid "" -"Max length of bridges that don't need support. Set it to 0 if you want all " -"bridges to be supported, and set it to a very large value if you don't want " -"any bridges to be supported." +"Max length of bridges that don't need support. Set it to 0 if you want all bridges to be " +"supported, and set it to a very large value if you don't want any bridges to be supported." msgstr "" -"Maximale lengte van bruggen die geen ondersteuning nodig hebben. Stel het in " -"op 0 als u wilt dat alle bruggen worden ondersteund, en stel het in op een " -"zeer grote waarde als u niet wilt dat bruggen worden ondersteund." +"Maximale lengte van bruggen die geen ondersteuning nodig hebben. Stel het in op 0 als u " +"wilt dat alle bruggen worden ondersteund, en stel het in op een zeer grote waarde als u " +"niet wilt dat bruggen worden ondersteund." msgid "End G-code" msgstr "Einde G-code" @@ -10194,24 +9857,23 @@ msgid "Between Object Gcode" msgstr "Tussen object Gcode" msgid "" -"Insert Gcode between objects. This parameter will only come into effect when " -"you print your models object by object" +"Insert Gcode between objects. This parameter will only come into effect when you print your " +"models object by object" msgstr "" -"Gcode invoegen tussen objecten. Deze parameter wordt alleen actief wanneer u " -"uw modellen object voor object afdrukt." +"Gcode invoegen tussen objecten. Deze parameter wordt alleen actief wanneer u uw modellen " +"object voor object afdrukt." msgid "End G-code when finish the printing of this filament" -msgstr "" -"Voeg een eind G-code toe bij het afronden van het printen van dit filament." +msgstr "Voeg een eind G-code toe bij het afronden van het printen van dit filament." msgid "Ensure vertical shell thickness" msgstr "Zorg voor een verticale schaaldikte" msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)\n" -"None: No solid infill will be added anywhere. Caution: Use this option " -"carefully if your model has sloped surfaces\n" +"Add solid infill near sloping surfaces to guarantee the vertical shell thickness " +"(top+bottom solid layers)\n" +"None: No solid infill will be added anywhere. Caution: Use this option carefully if your " +"model has sloped surfaces\n" "Critical Only: Avoid adding solid infill for walls\n" "Moderate: Add solid infill for heavily sloping surfaces only\n" "All: Add solid infill for all suitable sloping surfaces\n" @@ -10228,8 +9890,7 @@ msgid "Top surface pattern" msgstr "Patroon bovenvlak" msgid "Line pattern of top surface infill" -msgstr "" -"Dit is het lijnenpatroon voor de vulling (infill) van het bovenoppervlak." +msgstr "Dit is het lijnenpatroon voor de vulling (infill) van het bovenoppervlak." msgid "Concentric" msgstr "Concentrisch" @@ -10260,46 +9921,42 @@ msgstr "Bodem oppvlakte patroon" msgid "Line pattern of bottom surface infill, not bridge infill" msgstr "" -"Dit is het lijnenpatroon van de vulling (infill) van het bodemoppervlak, " -"maar niet van de vulling van de brug." +"Dit is het lijnenpatroon van de vulling (infill) van het bodemoppervlak, maar niet van de " +"vulling van de brug." msgid "Internal solid infill pattern" msgstr "Intern massief invulpatroon" msgid "" -"Line pattern of internal solid infill. if the detect narrow internal solid " -"infill be enabled, the concentric pattern will be used for the small area." +"Line pattern of internal solid infill. if the detect narrow internal solid infill be " +"enabled, the concentric pattern will be used for the small area." msgstr "" msgid "" -"Line width of outer wall. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of outer wall. If expressed as a %, it will be computed over the nozzle diameter." msgstr "" msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." +"Speed of outer wall which is outermost and visible. It's used to be slower than inner wall " +"speed to get better quality." msgstr "" -"Dit is de snelheid voor de buitenste wand die zichtbaar is. Deze wordt " -"langzamer geprint dan de binnenste wanden om een betere kwaliteit te krijgen." +"Dit is de snelheid voor de buitenste wand die zichtbaar is. Deze wordt langzamer geprint " +"dan de binnenste wanden om een betere kwaliteit te krijgen." msgid "Small perimeters" msgstr "Kleine omtrek" msgid "" "This separate setting will affect the speed of perimeters having radius <= " -"small_perimeter_threshold (usually holes). If expressed as percentage (for " -"example: 80%) it will be calculated on the outer wall speed setting above. " -"Set to zero for auto." +"small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it " +"will be calculated on the outer wall speed setting above. Set to zero for auto." msgstr "" msgid "Small perimeters threshold" msgstr "" -msgid "" -"This sets the threshold for small perimeter length. Default threshold is 0mm" -msgstr "" -"Dit stelt de drempel voor kleine omtreklengte in. De standaarddrempel is 0 mm" +msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "Dit stelt de drempel voor kleine omtreklengte in. De standaarddrempel is 0 mm" msgid "Walls printing order" msgstr "" @@ -10307,24 +9964,22 @@ msgstr "" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighouring perimeter while printing. However, this option " -"results in slightly reduced surface quality as the external perimeter is " -"deformed by being squashed to the internal perimeter.\n" +"Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a " +"neighouring perimeter while printing. However, this option results in slightly reduced " +"surface quality as the external perimeter is deformed by being squashed to the internal " +"perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional " -"accuracy as the external wall is printed undisturbed from an internal " -"perimeter. However, overhang performance will reduce as there is no internal " -"perimeter to print the external wall against. This option requires a minimum " -"of 3 walls to be effective as it prints the internal walls from the 3rd " -"perimeter onwards first, then the external perimeter and, finally, the first " -"internal perimeter. This option is recomended against the Outer/Inner option " -"in most cases. \n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the " +"external wall is printed undisturbed from an internal perimeter. However, overhang " +"performance will reduce as there is no internal perimeter to print the external wall " +"against. This option requires a minimum of 3 walls to be effective as it prints the " +"internal walls from the 3rd perimeter onwards first, then the external perimeter and, " +"finally, the first internal perimeter. This option is recomended against the Outer/Inner " +"option in most cases. \n" "\n" -"Use Outer/Inner for the same external wall quality and dimensional accuracy " -"benefits of Inner/Outer/Inner option. However, the z seams will appear less " -"consistent as the first extrusion of a new layer starts on a visible " -"surface.\n" +"Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of " +"Inner/Outer/Inner option. However, the z seams will appear less consistent as the first " +"extrusion of a new layer starts on a visible surface.\n" "\n" " " msgstr "" @@ -10342,26 +9997,24 @@ msgid "Print infill first" msgstr "Eerst infill afdrukken" msgid "" -"Order of wall/infill. When the tickbox is unchecked the walls are printed " -"first, which works best in most cases.\n" +"Order of wall/infill. When the tickbox is unchecked the walls are printed first, which " +"works best in most cases.\n" "\n" -"Printing infill first may help with extreme overhangs as the walls have the " -"neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"Printing infill first may help with extreme overhangs as the walls have the neighbouring " +"infill to adhere to. However, the infill will slighly push out the printed walls where it " +"is attached to them, resulting in a worse external surface finish. It can also cause the " +"infill to shine through the external surfaces of the part." msgstr "" msgid "Wall loop direction" msgstr "" msgid "" -"The direction which the wall loops are extruded when looking down from the " -"top.\n" +"The direction which the wall loops are extruded when looking down from the top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on " -"odd is enabled. Set this to any option other than Auto will force the wall " -"direction regardless of the Reverse on odd.\n" +"By default all walls are extruded in counter-clockwise, unless Reverse on odd is enabled. " +"Set this to any option other than Auto will force the wall direction regardless of the " +"Reverse on odd.\n" "\n" "This option will be disabled if sprial vase mode is enabled." msgstr "" @@ -10376,28 +10029,25 @@ msgid "Height to rod" msgstr "Hoogte tot geleider" msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " -"by-object printing." +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object " +"printing." msgstr "" -"Afstand van de punt van de nozzle tot de onderste stang. Wordt gebruikt om " -"botsingen te voorkomen bij het afdrukken op basis van objecten." +"Afstand van de punt van het mondstuk tot de onderste stang. Wordt gebruikt om botsingen te " +"voorkomen bij het afdrukken op basis van objecten." msgid "Height to lid" msgstr "Hoogte tot deksel" msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" -"object printing." +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." msgstr "" -"Afstand van de punt van de nozzle tot het deksel. Wordt gebruikt om " -"botsingen te voorkomen bij het afdrukken op basis van objecten." +"Afstand van de punt van het mondstuk tot het deksel. Wordt gebruikt om botsingen te " +"voorkomen bij het afdrukken op basis van objecten." -msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." msgstr "" -"Afstandsradius rond de extruder: gebruikt om botsingen te vermijden bij het " -"printen per object." +"Afstandsradius rond de extruder: gebruikt om botsingen te vermijden bij het printen per " +"object." msgid "Nozzle height" msgstr "Hoogte van het mondstuk" @@ -10409,44 +10059,42 @@ msgid "Bed mesh min" msgstr "" msgid "" -"This option sets the min point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To " -"ensure the probe point does not go outside the bed area, the minimum and " -"maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (-99999, -99999), which " -"means there are no limits, thus allowing probing across the entire bed." +"This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, " +"most printers are unable to probe the entire bed. To ensure the probe point does not go " +"outside the bed area, the minimum and maximum points of the bed mesh should be set " +"appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values " +"do not exceed these min/max points. This information can usually be obtained from your " +"printer manufacturer. The default setting is (-99999, -99999), which means there are no " +"limits, thus allowing probing across the entire bed." msgstr "" msgid "Bed mesh max" msgstr "" msgid "" -"This option sets the max point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To " -"ensure the probe point does not go outside the bed area, the minimum and " -"maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (99999, 99999), which " -"means there are no limits, thus allowing probing across the entire bed." +"This option sets the max point for the allowed bed mesh area. Due to the probe's XY offset, " +"most printers are unable to probe the entire bed. To ensure the probe point does not go " +"outside the bed area, the minimum and maximum points of the bed mesh should be set " +"appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values " +"do not exceed these min/max points. This information can usually be obtained from your " +"printer manufacturer. The default setting is (99999, 99999), which means there are no " +"limits, thus allowing probing across the entire bed." msgstr "" msgid "Probe point distance" msgstr "" msgid "" -"This option sets the preferred distance between probe points (grid size) for " -"the X and Y directions, with the default being 50mm for both X and Y." +"This option sets the preferred distance between probe points (grid size) for the X and Y " +"directions, with the default being 50mm for both X and Y." msgstr "" msgid "Mesh margin" msgstr "" msgid "" -"This option determines the additional distance by which the adaptive bed " -"mesh area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed mesh area should " +"be expanded in the XY directions." msgstr "" msgid "Extruder Color" @@ -10462,25 +10110,21 @@ msgid "Flow ratio" msgstr "Flow verhouding" msgid "" -"The material may have volumetric change after switching between molten state " -"and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow" +"The material may have volumetric change after switching between molten state and " +"crystalline state. This setting changes all extrusion flow of this filament in gcode " +"proportionally. Recommended value range is between 0.95 and 1.05. Maybe you can tune this " +"value to get nice flat surface when there has slight overflow or underflow" msgstr "" -"Het materiaal kan een volumetrische verandering hebben na het wisselen " -"tussen gesmolten en gekristaliseerde toestand. Deze instelling verandert " -"alle extrusiestromen van dit filament in de G-code proportioneel. Het " -"aanbevolen waardebereik ligt tussen 0,95 en 1,05. U kunt deze waarde " -"mogelijk optimaliseren om een mooi vlak oppervlak te krijgen als er een " -"lichte over- of onderflow is." +"Het materiaal kan een volumetrische verandering hebben na het wisselen tussen gesmolten en " +"gekristaliseerde toestand. Deze instelling verandert alle extrusiestromen van dit filament " +"in de G-code proportioneel. Het aanbevolen waardebereik ligt tussen 0,95 en 1,05. U kunt " +"deze waarde mogelijk optimaliseren om een mooi vlak oppervlak te krijgen als er een lichte " +"over- of onderflow is." msgid "Enable pressure advance" msgstr "Pressure advance inschakelen" -msgid "" -"Enable pressure advance, auto calibration result will be overwriten once " -"enabled." +msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" @@ -10491,23 +10135,20 @@ msgstr "" #, c-format, boost-format msgid "" -"With increasing print speeds (and hence increasing volumetric flow through " -"the nozzle) and increasing accelerations, it has been observed that the " -"effective PA value typically decreases. This means that a single PA value is " -"not always 100% optimal for all features and a compromise value is usually " -"used that does not cause too much bulging on features with lower flow speed " -"and accelerations while also not causing gaps on faster features.\n" +"With increasing print speeds (and hence increasing volumetric flow through the nozzle) and " +"increasing accelerations, it has been observed that the effective PA value typically " +"decreases. This means that a single PA value is not always 100% optimal for all features " +"and a compromise value is usually used that does not cause too much bulging on features " +"with lower flow speed and accelerations while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of " -"your printer's extrusion system depending on the volumetric flow speed and " -"acceleration it is printing at. Internally, it generates a fitted model that " -"can extrapolate the needed pressure advance for any given volumetric flow " -"speed and acceleration, which is then emmited to the printer depending on " -"the current print conditions.\n" +"This feature aims to address this limitation by modeling the response of your printer's " +"extrusion system depending on the volumetric flow speed and acceleration it is printing at. " +"Internally, it generates a fitted model that can extrapolate the needed pressure advance " +"for any given volumetric flow speed and acceleration, which is then emmited to the printer " +"depending on the current print conditions.\n" "\n" -"When enabled, the pressure advance value above is overriden. However, a " -"reasonable default value above is strongly recomended to act as a fallback " -"and for when tool changing.\n" +"When enabled, the pressure advance value above is overriden. However, a reasonable default " +"value above is strongly recomended to act as a fallback and for when tool changing.\n" "\n" msgstr "" @@ -10515,32 +10156,28 @@ msgid "Adaptive pressure advance measurements (beta)" msgstr "" msgid "" -"Add sets of pressure advance (PA) values, the volumetric flow speeds and " -"accelerations they were measured at, separated by a comma. One set of values " -"per line. For example\n" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and accelerations they " +"were measured at, separated by a comma. One set of values per line. For example\n" "0.04,3.96,3000\n" "0.033,3.96,10000\n" "0.029,7.91,3000\n" "0.026,7.91,10000\n" "\n" "How to calibrate:\n" -"1. Run the pressure advance test for at least 3 speeds per acceleration " -"value. It is recommended that the test is run for at least the speed of the " -"external perimeters, the speed of the internal perimeters and the fastest " -"feature print speed in your profile (usually its the sparse or solid " -"infill). Then run them for the same speeds for the slowest and fastest print " -"accelerations,and no faster than the recommended maximum acceleration as " +"1. Run the pressure advance test for at least 3 speeds per acceleration value. It is " +"recommended that the test is run for at least the speed of the external perimeters, the " +"speed of the internal perimeters and the fastest feature print speed in your profile " +"(usually its the sparse or solid infill). Then run them for the same speeds for the slowest " +"and fastest print accelerations,and no faster than the recommended maximum acceleration as " "given by the klipper input shaper.\n" -"2. Take note of the optimal PA value for each volumetric flow speed and " -"acceleration. You can find the flow number by selecting flow from the color " -"scheme drop down and move the horizontal slider over the PA pattern lines. " -"The number should be visible at the bottom of the page. The ideal PA value " -"should be decreasing the higher the volumetric flow is. If it is not, " -"confirm that your extruder is functioning correctly.The slower and with less " -"acceleration you print, the larger the range of acceptable PA values. If no " -"difference is visible, use the PA value from the faster test.3. Enter the " -"triplets of PA values, Flow and Accelerations in the text box here and save " -"your filament profile\n" +"2. Take note of the optimal PA value for each volumetric flow speed and acceleration. You " +"can find the flow number by selecting flow from the color scheme drop down and move the " +"horizontal slider over the PA pattern lines. The number should be visible at the bottom of " +"the page. The ideal PA value should be decreasing the higher the volumetric flow is. If it " +"is not, confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no difference is " +"visible, use the PA value from the faster test.3. Enter the triplets of PA values, Flow and " +"Accelerations in the text box here and save your filament profile\n" "\n" msgstr "" @@ -10548,10 +10185,9 @@ msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "" msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the " -"same feature. This is an experimental option, as if the PA profile is not " -"set accurately, it will cause uniformity issues on the external surfaces " -"before and after overhangs.\n" +"Enable adaptive PA for overhangs as well as when flow changes within the same feature. This " +"is an experimental option, as if the PA profile is not set accurately, it will cause " +"uniformity issues on the external surfaces before and after overhangs.\n" msgstr "" msgid "Pressure advance for bridges" @@ -10560,41 +10196,37 @@ msgstr "" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of " -"slight under extrusion immediately after bridges. This is caused by the " -"pressure drop in the nozzle when printing in the air and a lower PA helps " -"counteract this." +" A lower PA value when printing bridges helps reduce the appearance of slight under " +"extrusion immediately after bridges. This is caused by the pressure drop in the nozzle when " +"printing in the air and a lower PA helps counteract this." msgstr "" msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" msgid "Keep fan always on" msgstr "Laat de ventilator aan staan" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run at least at " +"minimum speed to reduce the frequency of starting and stoping" msgstr "" -"Als deze instelling is ingeschakeld, zal de printkop ventilator altijd aan " -"staan op een minimale snelheid om het aantal start en stop momenten te " -"beperken" +"Als deze instelling is ingeschakeld, zal de printkop ventilator altijd aan staan op een " +"minimale snelheid om het aantal start en stop momenten te beperken" msgid "Don't slow down outer walls" msgstr "" msgid "" -"If enabled, this setting will ensure external perimeters are not slowed down " -"to meet the minimum layer time. This is particularly helpful in the below " -"scenarios:\n" +"If enabled, this setting will ensure external perimeters are not slowed down to meet the " +"minimum layer time. This is particularly helpful in the below scenarios:\n" "\n" " 1. To avoid changes in shine when printing glossy filaments \n" -"2. To avoid changes in external wall speed which may create slight wall " -"artefacts that appear like z banding \n" -"3. To avoid printing at speeds which cause VFAs (fine artefacts) on the " -"external walls\n" +"2. To avoid changes in external wall speed which may create slight wall artefacts that " +"appear like z banding \n" +"3. To avoid printing at speeds which cause VFAs (fine artefacts) on the external walls\n" "\n" msgstr "" @@ -10602,14 +10234,13 @@ msgid "Layer time" msgstr "Laag tijd" msgid "" -"Part cooling fan will be enabled for layers of which estimated time is " -"shorter than this value. Fan speed is interpolated between the minimum and " -"maximum fan speeds according to layer printing time" +"Part cooling fan will be enabled for layers of which estimated time is shorter than this " +"value. Fan speed is interpolated between the minimum and maximum fan speeds according to " +"layer printing time" msgstr "" -"De printkop ventilator wordt ingeschakeld voor lagen waarvan de geschatte " -"printtijd korter is dan deze waarde. Ventilatorsnelheid wordt geïnterpoleerd " -"tussen de minimale en maximale ventilatorsnelheden volgens de printtijd van " -"de laag" +"De printkop ventilator wordt ingeschakeld voor lagen waarvan de geschatte printtijd korter " +"is dan deze waarde. Ventilatorsnelheid wordt geïnterpoleerd tussen de minimale en maximale " +"ventilatorsnelheden volgens de printtijd van de laag" msgid "Default color" msgstr "Standaardkleur" @@ -10624,24 +10255,23 @@ msgid "You can put your notes regarding the filament here." msgstr "You can put your notes regarding the filament here." msgid "Required nozzle HRC" -msgstr "Vereiste nozzle HRC" +msgstr "Vereiste mondstuk HRC" msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking " -"of nozzle's HRC." +"Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's " +"HRC." msgstr "" -"Minimale HRC van de nozzle die nodig is om het filament te printen. Een " -"waarde van 0 betekent geen controle van de HRC van de spuitdop." +"Minimale HRC van het mondstuk die nodig is om het filament te printen. Een waarde van 0 " +"betekent geen controle van de HRC van het mondstuk." msgid "" -"This setting stands for how much volume of filament can be melted and " -"extruded per second. Printing speed is limited by max volumetric speed, in " -"case of too high and unreasonable speed setting. Can't be zero" +"This setting stands for how much volume of filament can be melted and extruded per second. " +"Printing speed is limited by max volumetric speed, in case of too high and unreasonable " +"speed setting. Can't be zero" msgstr "" -"Deze instelling is het volume filament dat per seconde kan worden gesmolten " -"en geëxtrudeerd. De afdruksnelheid wordt beperkt door de maximale " -"volumetrische snelheid, in geval van een te hoge en onredelijke " -"snelheidsinstelling. Deze waarde kan niet nul zijn." +"Deze instelling is het volume filament dat per seconde kan worden gesmolten en " +"geëxtrudeerd. De afdruksnelheid wordt beperkt door de maximale volumetrische snelheid, in " +"geval van een te hoge en onredelijke snelheidsinstelling. Deze waarde kan niet nul zijn." msgid "mm³/s" msgstr "mm³/s" @@ -10651,33 +10281,32 @@ msgstr "Filament laadt tijd" msgid "Time to load new filament when switch filament. For statistics only" msgstr "" -"Tijd welke nodig is om nieuw filament te laden tijdens het wisselen. Enkel " -"voor statistieken." +"Tijd welke nodig is om nieuw filament te laden tijdens het wisselen. Enkel voor " +"statistieken." msgid "Filament unload time" msgstr "Tijd die nodig is om filament te ontladen" msgid "Time to unload old filament when switch filament. For statistics only" msgstr "" -"Tijd welke nodig is om oud filament te lossen tijdens het wisselen. Enkel " -"voor statistieken." +"Tijd welke nodig is om oud filament te lossen tijdens het wisselen. Enkel voor statistieken." msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important " -"and should be accurate" +"Filament diameter is used to calculate extrusion in gcode, so it's important and should be " +"accurate" msgstr "" -"Filamentdiameter wordt gebruikt om de extrusie in de G-code te berekenen, " -"het is dus belangrijk dat deze nauwkeurig wordt ingegeven" +"Filamentdiameter wordt gebruikt om de extrusie in de G-code te berekenen, het is dus " +"belangrijk dat deze nauwkeurig wordt ingegeven" msgid "Pellet flow coefficient" msgstr "" msgid "" -"Pellet flow coefficient is emperically derived and allows for volume " -"calculation for pellet printers.\n" +"Pellet flow coefficient is emperically derived and allows for volume calculation for pellet " +"printers.\n" "\n" -"Internally it is converted to filament_diameter. All other volume " -"calculations remain the same.\n" +"Internally it is converted to filament_diameter. All other volume calculations remain the " +"same.\n" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" @@ -10687,11 +10316,11 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling (94% " -"if you measure 94mm instead of 100mm). The part will be scaled in xy to " -"compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done " -"after the checks." +"Enter the shrinkage percentage that the filament will get after cooling (94% if you measure " +"94mm instead of 100mm). The part will be scaled in xy to compensate. Only the filament used " +"for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done after the " +"checks." msgstr "" msgid "Loading speed" @@ -10710,42 +10339,38 @@ msgid "Unloading speed" msgstr "Ontlaadsnelheid" msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming)." +"Speed used for unloading the filament on the wipe tower (does not affect initial part of " +"unloading just after ramming)." msgstr "" -"Snelheid die gebruikt wordt voor het ontladen van het afveegblok (heeft geen " -"effect op het initiële onderdeel van het ontladen direct na de ramming)." +"Snelheid die gebruikt wordt voor het ontladen van het afveegblok (heeft geen effect op het " +"initiële onderdeel van het ontladen direct na de ramming)." msgid "Unloading speed at the start" msgstr "Ontlaadsnelheid in het begin" -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming." -msgstr "" -"Snelheid die gebruikt wordt voor het ontladen van het filament direct na de " -"ramming." +msgid "Speed used for unloading the tip of the filament immediately after ramming." +msgstr "Snelheid die gebruikt wordt voor het ontladen van het filament direct na de ramming." msgid "Delay after unloading" msgstr "Vertraging na het ontladen" msgid "" -"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." +"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." msgstr "" -"Wachttijd voor het ontladen van het filament. Dit kan helpen om betrouwbare " -"toolwisselingen te krijgen met flexibele materialen die meer tijd nodig " -"hebben om te krimpen naar de originele afmetingen." +"Wachttijd voor het ontladen van het filament. Dit kan helpen om betrouwbare toolwisselingen " +"te krijgen met flexibele materialen die meer tijd nodig hebben om te krimpen naar de " +"originele afmetingen." msgid "Number of cooling moves" msgstr "Aantal koelbewegingen" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. Specify desired " +"number of these moves." msgstr "" -"Het filament wordt gekoeld tijdens het terug en voorwaarts bewegen in de " -"koelbuis. Specificeer het benodigd aantal bewegingen." +"Het filament wordt gekoeld tijdens het terug en voorwaarts bewegen in de koelbuis. " +"Specificeer het benodigd aantal bewegingen." msgid "Stamping loading speed" msgstr "" @@ -10757,27 +10382,26 @@ msgid "Stamping distance measured from the center of the cooling tube" msgstr "" msgid "" -"If set to nonzero value, filament is moved toward the nozzle between the " -"individual cooling moves (\"stamping\"). This option configures how long " -"this movement should be before the filament is retracted again." +"If set to nonzero value, filament is moved toward the nozzle between the individual cooling " +"moves (\"stamping\"). This option configures how long this movement should be before the " +"filament is retracted again." msgstr "" msgid "Speed of the first cooling move" msgstr "Snelheid voor de eerste koelbeweging" msgid "Cooling moves are gradually accelerating beginning at this speed." -msgstr "" -"Koelbewegingen worden gelijkmatig versneld, beginnend vanaf deze snelheid." +msgstr "Koelbewegingen worden gelijkmatig versneld, beginnend vanaf deze snelheid." msgid "Minimal purge on wipe tower" msgstr "Minimale filament reiniging op de wipe tower" msgid "" -"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, Orca Slicer will always prime this amount of material into the wipe " -"tower to produce successive infill or sacrificial object extrusions reliably." +"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, Orca Slicer will always prime this amount of " +"material into the wipe tower to produce successive infill or sacrificial object extrusions " +"reliably." msgstr "" msgid "Speed of the last cooling move" @@ -10787,41 +10411,37 @@ msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Koelbewegingen versnellen gelijkmatig tot aan deze snelheid." msgid "" -"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." +"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." msgstr "" -"Tijd voor de printerfirmware (of de MMU 2.0) om nieuw filament te laden " -"tijdens een toolwissel (tijdens het uitvoeren van de T-code). Deze tijd " -"wordt toegevoegd aan de totale printtijd in de tijdsschatting." +"Tijd voor de printerfirmware (of de MMU 2.0) om nieuw filament te laden tijdens een " +"toolwissel (tijdens het uitvoeren van de T-code). Deze tijd wordt toegevoegd aan de totale " +"printtijd in de tijdsschatting." msgid "Ramming parameters" msgstr "Rammingparameters" -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters." -msgstr "" -"Deze frase is bewerkt door het Rammingdialoog en bevat parameters voor de " -"ramming." +msgid "This string is edited by RammingDialog and contains ramming specific parameters." +msgstr "Deze frase is bewerkt door het Rammingdialoog en bevat parameters voor de ramming." msgid "" -"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." +"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." msgstr "" -"Tijd voor de printerfirmware (of de MMU 2.0) om filament te ontladen tijdens " -"een toolwissel (tijdens het uitvoeren van de T-code). Deze tijd wordt " -"toegevoegd aan de totale printtijd in de tijdsschatting." +"Tijd voor de printerfirmware (of de MMU 2.0) om filament te ontladen tijdens een toolwissel " +"(tijdens het uitvoeren van de T-code). Deze tijd wordt toegevoegd aan de totale printtijd " +"in de tijdsschatting." msgid "Enable ramming for multitool setups" msgstr "" msgid "" -"Perform ramming when using multitool printer (i.e. when the 'Single Extruder " -"Multimaterial' in Printer Settings is unchecked). When checked, a small " -"amount of filament is rapidly extruded on the wipe tower just before the " -"toolchange. This option is only used when the wipe tower is enabled." +"Perform ramming when using multitool printer (i.e. when the 'Single Extruder Multimaterial' " +"in Printer Settings is unchecked). When checked, a small amount of filament is rapidly " +"extruded on the wipe tower just before the toolchange. This option is only used when the " +"wipe tower is enabled." msgstr "" msgid "Multitool ramming volume" @@ -10851,32 +10471,28 @@ msgstr "Filament materiaal." msgid "Soluble material" msgstr "Oplosbaar materiaal" -msgid "" -"Soluble material is commonly used to print support and support interface" +msgid "Soluble material is commonly used to print support and support interface" msgstr "" -"Oplosbaar materiaal wordt doorgaans gebruikt om odnersteuning (support) en " -"support interface te printen " +"Oplosbaar materiaal wordt doorgaans gebruikt om odnersteuning (support) en support " +"interface te printen " msgid "Support material" msgstr "Support materiaal" -msgid "" -"Support material is commonly used to print support and support interface" -msgstr "" -"Support materiaal wordt vaak gebruikt om support en support interfaces af te " -"drukken." +msgid "Support material is commonly used to print support and support interface" +msgstr "Support materiaal wordt vaak gebruikt om support en support interfaces af te drukken." msgid "Softening temperature" msgstr "Verzachtingstemperatuur" msgid "" -"The material softens at this temperature, so when the bed temperature is " -"equal to or greater than it, it's highly recommended to open the front door " -"and/or remove the upper glass to avoid cloggings." +"The material softens at this temperature, so when the bed temperature is equal to or " +"greater than it, it's highly recommended to open the front door and/or remove the upper " +"glass to avoid cloggings." msgstr "" -"The material softens at this temperature, so when the bed temperature is " -"equal to or greater than this, it's highly recommended to open the front " -"door and/or remove the upper glass to avoid clogs." +"The material softens at this temperature, so when the bed temperature is equal to or " +"greater than this, it's highly recommended to open the front door and/or remove the upper " +"glass to avoid clogs." msgid "Price" msgstr "Prijs" @@ -10899,19 +10515,15 @@ msgstr "(niet gedefinieerd)" msgid "Sparse infill direction" msgstr "" -msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" +msgid "Angle for sparse infill pattern, which controls the start or main direction of line" msgstr "" -"Dit is de hoek voor een dun opvulpatroon, dat het begin of de hoofdrichting " -"van de lijnen bepaalt." +"Dit is de hoek voor een dun opvulpatroon, dat het begin of de hoofdrichting van de lijnen " +"bepaalt." msgid "Solid infill direction" msgstr "" -msgid "" -"Angle for solid infill pattern, which controls the start or main direction " -"of line" +msgid "Angle for solid infill pattern, which controls the start or main direction of line" msgstr "" msgid "Rotate solid infill direction" @@ -10925,8 +10537,8 @@ msgstr "Vulling percentage" #, no-c-format, no-boost-format msgid "" -"Density of internal sparse infill, 100% turns all sparse infill into solid " -"infill and internal solid infill pattern will be used" +"Density of internal sparse infill, 100% turns all sparse infill into solid infill and " +"internal solid infill pattern will be used" msgstr "" msgid "Sparse infill pattern" @@ -10972,16 +10584,14 @@ msgid "Sparse infill anchor length" msgstr "" msgid "" -"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. Orca Slicer 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. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a " -"single infill line." +"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. Orca Slicer 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. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a single infill " +"line." msgstr "" msgid "0 (no open anchors)" @@ -10994,16 +10604,14 @@ msgid "Maximum length of the infill anchor" msgstr "Maximale lengte van de vullingsbevestiging" msgid "" -"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. Orca Slicer 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. \n" -"If set to 0, the old algorithm for infill connection will be used, it should " -"create the same result as with 1000 & 0." +"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. Orca Slicer 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. \n" +"If set to 0, the old algorithm for infill connection will be used, it should create the " +"same result as with 1000 & 0." msgstr "" msgid "0 (Simple connect)" @@ -11019,44 +10627,38 @@ msgid "Acceleration of travel moves" msgstr "" msgid "" -"Acceleration of top surface infill. Using a lower value may improve top " -"surface quality" +"Acceleration of top surface infill. Using a lower value may improve top surface quality" msgstr "" -"Versnelling van de topoppervlakte-invulling. Gebruik van een lagere waarde " -"kan de kwaliteit van de bovenlaag verbeteren." +"Versnelling van de topoppervlakte-invulling. Gebruik van een lagere waarde kan de kwaliteit " +"van de bovenlaag verbeteren." msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "" -"Versnelling van de buitenwand: een lagere waarde kan de kwaliteit verbeteren." +msgstr "Versnelling van de buitenwand: een lagere waarde kan de kwaliteit verbeteren." msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. " -"50%), it will be calculated based on the outer wall acceleration." +"Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be " +"calculated based on the outer wall acceleration." msgstr "" msgid "mm/s² or %" msgstr "mm/s² or %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it " +"will be calculated based on the default acceleration." msgstr "" -"Versnelling van de schaarse invulling. Als de waarde wordt uitgedrukt als " -"een percentage (bijvoorbeeld 100%), wordt deze berekend op basis van de " -"standaardversnelling." +"Versnelling van de schaarse invulling. Als de waarde wordt uitgedrukt als een percentage " +"(bijvoorbeeld 100%), wordt deze berekend op basis van de standaardversnelling." msgid "" -"Acceleration of internal solid infill. If the value is expressed as a " -"percentage (e.g. 100%), it will be calculated based on the default " -"acceleration." +"Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. " +"100%), it will be calculated based on the default acceleration." msgstr "" -msgid "" -"Acceleration of initial layer. Using a lower value can improve build plate " -"adhesive" +msgid "Acceleration of initial layer. Using a lower value can improve build plate adhesive" msgstr "" -"Dit is de afdrukversnelling voor de eerste laag. Een beperkte versnelling " -"kan de hechting van de bouwplaat verbeteren." +"Dit is de afdrukversnelling voor de eerste laag. Een beperkte versnelling kan de hechting " +"van de bouwplaat verbeteren." msgid "Enable accel_to_decel" msgstr "Accel_to_decel inschakelen" @@ -11068,8 +10670,7 @@ msgid "accel_to_decel" msgstr "accel_to_decel" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" msgid "Jerk of outer walls" @@ -11091,30 +10692,28 @@ msgid "Jerk for travel" msgstr "" msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width of initial layer. If expressed as a %, it will be computed over the nozzle " +"diameter." msgstr "" msgid "Initial layer height" msgstr "Laaghoogte van de eerste laag" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly can improve build " +"plate adhesion" msgstr "" -"Dit is de hoogte van de eerste laag. Door de hoogte van de eerste laag hoger " -"te maken, kan de hechting op het printbed worden verbeterd." +"Dit is de hoogte van de eerste laag. Door de hoogte van de eerste laag hoger te maken, kan " +"de hechting op het printbed worden verbeterd." msgid "Speed of initial layer except the solid infill part" -msgstr "" -"Dit is de snelheid voor de eerste laag behalve solide vulling (infill) delen" +msgstr "Dit is de snelheid voor de eerste laag behalve solide vulling (infill) delen" msgid "Initial layer infill" msgstr "Vulling (infill) van de eerste laag" msgid "Speed of solid infill part of initial layer" -msgstr "" -"Dit is de snelheid voor de solide vulling (infill) delen van de eerste laag." +msgstr "Dit is de snelheid voor de solide vulling (infill) delen van de eerste laag." msgid "Initial layer travel speed" msgstr "" @@ -11126,26 +10725,23 @@ msgid "Number of slow layers" msgstr "" msgid "" -"The first few layers are printed slower than normal. The speed is gradually " -"increased in a linear fashion over the specified number of layers." +"The first few layers are printed slower than normal. The speed is gradually increased in a " +"linear fashion over the specified number of layers." msgstr "" msgid "Initial layer nozzle temperature" -msgstr "Nozzle temperatuur voor de eerste laag" +msgstr "Mondstuk temperatuur voor de eerste laag" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "" -"Nozzle temperatuur om de eerste laag mee te printen bij gebruik van dit " -"filament" +msgstr "Mondstuk temperatuur om de eerste laag mee te printen bij gebruik van dit filament" msgid "Full fan speed at layer" msgstr "Volledige snelheid op laag" msgid "" -"Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"Fan speed will be ramped up linearly from zero at layer \"close_fan_the_first_x_layers\" to " +"maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if " +"lower than \"close_fan_the_first_x_layers\", in which case the fan will be running at " "maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" @@ -11156,19 +10752,18 @@ msgid "Support interface fan speed" msgstr "" msgid "" -"This fan speed is enforced during all support interfaces, to be able to " -"weaken their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to weaken their " +"bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough " -"look. This setting controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough look. This setting " +"controls the fuzzy position" msgstr "" -"Deze instelling zorgt ervoor dat de toolhead willekeurig schudt tijdens het " -"printen van muren, zodat het oppervlak er ruw uitziet. Deze instelling " -"regelt de \"fuzzy\" positie." +"Deze instelling zorgt ervoor dat de toolhead willekeurig schudt tijdens het printen van " +"muren, zodat het oppervlak er ruw uitziet. Deze instelling regelt de \"fuzzy\" positie." msgid "Contour" msgstr "Contour" @@ -11182,22 +10777,18 @@ msgstr "Alle wanden" msgid "Fuzzy skin thickness" msgstr "Fuzzy skin dikte" -msgid "" -"The width within which to jitter. It's adversed to be below outer wall line " -"width" +msgid "The width within which to jitter. It's adversed to be below outer wall line width" msgstr "" -"De breedte van jittering: het is aan te raden deze lager te houden dan de " -"lijndikte van de buitenste wand." +"De breedte van jittering: het is aan te raden deze lager te houden dan de lijndikte van de " +"buitenste wand." msgid "Fuzzy skin point distance" msgstr "Fuzzy skin punt afstand" -msgid "" -"The average diatance between the random points introducded on each line " -"segment" +msgid "The average diatance between the random points introducded on each line segment" msgstr "" -"De gemiddelde afstand tussen de willekeurige punten die op ieder lijnsegment " -"zijn geïntroduceerd" +"De gemiddelde afstand tussen de willekeurige punten die op ieder lijnsegment zijn " +"geïntroduceerd" msgid "Apply fuzzy skin to first layer" msgstr "" @@ -11215,65 +10806,59 @@ msgid "Filter out gaps smaller than the threshold specified" msgstr "" msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be " -"printed more slowly" +"Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" msgstr "" -"Dit is de snelheid voor het opvullen van gaten. Tussenruimtes hebben meestal " -"een onregelmatige lijndikte en moeten daarom langzamer worden afgedrukt." +"Dit is de snelheid voor het opvullen van gaten. Tussenruimtes hebben meestal een " +"onregelmatige lijndikte en moeten daarom langzamer worden afgedrukt." msgid "Precise Z height" msgstr "Precise Z height" msgid "" -"Enable this to get precise z height of object after slicing. It will get the " -"precise object height by fine-tuning the layer heights of the last few " -"layers. Note that this is an experimental parameter." +"Enable this to get precise z height of object after slicing. It will get the precise object " +"height by fine-tuning the layer heights of the last few layers. Note that this is an " +"experimental parameter." msgstr "" -"Enable this to get precise z height of object after slicing. It will get the " -"precise object height by fine-tuning the layer heights of the last few " -"layers. Note that this is an experimental parameter." +"Enable this to get precise z height of object after slicing. It will get the precise object " +"height by fine-tuning the layer heights of the last few layers. Note that this is an " +"experimental parameter." msgid "Arc fitting" msgstr "Boog montage" msgid "" -"Enable this to get a G-code file which has G2 and G3 moves. The fitting " -"tolerance is same as the resolution. \n" +"Enable this to get a G-code file which has G2 and G3 moves. The fitting tolerance is same " +"as the resolution. \n" "\n" -"Note: For klipper machines, this option is recomended to be disabled. " -"Klipper does not benefit from arc commands as these are split again into " -"line segments by the firmware. This results in a reduction in surface " -"quality as line segments are converted to arcs by the slicer and then back " -"to line segments by the firmware." +"Note: For klipper machines, this option is recomended to be disabled. Klipper does not " +"benefit from arc commands as these are split again into line segments by the firmware. This " +"results in a reduction in surface quality as line segments are converted to arcs by the " +"slicer and then back to line segments by the firmware." msgstr "" msgid "Add line number" msgstr "Lijn hoogte toevoegen" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "" -"Schakel dit in om regelnummer (Nx) toe te voegen aan het begin van elke G-" -"coderegel." +msgstr "Schakel dit in om regelnummer (Nx) toe te voegen aan het begin van elke G-coderegel." msgid "Scan first layer" msgstr "Eerste laag scannen" -msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" +msgid "Enable this to enable the camera on printer to check the quality of first layer" msgstr "" -"Schakel dit in zodat de camera in de printer de kwaliteit van de eerste laag " -"kan controleren." +"Schakel dit in zodat de camera in de printer de kwaliteit van de eerste laag kan " +"controleren." msgid "Nozzle type" -msgstr "Nozzle type" +msgstr "Mondstuk type" msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of " -"nozzle, and what kind of filament can be printed" +"The metallic material of nozzle. This determines the abrasive resistance of nozzle, and " +"what kind of filament can be printed" msgstr "" -"Het type metaal van de nozzle. Dit bepaalt de slijtvastheid van de nozzle en " -"wat voor soort filament kan worden geprint" +"Het type metaal van het mondstuk. Dit bepaalt de slijtvastheid van het mondstuk en wat voor " +"soort filament kan worden geprint" msgid "Undefine" msgstr "Undefined" @@ -11288,14 +10873,12 @@ msgid "Brass" msgstr "Messing" msgid "Nozzle HRC" -msgstr "Nozzle HRC" +msgstr "Mondstuk HRC" -msgid "" -"The nozzle's hardness. Zero means no checking for nozzle's hardness during " -"slicing." +msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." msgstr "" -"De hardheid van de nozzle. Nul betekent geen controle op de hardheid van het " -"mondstuk tijdens het slicen." +"De hardheid van het mondstuk. Nul betekent geen controle op de hardheid van het mondstuk " +"tijdens het slicen." msgid "HRC" msgstr "HRC" @@ -11323,23 +10906,20 @@ msgstr "Beste objectpositie" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "" -"Beste automatisch schikkende positie in het bereik [0,1] met betrekking tot " -"de bedvorm." +"Beste automatisch schikkende positie in het bereik [0,1] met betrekking tot de bedvorm." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code command: M106 P2 " +"S(0-255)." msgstr "" msgid "" -"Start the fan this number of seconds earlier than its target start time (you " -"can use fractional seconds). It assumes infinite acceleration for this time " -"estimation, and will only take into account G1 and G0 moves (arc fitting is " -"unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of " -"'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start " -"gcode' is activated.\n" +"Start the fan this number of seconds earlier than its target start time (you can use " +"fractional seconds). It assumes infinite acceleration for this time estimation, and will " +"only take into account G1 and G0 moves (arc fitting is unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start gcode' is " +"activated.\n" "Use 0 to deactivate." msgstr "" @@ -11353,10 +10933,10 @@ msgid "Fan kick-start time" msgstr "" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to " -"target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the " -"fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to target speed to " +"kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the fan started " +"spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" @@ -11410,10 +10990,10 @@ msgid "Label objects" msgstr "Label objecten" msgid "" -"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." +"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." msgstr "" msgid "Exclude objects" @@ -11426,31 +11006,30 @@ msgid "Verbose G-code" msgstr "Opmerkingen in G-code" msgid "" -"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." +"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." msgstr "" -"Sta dit toe om een G-code met opmerkingen te genereren. Bij elk blok " -"commando's wordt een opmerking geplaatst. Als u print vanaf een SD-kaart, " -"kan de extra grootte van het bestand de firmware vertragen." +"Sta dit toe om een G-code met opmerkingen te genereren. Bij elk blok commando's wordt een " +"opmerking geplaatst. Als u print vanaf een SD-kaart, kan de extra grootte van het bestand " +"de firmware vertragen." msgid "Infill combination" msgstr "Vulling (infill) combinatie" msgid "" -"Automatically Combine sparse infill of several layers to print together to " -"reduce time. Wall is still printed with original layer height." +"Automatically Combine sparse infill of several layers to print together to reduce time. " +"Wall is still printed with original layer height." msgstr "" -"Combineer het printen van meerdere lagen vulling om te printtijd te " -"verlagen. De wanden worden geprint in de originele laaghoogte." +"Combineer het printen van meerdere lagen vulling om te printtijd te verlagen. De wanden " +"worden geprint in de originele laaghoogte." msgid "Filament to print internal sparse infill." -msgstr "" -"Dit is het filament voor het printen van interne dunne vulling (infill)" +msgstr "Dit is het filament voor het printen van interne dunne vulling (infill)" msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" msgid "Infill/Wall overlap" @@ -11458,10 +11037,9 @@ msgstr "Vulling (infill)/wand overlap" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill. Set this " -"value to ~10-15% to minimize potential over extrusion and accumulation of " -"material resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. The percentage " +"value is relative to line width of sparse infill. Set this value to ~10-15% to minimize " +"potential over extrusion and accumulation of material resulting in rough top surfaces." msgstr "" msgid "Top/Bottom solid infill/wall overlap" @@ -11469,11 +11047,10 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill " -"meets the walls. A value of 25-30% is a good starting point, minimising the " -"appearance of pinholes. The percentage value is relative to line width of " -"sparse infill" +"Top solid infill area is enlarged slightly to overlap with wall for better bonding and to " +"minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% " +"is a good starting point, minimising the appearance of pinholes. The percentage value is " +"relative to line width of sparse infill" msgstr "" msgid "Speed of internal sparse infill" @@ -11483,20 +11060,17 @@ msgid "Interface shells" msgstr "Interface shells" msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Force the generation of solid shells between adjacent materials/volumes. Useful for multi-" +"extruder prints with translucent materials or manual soluble support material" msgstr "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Force the generation of solid shells between adjacent materials/volumes. Useful for multi-" +"extruder prints with translucent materials or manual soluble support material" msgid "Maximum width of a segmented region" msgstr "Maximale breedte van een gesegmenteerd gebied" msgid "Maximum width of a segmented region. Zero disables this feature." -msgstr "" -"Maximum width of a segmented region. A value of 0 disables this feature." +msgstr "Maximum width of a segmented region. A value of 0 disables this feature." msgid "Interlocking depth of a segmented region" msgstr "Insluitdiepte van een gesegmenteerde regio" @@ -11512,9 +11086,8 @@ msgid "Use beam interlocking" msgstr "" msgid "" -"Generate interlocking beam structure at the locations where different " -"filaments touch. This improves the adhesion between filaments, especially " -"models printed in different materials." +"Generate interlocking beam structure at the locations where different filaments touch. This " +"improves the adhesion between filaments, especially models printed in different materials." msgstr "" msgid "Interlocking beam width" @@ -11533,36 +11106,36 @@ msgid "Interlocking beam layers" msgstr "" msgid "" -"The height of the beams of the interlocking structure, measured in number of " -"layers. Less layers is stronger, but more prone to defects." +"The height of the beams of the interlocking structure, measured in number of layers. Less " +"layers is stronger, but more prone to defects." msgstr "" msgid "Interlocking depth" msgstr "" msgid "" -"The distance from the boundary between filaments to generate interlocking " -"structure, measured in cells. Too few cells will result in poor adhesion." +"The distance from the boundary between filaments to generate interlocking structure, " +"measured in cells. Too few cells will result in poor adhesion." msgstr "" msgid "Interlocking boundary avoidance" msgstr "" msgid "" -"The distance from the outside of a model where interlocking structures will " -"not be generated, measured in cells." +"The distance from the outside of a model where interlocking structures will not be " +"generated, measured in cells." msgstr "" msgid "Ironing Type" msgstr "Strijk type" msgid "" -"Ironing is using small flow to print on same height of surface again to make " -"flat surface more smooth. This setting controls which layer being ironed" +"Ironing is using small flow to print on same height of surface again to make flat surface " +"more smooth. This setting controls which layer being ironed" msgstr "" -"Strijken gebruikt een lage flow om op dezelfde hoogte van een oppervlak te " -"printen om platte oppervlakken gladder te maken. Deze instelling bepaalt op " -"welke lagen het strijken wordt toegepast." +"Strijken gebruikt een lage flow om op dezelfde hoogte van een oppervlak te printen om " +"platte oppervlakken gladder te maken. Deze instelling bepaalt op welke lagen het strijken " +"wordt toegepast." msgid "No ironing" msgstr "Niet strijken" @@ -11586,19 +11159,18 @@ msgid "Ironing flow" msgstr "Flow tijdens strijken" msgid "" -"The amount of material to extrude during ironing. Relative to flow of normal " -"layer height. Too high value results in overextrusion on the surface" +"The amount of material to extrude during ironing. Relative to flow of normal layer height. " +"Too high value results in overextrusion on the surface" msgstr "" -"Dit is de hoeveelheid materiaal die dient te worden geëxtrudeerd tijdens het " -"strijken. Het is relatief ten opzichte van de flow van normale laaghoogte. " -"Een te hoge waarde zal resulteren in overextrusie op het oppervlak." +"Dit is de hoeveelheid materiaal die dient te worden geëxtrudeerd tijdens het strijken. Het " +"is relatief ten opzichte van de flow van normale laaghoogte. Een te hoge waarde zal " +"resulteren in overextrusie op het oppervlak." msgid "Ironing line spacing" msgstr "Afstand tussen de strijklijnen" msgid "The distance between the lines of ironing" -msgstr "" -"Dit is de afstand voor de lijnen die gebruikt worden voor het strijken." +msgstr "Dit is de afstand voor de lijnen die gebruikt worden voor het strijken." msgid "Ironing speed" msgstr "Snelheid tijdens het strijken" @@ -11610,23 +11182,21 @@ msgid "Ironing angle" msgstr "" msgid "" -"The angle ironing is done at. A negative number disables this function and " -"uses the default method." +"The angle ironing is done at. A negative number disables this function and uses the default " +"method." msgstr "" msgid "This gcode part is inserted at every layer change after lift z" -msgstr "" -"De G-code wordt bij iedere laagwisseling toegevoegd na het optillen van Z" +msgstr "De G-code wordt bij iedere laagwisseling toegevoegd na het optillen van Z" msgid "Supports silent mode" msgstr "Stille modus" msgid "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" +"Whether the machine supports silent mode in which machine use lower acceleration to print" msgstr "" -"Dit geeft aan of de machine de stille modus ondersteunt waarin de machine " -"een lagere versnelling gebruikt om te printen" +"Dit geeft aan of de machine de stille modus ondersteunt waarin de machine een lagere " +"versnelling gebruikt om te printen" msgid "Emit limits to G-code" msgstr "" @@ -11640,11 +11210,11 @@ msgid "" msgstr "" msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert pause G-code in " +"gcode viewer" msgstr "" -"Deze G-code wordt gebruikt als code voor de pauze. Gebruikers kunnen een " -"pauze-G-code invoegen in de G-code-viewer." +"Deze G-code wordt gebruikt als code voor de pauze. Gebruikers kunnen een pauze-G-code " +"invoegen in de G-code-viewer." msgid "This G-code will be used as a custom code" msgstr "Deze G-code wordt gebruikt als een aangepaste code" @@ -11659,10 +11229,9 @@ msgid "Flow Compensation Model" msgstr "" msgid "" -"Flow Compensation Model, used to adjust the flow for small infill areas. The " -"model is expressed as a comma separated pair of values for extrusion length " -"and flow correction factors, one per line, in the following format: " -"\"1.234,5.678\"" +"Flow Compensation Model, used to adjust the flow for small infill areas. The model is " +"expressed as a comma separated pair of values for extrusion length and flow correction " +"factors, one per line, in the following format: \"1.234,5.678\"" msgstr "" msgid "Maximum speed X" @@ -11768,49 +11337,46 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum " +"speed limitation of part cooling fan" msgstr "" -"De snelheid van de ventilator op de printkop kan verhoogd worden als " -"automatisch koelen is ingeschakeld. Dit is de maximale snelheidslimiet van " -"de printkop ventilator" +"De snelheid van de ventilator op de printkop kan verhoogd worden als automatisch koelen is " +"ingeschakeld. Dit is de maximale snelheidslimiet van de printkop ventilator" msgid "Max" msgstr "Maximum" msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum " -"layer hight when enable adaptive layer height" +"The largest printable layer height for extruder. Used tp limits the maximum layer hight " +"when enable adaptive layer height" msgstr "" -"De hoogste printbare laaghoogte voor de extruder: dit wordt gebruikt om de " -"maximale laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." +"De hoogste printbare laaghoogte voor de extruder: dit wordt gebruikt om de maximale " +"laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." msgid "Extrusion rate smoothing" msgstr "" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " -"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " -"versa.\n" +"This parameter smooths out sudden extrusion rate changes that happen when the printer " +"transitions from printing a high flow (high speed/larger width) extrusion to a lower flow " +"(lower speed/smaller width) extrusion and vice versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " -"can change over time. Higher values mean higher extrusion rate changes are " -"allowed, resulting in faster speed transitions.\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec can change " +"over time. Higher values mean higher extrusion rate changes are allowed, resulting in " +"faster speed transitions.\n" "\n" "A value of 0 disables the feature. \n" "\n" -"For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some " -"marginal benefit in certain cases where feature speeds vary greatly. For " -"example, when there are aggressive slowdowns due to overhangs. In these " -"cases a high value of around 300-350mm3/s2 is recommended as this allows for " -"just enough smoothing to assist pressure advance achieve a smoother flow " +"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) this value " +"is usually not needed. However it can provide some marginal benefit in certain cases where " +"feature speeds vary greatly. For example, when there are aggressive slowdowns due to " +"overhangs. In these cases a high value of around 300-350mm3/s2 is recommended as this " +"allows for just enough smoothing to assist pressure advance achieve a smoother flow " "transition.\n" "\n" -"For slower printers without pressure advance, the value should be set much " -"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " -"extruders and 5-10mm3/s2 for Bowden style. \n" +"For slower printers without pressure advance, the value should be set much lower. A value " +"of 10-15mm3/s2 is a good starting point for direct drive extruders and 5-10mm3/s2 for " +"Bowden style. \n" "\n" "This feature is known as Pressure Equalizer in Prusa slicer.\n" "\n" @@ -11824,12 +11390,11 @@ msgid "Smoothing segment length" msgstr "" msgid "" -"A lower value results in smoother extrusion rate transitions. However, this " -"results in a significantly larger gcode file and more instructions for the " -"printer to process. \n" +"A lower value results in smoother extrusion rate transitions. However, this results in a " +"significantly larger gcode file and more instructions for the printer to process. \n" "\n" -"Default value of 3 works well for most cases. If your printer is stuttering, " -"increase this value to reduce the number of adjustments made\n" +"Default value of 3 works well for most cases. If your printer is stuttering, increase this " +"value to reduce the number of adjustments made\n" "\n" "Allowed values: 1-5" msgstr "" @@ -11838,145 +11403,131 @@ msgid "Minimum speed for part cooling fan" msgstr "Minimale snelheid voor de printkop ventilator" msgid "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -"during printing except the first several layers which is defined by no " -"cooling layers.\n" -"Please enable auxiliary_fan in printer settings to use this feature. G-code " -"command: M106 P2 S(0-255)" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing " +"except the first several layers which is defined by no cooling layers.\n" +"Please enable auxiliary_fan in printer settings to use this feature. G-code command: M106 " +"P2 S(0-255)" msgstr "" msgid "Min" msgstr "Minimaal" msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum " -"layer hight when enable adaptive layer height" +"The lowest printable layer height for extruder. Used tp limits the minimum layer hight when " +"enable adaptive layer height" msgstr "" -"De laagste printbare laaghoogte voor de extruder: dit wordt gebruikt om de " -"minimale laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." +"De laagste printbare laaghoogte voor de extruder: dit wordt gebruikt om de minimale " +"laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." msgid "Min print speed" msgstr "Minimale print snelheid" msgid "" -"The minimum printing speed that the printer will slow down to to attempt to " -"maintain the minimum layer time above, when slow down for better layer " -"cooling is enabled." +"The minimum printing speed that the printer will slow down to to attempt to maintain the " +"minimum layer time above, when slow down for better layer cooling is enabled." msgstr "" msgid "Diameter of nozzle" -msgstr "Diameter van de nozzle" +msgstr "Diameter van het mondstuk" msgid "Configuration notes" msgstr "Configuratie-opmerkingen" msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." +"You can put here your personal notes. This text will be added to the G-code header comments." msgstr "" -"Hier kunt u eigen opmerkingen plaatsen. Deze tekst wordt bovenin de G-code " -"toegevoegd." +"Hier kunt u eigen opmerkingen plaatsen. Deze tekst wordt bovenin de G-code toegevoegd." msgid "Host Type" msgstr "Hosttype" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must " -"contain the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must contain the kind of " +"the host." msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " -"het type host bevatten." +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet het type host " +"bevatten." msgid "Nozzle volume" -msgstr "Nozzle volume" +msgstr "Mondstuk volume" msgid "Volume of nozzle between the cutter and the end of nozzle" -msgstr "" -"Volume van de nozzle tussen de filamentsnijder en het uiteinde van de nozzle" +msgstr "Volume van het mondstuk tussen de filamentsnijder en het uiteinde van het mondstuk" msgid "Cooling tube position" msgstr "Koelbuispositie" msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "Afstand vanaf de nozzle tot het middelpunt van de koelbuis." +msgstr "Afstand vanaf het mondstuk tot het middelpunt van de koelbuis." msgid "Cooling tube length" msgstr "Koelbuislengte" msgid "Length of the cooling tube to limit space for cooling moves inside it." -msgstr "" -"Lengte van de koelbuis om de ruimte voor koelbewegingen daarin te beperken." +msgstr "Lengte van de koelbuis om de ruimte voor koelbewegingen daarin te beperken." msgid "High extruder current on filament swap" msgstr "Hoge stroomsterkte bij extruder voor filamentwissel" msgid "" -"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." +"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." msgstr "" -"Het kan nuttig zijn om de stroomsterkte van de extrudermotor te verhogen " -"tijdens het uitvoeren van de filamentwisseling om snelle ramming mogelijk te " -"maken en om weerstand te overwinnen tijdens het laden van filament met een " -"misvormde kop." +"Het kan nuttig zijn om de stroomsterkte van de extrudermotor te verhogen tijdens het " +"uitvoeren van de filamentwisseling om snelle ramming mogelijk te maken en om weerstand te " +"overwinnen tijdens het laden van filament met een misvormde kop." msgid "Filament parking position" msgstr "Filament parkeerpositie" msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware." +"Distance of the extruder tip from the position where the filament is parked when unloaded. " +"This should match the value in printer firmware." msgstr "" -"Afstand van de nozzlepunt tot de positie waar het filament wordt geparkeerd " -"wanneer dat niet geladen is. Deze moet overeenkomen met de waarde in de " -"firmware." +"Afstand van de punt van het mondstuk tot de positie waar het filament wordt geparkeerd " +"wanneer dat niet geladen is. Deze moet overeenkomen met de waarde in de firmware." msgid "Extra loading distance" msgstr "Extra laadafstand" msgid "" -"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." +"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." msgstr "" -"Als dit ingesteld is op 0, zal de afstand die het filament tijdens het laden " -"uit de parkeerpositie even groot zijn als wanneer het filament " -"teruggetrokken wordt. Als de waarde positief is, zal het verder geladen " -"worden. Als het negatief is, is de laadafstand dus korter." +"Als dit ingesteld is op 0, zal de afstand die het filament tijdens het laden uit de " +"parkeerpositie even groot zijn als wanneer het filament teruggetrokken wordt. Als de waarde " +"positief is, zal het verder geladen worden. Als het negatief is, is de laadafstand dus " +"korter." msgid "Start end points" msgstr "Start end points" msgid "The start and end points which is from cutter area to garbage can." -msgstr "" -"Het begin- en eindpunt dat zich van het snijoppervlak naar de afvoer chute " -"bevindt." +msgstr "Het begin- en eindpunt dat zich van het snijoppervlak naar de afvoer chute bevindt." msgid "Reduce infill retraction" msgstr "Reduceer terugtrekken (retraction) bij vulling (infill)" msgid "" -"Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex " -"model and save printing time, but make slicing and G-code generating slower" +"Don't retract when the travel is in infill area absolutely. That means the oozing can't " +"been seen. This can reduce times of retraction for complex model and save printing time, " +"but make slicing and G-code generating slower" msgstr "" -"Trek niet terug als de beweging zich volledig in een opvulgebied bevindt. " -"Dat betekent dat het sijpelen niet zichtbaar is. Dit kan de retraction times " -"voor complexe modellen verkorten en printtijd besparen, maar het segmenteren " -"en het genereren van G-codes langzamer maken." +"Trek niet terug als de beweging zich volledig in een opvulgebied bevindt. Dat betekent dat " +"het sijpelen niet zichtbaar is. Dit kan de retraction times voor complexe modellen " +"verkorten en printtijd besparen, maar het segmenteren en het genereren van G-codes " +"langzamer maken." -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing." +msgid "This option will drop the temperature of the inactive extruders to prevent oozing." msgstr "" msgid "Filename format" msgstr "Bestandsnaam formaat" msgid "User can self-define the project file name when export" -msgstr "" -"Gebruikers kunnen zelf de project bestandsnaam kiezen tijdens het exporteren" +msgstr "Gebruikers kunnen zelf de project bestandsnaam kiezen tijdens het exporteren" msgid "Make overhangs printable" msgstr "" @@ -11988,17 +11539,17 @@ msgid "Make overhangs printable - Maximum angle" msgstr "" msgid "" -"Maximum angle of overhangs to allow after making more steep overhangs " -"printable.90° will not change the model at all and allow any overhang, while " -"0 will replace all overhangs with conical material." +"Maximum angle of overhangs to allow after making more steep overhangs printable.90° will " +"not change the model at all and allow any overhang, while 0 will replace all overhangs with " +"conical material." msgstr "" msgid "Make overhangs printable - Hole area" msgstr "" msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by conical material.A " +"value of 0 will fill all the holes in the model base." msgstr "" msgid "mm²" @@ -12009,19 +11560,18 @@ msgstr "Overhange wand detecteren" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different speed to print. For " +"100%% overhang, bridge speed is used." msgstr "" -"Dit maakt het mogelijk om het overhangpercentage ten opzichte van de " -"lijnbreedte te detecteren en gebruikt verschillende snelheden om af te " -"drukken. Voor 100%% overhang wordt de brugsnelheid gebruikt." +"Dit maakt het mogelijk om het overhangpercentage ten opzichte van de lijnbreedte te " +"detecteren en gebruikt verschillende snelheden om af te drukken. Voor 100%% overhang wordt " +"de brugsnelheid gebruikt." msgid "Filament to print walls" msgstr "" msgid "" -"Line width of inner wall. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter." msgstr "" msgid "Speed of inner wall" @@ -12034,22 +11584,21 @@ msgid "Alternate extra wall" msgstr "" msgid "" -"This setting adds an extra wall to every other layer. This way the infill " -"gets wedged vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill gets wedged " +"vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option " -"needs to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option needs to be " +"disabled. \n" "\n" -"Using lightning infill together with this option is not recommended as there " -"is limited infill to anchor the extra perimeters to." +"Using lightning infill together with this option is not recommended as there is limited " +"infill to anchor the extra perimeters to." msgstr "" msgid "" -"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 Orca Slicer config settings by reading " -"environment variables." +"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 Orca Slicer config " +"settings by reading environment variables." msgstr "" msgid "Printer type" @@ -12072,8 +11621,8 @@ msgstr "Vlot (raft) contact Z afstand:" msgid "Z gap between object and raft. Ignored for soluble interface" msgstr "" -"Dit is de Z-afstand tussen een object en een raft. Het wordt genegeerd voor " -"oplosbare materialen." +"Dit is de Z-afstand tussen een object en een raft. Het wordt genegeerd voor oplosbare " +"materialen." msgid "Raft expansion" msgstr "Vlot (raft) expansie" @@ -12092,123 +11641,111 @@ msgstr "Vergroten van de eerste laag" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" -"Dit zet de eerste raft- of steun (support) laag uit om de hechting van het " -"bed te verbeteren." +"Dit zet de eerste raft- of steun (support) laag uit om de hechting van het bed te " +"verbeteren." msgid "Raft layers" msgstr "Vlot (raft) lagen" msgid "" -"Object will be raised by this number of support layers. Use this function to " -"avoid wrapping when print ABS" +"Object will be raised by this number of support layers. Use this function to avoid wrapping " +"when print ABS" msgstr "" -"Het object wordt verhoogd met dit aantal support lagen. Gebruik deze functie " -"om kromtrekken te voorkomen bij het afdrukken met ABS." +"Het object wordt verhoogd met dit aantal support lagen. Gebruik deze functie om kromtrekken " +"te voorkomen bij het afdrukken met ABS." msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too " -"much points and gcode lines in gcode file. Smaller value means higher " -"resolution and more time to slice" +"G-code path is genereated after simplifing the contour of model to avoid too much points " +"and gcode lines in gcode file. Smaller value means higher resolution and more time to slice" msgstr "" -"Het G-codepad wordt gegenereerd na het vereenvoudigen van de contouren van " -"modellen om teveel punten en G-codelijnen te vermijden. Kleinere waarden " -"betekenen een hogere resolutie en meer tijd die nodig is om het ontwerpen te " -"slicen." +"Het G-codepad wordt gegenereerd na het vereenvoudigen van de contouren van modellen om " +"teveel punten en G-codelijnen te vermijden. Kleinere waarden betekenen een hogere resolutie " +"en meer tijd die nodig is om het ontwerpen te slicen." msgid "Travel distance threshold" msgstr "Drempel voor verplaatsingsafstand" -msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +msgid "Only trigger retraction when the travel distance is longer than this threshold" msgstr "" -"Activeer het terugtrekken (retraction) alleen als de verplaatsingsafstand " -"groter is dan deze drempel." +"Activeer het terugtrekken (retraction) alleen als de verplaatsingsafstand groter is dan " +"deze drempel." msgid "Retract amount before wipe" msgstr "Terugtrek (retract) hoeveelheid voor schoonvegen" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" +msgid "The length of fast retraction before wipe, relative to retraction length" msgstr "" -"Dit is de lengte van snel intrekken (retraction) vóór een wipe, in " -"verhouding tot de retraction lengte." +"Dit is de lengte van snel intrekken (retraction) vóór een wipe, in verhouding tot de " +"retraction lengte." msgid "Retract when change layer" msgstr "Terugtrekken (retract) bij wisselen van laag" msgid "Force a retraction when changes layer" -msgstr "" -"Dit forceert retraction (terugtrekken van filament) als er gewisseld wordt " -"van laag" +msgstr "Dit forceert retraction (terugtrekken van filament) als er gewisseld wordt van laag" msgid "Retraction Length" msgstr "Terugtrek (retraction) lengte" msgid "" -"Some amount of material in extruder is pulled back to avoid ooze during long " -"travel. Set zero to disable retraction" +"Some amount of material in extruder is pulled back to avoid ooze during long travel. Set " +"zero to disable retraction" msgstr "" -"Een deel van het materiaal in de extruder wordt teruggetrokken om sijpelen " -"tijdens verplaatsingen over lange afstand te voorkomen. Stel in op 0 om " -"terugtrekken (retraction) uit te schakelen." +"Een deel van het materiaal in de extruder wordt teruggetrokken om sijpelen tijdens " +"verplaatsingen over lange afstand te voorkomen. Stel in op 0 om terugtrekken (retraction) " +"uit te schakelen." msgid "Long retraction when cut(experimental)" msgstr "Long retraction when cut (experimental)" msgid "" -"Experimental feature.Retracting and cutting off the filament at a longer " -"distance during changes to minimize purge.While this reduces flush " -"significantly, it may also raise the risk of nozzle clogs or other printing " -"problems." +"Experimental feature.Retracting and cutting off the filament at a longer distance during " +"changes to minimize purge.While this reduces flush significantly, it may also raise the " +"risk of nozzle clogs or other printing problems." msgstr "" -"Experimental feature: Retracting and cutting off the filament at a longer " -"distance during changes to minimize purge.While this reduces flush " -"significantly, it may also raise the risk of nozzle clogs or other printing " -"problems." +"Experimentele functie: Het filament wordt tijdens het wisselen over een grotere afstand " +"teruggetrokken en afgesneden om de spoeling tot een minimum te beperken. Dit vermindert de " +"spoeling aanzienlijk, maar vergroot mogelijk ook het risico op verstoppingen in het " +"mondstuk of andere printproblemen." msgid "Retraction distance when cut" msgstr "Retraction distance when cut" -msgid "" -"Experimental feature.Retraction length before cutting off during filament " -"change" -msgstr "" -"Experimental feature. Retraction length before cutting off during filament " -"change" +msgid "Experimental feature.Retraction length before cutting off during filament change" +msgstr "Experimental feature. Retraction length before cutting off during filament change" msgid "Z hop when retract" msgstr "Z hop tijdens terugtrekken (retraction)" msgid "" -"Whenever the retraction is done, the nozzle is lifted a little to create " -"clearance between nozzle and the print. It prevents nozzle from hitting the " -"print when travel move. Using spiral line to lift z can prevent stringing" +"Whenever the retraction is done, the nozzle is lifted a little to create clearance between " +"nozzle and the print. It prevents nozzle from hitting the print when travel move. Using " +"spiral line to lift z can prevent stringing" msgstr "" -"Wanneer er een terugtrekking (retracction) is, wordt de nozzle een beetje " -"opgetild om ruimte te creëren tussen de nozzle en de print. Dit voorkomt dat " -"de nozzle de print raakt bij veplaatsen. Het gebruik van spiraallijnen om Z " -"op te tillen kan stringing voorkomen." +"Wanneer er een terugtrekking (retraction) is, wordt het mondstuk een beetje opgetild om " +"ruimte te creëren tussen het mondstuk en de print. Dit voorkomt dat het mondstuk de print " +"raakt bij verplaatsen. Het gebruik van spiraallijnen om Z op te tillen kan stringing " +"voorkomen." msgid "Z hop lower boundary" msgstr "Z hop ondergrens" msgid "" -"Z hop will only come into effect when Z is above this value and is below the " -"parameter: \"Z hop upper boundary\"" +"Z hop will only come into effect when Z is above this value and is below the parameter: \"Z " +"hop upper boundary\"" msgstr "" -"Z hop treedt alleen in werking wanneer Z boven deze waarde ligt en onder de " -"parameter: \"Z hop bovengrens\"." +"Z hop treedt alleen in werking wanneer Z boven deze waarde ligt en onder de parameter: \"Z " +"hop bovengrens\"." msgid "Z hop upper boundary" msgstr "Z hop bovengrens" msgid "" -"If this value is positive, Z hop will only come into effect when Z is above " -"the parameter: \"Z hop lower boundary\" and is below this value" +"If this value is positive, Z hop will only come into effect when Z is above the parameter: " +"\"Z hop lower boundary\" and is below this value" msgstr "" -"Als deze waarde positief is, treedt Z hop alleen in werking als Z boven de " -"parameter ligt: \"Z hop ondergrens\" en onder deze waarde ligt" +"Als deze waarde positief is, treedt Z hop alleen in werking als Z boven de parameter ligt: " +"\"Z hop ondergrens\" en onder deze waarde ligt" msgid "Z hop type" msgstr "" @@ -12223,32 +11760,31 @@ msgid "Traveling angle" msgstr "" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " -"in Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in Normal Lift" msgstr "" msgid "Only lift Z above" msgstr "Beweeg Z alleen omhoog boven" msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z." +"If you set this to a positive value, Z lift will only take place above the specified " +"absolute Z." msgstr "" msgid "Only lift Z below" msgstr "Beweeg Z alleen omhoog onder" msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z." +"If you set this to a positive value, Z lift will only take place below the specified " +"absolute Z." msgstr "" msgid "On surfaces" msgstr "" msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " -"lift Z above/below)." +"Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift Z above/" +"below)." msgstr "" msgid "All Surfaces" @@ -12267,18 +11803,18 @@ msgid "Extra length on restart" msgstr "Extra lengte bij herstart" msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." +"When the retraction is compensated after the travel move, the extruder will push this " +"additional amount of filament. This setting is rarely needed." msgstr "" -"Als retracten wordt gecompenseerd na een beweging, wordt deze extra " -"hoeveelheid filament geëxtrudeerd. Deze instelling is zelden van toepassing." +"Als retracten wordt gecompenseerd na een beweging, wordt deze extra hoeveelheid filament " +"geëxtrudeerd. Deze instelling is zelden van toepassing." msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will push this " +"additional amount of filament." msgstr "" -"Als retracten wordt gecompenseerd na een toolwisseling, wordt deze extra " -"hoeveelheid filament geëxtrudeerd." +"Als retracten wordt gecompenseerd na een toolwisseling, wordt deze extra hoeveelheid " +"filament geëxtrudeerd." msgid "Retraction Speed" msgstr "Terugtrek (retraction) snelheid" @@ -12289,20 +11825,18 @@ msgstr "Dit is de snelheid voor terugtrekken (retraction)" msgid "Deretraction Speed" msgstr "Snelheid van terugtrekken (deretraction)" -msgid "" -"Speed for reloading filament into extruder. Zero means same speed with " -"retraction" +msgid "Speed for reloading filament into extruder. Zero means same speed with retraction" msgstr "" -"De snelheid voor het herladen van filament in de extruder na een " -"terugtrekking (retraction); als u dit op 0 zet, betekent dit dat het " -"dezelfde snelheid heeft als het intrekken (retraction)." +"De snelheid voor het herladen van filament in de extruder na een terugtrekking " +"(retraction); als u dit op 0 zet, betekent dit dat het dezelfde snelheid heeft als het " +"intrekken (retraction)." msgid "Use firmware retraction" msgstr "Gebruik firmware retractie" msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." +"This experimental setting uses G10 and G11 commands to have the firmware handle the " +"retraction. This is only supported in recent Marlin." msgstr "" msgid "Show auto-calibration marks" @@ -12311,8 +11845,7 @@ msgstr "" msgid "Disable set remaining print time" msgstr "" -msgid "" -"Disable generating of the M73: Set remaining print time in the final gcode" +msgid "Disable generating of the M73: Set remaining print time in the final gcode" msgstr "" msgid "Seam position" @@ -12337,46 +11870,43 @@ msgid "Staggered inner seams" msgstr "" msgid "" -"This option causes the inner seams to be shifted backwards based on their " -"depth, forming a zigzag pattern." +"This option causes the inner seams to be shifted backwards based on their depth, forming a " +"zigzag pattern." msgstr "" msgid "Seam gap" msgstr "Naadopening" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the loop is " +"interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current extruder " +"diameter. The default value for this parameter is 10%." msgstr "" msgid "Scarf joint seam (beta)" msgstr "" msgid "Use scarf joint to minimize seam visibility and increase seam strength." -msgstr "" -"Use scarf joint to minimize seam visibility and increase seam strength." +msgstr "Use scarf joint to minimize seam visibility and increase seam strength." msgid "Conditional scarf joint" msgstr "Conditional scarf joint" msgid "" -"Apply scarf joints only to smooth perimeters where traditional seams do not " -"conceal the seams at sharp corners effectively." +"Apply scarf joints only to smooth perimeters where traditional seams do not conceal the " +"seams at sharp corners effectively." msgstr "" -"Apply scarf joints only to smooth perimeters where traditional seams do not " -"conceal the seams at sharp corners effectively." +"Apply scarf joints only to smooth perimeters where traditional seams do not conceal the " +"seams at sharp corners effectively." msgid "Conditional angle threshold" msgstr "Conditional angle threshold" msgid "" -"This option sets the threshold angle for applying a conditional scarf joint " -"seam.\n" -"If the maximum angle within the perimeter loop exceeds this value " -"(indicating the absence of sharp corners), a scarf joint seam will be used. " -"The default value is 155°." +"This option sets the threshold angle for applying a conditional scarf joint seam.\n" +"If the maximum angle within the perimeter loop exceeds this value (indicating the absence " +"of sharp corners), a scarf joint seam will be used. The default value is 155°." msgstr "" msgid "Conditional overhang threshold" @@ -12384,25 +11914,23 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"This option determines the overhang threshold for the application of scarf " -"joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set " -"at 40% of the external wall's width. Due to performance considerations, the " -"degree of overhang is estimated." +"This option determines the overhang threshold for the application of scarf joint seams. If " +"the unsupported portion of the perimeter is less than this threshold, scarf joint seams " +"will be applied. The default threshold is set at 40% of the external wall's width. Due to " +"performance considerations, the degree of overhang is estimated." msgstr "" msgid "Scarf joint speed" msgstr "" msgid "" -"This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also " -"advisable to enable 'Extrusion rate smoothing' if the set speed varies " -"significantly from the speed of the outer or inner walls. If the speed " -"specified here is higher than the speed of the outer or inner walls, the " -"printer will default to the slower of the two speeds. When specified as a " -"percentage (e.g., 80%), the speed is calculated based on the respective " -"outer or inner wall speed. The default value is set to 100%." +"This option sets the printing speed for scarf joints. It is recommended to print scarf " +"joints at a slow speed (less than 100 mm/s). It's also advisable to enable 'Extrusion rate " +"smoothing' if the set speed varies significantly from the speed of the outer or inner " +"walls. If the speed specified here is higher than the speed of the outer or inner walls, " +"the printer will default to the slower of the two speeds. When specified as a percentage (e." +"g., 80%), the speed is calculated based on the respective outer or inner wall speed. The " +"default value is set to 100%." msgstr "" msgid "Scarf joint flow ratio" @@ -12416,12 +11944,12 @@ msgstr "Scarf start height" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the current layer height. " +"The default value for this parameter is 0." msgstr "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the current layer height. " +"The default value for this parameter is 0." msgid "Scarf around entire wall" msgstr "Scarf around entire wall" @@ -12432,12 +11960,8 @@ msgstr "The scarf extends to the entire length of the wall." msgid "Scarf length" msgstr "Scarf length" -msgid "" -"Length of the scarf. Setting this parameter to zero effectively disables the " -"scarf." -msgstr "" -"Length of the scarf. Setting this parameter to zero effectively disables the " -"scarf." +msgid "Length of the scarf. Setting this parameter to zero effectively disables the scarf." +msgstr "Length of the scarf. Setting this parameter to zero effectively disables the scarf." msgid "Scarf steps" msgstr "Scarf steps" @@ -12455,47 +11979,45 @@ msgid "Role base wipe speed" msgstr "" msgid "" -"The wipe speed is determined by the speed of the current extrusion role.e.g. " -"if a wipe action is executed immediately following an outer wall extrusion, " -"the speed of the outer wall extrusion will be utilized for the wipe action." +"The wipe speed is determined by the speed of the current extrusion role.e.g. if a wipe " +"action is executed immediately following an outer wall extrusion, the speed of the outer " +"wall extrusion will be utilized for the wipe action." msgstr "" msgid "Wipe on loops" msgstr "" msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small " -"inward movement is executed before the extruder leaves the loop." +"To minimize the visibility of the seam in a closed loop extrusion, a small inward movement " +"is executed before the extruder leaves the loop." msgstr "" msgid "Wipe before external loop" msgstr "" msgid "" -"To minimise visibility of potential overextrusion at the start of an " -"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order, the deretraction is performed slightly on the inside from the " -"start of the external perimeter. That way any potential over extrusion is " -"hidden from the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an external perimeter " +"when printing with Outer/Inner or Inner/Outer/Inner wall print order, the deretraction is " +"performed slightly on the inside from the start of the external perimeter. That way any " +"potential over extrusion is hidden from the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order as in these modes it is more likely an external perimeter is " -"printed immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order as in " +"these modes it is more likely an external perimeter is printed immediately after a " +"deretraction move." msgstr "" msgid "Wipe speed" msgstr "Veegsnelheid" msgid "" -"The wipe speed is determined by the speed setting specified in this " -"configuration.If the value is expressed as a percentage (e.g. 80%), it will " -"be calculated based on the travel speed setting above.The default value for " -"this parameter is 80%" +"The wipe speed is determined by the speed setting specified in this configuration.If the " +"value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel " +"speed setting above.The default value for this parameter is 80%" msgstr "" -"De veegsnelheid wordt bepaald door de snelheidsinstelling die in deze " -"configuratie is opgegeven.Als de waarde wordt uitgedrukt als percentage " -"(bijv. 80%), wordt deze berekend op basis van de bovenstaande instelling van " -"de rijsnelheid.De standaardwaarde voor deze parameter is 80%." +"De veegsnelheid wordt bepaald door de snelheidsinstelling die in deze configuratie is " +"opgegeven.Als de waarde wordt uitgedrukt als percentage (bijv. 80%), wordt deze berekend op " +"basis van de bovenstaande instelling van de rijsnelheid.De standaardwaarde voor deze " +"parameter is 80%." msgid "Skirt distance" msgstr "Rand (skirt) afstand" @@ -12513,17 +12035,17 @@ msgid "Draft shield" msgstr "Tochtscherm" msgid "" -"A draft shield is useful to protect an ABS or ASA print from warping and " -"detaching from print bed due to wind draft. It is usually needed only with " -"open frame printers, i.e. without an enclosure. \n" +"A draft shield is useful to protect an ABS or ASA print from warping and detaching from " +"print bed due to wind draft. It is usually needed only with open frame printers, i.e. " +"without an enclosure. \n" "\n" "Options:\n" "Enabled = skirt is as tall as the highest printed object.\n" "Limited = skirt is as tall as specified by skirt height.\n" "\n" -"Note: With the draft shield active, the skirt will be printed at skirt " -"distance from the object. Therefore, if brims are active it may intersect " -"with them. To avoid this, increase the skirt distance value.\n" +"Note: With the draft shield active, the skirt will be printed at skirt distance from the " +"object. Therefore, if brims are active it may intersect with them. To avoid this, increase " +"the skirt distance value.\n" msgstr "" msgid "Limited" @@ -12536,9 +12058,7 @@ msgid "Skirt loops" msgstr "Rand (skirt) lussen" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "" -"Dit is het aantal lussen voor de skirt. 0 betekent dat de skirt is " -"uitgeschakeld." +msgstr "Dit is het aantal lussen voor de skirt. 0 betekent dat de skirt is uitgeschakeld." msgid "Skirt speed" msgstr "" @@ -12550,30 +12070,28 @@ msgid "Skirt minimum extrusion length" msgstr "" msgid "" -"Minimum filament extrusion length in mm when printing the skirt. Zero means " -"this feature is disabled.\n" +"Minimum filament extrusion length in mm when printing the skirt. Zero means this feature is " +"disabled.\n" "\n" -"Using a non zero value is useful if the printer is set up to print without a " -"prime line." +"Using a non zero value is useful if the printer is set up to print without a prime line." msgstr "" msgid "" -"The printing speed in exported gcode will be slowed down, when the estimated " -"layer time is shorter than this value, to get better cooling for these layers" +"The printing speed in exported gcode will be slowed down, when the estimated layer time is " +"shorter than this value, to get better cooling for these layers" msgstr "" -"De printnelheid in geëxporteerde G-code wordt vertraagd wanneer de geschatte " -"laagtijd korter is dan deze waarde om een betere koeling voor deze lagen te " -"krijgen." +"De printnelheid in geëxporteerde G-code wordt vertraagd wanneer de geschatte laagtijd " +"korter is dan deze waarde om een betere koeling voor deze lagen te krijgen." msgid "Minimum sparse infill threshold" msgstr "Minimale drempel voor dunne opvulling (infill)" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " -"internal solid infill" +"Sparse infill area which is smaller than threshold value is replaced by internal solid " +"infill" msgstr "" -"Dunne opvullingen (infill) die kleiner zijn dan deze drempelwaarde worden " -"vervangen door solide interne vulling (infill)." +"Dunne opvullingen (infill) die kleiner zijn dan deze drempelwaarde worden vervangen door " +"solide interne vulling (infill)." msgid "Solid infill" msgstr "" @@ -12582,63 +12100,59 @@ msgid "Filament to print solid infill" msgstr "" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "" -"Dit is de snelheid voor de interne solide vulling (infill), bodem en " -"bovenste oppervlakte zijn hiervan uitgezonderd" +"Dit is de snelheid voor de interne solide vulling (infill), bodem en bovenste oppervlakte " +"zijn hiervan uitgezonderd" msgid "" -"Spiralize smooths out the z moves of the outer contour. And turns a solid " -"model into a single walled print with solid bottom layers. The final " -"generated model has no seam" +"Spiralize smooths out the z moves of the outer contour. And turns a solid model into a " +"single walled print with solid bottom layers. The final generated model has no seam" msgstr "" -"Dit maakt spiralen mogelijk, waardoor de Z-bewegingen van de buitencontour " -"worden afgevlakt en een solide model wordt omgezet in een enkelwandige print " -"met solide onderlagen. Het uiteindelijke gegenereerde model heeft geen naad." +"Dit maakt spiralen mogelijk, waardoor de Z-bewegingen van de buitencontour worden afgevlakt " +"en een solide model wordt omgezet in een enkelwandige print met solide onderlagen. Het " +"uiteindelijke gegenereerde model heeft geen naad." msgid "Smooth Spiral" msgstr "Smooth Spiral" msgid "" -"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " -"at all, even in the XY directions on walls that are not vertical" +"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam at all, even " +"in the XY directions on walls that are not vertical" msgstr "" -"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " -"at all, even in the XY directions on walls that are not vertical" +"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam at all, even " +"in the XY directions on walls that are not vertical" msgid "Max XY Smoothing" msgstr "Max XY Smoothing" msgid "" -"Maximum distance to move points in XY to try to achieve a smooth spiralIf " -"expressed as a %, it will be computed over nozzle diameter" +"Maximum distance to move points in XY to try to achieve a smooth spiralIf expressed as a %, " +"it will be computed over nozzle diameter" msgstr "" -"Maximum distance to move points in XY to try to achieve a smooth spiral. If " -"expressed as a %, it will be computed over nozzle diameter" +"Maximale afstand om punten in XY te verplaatsen om te proberen een gladde spiraal te " +"bereiken. Als het wordt uitgedrukt als een %, wordt het berekend over de diameter van het " +"mondstuk" msgid "" -"If smooth or traditional mode is selected, a timelapse video will be " -"generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a " -"timelapse video when printing completes. If smooth mode is selected, the " -"toolhead will move to the excess chute after each layer is printed and then " -"take a snapshot. Since the melt filament may leak from the nozzle during the " -"process of taking a snapshot, prime tower is required for smooth mode to " -"wipe nozzle." +"If smooth or traditional mode is selected, a timelapse video will be generated for each " +"print. After each layer is printed, a snapshot is taken with the chamber camera. All of " +"these snapshots are composed into a timelapse video when printing completes. If smooth mode " +"is selected, the toolhead will move to the excess chute after each layer is printed and " +"then take a snapshot. Since the melt filament may leak from the nozzle during the process " +"of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." msgstr "" -"Als de vloeiende of traditionele modus is geselecteerd, wordt voor elke " -"print een timelapse-video gegenereerd. Nadat elke laag is geprint, wordt een " -"momentopname gemaakt met de kamercamera. Al deze momentopnamen worden " -"samengevoegd tot een timelapse-video wanneer het afdrukken is voltooid. Als " -"de vloeiende modus is geselecteerd, beweegt de gereedschapskop naar de " -"afvoer chute nadat iedere laag is afgedrukt en maakt vervolgens een " -"momentopname. Aangezien het gesmolten filament uit de nozzle kan lekken " -"tijdens het maken van een momentopname, is voor de soepele modus een " -"primetoren nodig om de nozzle schoon te vegen." +"Als de vloeiende of traditionele modus is geselecteerd, wordt voor elke print een timelapse-" +"video gegenereerd. Nadat elke laag is geprint, wordt een momentopname gemaakt met de " +"kamercamera. Al deze momentopnamen worden samengevoegd tot een timelapse-video wanneer het " +"afdrukken is voltooid. Als de vloeiende modus is geselecteerd, beweegt de gereedschapskop " +"naar de afvoer chute nadat iedere laag is afgedrukt en maakt vervolgens een momentopname. " +"Aangezien het gesmolten filament uit het mondstuk kan lekken tijdens het maken van een " +"momentopname, is voor de soepele modus een primetoren nodig om het mondstuk schoon te vegen." msgid "Traditional" msgstr "Traditioneel" @@ -12648,27 +12162,25 @@ msgstr "Temperatuur variatie" #. TRN PrintSettings : "Ooze prevention" > "Temperature variation" msgid "" -"Temperature difference to be applied when an extruder is not active. The " -"value is not used when 'idle_temperature' in filament settings is set to non " -"zero value." +"Temperature difference to be applied when an extruder is not active. The value is not used " +"when 'idle_temperature' in filament settings is set to non zero value." msgstr "" msgid "Preheat time" msgstr "" msgid "" -"To reduce the waiting time after tool change, Orca can preheat the next tool " -"while the current tool is still in use. This setting specifies the time in " -"seconds to preheat the next tool. Orca will insert a M104 command to preheat " -"the tool in advance." +"To reduce the waiting time after tool change, Orca can preheat the next tool while the " +"current tool is still in use. This setting specifies the time in seconds to preheat the " +"next tool. Orca will insert a M104 command to preheat the tool in advance." msgstr "" msgid "Preheat steps" msgstr "" msgid "" -"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " -"other printers, please set it to 1." +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For other " +"printers, please set it to 1." msgstr "" msgid "Start G-code" @@ -12690,11 +12202,10 @@ msgid "Manual Filament Change" msgstr "" msgid "" -"Enable this option to omit the custom Change filament G-code only at the " -"beginning of the print. The tool change command (e.g., T0) will be skipped " -"throughout the entire print. This is useful for manual multi-material " -"printing, where we use M600/PAUSE to trigger the manual filament change " -"action." +"Enable this option to omit the custom Change filament G-code only at the beginning of the " +"print. The tool change command (e.g., T0) will be skipped throughout the entire print. This " +"is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual " +"filament change action." msgstr "" msgid "Purge in prime tower" @@ -12710,48 +12221,45 @@ msgid "No sparse layers (beta)" msgstr "" msgid "" -"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." +"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." msgstr "" -"Het afveegblok wordt niet geprint bij lagen zonder toolwisselingen als dit " -"is ingeschakeld. Op lagen met een toolwissel zal de extruder neerwaarts " -"bewegen naar het afveegblok. De gebruiker is verantwoordelijk voor eventuele " -"botsingen met de print." +"Het afveegblok wordt niet geprint bij lagen zonder toolwisselingen als dit is ingeschakeld. " +"Op lagen met een toolwissel zal de extruder neerwaarts bewegen naar het afveegblok. De " +"gebruiker is verantwoordelijk voor eventuele botsingen met de print." msgid "Prime all printing extruders" msgstr "Veeg alle printextruders af" msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." +"If enabled, all printing extruders will be primed at the front edge of the print bed at the " +"start of the print." msgstr "" -"Alle extruders worden afgeveegd aan de voorzijde van het printbed aan het " -"begin van de print als dit is ingeschakeld." +"Alle extruders worden afgeveegd aan de voorzijde van het printbed aan het begin van de " +"print als dit is ingeschakeld." msgid "Slice gap closing radius" msgstr "Sluitingsradius van de gap" msgid "" -"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." +"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." msgstr "" -"Scheuren kleiner dan 2x de sluitradius van de spleet worden opgevuld tijdens " -"het snijden van driehoekig mesh. Het sluiten van openingen kan de " -"uiteindelijke afdrukresolutie verminderen, daarom is het raadzaam om de " -"waarde redelijk laag te houden." +"Scheuren kleiner dan 2x de sluitradius van de spleet worden opgevuld tijdens het snijden " +"van driehoekig mesh. Het sluiten van openingen kan de uiteindelijke afdrukresolutie " +"verminderen, daarom is het raadzaam om de waarde redelijk laag te houden." msgid "Slicing Mode" msgstr "Slicing-modus" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in " +"the model." msgstr "" -"Gebruik „Even-Oneven” voor 3DLabPrint-vliegtuigmodellen. Gebruik „Gaten " -"sluiten” om alle gaten in het model te sluiten." +"Gebruik „Even-Oneven” voor 3DLabPrint-vliegtuigmodellen. Gebruik „Gaten sluiten” om alle " +"gaten in het model te sluiten." msgid "Regular" msgstr "Standaard" @@ -12766,15 +12274,15 @@ msgid "Z offset" msgstr "Z-hoogte" msgid "" -"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)." +"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)." msgstr "" -"Deze waarde wordt toegevoegd (of afgetrokken) van alle Z-coördinaten in de G-" -"code. Het wordt gebruikt voor een slechte Z-eindstop positie. Als de Z-" -"eindstop bijvoorbeeld een waarde gebruikt die 0.3mm van het printbed is, kan " -"dit ingesteld worden op -0.3mm." +"Deze waarde wordt toegevoegd (of afgetrokken) van alle Z-coördinaten in de uitvoer-G-code. " +"Het wordt gebruikt om een ​​slechte Z-eindstoppositie te compenseren. Bijvoorbeeld, als de " +"eindstopnul eigenlijk 0,3 mm overlaat tussen het mondstuk en het printbed, stelt u dit in " +"op -0,3 (of maak uw eindstop goed vast)." msgid "Enable support" msgstr "Support inschakelen" @@ -12783,13 +12291,12 @@ msgid "Enable support generation." msgstr "Dit maakt het genereren van support mogelijk." msgid "" -"normal(auto) and tree(auto) is used to generate support automatically. If " -"normal(manual) or tree(manual) is selected, only support enforcers are " -"generated" +"normal(auto) and tree(auto) is used to generate support automatically. If normal(manual) or " +"tree(manual) is selected, only support enforcers are generated" msgstr "" -"normal(auto) en tree(auto) worden gebruikt om automatisch steun te " -"genereren. Als normaal(handmatig) of tree(handmatig) is geselecteerd, worden " -"alleen ondersteuningen handhavers gegenereerd." +"normal(auto) en tree(auto) worden gebruikt om automatisch steun te genereren. Als " +"normaal(handmatig) of tree(handmatig) is geselecteerd, worden alleen ondersteuningen " +"handhavers gegenereerd." msgid "normal(auto)" msgstr "Normaal (automatisch)" @@ -12813,9 +12320,7 @@ msgid "Pattern angle" msgstr "Patroon hoek" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "" -"Gebruik deze instelling om het support patroon op het horizontale vlak te " -"roteren." +msgstr "Gebruik deze instelling om het support patroon op het horizontale vlak te roteren." msgid "On build plate only" msgstr "Alleen op het printbed" @@ -12826,12 +12331,9 @@ msgstr "Deze instelling genereert alleen support die begint op het printbed." msgid "Support critical regions only" msgstr "Alleen kritische regio's ondersteunen" -msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." +msgid "Only create support for critical regions including sharp tail, cantilever, etc." msgstr "" -"Creëer alleen ondersteuning voor kritieke gebieden, waaronder sharp tail, " -"cantilever, etc." +"Creëer alleen ondersteuning voor kritieke gebieden, waaronder sharp tail, cantilever, etc." msgid "Remove small overhangs" msgstr "Kleine uitsteeksels verwijderen" @@ -12843,8 +12345,7 @@ msgid "Top Z distance" msgstr "Top Z afstand" msgid "The z gap between the top support interface and object" -msgstr "" -"Dit bepaald de Z-afstand tussen de bovenste support interfaces en het object." +msgstr "Dit bepaald de Z-afstand tussen de bovenste support interfaces en het object." msgid "Bottom Z distance" msgstr "Onderste Z-afstand" @@ -12856,46 +12357,39 @@ msgid "Support/raft base" msgstr "Support/raft base" msgid "" -"Filament to print support base and raft. \"Default\" means no specific " -"filament for support and current filament is used" +"Filament to print support base and raft. \"Default\" means no specific filament for support " +"and current filament is used" msgstr "" -"Filament voor het printen van ondersteuning (support) en raft. \"Standaard\" " -"betekent geen specifiek filament voor ondersteuning (support) en het " -"huidige filament wordt gebruikt." +"Filament voor het printen van ondersteuning (support) en raft. \"Standaard\" betekent geen " +"specifiek filament voor ondersteuning (support) en het huidige filament wordt gebruikt." msgid "Avoid interface filament for base" msgstr "Vermijd interfacedraad voor basis" -msgid "" -"Avoid using support interface filament to print support base if possible." +msgid "Avoid using support interface filament to print support base if possible." msgstr "" -"Gebruik indien mogelijk geen filament voor de steuninterface om de " -"steunbasis te printen." +"Gebruik indien mogelijk geen filament voor de steuninterface om de steunbasis te printen." msgid "" -"Line width of support. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of support. If expressed as a %, it will be computed over the nozzle diameter." msgstr "" msgid "Interface use loop pattern" msgstr "Luspatroon interface" -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." +msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -"Dit bedekt de bovenste laag van de support met lussen. Het is standaard " -"uitgeschakeld." +"Dit bedekt de bovenste laag van de support met lussen. Het is standaard uitgeschakeld." msgid "Support/raft interface" msgstr "Support/raft interface" msgid "" -"Filament to print support interface. \"Default\" means no specific filament " -"for support interface and current filament is used" +"Filament to print support interface. \"Default\" means no specific filament for support " +"interface and current filament is used" msgstr "" -"Filament om ondersteuning (support) te printen. \"Standaard\" betekent geen " -"specifiek filament voor ondersteuning (support), en het huidige filament " -"wordt gebruikt." +"Filament om ondersteuning (support) te printen. \"Standaard\" betekent geen specifiek " +"filament voor ondersteuning (support), en het huidige filament wordt gebruikt." msgid "Top interface layers" msgstr "Bovenste interface lagen" @@ -12916,16 +12410,13 @@ msgid "Top interface spacing" msgstr "Bovenste interface-afstand" msgid "Spacing of interface lines. Zero means solid interface" -msgstr "" -"Dit is de afstand tussen de interfacelijnen. 0 betekent solide interface." +msgstr "Dit is de afstand tussen de interfacelijnen. 0 betekent solide interface." msgid "Bottom interface spacing" msgstr "Onderste interface-afstand" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "" -"Dit is de afstand tussen de onderste interfacelijnen. 0 betekent solide " -"interface." +msgstr "Dit is de afstand tussen de onderste interfacelijnen. 0 betekent solide interface." msgid "Speed of support interface" msgstr "Dit is de snelheid voor het printen van de support interfaces." @@ -12946,13 +12437,12 @@ msgid "Interface pattern" msgstr "Interfacepatroon" msgid "" -"Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"Line pattern of support interface. Default pattern for non-soluble support interface is " +"Rectilinear, while default pattern for soluble support interface is Concentric" msgstr "" -"Dit is het lijnpatroon voor support interfaces. Het standaardpatroon voor " -"niet-oplosbare support interfaces is Rechtlijnig, terwijl het " -"standaardpatroon voor oplosbare support interfaces Concentrisch is." +"Dit is het lijnpatroon voor support interfaces. Het standaardpatroon voor niet-oplosbare " +"support interfaces is Rechtlijnig, terwijl het standaardpatroon voor oplosbare support " +"interfaces Concentrisch is." msgid "Rectilinear Interlaced" msgstr "Rectilinear Interlaced" @@ -12967,21 +12457,18 @@ msgid "Normal Support expansion" msgstr "Normale uitbreiding van de ondersteuning" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "" -"Vergroot (+) of verklein (-) het horizontale bereik van de normale " -"ondersteuning" +msgstr "Vergroot (+) of verklein (-) het horizontale bereik van de normale ondersteuning" msgid "Speed of support" msgstr "Dit is de snelheid voor het printen van support." msgid "" -"Style and shape of the support. For normal support, projecting the supports " -"into a regular grid will create more stable supports (default), while snug " -"support towers will save material and reduce object scarring.\n" -"For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid " -"style will create similar structure to normal support under large flat " -"overhangs." +"Style and shape of the support. For normal support, projecting the supports into a regular " +"grid will create more stable supports (default), while snug support towers will save " +"material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more aggressively and save a " +"lot of material (default organic), while hybrid style will create similar structure to " +"normal support under large flat overhangs." msgstr "" msgid "Snug" @@ -13003,81 +12490,75 @@ msgid "Independent support layer height" msgstr "Onafhankelijke support laaghoogte" msgid "" -"Support layer uses layer height independent with object layer. This is to " -"support customizing z-gap and save print time.This option will be invalid " -"when the prime tower is enabled." +"Support layer uses layer height independent with object layer. This is to support " +"customizing z-gap and save print time.This option will be invalid when the prime tower is " +"enabled." msgstr "" -"Support layer uses layer height independent with object layer. This is to " -"support customizing z-gap and save print time.This option will be invalid " -"when the prime tower is enabled." +"Support layer uses layer height independent with object layer. This is to support " +"customizing z-gap and save print time.This option will be invalid when the prime tower is " +"enabled." msgid "Threshold angle" msgstr "Drempel hoek" -msgid "" -"Support will be generated for overhangs whose slope angle is below the " -"threshold." +msgid "Support will be generated for overhangs whose slope angle is below the threshold." msgstr "" -"Er zal ondersteuning support gegenereerd worden voor overhangende hoeken " -"waarvan de hellingshoek lager is dan deze drempel." +"Er zal ondersteuning support gegenereerd worden voor overhangende hoeken waarvan de " +"hellingshoek lager is dan deze drempel." msgid "Tree support branch angle" msgstr "Tree support vertakkingshoek" msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " -"printed more horizontally, allowing them to reach farther." +"This setting determines the maximum overhang angle that t he branches of tree support " +"allowed to make.If the angle is increased, the branches can be printed more horizontally, " +"allowing them to reach farther." msgstr "" -"Deze instelling bepaalt de maximale overhanghoek die de uitloop van de tree " -"support mogen maken. Als de hoek wordt vergroot, kunnen de uitlopen meer " -"horizontaal worden geprint, waardoor ze verder kunnen reiken." +"Deze instelling bepaalt de maximale overhanghoek die de uitloop van de tree support mogen " +"maken. Als de hoek wordt vergroot, kunnen de uitlopen meer horizontaal worden geprint, " +"waardoor ze verder kunnen reiken." msgid "Preferred Branch Angle" msgstr "" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" msgid "" -"The preferred angle of the branches, when they do not have to avoid the " -"model. Use a lower angle to make them more vertical and more stable. Use a " -"higher angle for branches to merge faster." +"The preferred angle of the branches, when they do not have to avoid the model. Use a lower " +"angle to make them more vertical and more stable. Use a higher angle for branches to merge " +"faster." msgstr "" msgid "Tree support branch distance" msgstr "Tree support tak-afstand" -msgid "" -"This setting determines the distance between neighboring tree support nodes." -msgstr "" -"Deze instelling bepaald de afstand tussen naastliggende tree support " -"knooppunten." +msgid "This setting determines the distance between neighboring tree support nodes." +msgstr "Deze instelling bepaald de afstand tussen naastliggende tree support knooppunten." msgid "Branch Density" msgstr "" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." +"Adjusts the density of the support structure used to generate the tips of the branches. A " +"higher value results in better overhangs but the supports are harder to remove, thus it is " +"recommended to enable top support interfaces instead of a high branch density value if " +"dense interfaces are needed." msgstr "" msgid "Adaptive layer height" msgstr "Adaptieve laaghoogte" msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " +"Enabling this option means the height of tree support layer except the first will be " +"automatically calculated " msgstr "" msgid "Auto brim width" msgstr "" msgid "" -"Enabling this option means the width of the brim for tree support will be " -"automatically calculated" +"Enabling this option means the width of the brim for tree support will be automatically " +"calculated" msgstr "" msgid "Tree support brim width" @@ -13105,10 +12586,9 @@ msgstr "" #. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" msgid "" -"The angle of the branches' diameter as they gradually become thicker towards " -"the bottom. An angle of 0 will cause the branches to have uniform thickness " -"over their length. A bit of an angle can increase stability of the organic " -"support." +"The angle of the branches' diameter as they gradually become thicker towards the bottom. An " +"angle of 0 will cause the branches to have uniform thickness over their length. A bit of an " +"angle can increase stability of the organic support." msgstr "" msgid "Branch Diameter with double walls" @@ -13116,9 +12596,8 @@ msgstr "" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" -"Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." +"Branches with area larger than the area of a circle of this diameter will be printed with " +"double walls for stability. Set this value to zero for no double walls." msgstr "" msgid "Support wall loops" @@ -13130,19 +12609,17 @@ msgstr "Deze instelling specificeert het aantal muren rond de ondersteuning" msgid "Tree support with infill" msgstr "Tree support met vulling" -msgid "" -"This setting specifies whether to add infill inside large hollows of tree " -"support" +msgid "This setting specifies whether to add infill inside large hollows of tree support" msgstr "" -"Deze instelling geeft aan of er opvulling moet worden toegevoegd in grote " -"holtes van de tree support." +"Deze instelling geeft aan of er opvulling moet worden toegevoegd in grote holtes van de " +"tree support." msgid "Activate temperature control" -msgstr "" +msgstr "Temperatuurregeling activeren" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" +"Enable this option for chamber temperature control. An M191 command will be added before " +"\"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" @@ -13150,65 +12627,60 @@ msgid "Chamber temperature" msgstr "Kamertemperatuur" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"Higher chamber temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and " +"so on.At the same time, the air filtration of ABS and ASA will get worse.While for PLA, " +"PETG, TPU, PVA and other low temperature materials,the actual chamber temperature should " +"not be high to avoid cloggings, so 0 which stands for turning off is highly recommended" msgstr "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on. At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials, the actual chamber temperature should not " -"be high to avoid clogs, so 0 (turned off) is highly recommended." +"Higher chamber temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and " +"so on. At the same time, the air filtration of ABS and ASA will get worse.While for PLA, " +"PETG, TPU, PVA and other low temperature materials, the actual chamber temperature should " +"not be high to avoid clogs, so 0 (turned off) is highly recommended." msgid "Nozzle temperature for layers after the initial one" -msgstr "Nozzle temperatuur voor de lagen na de eerstse laag" +msgstr "Mondstuk temperatuur voor de lagen na de eerste laag" msgid "Detect thin wall" msgstr "Detecteer dunne wanden" msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop" +"Detect thin wall which can't contain two line width. And use single line to print. Maybe " +"printed not very well, because it's not closed loop" msgstr "" -"Dit detecteert dunne wanden die geen twee lijnen kunnen bevatten en gebruikt " -"een enkele lijn tijdens het printen. Het kan zijn dat de kwaliteit minder " -"goed is, omdat er geen gesloten lus is" +"Dit detecteert dunne wanden die geen twee lijnen kunnen bevatten en gebruikt een enkele " +"lijn tijdens het printen. Het kan zijn dat de kwaliteit minder goed is, omdat er geen " +"gesloten lus is" msgid "" -"This gcode is inserted when change filament, including T command to trigger " -"tool change" +"This gcode is inserted when change filament, including T command to trigger tool change" msgstr "" -"Deze G-code wordt ingevoegd wanneer filament wordt vervangen, inclusief T-" -"commando's om gereedschapswissel te activeren." +"Deze G-code wordt ingevoegd wanneer filament wordt vervangen, inclusief T-commando's om " +"gereedschapswissel te activeren." msgid "This gcode is inserted when the extrusion role is changed" msgstr "" msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width for top surfaces. If expressed as a %, it will be computed over the nozzle " +"diameter." msgstr "" msgid "Speed of top surface infill which is solid" -msgstr "" -"Dit is de snelheid voor de solide vulling (infill) van de bovenste laag" +msgstr "Dit is de snelheid voor de solide vulling (infill) van de bovenste laag" msgid "Top shell layers" msgstr "Aantal lagen bovenkant" msgid "" -"This is the number of solid layers of top shell, including the top surface " -"layer. When the thickness calculated by this value is thinner than top shell " -"thickness, the top shell layers will be increased" +"This is the number of solid layers of top shell, including the top surface layer. When the " +"thickness calculated by this value is thinner than top shell thickness, the top shell " +"layers will be increased" msgstr "" -"Dit is het aantal solide lagen van de bovenkant, inclusief de bovenste " -"oppervlaktelaag. Wanneer de door deze waarde berekende dikte dunner is dan " -"de dikte van de bovenste laag, worden de bovenste lagen vergroot" +"Dit is het aantal solide lagen van de bovenkant, inclusief de bovenste oppervlaktelaag. " +"Wanneer de door deze waarde berekende dikte dunner is dan de dikte van de bovenste laag, " +"worden de bovenste lagen vergroot" msgid "Top solid layers" msgstr "Aantal bovenste solide lagen" @@ -13217,17 +12689,15 @@ msgid "Top shell thickness" msgstr "Dikte bovenkant" msgid "" -"The number of top solid layers is increased when slicing if the thickness " -"calculated by top shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" +"The number of top solid layers is increased when slicing if the thickness calculated by top " +"shell layers is thinner than this value. This can avoid having too thin shell when layer " +"height is small. 0 means that this setting is disabled and thickness of top shell is " +"absolutely determained by top shell layers" msgstr "" -"Het aantal bovenste solide lagen wordt verhoogd tijdens het slicen als de " -"totale dikte van de bovenste lagen lager is dan deze waarde. Dit zorgt " -"ervoor dat de schaal niet te dun is bij een lage laaghoogte. 0 betekend dat " -"deze instelling niet actief is en dat de dikte van de bovenkant bepaald " -"wordt door het aantal bodem lagen." +"Het aantal bovenste solide lagen wordt verhoogd tijdens het slicen als de totale dikte van " +"de bovenste lagen lager is dan deze waarde. Dit zorgt ervoor dat de schaal niet te dun is " +"bij een lage laaghoogte. 0 betekend dat deze instelling niet actief is en dat de dikte van " +"de bovenkant bepaald wordt door het aantal bodem lagen." msgid "Speed of travel which is faster and without extrusion" msgstr "Dit is de snelheid waarmee verplaatsingen zullen worden gedaan." @@ -13236,37 +12706,34 @@ msgid "Wipe while retracting" msgstr "Vegen tijdens intrekken (retracting)" msgid "" -"Move nozzle along the last extrusion path when retracting to clean leaked " -"material on nozzle. This can minimize blob when print new part after travel" +"Move nozzle along the last extrusion path when retracting to clean leaked material on " +"nozzle. This can minimize blob when print new part after travel" msgstr "" -"Dit beweegt de nozzle langs het laatste extrusiepad bij het terugtrekken " -"(retraction) om eventueel gelekt materiaal op het mondstuk te reinigen. Dit " -"kan \"blobs\" minimaliseren bij het printen van een nieuw onderdeel na het " -"verplaatsen." +"Dit beweegt het mondstuk langs het laatste extrusiepad bij het terugtrekken (retraction) om " +"eventueel gelekt materiaal op het mondstuk te reinigen. Dit kan \"blobs\" minimaliseren bij " +"het printen van een nieuw onderdeel na het verplaatsen" msgid "Wipe Distance" msgstr "Veeg afstand" msgid "" -"Discribe how long the nozzle will move along the last path when " -"retracting. \n" +"Discribe how long the nozzle will move along the last path when retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the extruder/filament " +"retraction settings are, a retraction move may be needed to retract the remaining " +"filament. \n" "\n" -"Setting a value in the retract amount before wipe setting below will perform " -"any excess retraction before the wipe, else it will be performed after." +"Setting a value in the retract amount before wipe setting below will perform any excess " +"retraction before the wipe, else it will be performed after." msgstr "" msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and " -"stabilize the chamber pressure inside the nozzle, in order to avoid " -"appearance defects when printing objects." +"The wiping tower can be used to clean up the residue on the nozzle and stabilize the " +"chamber pressure inside the nozzle, in order to avoid appearance defects when printing " +"objects." msgstr "" -"The wiping tower can be used to clean up residue on the nozzle and stabilize " -"the chamber pressure inside the nozzle in order to avoid appearance defects " -"when printing objects." +"De veegtoren kan worden gebruikt om resten op het mondstuk te verwijderen en de druk in het " +"mondstuk te stabiliseren om uiterlijke gebreken bij het printen van objecten te voorkomen." msgid "Purging volumes" msgstr "Volumes opschonen" @@ -13275,8 +12742,8 @@ msgid "Flush multiplier" msgstr "Flush-vermenigvuldiger" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by the flushing " +"volumes in the table." msgstr "" "De werkelijke flushvolumes zijn gelijk aan de flush vermenigvuldigingswaarde " "vermenigvuldigd met de flushvolumes in de tabel." @@ -13285,9 +12752,7 @@ msgid "Prime volume" msgstr "Prime-volume" msgid "The volume of material to prime extruder on tower." -msgstr "" -"Dit is het volume van het materiaal dat de extruder op de prime toren " -"uitwerpt." +msgstr "Dit is het volume van het materiaal dat de extruder op de prime toren uitwerpt." msgid "Width of prime tower" msgstr "Dit is de breedte van de prime toren." @@ -13302,80 +12767,73 @@ msgid "Stabilization cone apex angle" msgstr "" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. " -"Larger angle means wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means " +"wider base." msgstr "" msgid "Maximum wipe tower print speed" msgstr "" msgid "" -"The maximum print speed when purging in the wipe tower and printing the wipe " -"tower sparse layers. When purging, if the sparse infill speed or calculated " -"speed from the filament max volumetric speed is lower, the lowest will be " -"used instead.\n" +"The maximum print speed when purging in the wipe tower and printing the wipe tower sparse " +"layers. When purging, if the sparse infill speed or calculated speed from the filament max " +"volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or " -"calculated speed from the filament max volumetric speed is lower, the lowest " -"will be used instead.\n" +"When printing the sparse layers, if the internal perimeter speed or calculated speed from " +"the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"Increasing this speed may affect the tower's stability as well as increase " -"the force with which the nozzle collides with any blobs that may have formed " -"on the wipe tower.\n" +"Increasing this speed may affect the tower's stability as well as increase the force with " +"which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" -"Before increasing this parameter beyond the default of 90mm/sec, make sure " -"your printer can reliably bridge at the increased speeds and that ooze when " -"tool changing is well controlled.\n" +"Before increasing this parameter beyond the default of 90mm/sec, make sure your printer can " +"reliably bridge at the increased speeds and that ooze when tool changing is well " +"controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used " -"regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used regardless of " +"this setting." msgstr "" msgid "" -"The extruder to use when printing perimeter of the wipe tower. Set to 0 to " -"use the one that is available (non-soluble would be preferred)." +"The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that " +"is available (non-soluble would be preferred)." msgstr "" msgid "Purging volumes - load/unload volumes" msgstr "" msgid "" -"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." +"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." msgstr "" msgid "" -"Purging after filament change will be done inside objects' infills. This may " -"lower the amount of waste and decrease the print time. If the walls are " -"printed with transparent filament, the mixed color infill will be seen " -"outside. It will not take effect, unless the prime tower is enabled." +"Purging after filament change will be done inside objects' infills. This may lower the " +"amount of waste and decrease the print time. If the walls are printed with transparent " +"filament, the mixed color infill will be seen outside. It will not take effect, unless the " +"prime tower is enabled." msgstr "" -"Het purgen na het verwisselen van het filament vindt plaats in de vullingen " -"van objecten. Dit kan de hoeveelheid afval verminderen en de printtijd " -"verkorten. Als de wanden zijn geprint met transparant filament, is de infill " -"in gemengde kleuren zichtbaar. Het wordt niet van kracht tenzij de prime " -"tower is ingeschakeld." +"Het purgen na het verwisselen van het filament vindt plaats in de vullingen van objecten. " +"Dit kan de hoeveelheid afval verminderen en de printtijd verkorten. Als de wanden zijn " +"geprint met transparant filament, is de infill in gemengde kleuren zichtbaar. Het wordt " +"niet van kracht tenzij de prime tower is ingeschakeld." msgid "" -"Purging after filament change will be done inside objects' support. This may " -"lower the amount of waste and decrease the print time. It will not take " +"Purging after filament change will be done inside objects' support. This may lower the " +"amount of waste and decrease the print time. It will not take effect, unless the prime " +"tower is enabled." +msgstr "" +"Het purgen na het verwisselen van het filament vindt plaats in de ondersteuning van de " +"objecten. Dit kan de hoeveelheid afval verminderen en de printtijd verkorten. Het wordt " +"niet van kracht tenzij een prime tower is ingeschakeld." + +msgid "" +"This object will be used to purge the nozzle after a filament change to save filament and " +"decrease the print time. Colours of the objects will be mixed as a result. It will not take " "effect, unless the prime tower is enabled." msgstr "" -"Het purgen na het verwisselen van het filament vindt plaats in de " -"ondersteuning van de objecten. Dit kan de hoeveelheid afval verminderen en " -"de printtijd verkorten. Het wordt niet van kracht tenzij een prime tower is " -"ingeschakeld." - -msgid "" -"This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." -msgstr "" -"Dit object wordt gebruikt om de nozzle te reinigen nadat het filament is " -"vervangen om filament te besparen en de printtijd te verkorten. Als " -"resultaat worden de kleuren van de objecten gemengd. Het wordt niet van " -"kracht tenzij de prime tower is ingeschakeld." +"Dit object wordt gebruikt om het mondstuk te reinigen nadat het filament is vervangen om " +"filament te besparen en de printtijd te verkorten. Als resultaat worden de kleuren van de " +"objecten gemengd. Het wordt niet van kracht tenzij de prime toren is ingeschakeld." msgid "Maximal bridging distance" msgstr "Maximale brugafstand" @@ -13393,54 +12851,50 @@ msgid "Extra flow for purging" msgstr "" msgid "" -"Extra flow used for the purging lines on the wipe tower. This makes the " -"purging lines thicker or narrower than they normally would be. The spacing " -"is adjusted automatically." +"Extra flow used for the purging lines on the wipe tower. This makes the purging lines " +"thicker or narrower than they normally would be. The spacing is adjusted automatically." msgstr "" msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool setups." -"This is only used when 'Ooze prevention' is active in Print Settings. Set to " -"0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups.This is only " +"used when 'Ooze prevention' is active in Print Settings. Set to 0 to disable." msgstr "" msgid "X-Y hole compensation" msgstr "X-Y-gaten compensatie" msgid "" -"Holes of object will be grown or shrunk in XY plane by the configured value. " -"Positive value makes holes bigger. Negative value makes holes smaller. This " -"function is used to adjust size slightly when the object has assembling issue" +"Holes of object will be grown or shrunk in XY plane by the configured value. Positive value " +"makes holes bigger. Negative value makes holes smaller. This function is used to adjust " +"size slightly when the object has assembling issue" msgstr "" -"Gaten in objecten worden met de ingestelde waarde groter of kleiner in het " -"XY-vlak. Positieve waarden maken de gaten groter en negatieve waarden maken " -"de gaten kleiner. Deze functie wordt gebruikt om de grootte enigszins aan te " -"passen wanneer objecten montageproblemen hebben." +"Gaten in objecten worden met de ingestelde waarde groter of kleiner in het XY-vlak. " +"Positieve waarden maken de gaten groter en negatieve waarden maken de gaten kleiner. Deze " +"functie wordt gebruikt om de grootte enigszins aan te passen wanneer objecten " +"montageproblemen hebben." msgid "X-Y contour compensation" msgstr "X-Y contourcompensatie" msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured " -"value. Positive value makes contour bigger. Negative value makes contour " -"smaller. This function is used to adjust size slightly when the object has " -"assembling issue" +"Contour of object will be grown or shrunk in XY plane by the configured value. Positive " +"value makes contour bigger. Negative value makes contour smaller. This function is used to " +"adjust size slightly when the object has assembling issue" msgstr "" -"De contouren van objecten worden met de ingestelde waarde in het XY-vlak " -"groter of kleiner gemaakt. Positieve waarden maken contouren groter en " -"negatieve waarden maken contouren kleiner. Deze functie wordt gebruikt om de " -"afmetingen enigszins aan te passen wanneer objecten montageproblemen hebben." +"De contouren van objecten worden met de ingestelde waarde in het XY-vlak groter of kleiner " +"gemaakt. Positieve waarden maken contouren groter en negatieve waarden maken contouren " +"kleiner. Deze functie wordt gebruikt om de afmetingen enigszins aan te passen wanneer " +"objecten montageproblemen hebben." msgid "Convert holes to polyholes" msgstr "" msgid "" -"Search for almost-circular holes that span more than one layer and convert " -"the geometry to polyholes. Use the nozzle size and the (biggest) diameter to " -"compute the polyhole.\n" +"Search for almost-circular holes that span more than one layer and convert the geometry to " +"polyholes. Use the nozzle size and the (biggest) diameter to compute the polyhole.\n" "See http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgstr "" @@ -13450,9 +12904,8 @@ msgstr "" #, no-c-format, no-boost-format msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" -"As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to " -"broaden the detection.\n" +"As cylinders are often exported as triangles of varying size, points may not be on the " +"circle circumference. This setting allows you some leway to broaden the detection.\n" "In mm or in % of the radius." msgstr "" @@ -13466,38 +12919,40 @@ msgid "G-code thumbnails" msgstr "G-code miniaturen" msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " -"following format: \"XxY, XxY, ...\"" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: " +"\"XxY, XxY, ...\"" msgstr "" msgid "Format of G-code thumbnails" msgstr "Bestandstype van G-code-voorbeelden" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for low " +"memory firmware" msgstr "" -"Bestandstype van G-code-voorbeelden: PNG voor de beste kwaliteit, JPG voor " -"kleinste bestand, QOI voor firmware met weinig geheugen" +"Bestandstype van G-code-voorbeelden: PNG voor de beste kwaliteit, JPG voor kleinste " +"bestand, QOI voor firmware met weinig geheugen" msgid "Use relative E distances" msgstr "Relatieve E-afstanden gebruiken" msgid "" -"Relative extrusion is recommended when using \"label_objects\" option.Some " -"extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is recommended on most " -"printers. Default is checked" +"Relative extrusion is recommended when using \"label_objects\" option.Some extruders work " +"better with this option unckecked (absolute extrusion mode). Wipe tower is only compatible " +"with relative mode. It is recommended on most printers. Default is checked" msgstr "" +"Relatieve extrusie wordt aanbevolen bij gebruik van de optie \"label_objects\". Sommige " +"extruders werken beter als deze optie niet is aangevinkt (absolute extrusiemodus). Wipe " +"tower is alleen compatibel met relatieve modus. Het wordt aanbevolen op de meeste printers. " +"Standaard is aangevinkt" msgid "" -"Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" +"Classic wall generator produces walls with constant extrusion width and for very thin areas " +"is used gap-fill. Arachne engine produces walls with variable extrusion width" msgstr "" -"De klassieke wandgenerator produceert wanden met constante extrusiebreedte " -"en voor zeer dunne gebieden wordt gap-fill gebruikt. De Arachne generator " -"produceert wanden met variabele extrusiebreedte." +"De klassieke wandgenerator produceert wanden met constante extrusiebreedte en voor zeer " +"dunne gebieden wordt gap-fill gebruikt. De Arachne generator produceert wanden met " +"variabele extrusiebreedte." msgid "Classic" msgstr "Klassiek" @@ -13509,126 +12964,130 @@ msgid "Wall transition length" msgstr "Lengte wandovergang" msgid "" -"When transitioning between different numbers of walls as the part becomes " -"thinner, a certain amount of space is allotted to split or join the wall " -"segments. It's expressed as a percentage over nozzle diameter" +"When transitioning between different numbers of walls as the part becomes thinner, a " +"certain amount of space is allotted to split or join the wall segments. It's expressed as a " +"percentage over nozzle diameter" msgstr "" -"Bij de overgang tussen verschillende aantallen muren naarmate het onderdeel " -"dunner wordt, wordt een bepaalde hoeveelheid ruimte toegewezen om de " -"wandsegmenten te splitsen of samen te voegen. Dit wordt uitgedrukt als een " -"percentage ten opzichte van de diameter van de nozzle." +"Bij de overgang tussen verschillende aantallen muren naarmate het onderdeel dunner wordt, " +"wordt een bepaalde hoeveelheid ruimte toegewezen om de wandsegmenten te splitsen of samen " +"te voegen. Dit wordt uitgedrukt als een percentage ten opzichte van de diameter van het " +"mondstuk." msgid "Wall transitioning filter margin" msgstr "Marge van het filter voor wandovergang" msgid "" -"Prevent transitioning back and forth between one extra wall and one less. " -"This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall 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. It's expressed as a " +"Prevent transitioning back and forth between one extra wall and one less. This margin " +"extends the range of extrusion widths which follow to [Minimum wall width - margin, 2 * " +"Minimum wall 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. It's expressed as a " "percentage over nozzle diameter" msgstr "" -"Voorkom heen en weer schakelen tussen een extra wand en een wand minder. " -"Deze marge breidt het bereik van extrusiebreedten uit dat volgt op [Minimum " -"wandbreedte - marge, 2 * Minimale wandbreedte + marge]. Door deze marge te " -"vergroten, wordt het aantal overgangen verminderd, waardoor het aantal " -"extrusie-starts/-stops en travel tijd wordt verminderd. Grote variaties in " -"de extrusiebreedte kunnen echter leiden tot onder- of overextrusieproblemen. " -"Het wordt uitgedrukt als een percentage over de diameter van de nozzle" +"Voorkom heen en weer schakelen tussen een extra wand en een wand minder. Deze marge breidt " +"het bereik van extrusiebreedten uit dat volgt op [Minimum wandbreedte - marge, 2 * Minimale " +"wandbreedte + marge]. Door deze marge te vergroten, wordt het aantal overgangen verminderd, " +"waardoor het aantal extrusie-starts/-stops en travel tijd wordt verminderd. Grote variaties " +"in de extrusiebreedte kunnen echter leiden tot onder- of overextrusieproblemen. Het wordt " +"uitgedrukt als een percentage over de diameter van het mondstuk" msgid "Wall transitioning threshold angle" msgstr "Drempelhoek voor wandovergang" msgid "" -"When to create transitions between even and odd numbers of walls. A wedge " -"shape with an angle greater than this setting will not have transitions and " -"no walls will be printed in the center to fill the remaining space. Reducing " -"this setting reduces the number and length of these center walls, but may " -"leave gaps or overextrude" +"When to create transitions between even and odd numbers of walls. A wedge shape with an " +"angle greater than this setting will not have transitions and no walls will be printed in " +"the center to fill the remaining space. Reducing this setting reduces the number and length " +"of these center walls, but may leave gaps or overextrude" msgstr "" -"Wanneer moet u overgangen maken tussen even en oneven aantallen muren? Een " -"wigvorm met een hoek groter dan deze instelling heeft geen overgangen en er " -"worden in het midden geen muren afgedrukt om de resterende ruimte te vullen. " -"Als u deze instelling verlaagt, worden het aantal en de lengte van deze " -"middenwanden beperkt, maar kunnen er openingen ontstaan of overextruderen" +"Wanneer moet u overgangen maken tussen even en oneven aantallen muren? Een wigvorm met een " +"hoek groter dan deze instelling heeft geen overgangen en er worden in het midden geen muren " +"afgedrukt om de resterende ruimte te vullen. Als u deze instelling verlaagt, worden het " +"aantal en de lengte van deze middenwanden beperkt, maar kunnen er openingen ontstaan of " +"overextruderen" msgid "Wall distribution count" msgstr "Aantal wandverdelingen" msgid "" -"The number of walls, counted from the center, over which the variation needs " -"to be spread. Lower values mean that the outer walls don't change in width" +"The number of walls, counted from the center, over which the variation needs to be spread. " +"Lower values mean that the outer walls don't change in width" msgstr "" -"Het aantal wanden, geteld vanuit het midden, waarover de variatie moet " -"worden verdeeld. Lagere waarden betekenen dat de buitenwanden niet in " -"breedte veranderen." +"Het aantal wanden, geteld vanuit het midden, waarover de variatie moet worden verdeeld. " +"Lagere waarden betekenen dat de buitenwanden niet in breedte veranderen." msgid "Minimum feature size" msgstr "Minimale kenmerkgrootte" msgid "" -"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 wall width. It's expressed as a " -"percentage over nozzle diameter" +"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 wall width. It's expressed as a percentage over nozzle diameter" msgstr "" -"Minimale dikte van dunne onderdelen. Modelkenmerken die dunner zijn dan deze " -"waarde worden niet afgedrukt, terwijl functies die dikker zijn dan de " -"minimale afmeting van het object, worden verbreed tot de minimale " -"wandbreedte. Dit wordt uitgedrukt als een percentage ten opzichte van de " -"diameter van het mondstuk" +"Minimale dikte van dunne onderdelen. Modelkenmerken die dunner zijn dan deze waarde worden " +"niet afgedrukt, terwijl functies die dikker zijn dan de minimale afmeting van het object, " +"worden verbreed tot de minimale wandbreedte. Dit wordt uitgedrukt als een percentage ten " +"opzichte van de diameter van het mondstuk" msgid "Minimum wall length" -msgstr "" +msgstr "Minimale wandlengte" msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which " -"could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase " +"print time. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent " -"visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a " -"top-surface. 'One wall threshold' is only visibile if this setting is set " -"above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on " +"the ouside of the model. Adjust 'One wall threshold' in the Advanced settings below to " +"adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only " +"visibile if this setting is set above the default value of 0.5, or if single-wall top " +"surfaces is enabled." msgstr "" +"Pas deze waarde aan om te voorkomen dat korte, niet-gesloten wanden worden geprint, wat de " +"printtijd kan verlengen. Hogere waarden verwijderen meer en langere wanden.\n" +"\n" +"OPMERKING: Onder- en bovenoppervlakken worden niet beïnvloed door deze waarde om visuele " +"gaten aan de buitenkant van het model te voorkomen. Pas 'One wall threshold' aan in de " +"geavanceerde instellingen hieronder om de gevoeligheid van wat als een bovenoppervlak wordt " +"beschouwd aan te passen. 'One wall threshold' is alleen zichtbaar als deze instelling boven " +"de standaardwaarde van 0,5 is ingesteld of als enkelwandige bovenoppervlakken zijn " +"ingeschakeld." msgid "First layer minimum wall width" -msgstr "" +msgstr "Eerste laag minimale wandbreedte" msgid "" -"The minimum wall width that should be used for the first layer is " -"recommended to be set to the same size as the nozzle. This adjustment is " -"expected to enhance adhesion." +"The minimum wall width that should be used for the first layer is recommended to be set to " +"the same size as the nozzle. This adjustment is expected to enhance adhesion." msgstr "" +"De minimale wandbreedte die voor de eerste laag moet worden gebruikt, wordt aanbevolen om " +"op dezelfde grootte als het mondstuk te worden ingesteld. Deze aanpassing zal naar " +"verwachting de hechting verbeteren." msgid "Minimum wall width" msgstr "Minimale wandbreedte" msgid "" -"Width of the wall that will replace thin features (according to the Minimum " -"feature size) of the model. If the Minimum wall width is thinner than the " -"thickness of the feature, the wall will become as thick as the feature " -"itself. It's expressed as a percentage over nozzle diameter" +"Width of the wall that will replace thin features (according to the Minimum feature size) " +"of the model. If the Minimum wall width is thinner than the thickness of the feature, the " +"wall will become as thick as the feature itself. It's expressed as a percentage over nozzle " +"diameter" msgstr "" -"Breedte van de muur die dunne delen (volgens de minimale functiegrootte) van " -"het model zal vervangen. Als de minimale wandbreedte dunner is dan de dikte " -"van het element, wordt de muur net zo dik als het object zelf. Dit wordt " -"uitgedrukt als een percentage ten opzichte van de diameter van de nozzle" +"Breedte van de muur die dunne delen (volgens de minimale functiegrootte) van het model zal " +"vervangen. Als de minimale wandbreedte dunner is dan de dikte van het element, wordt de " +"muur net zo dik als het object zelf. Dit wordt uitgedrukt als een percentage ten opzichte " +"van de diameter van het mondstuk" msgid "Detect narrow internal solid infill" msgstr "Detecteer dichte interne solide vulling (infill)" msgid "" -"This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." +"This option will auto detect narrow internal solid infill area. If enabled, concentric " +"pattern will be used for the area to speed printing up. Otherwise, rectilinear pattern is " +"used defaultly." msgstr "" -"Deze optie detecteert automatisch smalle interne solide opvul (infill) " -"gebieden. Indien ingeschakeld, wordt het concentrische patroon gebruikt voor " -"het gebied om het afdrukken te versnellen. Anders wordt standaard het " -"rechtlijnige patroon gebruikt." +"Deze optie detecteert automatisch smalle interne solide opvul (infill) gebieden. Indien " +"ingeschakeld, wordt het concentrische patroon gebruikt voor het gebied om het afdrukken te " +"versnellen. Anders wordt standaard het rechtlijnige patroon gebruikt." msgid "invalid value " msgstr "invalid value " @@ -13649,7 +13108,7 @@ msgid "export 3mf with minimum size." msgstr "" msgid "No check" -msgstr "No check" +msgstr "Geen controle" msgid "Do not run any validity checks, such as gcode path conflicts check." msgstr "Do not run any validity checks, such as G-code path conflicts check." @@ -13657,15 +13116,14 @@ msgstr "Do not run any validity checks, such as G-code path conflicts check." msgid "Ensure on bed" msgstr "Plaats op bed" -msgid "" -"Lift the object above the bed when it is partially below. Disabled by default" +msgid "Lift the object above the bed when it is partially below. Disabled by default" msgstr "" msgid "Orient Options" -msgstr "" +msgstr "Oriëntatieopties" msgid "Orient options: 0-disable, 1-enable, others-auto" -msgstr "" +msgstr "Oriëntatieopties: 0-uitschakelen, 1-inschakelen, andere-automatisch" msgid "Rotation angle around the Z axis in degrees." msgstr "Rotatiehoek rond de Z-as in graden." @@ -13680,36 +13138,34 @@ msgid "Data directory" msgstr "Bestandslocatie voor de data" msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." +"Load and store settings at the given directory. This is useful for maintaining different " +"profiles or including configurations from a network storage." msgstr "" -"Laad fabrieksinstellingen en sla op. Dit is handig voor het onderhouden van " -"verschillende profielen of het opnemen van configuraties van een " -"netwerkopslag." +"Laad fabrieksinstellingen en sla op. Dit is handig voor het onderhouden van verschillende " +"profielen of het opnemen van configuraties van een netwerkopslag." msgid "Load custom gcode" -msgstr "" +msgstr "Laad aangepaste gcode" msgid "Load custom gcode from json" -msgstr "" +msgstr "Laad aangepaste gcode vanuit json" msgid "Current z-hop" -msgstr "" +msgstr "Huidige z-hop" msgid "Contains z-hop present at the beginning of the custom G-code block." msgstr "" msgid "" -"Position of the extruder at the beginning of the custom G-code block. If the " -"custom G-code travels somewhere else, it should write to this variable so " -"PrusaSlicer knows where it travels from when it gets control back." +"Position of the extruder at the beginning of the custom G-code block. If the custom G-code " +"travels somewhere else, it should write to this variable so PrusaSlicer knows where it " +"travels from when it gets control back." msgstr "" msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom " -"G-code moves the extruder axis, it should write to this variable so " -"PrusaSlicer deretracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom G-code moves " +"the extruder axis, it should write to this variable so PrusaSlicer deretracts correctly " +"when it gets control back." msgstr "" msgid "Extra deretraction" @@ -13721,9 +13177,7 @@ msgstr "" msgid "Absolute E position" msgstr "" -msgid "" -"Current position of the extruder axis. Only used with absolute extruder " -"addressing." +msgid "Current position of the extruder axis. Only used with absolute extruder addressing." msgstr "" msgid "Current extruder" @@ -13735,9 +13189,7 @@ msgstr "" msgid "Current object index" msgstr "" -msgid "" -"Specific for sequential printing. Zero-based index of currently printed " -"object." +msgid "Specific for sequential printing. Zero-based index of currently printed object." msgstr "" msgid "Has wipe tower" @@ -13749,17 +13201,13 @@ msgstr "" msgid "Initial extruder" msgstr "" -msgid "" -"Zero-based index of the first extruder used in the print. Same as " -"initial_tool." +msgid "Zero-based index of the first extruder used in the print. Same as initial_tool." msgstr "" msgid "Initial tool" msgstr "" -msgid "" -"Zero-based index of the first extruder used in the print. Same as " -"initial_extruder." +msgid "Zero-based index of the first extruder used in the print. Same as initial_extruder." msgstr "" msgid "Is extruder used?" @@ -13796,16 +13244,15 @@ msgid "Weight per extruder" msgstr "" msgid "" -"Weight per extruder extruded during the entire print. Calculated from " -"filament_density value in Filament Settings." +"Weight per extruder extruded during the entire print. Calculated from filament_density " +"value in Filament Settings." msgstr "" msgid "Total weight" msgstr "" msgid "" -"Total weight of the print. Calculated from filament_density value in " -"Filament Settings." +"Total weight of the print. Calculated from filament_density value in Filament Settings." msgstr "" msgid "Total layer count" @@ -13830,9 +13277,8 @@ msgid "Scale per object" msgstr "" msgid "" -"Contains a string with the information about what scaling was applied to the " -"individual objects. Indexing of the objects is zero-based (first object has " -"index 0).\n" +"Contains a string with the information about what scaling was applied to the individual " +"objects. Indexing of the objects is zero-based (first object has index 0).\n" "Example: 'x:100% y:50% z:100'." msgstr "" @@ -13842,21 +13288,18 @@ msgstr "" msgid "Source filename of the first object, without extension." msgstr "" -msgid "" -"The vector has two elements: x and y coordinate of the point. Values in mm." +msgid "The vector has two elements: x and y coordinate of the point. Values in mm." msgstr "" -msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values " -"in mm." +msgid "The vector has two elements: x and y dimension of the bounding box. Values in mm." msgstr "" msgid "First layer convex hull" msgstr "" msgid "" -"Vector of points of the first layer convex hull. Each element has the " -"following format:'[x, y]' (x and y are floating-point numbers in mm)." +"Vector of points of the first layer convex hull. Each element has the following format:'[x, " +"y]' (x and y are floating-point numbers in mm)." msgstr "" msgid "Bottom-left corner of first layer bounding box" @@ -13878,19 +13321,19 @@ msgid "Size of the print bed bounding box" msgstr "" msgid "Timestamp" -msgstr "" +msgstr "Tijdstempel" msgid "String containing current time in yyyyMMdd-hhmmss format." msgstr "" msgid "Day" -msgstr "" +msgstr "Dag" msgid "Hour" -msgstr "" +msgstr "Uur" msgid "Minute" -msgstr "" +msgstr "Minuut" msgid "Print preset name" msgstr "" @@ -13902,8 +13345,8 @@ msgid "Filament preset name" msgstr "" msgid "" -"Names of the filament presets used for slicing. The variable is a vector " -"containing one name for each extruder." +"Names of the filament presets used for slicing. The variable is a vector containing one " +"name for each extruder." msgstr "" msgid "Printer preset name" @@ -13921,9 +13364,7 @@ msgstr "" msgid "Number of extruders" msgstr "" -msgid "" -"Total number of extruders, regardless of whether they are used in the " -"current print." +msgid "Total number of extruders, regardless of whether they are used in the current print." msgstr "" msgid "Layer number" @@ -13935,9 +13376,7 @@ msgstr "" msgid "Layer z" msgstr "" -msgid "" -"Height of the current layer above the print bed, measured to the top of the " -"layer." +msgid "Height of the current layer above the print bed, measured to the top of the layer." msgstr "" msgid "Maximal layer z" @@ -13983,12 +13422,8 @@ msgid "large overhangs" msgstr "large overhangs" #, c-format, boost-format -msgid "" -"It seems object %s has %s. Please re-orient the object or enable support " -"generation." -msgstr "" -"It seems object %s has %s. Please re-orient the object or enable support " -"generation." +msgid "It seems object %s has %s. Please re-orient the object or enable support generation." +msgstr "It seems object %s has %s. Please re-orient the object or enable support generation." msgid "Optimizing toolpath" msgstr "Optimaliseren van het pad" @@ -13997,19 +13432,17 @@ msgid "Slicing mesh" msgstr "Slicing mesh" msgid "" -"No layers were detected. You might want to repair your STL file(s) or check " -"their size or thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check their size or " +"thickness and retry.\n" msgstr "" -"No layers were detected. You might want to repair your STL file(s) or check " -"their size or thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check their size or " +"thickness and retry.\n" msgid "" -"An object's XY size compensation will not be used because it is also color-" -"painted.\n" +"An object's XY size compensation will not be used because it is also color-painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"An object's XY size compensation will not be used because it is also color-" -"painted.\n" +"An object's XY size compensation will not be used because it is also color-painted.\n" "XY Size compensation can not be combined with color-painting." #, c-format, boost-format @@ -14043,11 +13476,8 @@ msgstr "Support: repareer gaten op laag %d" msgid "Support: propagate branches at layer %d" msgstr "Support: verspreid takken op laag %d" -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Unknown file format: input file must have .stl, .obj, or .amf(.xml) " -"extension." +msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgid "Loading of a model file failed." msgstr "Loading of model file failed." @@ -14115,11 +13545,10 @@ msgstr "Klaar" msgid "How to use calibration result?" msgstr "Hoe kan ik kalibratieresultaten gebruiken?" -msgid "" -"You could change the Flow Dynamics Calibration Factor in material editing" +msgid "You could change the Flow Dynamics Calibration Factor in material editing" msgstr "" -"Je kunt de kalibratiefactor van de stromingsdynamica wijzigen bij het " -"bewerken van materialen" +"Je kunt de kalibratiefactor van de stromingsdynamica wijzigen bij het bewerken van " +"materialen" msgid "" "The current firmware version of the printer does not support calibration.\n" @@ -14168,8 +13597,7 @@ msgid "The selected preset: %s is not found." msgstr "De geselecteerde preset: %s is niet gevonden." msgid "The name cannot be the same as the system preset name." -msgstr "" -"De naam mag niet hetzelfde zijn als de naam van de systeemvoorinstelling." +msgstr "De naam mag niet hetzelfde zijn als de naam van de systeemvoorinstelling." msgid "The name is the same as another existing preset name" msgstr "De naam is hetzelfde als een andere bestaande presetnaam" @@ -14177,11 +13605,8 @@ msgstr "De naam is hetzelfde als een andere bestaande presetnaam" msgid "create new preset failed." msgstr "nieuwe voorinstelling maken mislukt." -msgid "" -"Are you sure to cancel the current calibration and return to the home page?" -msgstr "" -"Are you sure you want to cancel the current calibration and return to the " -"home page?" +msgid "Are you sure to cancel the current calibration and return to the home page?" +msgstr "Are you sure you want to cancel the current calibration and return to the home page?" msgid "No Printer Connected!" msgstr "Geen printer aangesloten!" @@ -14196,17 +13621,16 @@ msgid "The input value size must be 3." msgstr "De grootte van de invoerwaarde moet 3 zijn." msgid "" -"This machine type can only hold 16 history results per nozzle. You can " -"delete the existing historical results and then start calibration. Or you " -"can continue the calibration, but you cannot create new calibration " -"historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can delete the existing " +"historical results and then start calibration. Or you can continue the calibration, but you " +"cannot create new calibration historical results. \n" "Do you still want to continue the calibration?" msgstr "" -"This machine type can only hold 16 historical results per nozzle. You can " -"delete the existing historical results and then start calibration. Or you " -"can continue the calibration, but you cannot create new calibration " -"historical results. \n" -"Do you still want to continue the calibration?" +"Dit type machine kan slechts 16 historische resultaten per mondstuk bevatten. U kunt de " +"bestaande historische resultaten verwijderen en vervolgens de kalibratie starten. Of u kunt " +"doorgaan met de kalibratie, maar u kunt geen nieuwe historische kalibratieresultaten " +"maken.\n" +"Wilt u de kalibratie nog steeds voortzetten?" msgid "Connecting to printer..." msgstr "Aansluiten op de printer..." @@ -14219,21 +13643,20 @@ msgstr "Flow Dynamics kalibratieresultaat is opgeslagen in de printer" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to override the historical result?" +"There is already a historical calibration result with the same name: %s. Only one of the " +"results with the same name is saved. Are you sure you want to override the historical " +"result?" msgstr "" -"Er is al een eerder kalibratieresultaat met dezelfde naam: %s. Er wordt maar " -"één resultaat met een naam opgeslagen. Weet je zeker dat je het vorige " -"resultaat wilt overschrijven?" +"Er is al een eerder kalibratieresultaat met dezelfde naam: %s. Er wordt maar één resultaat " +"met een naam opgeslagen. Weet je zeker dat je het vorige resultaat wilt overschrijven?" #, c-format, boost-format msgid "" -"This machine type can only hold %d history results per nozzle. This result " -"will not be saved." +"This machine type can only hold %d history results per nozzle. This result will not be " +"saved." msgstr "" -"This machine type can only hold %d historical results per nozzle. This " -"result will not be saved." +"Dit type machine kan slechts %d historische resultaten per mondstuk bevatten. Dit resultaat " +"wordt niet opgeslagen." msgid "Internal Error" msgstr "Interne fout" @@ -14242,37 +13665,32 @@ msgid "Please select at least one filament for calibration" msgstr "Selecteer ten minste één filament voor kalibratie" msgid "Flow rate calibration result has been saved to preset" -msgstr "" -"Het resultaat van de debietkalibratie is opgeslagen in een " -"voorkeursinstelling." +msgstr "Het resultaat van de debietkalibratie is opgeslagen in een voorkeursinstelling." msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" -"Het kalibratieresultaat van de maximale volumetrische snelheid is opgeslagen " -"in de vooraf ingestelde waarde" +"Het kalibratieresultaat van de maximale volumetrische snelheid is opgeslagen in de vooraf " +"ingestelde waarde" msgid "When do you need Flow Dynamics Calibration" msgstr "Wanneer heb je een Flow Dynamics-kalibratie nodig?" msgid "" -"We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is fully automated " +"and the result will be saved into the printer for future use. You only need to do the " +"calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the " -"filament setting." +"3. If the max volumetric speed or print temperature is changed in the filament setting." msgstr "" -"We hebben nu de automatische kalibratie voor verschillende filamenten " -"toegevoegd. Deze is volledig geautomatiseerd en het resultaat wordt " -"opgeslagen in de printer voor toekomstig gebruik. Je hoeft de kalibratie " -"alleen uit te voeren in de volgende beperkte gevallen:\n" -"1. Als je een nieuw filament van een ander merk/model introduceert of als " -"het filament vochtig is;\n" -"2. Als de spuitmond versleten is of vervangen is door een nieuwe;\n" -"3. Als de maximale volumetrische snelheid of printtemperatuur is gewijzigd " -"in de filamentinstelling." +"We hebben nu de automatische kalibratie voor verschillende filamenten toegevoegd. Deze is " +"volledig geautomatiseerd en het resultaat wordt opgeslagen in de printer voor toekomstig " +"gebruik. Je hoeft de kalibratie alleen uit te voeren in de volgende beperkte gevallen:\n" +"1. Als je een nieuw filament van een ander merk/model introduceert of als het filament " +"vochtig is;\n" +"2. Als het mondstuk versleten is of vervangen is door een nieuwe;\n" +"3. Als de maximale volumetrische snelheid of printtemperatuur is gewijzigd in de " +"filamentinstelling." msgid "About this calibration" msgstr "Over deze kalibratie" @@ -14280,106 +13698,97 @@ msgstr "Over deze kalibratie" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/" -"material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/material print, with " +"the \"flow dynamics calibration\" option checked in the print start menu, the printer will " +"follow the old way, calibrate the filament before the print; When you start a multi color/" +"material print, the printer will use the default compensation parameter for the filament " +"during every filament switch which will have a good result in most cases.\n" "\n" -"Please note that there are a few cases that can make the calibration results " -"unreliable, such as insufficient adhesion on the build plate. Improving " -"adhesion can be achieved by washing the build plate or applying glue. For " -"more information on this topic, please refer to our Wiki.\n" +"Please note that there are a few cases that can make the calibration results unreliable, " +"such as insufficient adhesion on the build plate. Improving adhesion can be achieved by " +"washing the build plate or applying glue. For more information on this topic, please refer " +"to our Wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may " -"cause the result not exactly the same in each calibration. We are still " -"investigating the root cause to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may cause the " +"result not exactly the same in each calibration. We are still investigating the root cause " +"to do improvements with new updates." msgstr "" msgid "When to use Flow Rate Calibration" msgstr "Wanneer moet u Flow Rate kalibratie gebruiken" msgid "" -"After using Flow Dynamics Calibration, there might still be some extrusion " -"issues, such as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or " -"zits, or the layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " -"top layer of the model, even when printing slowly.\n" +"After using Flow Dynamics Calibration, there might still be some extrusion issues, such " +"as:\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the " +"layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the " +"model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " -"they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." msgstr "" -"After using Flow Dynamics Calibration, there might still be some extrusion " -"issues, such as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or " -"zits, or the layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " -"top layer of the model, even when printing slowly.\n" +"After using Flow Dynamics Calibration, there might still be some extrusion issues, such " +"as:\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the " +"layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the " +"model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " -"they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." msgid "" -"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" -"PLA used in RC planes. These materials expand greatly when heated, and " -"calibration provides a useful reference flow rate." +"In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC " +"planes. These materials expand greatly when heated, and calibration provides a useful " +"reference flow rate." msgstr "" -"Bovendien is Flow Rate kalibratie cruciaal voor schuimmaterialen zoals LW-" -"PLA die worden gebruikt in RC-vliegtuigen. Deze materialen zetten sterk uit " -"bij verhitting, en kalibratie levert een bruikbare referentiestroom op." +"Bovendien is Flow Rate kalibratie cruciaal voor schuimmaterialen zoals LW-PLA die worden " +"gebruikt in RC-vliegtuigen. Deze materialen zetten sterk uit bij verhitting, en kalibratie " +"levert een bruikbare referentiestroom op." msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion " -"volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." +"Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. The " +"default setting works well in Bambu Lab printers and official filaments as they were pre-" +"calibrated and fine-tuned. For a regular filament, you usually won't need to perform a Flow " +"Rate Calibration unless you still see the listed defects after you have done other " +"calibrations. For more details, please check out the wiki article." msgstr "" -"Flow Rate Calibration meet de verhouding tussen verwachte en werkelijke " -"extrusievolumes. De standaardinstelling werkt goed in Bambu Lab printers en " -"officiële filamenten, omdat deze vooraf zijn gekalibreerd en afgestemd. Voor " -"een normaal filament is het meestal niet nodig om een kalibratie van de " -"stroomsnelheid uit te voeren, tenzij je nog steeds de genoemde defecten ziet " -"nadat je andere kalibraties hebt uitgevoerd. Kijk voor meer informatie in " -"het wiki-artikel." +"Flow Rate Calibration meet de verhouding tussen verwachte en werkelijke extrusievolumes. De " +"standaardinstelling werkt goed in Bambu Lab printers en officiële filamenten, omdat deze " +"vooraf zijn gekalibreerd en afgestemd. Voor een normaal filament is het meestal niet nodig " +"om een kalibratie van de stroomsnelheid uit te voeren, tenzij je nog steeds de genoemde " +"defecten ziet nadat je andere kalibraties hebt uitgevoerd. Kijk voor meer informatie in het " +"wiki-artikel." msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " -"directly measuring the calibration patterns. However, please be advised that " -"the efficacy and accuracy of this method may be compromised with specific " -"types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring " +"the calibration patterns. However, please be advised that the efficacy and accuracy of this " +"method may be compromised with specific types of materials. Particularly, filaments that " +"are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish " +"may not be suitable for this calibration and can produce less-than-desirable results.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We are still " +"improving the accuracy and compatibility of this calibration through firmware updates over " +"time.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only " -"by those who fully understand its purpose and implications. Incorrect usage " -"can lead to sub-par prints or printer damage. Please make sure to carefully " -"read and understand the process before doing it." +"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who " +"fully understand its purpose and implications. Incorrect usage can lead to sub-par prints " +"or printer damage. Please make sure to carefully read and understand the process before " +"doing it." msgstr "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " -"directly measuring the calibration patterns. However, please be advised that " -"the efficacy and accuracy of this method may be compromised with specific " -"types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring " +"the calibration patterns. However, please be advised that the efficacy and accuracy of this " +"method may be compromised with specific types of materials. Particularly, filaments that " +"are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish " +"may not be suitable for this calibration and can produce less-than-desirable results.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We are still " +"improving the accuracy and compatibility of this calibration through firmware updates over " +"time.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only " -"by those who fully understand its purpose and implications. Incorrect usage " -"can lead to sub-par prints or printer damage. Please make sure to carefully " -"read and understand the process before performing it." +"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who " +"fully understand its purpose and implications. Incorrect usage can lead to sub-par prints " +"or printer damage. Please make sure to carefully read and understand the process before " +"performing it." msgid "When you need Max Volumetric Speed Calibration" msgstr "Wanneer u maximale volumetrische snelheidskalibratie nodig hebt" @@ -14389,8 +13798,7 @@ msgstr "Over-extrusie of onderextrusie" msgid "Max Volumetric Speed calibration is recommended when you print with:" msgstr "" -"Kalibratie van de maximale volumetrische snelheid wordt aanbevolen wanneer " -"je afdrukt met:" +"Kalibratie van de maximale volumetrische snelheid wordt aanbevolen wanneer je afdrukt met:" msgid "material with significant thermal shrinkage/expansion, such as..." msgstr "materiaal met aanzienlijke thermische krimp/uitzetting, zoals..." @@ -14402,18 +13810,16 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "We hebben de beste Flow Dynamics kalibratiefactor gevonden" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The failed test result " +"would be dropped." msgstr "" -"Een deel van de kalibratie is mislukt! U kunt de plaat schoonmaken en het " -"opnieuw proberen. Het mislukte testresultaat komt te vervallen." +"Een deel van de kalibratie is mislukt! U kunt de plaat schoonmaken en het opnieuw proberen. " +"Het mislukte testresultaat komt te vervallen." -msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" +msgid "*We recommend you to add brand, materia, type, and even humidity level in the Name" msgstr "" -"*We raden je aan om merk, materiaal, type en zelfs vochtigheidsgraad toe te " -"voegen in de Naam." +"*We raden je aan om merk, materiaal, type en zelfs vochtigheidsgraad toe te voegen in de " +"Naam." msgid "Failed" msgstr "Mislukt" @@ -14425,11 +13831,11 @@ msgid "The name cannot exceed 40 characters." msgstr "De naam mag niet langer zijn dan 40 tekens." msgid "" -"Only one of the results with the same name will be saved. Are you sure you " -"want to override the other results?" +"Only one of the results with the same name will be saved. Are you sure you want to override " +"the other results?" msgstr "" -"Slechts één van de resultaten met dezelfde naam wordt opgeslagen. Weet je " -"zeker dat je de andere resultaten wilt overschrijven?" +"Slechts één van de resultaten met dezelfde naam wordt opgeslagen. Weet je zeker dat je de " +"andere resultaten wilt overschrijven?" msgid "Please find the best line on your plate" msgstr "Zoek de beste regel op je bord" @@ -14487,8 +13893,7 @@ msgid "Please choose a block with smoothest top surface." msgstr "Kies een blok met de gladste bovenkant." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" -msgstr "" -"Voer een geldige waarde in (0 <= maximale volumetrische snelheid <= 60)" +msgstr "Voer een geldige waarde in (0 <= maximale volumetrische snelheid <= 60)" msgid "Calibration Type" msgstr "Kalibratietype" @@ -14503,11 +13908,11 @@ msgid "Title" msgstr "Titel" msgid "" -"A test model will be printed. Please clear the build plate and place it back " -"to the hot bed before calibration." +"A test model will be printed. Please clear the build plate and place it back to the hot bed " +"before calibration." msgstr "" -"Er wordt een testmodel geprint. Maak de bouwplaat vrij en plaats deze terug " -"op het hotbed voordat je gaat kalibreren." +"Er wordt een testmodel geprint. Maak de bouwplaat vrij en plaats deze terug op het hotbed " +"voordat je gaat kalibreren." msgid "Printing Parameters" msgstr "Afdrukparameters" @@ -14531,8 +13936,7 @@ msgid "" msgstr "" "Tips voor kalibratiemateriaal: \n" "- Materialen die dezelfde warmbedtemperatuur kunnen delen\n" -"- Verschillende filamentmerken en -families (Merk = Bambu, Familie = Basis, " -"Mat)" +"- Verschillende filamentmerken en -families (Merk = Bambu, Familie = Basis, Mat)" msgid "Pattern" msgstr "Patroon" @@ -14557,11 +13961,10 @@ msgid "To k Value" msgstr "Naar k Waarde" msgid "Step value" -msgstr "" +msgstr "Stap waarde" msgid "The nozzle diameter has been synchronized from the printer Settings" -msgstr "" -"De diameter van het mondstuk is gesynchroniseerd met de printerinstellingen." +msgstr "De diameter van het mondstuk is gesynchroniseerd met de printerinstellingen." msgid "From Volumetric Speed" msgstr "Van Volumetric Speed" @@ -14589,7 +13992,7 @@ msgstr "Actie" #, c-format, boost-format msgid "This machine type can only hold %d history results per nozzle." -msgstr "This machine type can only hold %d historical results per nozzle." +msgstr "Dit type machine kan slechts %d historische resultaten per mondstuk bevatten." msgid "Edit Flow Dynamics Calibration" msgstr "Flow Dynamics-kalibratie bewerken" @@ -14625,25 +14028,27 @@ msgid "Finished" msgstr "Voltooid" msgid "Multiple resolved IP addresses" -msgstr "" +msgstr "Meerdere vastgestelde IP-adressen" #, boost-format msgid "" "There are several IP addresses resolving to hostname %1%.\n" "Please select one that should be used." msgstr "" +"Er zijn meerdere IP-adressen die verwijzen naar hostname %1%.\n" +"Selecteer er een die gebruikt moet worden." msgid "PA Calibration" msgstr "PA-kalibratie" msgid "DDE" -msgstr "" +msgstr "DDE" msgid "Bowden" msgstr "Bowden" msgid "Extruder type" -msgstr "" +msgstr "Extrudertype" msgid "PA Tower" msgstr "PA-toren" @@ -14690,7 +14095,7 @@ msgid "PETG" msgstr "PETG" msgid "PCTG" -msgstr "" +msgstr "PCTG" msgid "TPU" msgstr "TPU" @@ -14771,14 +14176,13 @@ msgid "Upload to Printer Host with the following filename:" msgstr "Uploaden naar Printer Host met de volgende bestandsnaam:" msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" -"Gebruik indien nodig schuine strepen (/) als scheidingsteken voor mappen." +msgstr "Gebruik indien nodig schuine strepen (/) als scheidingsteken voor mappen." msgid "Upload to storage" -msgstr "" +msgstr "Uploaden naar opslag" msgid "Switch to Device tab after upload." -msgstr "" +msgstr "Na het uploaden naar het tabblad Apparaat gaan." #, c-format, boost-format msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" @@ -14801,7 +14205,7 @@ msgstr "Host" msgctxt "OfFile" msgid "Size" -msgstr "Maat" +msgstr "Grootte" msgid "Filename" msgstr "Bestandsnaam" @@ -14822,7 +14226,7 @@ msgid "Cancelling" msgstr "Annuleren" msgid "Error uploading to print host" -msgstr "" +msgstr "Fout bij uploaden naar printhost" msgid "Unable to perform boolean operation on selected parts" msgstr "Kan geen booleaanse bewerking uitvoeren op geselecteerde onderdelen" @@ -14876,7 +14280,7 @@ msgid "Export Log" msgstr "Logboek exporteren" msgid "OrcaSlicer Version:" -msgstr "" +msgstr "OrcaSlicer-versie:" msgid "System Version:" msgstr "Systeemversie:" @@ -14953,11 +14357,10 @@ msgstr "Vendor is not selected; please reselect vendor." msgid "Custom vendor is not input, please input custom vendor." msgstr "Custom vendor missing; please input custom vendor." -msgid "" -"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgid "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." msgstr "" -"\"Bambu\" of \"Generic\" kan niet worden gebruikt als leverancier voor " -"aangepaste filamenten." +"\"Bambu\" of \"Generic\" kan niet worden gebruikt als leverancier voor aangepaste " +"filamenten." msgid "Filament type is not selected, please reselect type." msgstr "Het type draad is niet geselecteerd, selecteer het type opnieuw." @@ -14966,34 +14369,30 @@ msgid "Filament serial is not inputed, please input serial." msgstr "Filament serial missing; please input serial." msgid "" -"There may be escape characters in the vendor or serial input of filament. " -"Please delete and re-enter." +"There may be escape characters in the vendor or serial input of filament. Please delete and " +"re-enter." msgstr "" -"There may be disallowed characters in the vendor or serial input of the " -"filament. Please delete and re-enter." +"There may be disallowed characters in the vendor or serial input of the filament. Please " +"delete and re-enter." msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." -msgstr "" -"Alle ingangen in de aangepaste verkoper of serie zijn spaties. Voer opnieuw " -"in." +msgstr "Alle ingangen in de aangepaste verkoper of serie zijn spaties. Voer opnieuw in." msgid "The vendor can not be a number. Please re-enter." msgstr "The vendor can not be a number; please re-enter." -msgid "" -"You have not selected a printer or preset yet. Please select at least one." -msgstr "" -"Je hebt nog geen printer of preset geselecteerd. Selecteer er ten minste één." +msgid "You have not selected a printer or preset yet. Please select at least one." +msgstr "Je hebt nog geen printer of preset geselecteerd. Selecteer er ten minste één." #, c-format, boost-format msgid "" "The Filament name %s you created already exists. \n" -"If you continue creating, the preset created will be displayed with its full " -"name. Do you want to continue?" +"If you continue creating, the preset created will be displayed with its full name. Do you " +"want to continue?" msgstr "" "De filamentnaam %s die je hebt gemaakt, bestaat al. \n" -"Als u doorgaat, wordt de gemaakte voorinstelling weergegeven met de " -"volledige naam. Wilt u doorgaan?" +"Als u doorgaat, wordt de gemaakte voorinstelling weergegeven met de volledige naam. Wilt u " +"doorgaan?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Sommige bestaande presets zijn niet aangemaakt, als volgt:\n" @@ -15006,8 +14405,7 @@ msgstr "" "Wil je het herschrijven?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -15057,7 +14455,7 @@ msgid "Hot Bed STL" msgstr "Warm bed STL" msgid "Load stl" -msgstr "Stl laden" +msgstr "STL laden" msgid "Hot Bed SVG" msgstr "Warm bed SVG" @@ -15082,7 +14480,7 @@ msgid "The printer model was not found, please reselect." msgstr "Het printermodel is niet gevonden, selecteer opnieuw." msgid "The nozzle diameter is not found, place reselect." -msgstr "The nozzle diameter was not found; please reselect." +msgstr "De diameter van het mondstuk is niet gevonden. Selecteer opnieuw." msgid "The printer preset is not found, place reselect." msgstr "The printer preset was not found; please reselect." @@ -15103,37 +14501,35 @@ msgid "Back Page 1" msgstr "Terug Pagina 1" msgid "" -"You have not yet chosen which printer preset to create based on. Please " -"choose the vendor and model of the printer" +"You have not yet chosen which printer preset to create based on. Please choose the vendor " +"and model of the printer" msgstr "" -"Je hebt nog niet gekozen op basis van welke preset je de printer wilt maken. " -"Kies de leverancier en het model van de printer" +"Je hebt nog niet gekozen op basis van welke preset je de printer wilt maken. Kies de " +"leverancier en het model van de printer" msgid "" -"You have entered an illegal input in the printable area section on the first " -"page. Please check before creating it." +"You have entered an illegal input in the printable area section on the first page. Please " +"check before creating it." msgstr "" -"U hebt een niet toegestaan teken ingevoerd in het gedeelte van het " -"afdrukbare gebied op de eerste pagina. Gebruik alleen cijfers." +"U hebt een niet toegestaan teken ingevoerd in het gedeelte van het afdrukbare gebied op de " +"eerste pagina. Gebruik alleen cijfers." msgid "The custom printer or model is not inputed, place input." msgstr "The custom printer or model missing; please input." msgid "" -"The printer preset you created already has a preset with the same name. Do " -"you want to overwrite it?\n" -"\tYes: Overwrite the printer preset with the same name, and filament and " -"process presets with the same preset name will be recreated \n" -"and filament and process presets without the same preset name will be " -"reserve.\n" +"The printer preset you created already has a preset with the same name. Do you want to " +"overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and process presets " +"with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" -"The printer preset you created already has a preset with the same name. Do " -"you want to overwrite it?\n" -"\tYes: Overwrite the printer preset with the same name, and filament and " -"process presets with the same preset name will be recreated \n" -"and filament and process presets without the same preset name will be " -"reserved.\n" +"The printer preset you created already has a preset with the same name. Do you want to " +"overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and process presets " +"with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be reserved.\n" "\tCancel: Do not create a preset; return to the creation interface." msgid "You need to select at least one filament preset." @@ -15154,40 +14550,36 @@ msgstr "Leverancier is niet gevonden; selecteer opnieuw." msgid "Current vendor has no models, please reselect." msgstr "De huidige leverancier heeft geen modellen. Selecteer opnieuw." -msgid "" -"You have not selected the vendor and model or inputed the custom vendor and " -"model." +msgid "You have not selected the vendor and model or inputed the custom vendor and model." msgstr "" -"U hebt de verkoper en het model niet geselecteerd of de aangepaste verkoper " -"en het aangepaste model niet ingevoerd." +"U hebt de verkoper en het model niet geselecteerd of de aangepaste verkoper en het " +"aangepaste model niet ingevoerd." msgid "" -"There may be escape characters in the custom printer vendor or model. Please " -"delete and re-enter." +"There may be escape characters in the custom printer vendor or model. Please delete and re-" +"enter." msgstr "" -"Er kunnen escape-tekens staan in de aangepaste printerverkoper of het " -"aangepaste printermodel. Verwijder ze en voer ze opnieuw in." +"Er kunnen escape-tekens staan in de aangepaste printerverkoper of het aangepaste " +"printermodel. Verwijder ze en voer ze opnieuw in." -msgid "" -"All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgid "All inputs in the custom printer vendor or model are spaces. Please re-enter." msgstr "" -"Alle invoer in de aangepaste printerverkoper of het aangepaste printermodel " -"zijn spaties. Voer opnieuw in." +"Alle invoer in de aangepaste printerverkoper of het aangepaste printermodel zijn spaties. " +"Voer opnieuw in." msgid "Please check bed printable shape and origin input." msgstr "Controleer de bedrukbare vorm en oorsprongsinvoer." -msgid "" -"You have not yet selected the printer to replace the nozzle, please choose." +msgid "You have not yet selected the printer to replace the nozzle, please choose." msgstr "" -"Je hebt de printer waarvoor je het mondstuk wilt vervangen nog niet " -"geselecteerd; kies een printer." +"Je hebt de printer waarvoor je het mondstuk wilt vervangen nog niet geselecteerd; kies een " +"printer." msgid "Create Printer Successful" -msgstr "Printer succesvol maken" +msgstr "Printer succesvol gemaakt" msgid "Create Filament Successful" -msgstr "Filament Created Successfully" +msgstr "Filament succesvol gemaakt" msgid "Printer Created" msgstr "Printer gemaakt" @@ -15200,24 +14592,27 @@ msgstr "Aangemaakt filament" msgid "" "Please go to filament setting to edit your presets if you need.\n" -"Please note that nozzle temperature, hot bed temperature, and maximum " -"volumetric speed has a significant impact on printing quality. Please set " -"them carefully." +"Please note that nozzle temperature, hot bed temperature, and maximum volumetric speed has " +"a significant impact on printing quality. Please set them carefully." msgstr "" -"Ga naar filamentinstellingen om uw voorinstellingen te bewerken als dat " -"nodig is.\n" -"Houd er rekening mee dat de spuitmondtemperatuur, warmbedtemperatuur en " -"maximale volumetrische snelheid elk een aanzienlijke invloed hebben op de " -"printkwaliteit. Stel ze daarom zorgvuldig in." +"Ga naar filamentinstellingen om uw voorinstellingen te bewerken als dat nodig is.\n" +"Houd er rekening mee dat de spuitmondtemperatuur, warmbedtemperatuur en maximale " +"volumetrische snelheid elk een aanzienlijke invloed hebben op de printkwaliteit. Stel ze " +"daarom zorgvuldig in." msgid "" "\n" "\n" -"Orca has detected that your user presets synchronization function is not " -"enabled, which may result in unsuccessful Filament settings on the Device " -"page. \n" +"Orca has detected that your user presets synchronization function is not enabled, which may " +"result in unsuccessful Filament settings on the Device page. \n" "Click \"Sync user presets\" to enable the synchronization function." msgstr "" +"\n" +"\n" +"Orca heeft gedetecteerd dat de synchronisatiefunctie voor uw gebruikersinstellingen niet is " +"ingeschakeld, wat kan resulteren in mislukte Filament-instellingen op de pagina Apparaat.\n" +"Klik op \"Gebruikersinstellingen synchroniseren\" om de synchronisatiefunctie in te " +"schakelen." msgid "Printer Setting" msgstr "Printerinstelling" @@ -15253,19 +14648,17 @@ msgid "open zip written fail" msgstr "open zip geschreven mislukt" msgid "Export successful" -msgstr "Export succesvol" +msgstr "Exporteren is gelukt" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" -"If not, a time suffix will be added, and you can modify the name after " -"creation." +"The '%s' folder already exists in the current directory. Do you want to clear it and " +"rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after creation." msgstr "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it?\n" -"If not, a time suffix will be added, and you can modify the name after " -"creation." +"The '%s' folder already exists in the current directory. Do you want to clear it and " +"rebuild it?\n" +"If not, a time suffix will be added, and you can modify the name after creation." msgid "" "Printer and all the filament&&process presets that belongs to the printer. \n" @@ -15279,40 +14672,35 @@ msgstr "" "Ingestelde preset vullingsset van de gebruiker.\n" "Kan worden gedeeld met anderen." -msgid "" -"Only display printer names with changes to printer, filament, and process " -"presets." +msgid "Only display printer names with changes to printer, filament, and process presets." msgstr "" -"Alleen printers met wijzigingen in printer-, filament- en proces presets " -"worden weergegeven." +"Alleen printers met wijzigingen in printer-, filament- en proces presets worden weergegeven." msgid "Only display the filament names with changes to filament presets." msgstr "Geef alleen de filamentnamen weer met wijzigingen in filament presets." msgid "" -"Only printer names with user printer presets will be displayed, and each " -"preset you choose will be exported as a zip." +"Only printer names with user printer presets will be displayed, and each preset you choose " +"will be exported as a zip." msgstr "" -"Alleen printernamen met gebruikersprinter presets worden weergegeven en elke " -"preset die je kiest, wordt als zip geëxporteerd." +"Alleen printernamen met gebruikersprinter presets worden weergegeven en elke preset die je " +"kiest, wordt als zip geëxporteerd." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be " -"exported as a zip." +"and all user filament presets in each filament name you select will be exported as a zip." msgstr "" "Alleen de filamentnamen met gebruikers presets worden weergegeven, \n" -"en alle gebruikers presets in elke filamentnaam die u selecteert, worden " -"geëxporteerd als zip-bestand." +"en alle gebruikers presets in elke filamentnaam die u selecteert, worden geëxporteerd als " +"zip-bestand." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be " -"exported as a zip." +"and all user process presets in each printer name you select will be exported as a zip." msgstr "" "Alleen printernamen met gewijzigde proces presets worden weergegeven, \n" -"en alle gebruikersproces presets in elke printernaam die u selecteert, " -"worden als zip geëxporteerd." +"en alle gebruikersproces presets in elke printernaam die u selecteert, worden als zip " +"geëxporteerd." msgid "Please select at least one printer or filament." msgstr "Selecteer ten minste één printer of filament." @@ -15327,23 +14715,22 @@ msgid "Edit Filament" msgstr "Bewerk filament" msgid "Filament presets under this filament" -msgstr "Presets onder deze gloeidraad" +msgstr "Voorinstellingen voor filament onder dit filament" msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will be deleted after " +"exiting the dialog." msgstr "" -"Opmerking: Als de enige preset onder deze gloeidraad wordt verwijderd, wordt " -"de gloeidraad verwijderd na het verlaten van het dialoogvenster." +"Opmerking: Als de enige preset onder deze gloeidraad wordt verwijderd, wordt de gloeidraad " +"verwijderd na het verlaten van het dialoogvenster." msgid "Presets inherited by other presets can not be deleted" -msgstr "" -"Presets die door andere presets worden geërfd, kunnen niet worden verwijderd" +msgstr "Presets die door andere presets worden geërfd, kunnen niet worden verwijderd" msgid "The following presets inherits this preset." msgid_plural "The following preset inherits this preset." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "De volgende voorinstellingen nemen deze voorinstelling over." +msgstr[1] "De volgende voorinstelling neemt deze voorinstelling over." msgid "Delete Preset" msgstr "Preset verwijderen" @@ -15362,13 +14749,11 @@ msgstr "Draad verwijderen" msgid "" "All the filament presets belong to this filament would be deleted. \n" -"If you are using this filament on your printer, please reset the filament " -"information for that slot." +"If you are using this filament on your printer, please reset the filament information for " +"that slot." msgstr "" -"Alle presets van het filament die bij dit filament horen, worden " -"verwijderd. \n" -"Als u dit filament gebruikt in uw printer, reset dan de filamentinformatie " -"voor die sleuf." +"Alle presets van het filament die bij dit filament horen, worden verwijderd. \n" +"Als u dit filament gebruikt in uw printer, reset dan de filamentinformatie voor die sleuf." msgid "Delete filament" msgstr "Draad verwijderen" @@ -15395,7 +14780,7 @@ msgid "For more information, please check out Wiki" msgstr "For more information, please check out our Wiki" msgid "Collapse" -msgstr "Instorten" +msgstr "Inklappen" msgid "Daily Tips" msgstr "Dagelijkse tips" @@ -15405,15 +14790,15 @@ msgid "nozzle memorized: %.1f %s" msgstr "mondstuk onthouden: %.1f %s" msgid "" -"Your nozzle diameter in preset is not consistent with memorized nozzle " -"diameter. Did you change your nozzle lately?" +"Your nozzle diameter in preset is not consistent with memorized nozzle diameter. Did you " +"change your nozzle lately?" msgstr "" -"Your nozzle diameter in preset is not consistent with the saved nozzle " -"diameter. Have you changed your nozzle?" +"Uw mondstuk diameter in preset komt niet overeen met de opgeslagen mondstuk diameter. Heeft " +"u uw mondstuk veranderd?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" -msgstr "*Afdrukken%s materiaal mee%s kan schade aan het mondstuk veroorzaken" +msgstr "*Het afdrukken van %s materiaal met %s kan schade aan het mondstuk veroorzaken" msgid "Need select printer" msgstr "Printer selecteren" @@ -15422,11 +14807,11 @@ msgid "The start, end or step is not valid value." msgstr "Het begin, einde of stap is geen geldige waarde." msgid "" -"Unable to calibrate: maybe because the set calibration value range is too " -"large, or the step is too small" +"Unable to calibrate: maybe because the set calibration value range is too large, or the " +"step is too small" msgstr "" -"Kan niet kalibreren: misschien omdat het bereik van de ingestelde " -"kalibratiewaarde te groot is, of omdat de stap te klein is" +"Kan niet kalibreren: misschien omdat het bereik van de ingestelde kalibratiewaarde te groot " +"is, of omdat de stap te klein is" msgid "Physical Printer" msgstr "Fysieke printer" @@ -15441,23 +14826,23 @@ msgid "Success!" msgstr "Succes!" msgid "Are you sure to log out?" -msgstr "" +msgstr "Weet u zeker dat u wilt uitloggen?" msgid "Refresh Printers" msgstr "Printers vernieuwen" msgid "View print host webui in Device tab" -msgstr "" +msgstr "Bekijk de printhost webui op het tabblad Apparaat" msgid "Replace the BambuLab's device tab with print host webui" -msgstr "" +msgstr "Vervang het apparaattabblad van BambuLab door de printhost webui" msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed " +"certificate." msgstr "" -"HTTPS CA-bestand is optioneel. Het is alleen nodig als je HTTPS gebruikt met " -"een zelfondertekend certificaat." +"HTTPS CA-bestand is optioneel. Het is alleen nodig als je HTTPS gebruikt met een " +"zelfondertekend certificaat." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Certificaatbestanden (*.crt, *.pem)|*.crt;*.pem|Alle bestanden|*.*" @@ -15467,21 +14852,18 @@ msgstr "Open CA-certificaatbestand" #, c-format, boost-format msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." +"On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "" -"Op dit systeem gebruikt %s HTTPS-certificaten uit de " -"systeemcertificaatopslag of de sleutelhanger." +"Op dit systeem gebruikt %s HTTPS-certificaten uit de systeemcertificaatopslag of de " +"sleutelhanger." -msgid "" -"To use a custom CA file, please import your CA file into Certificate Store / " -"Keychain." +msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "" -"Om een aangepast CA-bestand te gebruiken, importeert u uw CA-bestand in " -"Certificate Store / Keychain." +"Om een aangepast CA-bestand te gebruiken, importeert u uw CA-bestand in Certificate Store / " +"Keychain." msgid "Login/Test" -msgstr "" +msgstr "Inloggen/Test" msgid "Connection to printers connected via the print host failed." msgstr "Verbinding met printers aangesloten via de printhost mislukt." @@ -15524,11 +14906,10 @@ msgid "Could not connect to FlashAir" msgstr "Kan geen verbinding maken met FlashAir" msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " -"is required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." msgstr "" -"Opmerking: FlashAir met firmware 2.00.02 of nieuwer en geactiveerde " -"uploadfunctie is vereist." +"Opmerking: FlashAir met firmware 2.00.02 of nieuwer en geactiveerde uploadfunctie is " +"vereist." msgid "Connection to MKS works correctly." msgstr "Connection to MKS is working correctly." @@ -15558,31 +14939,31 @@ msgid "Could not connect to PrusaLink" msgstr "Kan geen verbinding maken met PrusaLink" msgid "Storages found" -msgstr "" +msgstr "Gevonden opslagplaatsen" #. TRN %1% = storage path #, boost-format msgid "%1% : read only" -msgstr "" +msgstr "%1% : alleen lezen" #. TRN %1% = storage path #, boost-format msgid "%1% : no free space" -msgstr "" +msgstr "%1% : geen vrije ruimte" #. TRN %1% = host #, boost-format msgid "Upload has failed. There is no suitable storage found at %1%." -msgstr "" +msgstr "Upload is mislukt. Er is geen geschikte opslag gevonden op %1%." msgid "Connection to Prusa Connect works correctly." -msgstr "" +msgstr "De verbinding met Prusa Connect werkt goed." msgid "Could not connect to Prusa Connect" -msgstr "" +msgstr "Kon geen verbinding maken met Prusa Connect" msgid "Connection to Repetier works correctly." -msgstr "Connection to Repetier is working correctly." +msgstr "De verbinding met Repetier werkt goed." msgid "Could not connect to Repetier" msgstr "Kan geen verbinding maken met Repetier" @@ -15619,255 +15000,232 @@ msgstr "" "Fout: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines " -"and high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines and high printing " +"quality. It is suitable for most general printing cases." msgstr "" -"It has a small layer height, and results in almost negligible layer lines " -"and high print quality. It is suitable for most general printing cases." +"Het heeft een kleine laaghoogte en resulteert in bijna verwaarloosbare laaglijnen en een " +"hoge afdrukkwaliteit. Het is geschikt voor de meeste algemene afdrukgevallen." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " -"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " -"much higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and acceleration, " +"and the sparse infill pattern is Gyroid. So, it results in much higher printing quality, " +"but a much longer printing time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " -"and acceleration, and the sparse infill pattern is Gyroid. This results in " -"much higher print quality but a much longer print time." +"Vergeleken met het standaardprofiel van een 0,2 mm mondstuk, heeft het lagere snelheden en " +"acceleratie, en het spaarzame infill patroon is Gyroid. Dit resulteert in een veel hogere " +"printkwaliteit maar ook een veel langere printtijd." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " -"bigger layer height, and results in almost negligible layer lines, and " -"slightly shorter printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer " +"height, and results in almost negligible layer lines, and slightly shorter printing time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " -"bigger layer height. This results in almost negligible layer lines and " -"slightly longer print time." +"Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer " +"height. This results in almost negligible layer lines and slightly longer print time." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " -"height, and results in slightly visible layer lines, but shorter printing " +"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height, and " +"results in slightly visible layer lines, but shorter printing time." +msgstr "" +"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height. This " +"results in slightly visible layer lines but shorter print time." + +msgid "" +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height, and " +"results in almost invisible layer lines and higher printing quality, but shorter printing " "time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " -"height. This results in slightly visible layer lines but shorter print time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height. This " +"results in almost invisible layer lines and higher print quality but longer print time." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"height, and results in almost invisible layer lines and higher printing " -"quality, but shorter printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower " +"speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in almost " +"invisible layer lines and much higher printing quality, but much longer printing time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"height. This results in almost invisible layer lines and higher print " -"quality but longer print time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower " +"speeds and acceleration, and the sparse infill pattern is Gyroid. This results in almost " +"invisible layer lines and much higher print quality but much longer print time." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in almost invisible layer lines and much higher " -"printing quality, but much longer printing time." +"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height, and " +"results in minimal layer lines and higher printing quality, but shorter printing time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. This results in almost invisible layer lines and much higher print " -"quality but much longer print time." +"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height. This " +"results in minimal layer lines and higher print quality but longer print time." msgid "" -"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer " -"height, and results in minimal layer lines and higher printing quality, but " -"shorter printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower " +"speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in minimal " +"layer lines and much higher printing quality, but much longer printing time." msgstr "" -"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer " -"height. This results in minimal layer lines and higher print quality but " -"longer print time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower " +"speeds and acceleration, and the sparse infill pattern is Gyroid. This results in minimal " +"layer lines and much higher print quality but much longer print time." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in minimal layer lines and much higher printing " -"quality, but much longer printing time." +"It has a general layer height, and results in general layer lines and printing quality. It " +"is suitable for most general printing cases." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. This results in minimal layer lines and much higher print quality " -"but much longer print time." +"Het heeft een normale laaghoogte en resulteert in gemiddelde laaglijnen en afdrukkwaliteit. " +"Het is geschikt voor de meeste afdrukgevallen." msgid "" -"It has a general layer height, and results in general layer lines and " -"printing quality. It is suitable for most general printing cases." +"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops and a higher " +"sparse infill density. So, it results in higher strength of the prints, but more filament " +"consumption and longer printing time." msgstr "" -"It has a normal layer height, and results in average layer lines and print " -"quality. It is suitable for most printing cases." +"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops and a higher " +"sparse infill density. This results in higher print strength but more filament consumption " +"and longer print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops " -"and a higher sparse infill density. So, it results in higher strength of the " -"prints, but more filament consumption and longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and " +"results in more apparent layer lines and lower printing quality, but slightly shorter " +"printing time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops " -"and a higher sparse infill density. This results in higher print strength " -"but more filament consumption and longer print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height. This " +"results in more apparent layer lines and lower print quality but slightly shorter print " +"time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " -"height, and results in more apparent layer lines and lower printing quality, " -"but slightly shorter printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and " +"results in more apparent layer lines and lower printing quality, but shorter printing time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " -"height. This results in more apparent layer lines and lower print quality " -"but slightly shorter print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height. This " +"results in more apparent layer lines and lower print quality but shorter print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " -"height, and results in more apparent layer lines and lower printing quality, " -"but shorter printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and " +"results in less apparent layer lines and higher printing quality, but longer printing time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " -"height. This results in more apparent layer lines and lower print quality " -"but shorter print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height. This " +"results in less apparent layer lines and higher print quality but longer print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower " +"speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in less " +"apparent layer lines and much higher printing quality, but much longer printing time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height. This results in less apparent layer lines and higher print quality " -"but longer print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower " +"speeds and acceleration, and the sparse infill pattern is Gyroid. This results in less " +"apparent layer lines and much higher print quality but much longer print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in less apparent layer lines and much higher printing " -"quality, but much longer printing time." -msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. This results in less apparent layer lines and much higher print " -"quality but much longer print time." - -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and higher printing " -"quality, but longer printing time." -msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height. This results in almost negligible layer lines and higher print " -"quality but longer print time." - -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in almost negligible layer lines and much higher " -"printing quality, but much longer printing time." -msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. This results in almost negligible layer lines and much higher print " -"quality but much longer print time." - -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing " +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and " +"results in almost negligible layer lines and higher printing quality, but longer printing " "time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height. This results in almost negligible layer lines and longer print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height. This " +"results in almost negligible layer lines and higher print quality but longer print time." msgid "" -"It has a big layer height, and results in apparent layer lines and ordinary " -"printing quality and printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower " +"speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in almost " +"negligible layer lines and much higher printing quality, but much longer printing time." msgstr "" -"It has a big layer height, and results in apparent layer lines and ordinary " -"printing quality and printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower " +"speeds and acceleration, and the sparse infill pattern is Gyroid. This results in almost " +"negligible layer lines and much higher print quality but much longer print time." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops " -"and a higher sparse infill density. So, it results in higher strength of the " -"prints, but more filament consumption and longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and " +"results in almost negligible layer lines and longer printing time." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops " -"and a higher sparse infill density. This results in higher print strength " -"but more filament consumption and longer print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height. This " +"results in almost negligible layer lines and longer print time." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in more apparent layer lines and lower printing quality, " -"but shorter printing time in some printing cases." +"It has a big layer height, and results in apparent layer lines and ordinary printing " +"quality and printing time." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height. This results in more apparent layer lines and lower print quality " -"but shorter print time in some cases." +"De laagdikte is groot, wat resulteert in zichtbare laaglijnen en een normale " +"afdrukkwaliteit en afdruktijd." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower " -"printing quality, but shorter printing time in some printing cases." +"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops and a higher " +"sparse infill density. So, it results in higher strength of the prints, but more filament " +"consumption and longer printing time." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height. This results in much more apparent layer lines and much lower print " -"quality, but shorter print time in some cases." +"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops and a higher " +"sparse infill density. This results in higher print strength but more filament consumption " +"and longer print time." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and slight higher printing " -"quality, but longer printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and " +"results in more apparent layer lines and lower printing quality, but shorter printing time " +"in some printing cases." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height. This results in less apparent layer lines and slightly higher print " -"quality but longer print time." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height. This " +"results in more apparent layer lines and lower print quality but shorter print time in some " +"cases." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and " +"results in much more apparent layer lines and much lower printing quality, but shorter " +"printing time in some printing cases." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height. This results in less apparent layer lines and higher print quality " -"but longer print time." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height. This " +"results in much more apparent layer lines and much lower print quality, but shorter print " +"time in some cases." msgid "" -"It has a very big layer height, and results in very apparent layer lines, " -"low printing quality and general printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and " +"results in less apparent layer lines and slight higher printing quality, but longer " +"printing time." msgstr "" -"It has a very big layer height, and results in very apparent layer lines, " -"low print quality and shorter printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height. This " +"results in less apparent layer lines and slightly higher print quality but longer print " +"time." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " -"height, and results in very apparent layer lines and much lower printing " -"quality, but shorter printing time in some printing cases." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and " +"results in less apparent layer lines and higher printing quality, but longer printing time." msgstr "" -"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " -"height. This results in very apparent layer lines and much lower print " -"quality but shorter print time in some cases." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height. This " +"results in less apparent layer lines and higher print quality but longer print time." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " -"layer height, and results in extremely apparent layer lines and much lower " -"printing quality, but much shorter printing time in some printing cases." +"It has a very big layer height, and results in very apparent layer lines, low printing " +"quality and general printing time." msgstr "" -"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " -"layer height. This results in extremely apparent layer lines and much lower " -"print quality but much shorter print time in some cases." +"De laagdikte is erg groot, wat resulteert in duidelijke lijnen, een lage afdrukkwaliteit en " +"een kortere afdruktijd." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a slightly " -"smaller layer height, and results in slightly less but still apparent layer " -"lines and slightly higher printing quality, but longer printing time in some " -"printing cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and " +"results in very apparent layer lines and much lower printing quality, but shorter printing " +"time in some printing cases." msgstr "" -"Compared with the default profile of a 0.8 mm nozzle, it has a slightly " -"smaller layer height. This results in slightly less but still apparent layer " -"lines and slightly higher print quality, but longer print time in some cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height. This " +"results in very apparent layer lines and much lower print quality but shorter print time in " +"some cases." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " -"height, and results in less but still apparent layer lines and slightly " -"higher printing quality, but longer printing time in some printing cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer height, " +"and results in extremely apparent layer lines and much lower printing quality, but much " +"shorter printing time in some printing cases." msgstr "" -"Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " -"height. This results in less but still apparent layer lines and slightly " -"higher print quality, but longer print time in some cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer height. " +"This results in extremely apparent layer lines and much lower print quality but much " +"shorter print time in some cases." + +msgid "" +"Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer " +"height, and results in slightly less but still apparent layer lines and slightly higher " +"printing quality, but longer printing time in some printing cases." +msgstr "" +"Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer " +"height. This results in slightly less but still apparent layer lines and slightly higher " +"print quality, but longer print time in some cases." + +msgid "" +"Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and " +"results in less but still apparent layer lines and slightly higher printing quality, but " +"longer printing time in some printing cases." +msgstr "" +"Vergeleken met het standaardprofiel van een 0,8 mm mondstuk, heeft het een kleinere " +"laaghoogte. Dit resulteert in minder maar nog steeds zichtbare laaglijnen en een iets " +"hogere printkwaliteit, maar in sommige gevallen een langere printtijd." msgid "Connected to Obico successfully!" msgstr "" @@ -15882,10 +15240,10 @@ msgid "Could not connect to SimplyPrint" msgstr "" msgid "Internal error" -msgstr "" +msgstr "Interne fout" msgid "Unknown error" -msgstr "" +msgstr "Onbekende fout" msgid "SimplyPrint account not linked. Go to Connect options to set it up." msgstr "" @@ -15900,100 +15258,121 @@ msgid "The provided state is not correct." msgstr "" msgid "Please give the required permissions when authorizing this application." -msgstr "" +msgstr "Geef de vereiste machtigingen wanneer u deze toepassing autoriseert." msgid "Something unexpected happened when trying to log in, please try again." -msgstr "" +msgstr "Er is iets onverwachts gebeurd bij het inloggen. Probeer het opnieuw." msgid "User cancelled." -msgstr "" +msgstr "Gebruiker geannuleerd." #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" -"Did you know that turning on precise wall can improve precision and layer " -"consistency?" +"Did you know that turning on precise wall can improve precision and layer consistency?" msgstr "" +"Precieze muur\n" +"Wist u dat het inschakelen van de precieze muur de precisie en consistentie van de laag kan " +"verbeteren?" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" "Sandwich mode\n" -"Did you know that you can use sandwich mode (inner-outer-inner) to improve " -"precision and layer consistency if your model doesn't have very steep " -"overhangs?" +"Did you know that you can use sandwich mode (inner-outer-inner) to improve precision and " +"layer consistency if your model doesn't have very steep overhangs?" msgstr "" +"Sandwichmodus\n" +"Wist u dat u de sandwichmodus (binnen-buiten-binnen) kunt gebruiken om de precisie en " +"consistentie van de laag te verbeteren als uw model geen erg steile overhangen heeft?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" "Chamber temperature\n" "Did you know that OrcaSlicer supports chamber temperature?" msgstr "" +"Kamertemperatuur\n" +"Wist je dat OrcaSlicer kamertemperatuur ondersteunt?" #: resources/data/hints.ini: [hint:Calibration] msgid "" "Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our " -"beloved calibration solution in OrcaSlicer." +"Did you know that calibrating your printer can do wonders? Check out our beloved " +"calibration solution in OrcaSlicer." msgstr "" +"Kalibratie\n" +"Wist u dat het kalibreren van uw printer wonderen kan doen? Bekijk onze geliefde " +"kalibratieoplossing in OrcaSlicer." #: resources/data/hints.ini: [hint:Auxiliary fan] msgid "" "Auxiliary fan\n" "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" msgstr "" +"Hulpventilator\n" +"Wist u dat OrcaSlicer eventuele extra onderdeel koelventilator ondersteunt?" #: resources/data/hints.ini: [hint:Air filtration] msgid "" "Air filtration/Exhaust Fan\n" "Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" msgstr "" +"Luchtfiltratie/Afzuigventilator\n" +"Wist u dat OrcaSlicer eventuele luchtfiltratie/afzuigventilator ondersteunt?" #: resources/data/hints.ini: [hint:G-code window] msgid "" "G-code window\n" "You can turn on/off the G-code window by pressing the C key." msgstr "" +"G-codevenster\n" +"U kunt het G-codevenster in- of uitschakelen door op de C-toets te drukken." #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can switch between Prepare and Preview workspaces by " -"pressing the Tab key." +"You can switch between Prepare and Preview workspaces by pressing the Tab key." msgstr "" +"Werkruimten wisselen\n" +"U kunt schakelen tussen de werkruimten Voorbereiden en Voorvertoning door op " +"de Tab-toets te drukken." #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " -"3D scene operations." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene " +"operations." msgstr "" +"Hoe sneltoetsen te gebruiken\n" +"Wist u dat Orca Slicer een breed scala aan sneltoetsen en 3D-scènebewerkingen biedt." #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve the surface " +"quality of your overhangs?" msgstr "" +"Achteruit op oneven\n" +"Wist u dat de functie Achteruit op oneven de oppervlaktekwaliteit van uw overhangen " +"aanzienlijk kan verbeteren?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" +"Did you know that you can cut a model at any angle and position with the cutting tool?" msgstr "" "Snijgereedschap\n" -"Wist u dat u een model in elke hoek en positie kunt snijden met het " -"snijgereedschap?" +"Wist u dat u een model in elke hoek en positie kunt snijden met het snijgereedschap?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" "Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -"problems on the Windows system?" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on " +"the Windows system?" msgstr "" "Model repareren\n" -"Wist je dat je een beschadigd 3D-model kunt repareren om veel snijproblemen " -"op het Windows-systeem te voorkomen?" +"Wist je dat je een beschadigd 3D-model kunt repareren om veel snijproblemen op het Windows-" +"systeem te voorkomen?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -16014,188 +15393,189 @@ msgstr "" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for printing by a simple " +"click?" msgstr "" "Automatische oriëntatie\n" -"Wist je dat je met een simpele klik objecten kunt roteren naar een optimale " -"oriëntatie voor afdrukken?" +"Wist je dat je met een simpele klik objecten kunt roteren naar een optimale oriëntatie voor " +"afdrukken?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." +"Did you know that you can quickly orient a model so that one of its faces sits on the print " +"bed? Select the \"Place on face\" function or press the F key." msgstr "" "Op gekozen selectie leggen\n" -"Wist u dat u een model snel zo kunt oriënteren dat een van de gezichten op " -"het printbed ligt? Selecteer de functie \"Op selectie leggen\" of druk op de " -"F toets." +"Wist u dat u een model snel zo kunt oriënteren dat een van de gezichten op het printbed " +"ligt? Selecteer de functie \"Op selectie leggen\" of druk op de F toets." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts in a list and change settings for each " +"object/part?" msgstr "" "Objectenlijst\n" -"Wist u dat u alle objecten/onderdelen in een lijst kunt bekijken en de " -"instellingen voor ieder object/onderdeel kunt wijzigen?" +"Wist u dat u alle objecten/onderdelen in een lijst kunt bekijken en de instellingen voor " +"ieder object/onderdeel kunt wijzigen?" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" "Search Functionality\n" -"Did you know that you use the Search tool to quickly find a specific Orca " -"Slicer setting?" +"Did you know that you use the Search tool to quickly find a specific Orca Slicer setting?" msgstr "" +"Zoekfunctionaliteit\n" +"Wist u dat u de zoekfunctie gebruikt om snel een specifieke Orca Slicer-instelling te " +"vinden?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the " -"Simplify mesh feature? Right-click the model and select Simplify model." +"Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh " +"feature? Right-click the model and select Simplify model." msgstr "" +"Model vereenvoudigen\n" +"Wist u dat u het aantal driehoeken in een mesh kunt verminderen met de mesh functie " +"Vereenvoudigen? Klik met de rechtermuisknop op het model en selecteer Model vereenvoudigen." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts on a table and change settings for each " +"object/part?" msgstr "" "Tabel met slicing parameters\n" -"Wist je dat je alle objecten/onderdelen op een tabel kunt bekijken en " -"instellingen voor ieder object/onderdeel kunt wijzigen?" +"Wist je dat je alle objecten/onderdelen op een tabel kunt bekijken en instellingen voor " +"ieder object/onderdeel kunt wijzigen?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" +"Did you know that you can split a big object into small ones for easy colorizing or " +"printing?" msgstr "" "Splitsen naar objecten/delen\n" -"Wist u dat u een groot object kunt splitsen in kleine delen, zodat u het " -"gemakkelijk kunt inkleuren of afdrukken?" +"Wist u dat u een groot object kunt splitsen in kleine delen, zodat u het gemakkelijk kunt " +"inkleuren of afdrukken?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer." +"Did you know that you can subtract one mesh from another using the Negative part modifier? " +"That way you can, for example, create easily resizable holes directly in Orca Slicer." msgstr "" +"Een deel aftrekken\n" +"Wist u dat u een mesh van een andere kunt aftrekken met de Negatief deel aanpasser? Zo kunt " +"u bijvoorbeeld gemakkelijk aanpasbare gaten rechtstreeks in Orca Slicer maken." #: resources/data/hints.ini: [hint:STEP] msgid "" "STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file " -"instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" +"Did you know that you can improve your print quality by slicing a STEP file instead of an " +"STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a lower resolution " +"STL. Give it a try!" msgstr "" +"STEP\n" +"Wist u dat u uw afdrukkwaliteit kunt verbeteren door een STEP-bestand te slicen in plaats " +"van een STL?\n" +"Orca Slicer ondersteunt het slicen van STEP-bestanden, wat vloeiendere resultaten oplevert " +"dan een STL met een lagere resolutie. Probeer het eens!" #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even paint it on your " +"print, to have it in a less visible location? This improves the overall look of your model. " +"Check it out!" msgstr "" "Plaats van de Z-naad\n" -"Wist je dat je de plaats van de Z-naad kunt aanpassen, en zelfs op je afdruk " -"kunt schilderen, zodat hij minder zichtbaar is? Dit verbetert de algemene " -"look van je model. Kijk maar!" +"Wist je dat je de plaats van de Z-naad kunt aanpassen, en zelfs op je afdruk kunt " +"schilderen, zodat hij minder zichtbaar is? Dit verbetert de algemene look van je model. " +"Kijk maar!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking prints? Depending on " +"the material, you can improve the overall finish of the printed model by doing some fine-" +"tuning." msgstr "" "Nauwkeurige afstelling van flow rate\n" -"Wist u dat de flow rate nauwkeurig kan worden ingesteld voor nog mooiere " -"afdrukken? Afhankelijk van het materiaal kunt u de algehele afwerking van " -"het geprinte model verbeteren door wat fijnafstelling uit te voeren." +"Wist u dat de flow rate nauwkeurig kan worden ingesteld voor nog mooiere afdrukken? " +"Afhankelijk van het materiaal kunt u de algehele afwerking van het geprinte model " +"verbeteren door wat fijnafstelling uit te voeren." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." +"Did you know that you can split a model that has a lot of parts into individual plates " +"ready to print? This will simplify the process of keeping track of all the parts." msgstr "" "Uw afdrukken opsplitsen in platen\n" -"Wist u dat u een model met veel onderdelen kunt splitsen in afzonderlijke " -"platen die klaar zijn om te printen? Dit vereenvoudigt het proces van het " -"bijhouden van alle onderdelen." +"Wist u dat u een model met veel onderdelen kunt splitsen in afzonderlijke platen die klaar " +"zijn om te printen? Dit vereenvoudigt het proces van het bijhouden van alle onderdelen." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive Layer Height " +"option? Check it out!" msgstr "" "Versnel uw afdrukken met Adaptieve Laag Hoogte\n" -"Wist u dat u een model nog sneller kunt afdrukken door de optie Adaptieve " -"Laag Hoogte te gebruiken? Bekijk het eens!" +"Wist u dat u een model nog sneller kunt afdrukken door de optie Adaptieve Laag Hoogte te " +"gebruiken? Bekijk het eens!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." +"Did you know that you can paint the location of your supports? This feature makes it easy " +"to place the support material only on the sections of the model that actually need it." msgstr "" "Ondersteuning schilderen\n" -"Wist je dat je de locatie van je ondersteuning kunt schilderen? Deze functie " -"maakt het eenvoudig om het ondersteuningsmateriaal alleen op de delen van " -"het model te plaatsen die het echt nodig hebben." +"Wist je dat je de locatie van je ondersteuning kunt schilderen? Deze functie maakt het " +"eenvoudig om het ondersteuningsmateriaal alleen op de delen van het model te plaatsen die " +"het echt nodig hebben." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree supports work great " +"for organic models, while saving filament and improving print speed. Check them out!" msgstr "" "Verschillende soorten ondersteuningen\n" -"Wist je dat je kunt kiezen uit meerdere soorten ondersteuningen? Tree " -"Support werkt uitstekend voor organische modellen, bespaart filament en " -"verbetert de printsnelheid. Bekijk ze eens!" +"Wist je dat je kunt kiezen uit meerdere soorten ondersteuningen? Tree Support werkt " +"uitstekend voor organische modellen, bespaart filament en verbetert de printsnelheid. " +"Bekijk ze eens!" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." +"Did you know that Silk filament needs special consideration to print it successfully? " +"Higher temperature and lower speed are always recommended for the best results." msgstr "" "Silk Filament printen \n" -"Wist u dat Silk filament speciale aandacht nodig heeft om succesvol te " -"printen? Voor het beste resultaat wordt altijd een hogere temperatuur en een " -"lagere snelheid aanbevolen." +"Wist u dat Silk filament speciale aandacht nodig heeft om succesvol te printen? Voor het " +"beste resultaat wordt altijd een hogere temperatuur en een lagere snelheid aanbevolen." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with the printing " +"surface, it's recommended to use a brim?" msgstr "" "Brim voor betere hechting\n" -"Wist u dat wanneer gedrukte modellen een kleine contactinterface met het " -"printoppervlak hebben, het aanbevolen is om een brim te gebruiken?" +"Wist u dat wanneer gedrukte modellen een kleine contactinterface met het printoppervlak " +"hebben, het aanbevolen is om een brim te gebruiken?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" +"Did you know that you can set slicing parameters for all selected objects at one time?" msgstr "" "Parameters instellen voor meerdere objecten\n" -"Wist u dat u slicing parameters kunt instellen voor alle geselecteerde " -"objecten tegelijk?" +"Wist u dat u slicing parameters kunt instellen voor alle geselecteerde objecten tegelijk?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" @@ -16208,48 +15588,45 @@ msgstr "" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into support/objects/" +"infill during filament change?" msgstr "" "Flush in support/voorwerpen/infill\n" -"Wist u dat u minder filament verspilt door het tijdens het verwisselen van " -"filament in support/objecten/infill te spoelen?" +"Wist u dat u minder filament verspilt door het tijdens het verwisselen van filament in " +"support/objecten/infill te spoelen?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill density to improve " +"the strength of the model?" msgstr "" "Stekte verbeteren\n" -"Wist je dat je meer wandlussen en een hogere dunne invuldichtheid kunt " -"gebruiken om de sterkte van het model te verbeteren?" +"Wist je dat je meer wandlussen en een hogere dunne invuldichtheid kunt gebruiken om de " +"sterkte van het model te verbeteren?" -#: resources/data/hints.ini: [hint:When need to print with the printer door -#: opened] +#: resources/data/hints.ini: [hint:When need to print with the printer door opened] msgid "" "When need to print with the printer door opened\n" -"Did you know that opening the printer door can reduce the probability of " -"extruder/hotend clogging when printing lower temperature filament with a " -"higher enclosure temperature. More info about this in the Wiki." +"Did you know that opening the printer door can reduce the probability of extruder/hotend " +"clogging when printing lower temperature filament with a higher enclosure temperature. More " +"info about this in the Wiki." msgstr "" "Wanneer moet u printen met de printerdeur open?\n" -"Wist je dat het openen van de printerdeur de kans op verstopping van de " -"extruder/hotend kan verminderen bij het printen van filament met een lagere " -"temperatuur en een hogere omgevingstemperatuur? Er staat meer informatie " -"hierover in de Wiki." +"Wist je dat het openen van de printerdeur de kans op verstopping van de extruder/hotend kan " +"verminderen bij het printen van filament met een lagere temperatuur en een hogere " +"omgevingstemperatuur? Er staat meer informatie hierover in de Wiki." #: resources/data/hints.ini: [hint:Avoid warping] msgid "" "Avoid warping\n" -"Did you know that when printing materials that are prone to warping such as " -"ABS, appropriately increasing the heatbed temperature can reduce the " -"probability of warping." +"Did you know that when printing materials that are prone to warping such as ABS, " +"appropriately increasing the heatbed temperature can reduce the probability of warping." msgstr "" "Kromtrekken voorkomen\n" -"Wist je dat bij het printen van materialen die gevoelig zijn voor " -"kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het " -"warmtebed de kans op kromtrekken kan verkleinen?" +"Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, " +"een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan " +"verkleinen?" #~ msgid "up to" #~ msgstr "tot" @@ -16262,8 +15639,7 @@ msgstr "" #~ msgid "Switching application language while some presets are modified." #~ msgstr "" -#~ "De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn " -#~ "aangepast." +#~ "De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn aangepast." #~ msgid "⌘+Shift+G" #~ msgstr "⌘+Shift+G" @@ -16302,22 +15678,18 @@ msgstr "" #~ msgstr "Alt+muiswiel" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." +#~ "Different nozzle diameters and different filament diameters is not allowed when prime " +#~ "tower is enabled." #~ msgstr "" -#~ "Verschillende mondstukdiameters en verschillende filamentdiameters zijn " -#~ "niet toegestaan als de prime-toren is ingeschakeld." +#~ "Verschillende mondstukdiameters en verschillende filamentdiameters zijn niet toegestaan " +#~ "als de prime-toren is ingeschakeld." -#~ msgid "" -#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgid "Ooze prevention is currently not supported with the prime tower enabled." #~ msgstr "" -#~ "Ooze-preventie wordt momenteel niet ondersteund als de prime tower is " -#~ "ingeschakeld." +#~ "Ooze-preventie wordt momenteel niet ondersteund als de prime tower is ingeschakeld." -#~ msgid "" -#~ "Interlocking depth of a segmented region. Zero disables this feature." -#~ msgstr "" -#~ "Insluitdiepte van een gesegmenteerd gebied. Nul schakelt deze functie uit." +#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "Insluitdiepte van een gesegmenteerd gebied. Nul schakelt deze functie uit." #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Voer een geldige waarde in (K in 0~0.3)" @@ -16331,60 +15703,55 @@ msgstr "" #~ msgid "" #~ "Please find the details of Flow Dynamics Calibration from our wiki.\n" #~ "\n" -#~ "Usually the calibration is unnecessary. When you start a single color/" -#~ "material print, with the \"flow dynamics calibration\" option checked in " -#~ "the print start menu, the printer will follow the old way, calibrate the " -#~ "filament before the print; When you start a multi color/material print, " -#~ "the printer will use the default compensation parameter for the filament " -#~ "during every filament switch which will have a good result in most " +#~ "Usually the calibration is unnecessary. When you start a single color/material print, " +#~ "with the \"flow dynamics calibration\" option checked in the print start menu, the " +#~ "printer will follow the old way, calibrate the filament before the print; When you start " +#~ "a multi color/material print, the printer will use the default compensation parameter " +#~ "for the filament during every filament switch which will have a good result in most " #~ "cases.\n" #~ "\n" -#~ "Please note there are a few cases that will make the calibration result " -#~ "not reliable: using a texture plate to do the calibration; the build " -#~ "plate does not have good adhesion (please wash the build plate or apply " -#~ "gluestick!) ...You can find more from our wiki.\n" +#~ "Please note there are a few cases that will make the calibration result not reliable: " +#~ "using a texture plate to do the calibration; the build plate does not have good adhesion " +#~ "(please wash the build plate or apply gluestick!) ...You can find more from our wiki.\n" #~ "\n" -#~ "The calibration results have about 10 percent jitter in our test, which " -#~ "may cause the result not exactly the same in each calibration. We are " -#~ "still investigating the root cause to do improvements with new updates." +#~ "The calibration results have about 10 percent jitter in our test, which may cause the " +#~ "result not exactly the same in each calibration. We are still investigating the root " +#~ "cause to do improvements with new updates." #~ msgstr "" #~ "De details van Flow Dynamics Calibration vindt u op onze wiki.\n" #~ "\n" -#~ "Meestal is kalibratie niet nodig. Als je een print met één kleur/" -#~ "materiaal start en de optie \"kalibratie van de stroomdynamica\" is " -#~ "aangevinkt in het startmenu van de printer, dan zal de printer de oude " -#~ "manier volgen en het filament kalibreren voor het printen; als je een " -#~ "print met meerdere kleuren/materialen start, dan zal de printer de " -#~ "standaard compensatieparameter voor het filament gebruiken tijdens elke " -#~ "filamentwissel, wat in de meeste gevallen een goed resultaat zal " -#~ "opleveren.\n" +#~ "Meestal is kalibratie niet nodig. Als je een print met één kleur/materiaal start en de " +#~ "optie \"kalibratie van de stroomdynamica\" is aangevinkt in het startmenu van de " +#~ "printer, dan zal de printer de oude manier volgen en het filament kalibreren voor het " +#~ "printen; als je een print met meerdere kleuren/materialen start, dan zal de printer de " +#~ "standaard compensatieparameter voor het filament gebruiken tijdens elke filamentwissel, " +#~ "wat in de meeste gevallen een goed resultaat zal opleveren.\n" #~ "\n" -#~ "Let op: er zijn een paar gevallen waardoor het kalibratieresultaat niet " -#~ "betrouwbaar is: als je een textuurplaat gebruikt om de kalibratie uit te " -#~ "voeren; als de bouwplaat geen goede hechting heeft (was de bouwplaat of " -#~ "breng lijm aan!) ...Je kunt meer informatie vinden op onze wiki.\n" +#~ "Let op: er zijn een paar gevallen waardoor het kalibratieresultaat niet betrouwbaar is: " +#~ "als je een textuurplaat gebruikt om de kalibratie uit te voeren; als de bouwplaat geen " +#~ "goede hechting heeft (was de bouwplaat of breng lijm aan!) ...Je kunt meer informatie " +#~ "vinden op onze wiki.\n" #~ "\n" -#~ "De kalibratieresultaten hebben ongeveer 10 procent jitter in onze test, " -#~ "waardoor het resultaat niet bij elke kalibratie precies hetzelfde is. We " -#~ "onderzoeken nog steeds de oorzaak om verbeteringen aan te brengen met " -#~ "nieuwe updates." +#~ "De kalibratieresultaten hebben ongeveer 10 procent jitter in onze test, waardoor het " +#~ "resultaat niet bij elke kalibratie precies hetzelfde is. We onderzoeken nog steeds de " +#~ "oorzaak om verbeteringen aan te brengen met nieuwe updates." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure " -#~ "you want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure you want to " +#~ "overrides the other results?" #~ msgstr "" -#~ "Slechts één van de resultaten met dezelfde naam wordt opgeslagen. Weet je " -#~ "zeker dat je de andere resultaten wilt vervangen?" +#~ "Slechts één van de resultaten met dezelfde naam wordt opgeslagen. Weet je zeker dat je " +#~ "de andere resultaten wilt vervangen?" #, c-format, boost-format #~ msgid "" -#~ "There is already a historical calibration result with the same name: %s. " -#~ "Only one of the results with the same name is saved. Are you sure you " -#~ "want to overrides the historical result?" +#~ "There is already a historical calibration result with the same name: %s. Only one of the " +#~ "results with the same name is saved. Are you sure you want to overrides the historical " +#~ "result?" #~ msgstr "" -#~ "Er is al een eerder kalibratieresultaat met dezelfde naam: %s. Slechts " -#~ "één van de resultaten met dezelfde naam wordt opgeslagen. Weet je zeker " -#~ "dat je het vorige resultaat wilt vervangen?" +#~ "Er is al een eerder kalibratieresultaat met dezelfde naam: %s. Slechts één van de " +#~ "resultaten met dezelfde naam wordt opgeslagen. Weet je zeker dat je het vorige resultaat " +#~ "wilt vervangen?" #~ msgid "Please find the cornor with perfect degree of extrusion" #~ msgstr "Zoek de hoek met de perfecte extrusiegraad" @@ -16399,29 +15766,29 @@ msgstr "" #~ msgstr "Vulling (infill) richting" #~ msgid "" -#~ "Enable this to get a G-code file which has G2 and G3 moves. And the " -#~ "fitting tolerance is same with resolution" +#~ "Enable this to get a G-code file which has G2 and G3 moves. And the fitting tolerance is " +#~ "same with resolution" #~ msgstr "" -#~ "Schakel dit in om een G-codebestand te krijgen met G2- en G3-bewegingen. " -#~ "De pastolerantie is gelijk aan de resolutie." +#~ "Schakel dit in om een G-codebestand te krijgen met G2- en G3-bewegingen. De " +#~ "pastolerantie is gelijk aan de resolutie." #~ msgid "" -#~ "Infill area is enlarged slightly to overlap with wall for better bonding. " -#~ "The percentage value is relative to line width of sparse infill" +#~ "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage " +#~ "value is relative to line width of sparse infill" #~ msgstr "" -#~ "Hierdoor kan het opvulgebied (infill) iets worden vergroot om de wanden " -#~ "te overlappen voor een betere hechting. De procentuele waarde is relatief " -#~ "ten opzichte van de lijndikte van de opvulling." +#~ "Hierdoor kan het opvulgebied (infill) iets worden vergroot om de wanden te overlappen " +#~ "voor een betere hechting. De procentuele waarde is relatief ten opzichte van de " +#~ "lijndikte van de opvulling." #~ msgid "Unload Filament" #~ msgstr "Lossen" #~ msgid "" -#~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " -#~ "automatically load or unload filiament." +#~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or " +#~ "unload filiament." #~ msgstr "" -#~ "Kies een AMS sleuf en druk op de \"Laden\" of \"Verwijderen\" knop om het " -#~ "filament automatisch te laden of te verwijderen." +#~ "Kies een AMS sleuf en druk op de \"Laden\" of \"Verwijderen\" knop om het filament " +#~ "automatisch te laden of te verwijderen." #~ msgid "MC" #~ msgstr "MC" @@ -16448,42 +15815,39 @@ msgstr "" #~ msgstr "Vochtigheid in de cabine" #~ msgid "" -#~ "Green means that AMS humidity is normal, orange represent humidity is " -#~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" +#~ "Green means that AMS humidity is normal, orange represent humidity is high, red " +#~ "represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Groen betekent dat de AMS-luchtvochtigheid normaal is, oranje betekent " -#~ "dat de luchtvochtigheid hoog is en rood betekent dat de luchtvochtigheid " -#~ "te hoog is. (Hygrometer: hoe lager, hoe beter.)" +#~ "Groen betekent dat de AMS-luchtvochtigheid normaal is, oranje betekent dat de " +#~ "luchtvochtigheid hoog is en rood betekent dat de luchtvochtigheid te hoog is. " +#~ "(Hygrometer: hoe lager, hoe beter.)" #~ msgid "Desiccant status" #~ msgstr "Status van het droogmiddel" #~ msgid "" -#~ "A desiccant status lower than two bars indicates that desiccant may be " -#~ "inactive. Please change the desiccant.(The bars: higher the better.)" +#~ "A desiccant status lower than two bars indicates that desiccant may be inactive. Please " +#~ "change the desiccant.(The bars: higher the better.)" #~ msgstr "" -#~ "Een droogmiddelstatus lager dan twee streepjes geeft aan dat het " -#~ "droogmiddel mogelijk inactief is. Vervang het droogmiddel. (Hoe hoger, " -#~ "hoe beter.)" +#~ "Een droogmiddelstatus lager dan twee streepjes geeft aan dat het droogmiddel mogelijk " +#~ "inactief is. Vervang het droogmiddel. (Hoe hoger, hoe beter.)" #~ msgid "" -#~ "Note: When the lid is open or the desiccant pack is changed, it can take " -#~ "hours or a night to absorb the moisture. Low temperatures also slow down " -#~ "the process. During this time, the indicator may not represent the " -#~ "chamber accurately." +#~ "Note: When the lid is open or the desiccant pack is changed, it can take hours or a " +#~ "night to absorb the moisture. Low temperatures also slow down the process. During this " +#~ "time, the indicator may not represent the chamber accurately." #~ msgstr "" -#~ "Opmerking: Als het deksel open is of de verpakking van het droogmiddel is " -#~ "vervangen, kan het enkele uren of een nacht duren voordat het vocht is " -#~ "opgenomen. Lage temperaturen vertragen ook het proces. Gedurende deze " -#~ "tijd geeft de indicator de vochtigheid mogelijk niet nauwkeurig weer." +#~ "Opmerking: Als het deksel open is of de verpakking van het droogmiddel is vervangen, kan " +#~ "het enkele uren of een nacht duren voordat het vocht is opgenomen. Lage temperaturen " +#~ "vertragen ook het proces. Gedurende deze tijd geeft de indicator de vochtigheid mogelijk " +#~ "niet nauwkeurig weer." #~ msgid "" -#~ "Note: if new filament is inserted during printing, the AMS will not " -#~ "automatically read any information until printing is completed." +#~ "Note: if new filament is inserted during printing, the AMS will not automatically read " +#~ "any information until printing is completed." #~ msgstr "" -#~ "Opmerking: als er tijdens het afdrukken nieuw filament wordt geplaatst, " -#~ "zal de AMS niet automatisch informatie lezen totdat het afdrukken is " -#~ "voltooid." +#~ "Opmerking: als er tijdens het afdrukken nieuw filament wordt geplaatst, zal de AMS niet " +#~ "automatisch informatie lezen totdat het afdrukken is voltooid." #, boost-format #~ msgid "Succeed to export G-code to %1%" @@ -16495,10 +15859,8 @@ msgstr "" #~ msgid "Initialize failed (No Camera Device)!" #~ msgstr "Initialisatie is mislukt (geen camera-apparaat)!" -#~ msgid "" -#~ "Printer is busy downloading, Please wait for the downloading to finish." -#~ msgstr "" -#~ "De printer is bezig met downloaden. Wacht tot het downloaden is voltooid." +#~ msgid "Printer is busy downloading, Please wait for the downloading to finish." +#~ msgstr "De printer is bezig met downloaden. Wacht tot het downloaden is voltooid." #~ msgid "Initialize failed (Not accessible in LAN-only mode)!" #~ msgstr "Initialisatie mislukt (niet toegankelijk in alleen LAN-modus)!" @@ -16529,37 +15891,33 @@ msgstr "" #~ msgstr "Failed to parse model infomation" #~ msgid "" -#~ "Unable to perform boolean operation on model meshes. Only positive parts " -#~ "will be exported." +#~ "Unable to perform boolean operation on model meshes. Only positive parts will be " +#~ "exported." #~ msgstr "" -#~ "Unable to perform boolean operation on model meshes. Only positive parts " -#~ "will be exported." +#~ "Unable to perform boolean operation on model meshes. Only positive parts will be " +#~ "exported." #, boost-format #~ msgid "" #~ "You have changed some settings of preset \"%1%\". \n" -#~ "Would you like to keep these changed settings (new value) after switching " -#~ "preset?" +#~ "Would you like to keep these changed settings (new value) after switching preset?" #~ msgstr "" #~ "U heeft enkele instellingen van voorinstelling \"%1%\" gewijzigd.\n" -#~ "Wilt u deze gewijzigde instellingen (nieuwe waarde) behouden na het " -#~ "wisselen van preset?" +#~ "Wilt u deze gewijzigde instellingen (nieuwe waarde) behouden na het wisselen van preset?" #~ msgid "" #~ "You have changed some preset settings. \n" -#~ "Would you like to keep these changed settings (new value) after switching " -#~ "preset?" +#~ "Would you like to keep these changed settings (new value) after switching preset?" #~ msgstr "" #~ "Je hebt een aantal vooraf ingestelde instellingen gewijzigd. \n" -#~ "Wilt u deze gewijzigde instellingen (nieuwe waarde) behouden na het " -#~ "wisselen van presets?" +#~ "Wilt u deze gewijzigde instellingen (nieuwe waarde) behouden na het wisselen van presets?" #~ msgid "" -#~ "Add solid infill near sloping surfaces to guarantee the vertical shell " -#~ "thickness (top+bottom solid layers)" +#~ "Add solid infill near sloping surfaces to guarantee the vertical shell thickness " +#~ "(top+bottom solid layers)" #~ msgstr "" -#~ "Voeg dichte vulling toe in de buurt van hellende oppervlakken om de " -#~ "verticale schaaldikte te garanderen (boven+onder vaste lagen)." +#~ "Voeg dichte vulling toe in de buurt van hellende oppervlakken om de verticale " +#~ "schaaldikte te garanderen (boven+onder vaste lagen)." #~ msgid "Configuration package updated to " #~ msgstr "Het configuratiebestand is bijgewerkt naar " @@ -16635,22 +15993,21 @@ msgstr "" #~ msgid "Quick" #~ msgstr "Quick" -#~ msgid "" -#~ "Discribe how long the nozzle will move along the last path when retracting" +#~ msgid "Discribe how long the nozzle will move along the last path when retracting" #~ msgstr "" -#~ "Dit beschrijft hoe lang de nozzle langs het laatste pad zal bewegen " -#~ "tijdens het terugtrekken (rectracting)." +#~ "Dit beschrijft hoe lang de nozzle langs het laatste pad zal bewegen tijdens het " +#~ "terugtrekken (rectracting)." #~ msgid "" #~ "Simplify Model\n" -#~ "Did you know that you can reduce the number of triangles in a mesh using " -#~ "the Simplify mesh feature? Right-click the model and select Simplify " -#~ "model. Read more in the documentation." +#~ "Did you know that you can reduce the number of triangles in a mesh using the Simplify " +#~ "mesh feature? Right-click the model and select Simplify model. Read more in the " +#~ "documentation." #~ msgstr "" #~ "Vereenvoudig het model\n" -#~ "Wist u dat u het aantal driehoeken in een mesh kunt verminderen met de " -#~ "functie Simplify mesh? Klik met de rechtermuisknop op het model en " -#~ "selecteer Model vereenvoudigen. Lees meer in de documentatie." +#~ "Wist u dat u het aantal driehoeken in een mesh kunt verminderen met de functie Simplify " +#~ "mesh? Klik met de rechtermuisknop op het model en selecteer Model vereenvoudigen. Lees " +#~ "meer in de documentatie." #~ msgid "Filling bed " #~ msgstr "Filling bed" @@ -16666,25 +16023,22 @@ msgstr "" #~ msgstr "" #~ "Overschakelen naar rechtlijnig patroon?\n" #~ "Ja - Automatisch overschakelen naar rechtlijnig patroon\n" -#~ "Nee - Zet de dichtheid automatisch terug naar de standaard niet 100% " -#~ "waarde" +#~ "Nee - Zet de dichtheid automatisch terug naar de standaard niet 100% waarde" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." -#~ msgstr "" -#~ "Verwarm de nozzle tot meer dan 170 graden voordat je het filament laadt." +#~ msgstr "Verwarm de nozzle tot meer dan 170 graden voordat je het filament laadt." #, c-format #~ msgid "Density of internal sparse infill, 100% means solid throughout" #~ msgstr "" -#~ "Dit is de dichtheid van de interne vulling. 100%% betekent dat het object " -#~ "geheel solide zal zijn." +#~ "Dit is de dichtheid van de interne vulling. 100%% betekent dat het object geheel solide " +#~ "zal zijn." #~ msgid "Tree support wall loops" #~ msgstr "Tree support wand lussen" #~ msgid "This setting specify the count of walls around tree support" -#~ msgstr "" -#~ "Deze instelling specificeert het aantal wanden rond de tree support." +#~ msgstr "Deze instelling specificeert het aantal wanden rond de tree support." #, c-format, boost-format #~ msgid " doesn't work at 100%% density " @@ -16712,9 +16066,7 @@ msgstr "" #~ msgstr "Exporteer alle objecten als STL" #~ msgid "The 3mf is not compatible, load geometry data only!" -#~ msgstr "" -#~ "Het 3mf bestand is niet compatibel, enkel de geometrische data wordt " -#~ "geladen!" +#~ msgstr "Het 3mf bestand is niet compatibel, enkel de geometrische data wordt geladen!" #~ msgid "Incompatible 3mf" #~ msgstr "Onbruikbaar 3mf bestand" @@ -16736,9 +16088,7 @@ msgstr "" #~ msgstr "Volgorde binnenwand/buitenwand/opvulling (infill)" #~ msgid "Print sequence of inner wall, outer wall and infill. " -#~ msgstr "" -#~ "Dit is de afdrukvolgorde van binnenwanden, buitenwanden en vulling " -#~ "(infill)." +#~ msgstr "Dit is de afdrukvolgorde van binnenwanden, buitenwanden en vulling (infill)." #~ msgid "inner/outer/infill" #~ msgstr "binnenste/buitenste/vulling (infill)" @@ -16777,8 +16127,7 @@ msgstr "" #~ msgstr "Slice" #~ msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" -#~ msgstr "" -#~ "Slice de printbedden: 0-alle printbedden, i-printbed i, andere-onjuist" +#~ msgstr "Slice de printbedden: 0-alle printbedden, i-printbed i, andere-onjuist" #~ msgid "Show command help." #~ msgstr "Dit toont de command hulp." @@ -16867,41 +16216,36 @@ msgstr "" #~ msgid "Debug level" #~ msgstr "Debuggen level" -#~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -#~ "trace\n" +#~ msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" #~ msgstr "" -#~ "Sets debug logging level. 0:fataal, 1:error, 2:waarschuwing, 3:info, 4:" -#~ "debug, 5:trace\n" +#~ "Sets debug logging level. 0:fataal, 1:error, 2:waarschuwing, 3:info, 4:debug, 5:trace\n" #~ msgid "" #~ "3D Scene Operations\n" -#~ "Did you know how to control view and object/part selection with mouse and " -#~ "touchpanel in the 3D scene?" +#~ "Did you know how to control view and object/part selection with mouse and touchpanel in " +#~ "the 3D scene?" #~ msgstr "" #~ "3D-scènebewerkingen\n" -#~ "Weet u hoe u de weergave en selectie van objecten/onderdelen met de muis " -#~ "en het aanraakscherm in de 3D-scène kunt bedienen?" +#~ "Weet u hoe u de weergave en selectie van objecten/onderdelen met de muis en het " +#~ "aanraakscherm in de 3D-scène kunt bedienen?" #~ msgid "" #~ "Fix Model\n" -#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " -#~ "slicing problems?" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" #~ msgstr "" #~ "Model repareren\n" -#~ "Wist u dat u een beschadigd 3D-model kunt repareren om veel snijproblemen " -#~ "te voorkomen?" +#~ "Wist u dat u een beschadigd 3D-model kunt repareren om veel snijproblemen te voorkomen?" # Source and destination string both English but don't match! #~ msgid "Embeded" #~ msgstr "Embedded" #~ msgid "" -#~ "OrcaSlicer configuration file may be corrupted and is not abled to be " -#~ "parsed.Please delete the file and try again." +#~ "OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please " +#~ "delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer configuratiebestand is mogelijks corrupt, en kan niet verwerkt " -#~ "worden.Verwijder het configuratiebestand en probeer het opnieuw." +#~ "OrcaSlicer configuratiebestand is mogelijks corrupt, en kan niet verwerkt worden." +#~ "Verwijder het configuratiebestand en probeer het opnieuw." #~ msgid "Online Models" #~ msgstr "Online Models" @@ -16913,41 +16257,37 @@ msgstr "" #~ msgstr "De minimale printsnelheid indien er afgeremd wordt om af te koelen" #~ msgid "" -#~ "The bed temperature exceeds filament's vitrification temperature. Please " -#~ "open the front door of printer before printing to avoid nozzle clog." +#~ "The bed temperature exceeds filament's vitrification temperature. Please open the front " +#~ "door of printer before printing to avoid nozzle clog." #~ msgstr "" -#~ "De bedtemperatuur overschrijdt de vitrificatietemperatuur van het " -#~ "filament. Open de voorkdeur van de printer voor het printen om " -#~ "verstopping van de nozzles te voorkomen." +#~ "De bedtemperatuur overschrijdt de vitrificatietemperatuur van het filament. Open de " +#~ "voorkdeur van de printer voor het printen om verstopping van de nozzles te voorkomen." #~ msgid "Temperature of vitrificaiton" #~ msgstr "Temperatuur van verglazing" #~ msgid "" -#~ "Material becomes soft at this temperature. Thus the heatbed cannot be " -#~ "hotter than this tempature" +#~ "Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this " +#~ "tempature" #~ msgstr "" -#~ "Op deze temperatuur zal het materiaal zacht worden. Daarom kan de " -#~ "temperatuur van het printbed niet hoger dan deze waarde." +#~ "Op deze temperatuur zal het materiaal zacht worden. Daarom kan de temperatuur van het " +#~ "printbed niet hoger dan deze waarde." #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "" -#~ "Schakel deze optie in als de machine een ventilator voor de enclosure " -#~ "heeft" +#~ msgstr "Schakel deze optie in als de machine een ventilator voor de enclosure heeft" #~ msgid "" -#~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -#~ "during printing except the first several layers which is defined by no " -#~ "cooling layers" +#~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during " +#~ "printing except the first several layers which is defined by no cooling layers" #~ msgstr "" -#~ "Snelheid van de auxiliary part ventilator. De auxiliary ventilator draait " -#~ "op deze snelheid tijdens het afdrukken, behalve de eerste paar lagen, die " -#~ "worden gedefinieerd door geen koellagen" +#~ "Snelheid van de auxiliary part ventilator. De auxiliary ventilator draait op deze " +#~ "snelheid tijdens het afdrukken, behalve de eerste paar lagen, die worden gedefinieerd " +#~ "door geen koellagen" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." #~ msgstr "" -#~ "Lege lagen in de buurt van de bodem worden vervangen door de " -#~ "dichtsbijzijnde normale lagen." +#~ "Lege lagen in de buurt van de bodem worden vervangen door de dichtsbijzijnde normale " +#~ "lagen." #~ msgid "The model has too many empty layers." #~ msgstr "Het model heeft te veel lege lagen." @@ -16963,26 +16303,24 @@ msgstr "" #, c-format, boost-format #~ msgid "" -#~ "Bed temperature of other layer is lower than bed temperature of initial " -#~ "layer for more than %d degree centigrade.\n" +#~ "Bed temperature of other layer is lower than bed temperature of initial layer for more " +#~ "than %d degree centigrade.\n" #~ "This may cause model broken free from build plate during printing" #~ msgstr "" -#~ "De printbed temperatuur voor de overige lagen is %d graden celcius lager " -#~ "dan de temperatuur voor de eerste laag.\n" +#~ "De printbed temperatuur voor de overige lagen is %d graden celcius lager dan de " +#~ "temperatuur voor de eerste laag.\n" #~ "Hierdoor kan de print loskomen van het printbed gedurende de printtaak" #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this " -#~ "filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this filament.\n" #~ "This may cause nozzle blocked and printing failure\n" -#~ "Please keep the printer open during the printing process to ensure air " -#~ "circulation or reduce the temperature of the hot bed" +#~ "Please keep the printer open during the printing process to ensure air circulation or " +#~ "reduce the temperature of the hot bed" #~ msgstr "" -#~ "De bedtemperatuur is hoger dan de vitrificatietemperatuur van dit " -#~ "filament.\n" +#~ "De bedtemperatuur is hoger dan de vitrificatietemperatuur van dit filament.\n" #~ "Dit kan leiden tot verstopping van de nozzle en tot print fouten.\n" -#~ "Houd de printer open tijdens het printproces om te zorgen voor " -#~ "luchtcirculatie, of om de temperatuur van het warmwaterbed te verlagen." +#~ "Houd de printer open tijdens het printproces om te zorgen voor luchtcirculatie, of om de " +#~ "temperatuur van het warmwaterbed te verlagen." #~ msgid "Total Time Estimation" #~ msgstr "Total Time Estimation" @@ -17012,44 +16350,41 @@ msgstr "" #~ msgstr "High Temp Plate (hoge temperatuur printbed)" #~ msgid "" -#~ "Bed temperature when high temperature plate is installed. Value 0 means " -#~ "the filament does not support to print on the High Temp Plate" +#~ "Bed temperature when high temperature plate is installed. Value 0 means the filament " +#~ "does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Dit is de bedtemperatuur wanneer de hogetemperatuurplaat is " -#~ "geïnstalleerd. Een waarde van 0 betekent dat het filament printen op de " -#~ "High Temp Plate niet ondersteunt." +#~ "Dit is de bedtemperatuur wanneer de hogetemperatuurplaat is geïnstalleerd. Een waarde " +#~ "van 0 betekent dat het filament printen op de High Temp Plate niet ondersteunt." #~ msgid "Internal bridge support thickness" #~ msgstr "Dikte interne brugondersteuning" #~ msgid "" -#~ "Style and shape of the support. For normal support, projecting the " -#~ "supports into a regular grid will create more stable supports (default), " -#~ "while snug support towers will save material and reduce object scarring.\n" -#~ "For tree support, slim style will merge branches more aggressively and " -#~ "save a lot of material (default), while hybrid style will create similar " -#~ "structure to normal support under large flat overhangs." +#~ "Style and shape of the support. For normal support, projecting the supports into a " +#~ "regular grid will create more stable supports (default), while snug support towers will " +#~ "save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and save a lot of " +#~ "material (default), while hybrid style will create similar structure to normal support " +#~ "under large flat overhangs." #~ msgstr "" -#~ "Stijl en vorm van de ondersteuning. Voor normale ondersteuning zal grit " -#~ "stabielere steunen creëren (standaard), terwijl snug materiaal bespaart " -#~ "en littekens op het object zal verminderen.\n" -#~ "Voor tree ondersteuning zal de slanke stijl takken agressiever " -#~ "samenvoegen en veel materiaal besparen (standaard), terwijl de hybride " -#~ "stijl een soortgelijke structuur creëert als de normale ondersteuning " -#~ "onder grote platte overhangen." +#~ "Stijl en vorm van de ondersteuning. Voor normale ondersteuning zal grit stabielere " +#~ "steunen creëren (standaard), terwijl snug materiaal bespaart en littekens op het object " +#~ "zal verminderen.\n" +#~ "Voor tree ondersteuning zal de slanke stijl takken agressiever samenvoegen en veel " +#~ "materiaal besparen (standaard), terwijl de hybride stijl een soortgelijke structuur " +#~ "creëert als de normale ondersteuning onder grote platte overhangen." #~ msgid "Bed temperature difference" #~ msgstr "Printbed temperatuurverschil" #~ msgid "" -#~ "Do not recommend bed temperature of other layer to be lower than initial " -#~ "layer for more than this threshold. Too low bed temperature of other " -#~ "layer may cause the model broken free from build plate" +#~ "Do not recommend bed temperature of other layer to be lower than initial layer for more " +#~ "than this threshold. Too low bed temperature of other layer may cause the model broken " +#~ "free from build plate" #~ msgstr "" -#~ "Het wordt niet aanbevolen om de bedtemperatuur van andere lagen meer dan " -#~ "deze drempelwaarde te verlagen dan de eerste laag. Een te lage " -#~ "bedtemperatuur van een andere laag kan ertoe leiden dat het model loskomt " -#~ "van de bouwplaat." +#~ "Het wordt niet aanbevolen om de bedtemperatuur van andere lagen meer dan deze " +#~ "drempelwaarde te verlagen dan de eerste laag. Een te lage bedtemperatuur van een andere " +#~ "laag kan ertoe leiden dat het model loskomt van de bouwplaat." #~ msgid "Orient the model" #~ msgstr "Oriënteer het model" From 61ec042fe8364158b40fb00a4004fa9865f815ce Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 23 Aug 2024 22:12:36 +0800 Subject: [PATCH 138/151] Add alert --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 415d0d371e..da42312e32 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ Orca Slicer is an open source slicer for FDM printers. ![discord-mark-blue](https://github.com/SoftFever/OrcaSlicer/assets/103989404/b97d5ffc-072d-4d0a-bbda-e67ef373876f) Join community: [OrcaSlicer Official Discord Server](https://discord.gg/P4VE9UY9gJ) +🚨🚨🚨Alert🚨🚨🚨: "orcaslicer.net" is **NOT** an our website and appears to be potentially malicious. The content there is AI-generated, which means it lacks genuine context and it's only purpose is to profit from ADs and worse: they can redirect download links to harmful sources. Please avoid downloading OrcaSlicer from this site, as the download links could be compromised at any time. +The only official platforms for OrcaSlicer are the GitHub project page and the Discord channel mentioned above. +I really value the OrcaSlicer community and appreciate all the social groups that have formed. However, it’s important to address that it’s harmful if any group falsely claims to be official or misleads its members. If you notice such a group or are part of one, please help by encouraging the group owner to add a clear disclaimer or by warning its members. + # Main features - Auto calibrations for all printers - Sandwich(inner-outer-inner) mode - an improved version of the `External perimeters first` mode From a4a8ef0913af4bfee0ddcbc661eb837cbede8b4c Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Fri, 23 Aug 2024 22:55:10 +0800 Subject: [PATCH 139/151] Fix crash in printer config when switching tabs (#6537) * Fix ASAN with MSVC * Make ASAN happy * Avoid deleting activated tab button by not calling `DeleteAllItems` (#SoftFever/OrcaSlicer#6486) --- CMakeLists.txt | 2 ++ src/slic3r/GUI/PartPlate.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 17 +++++++++++++---- src/slic3r/GUI/Widgets/TabCtrl.cpp | 18 +++++++++++++++++- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b062604fba..197694e020 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -314,6 +314,8 @@ if (SLIC3R_ASAN) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address") + else() + add_compile_definitions(_DISABLE_STRING_ANNOTATION=1 _DISABLE_VECTOR_ANNOTATION=1) endif () if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index ce65811936..f99db5445c 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -470,7 +470,7 @@ void PartPlate::calc_gridlines(const ExPolygon& poly, const BoundingBox& pp_bbox int count = 0; int step = 10; // Orca: use 500 x 500 bed size as baseline. - auto grid_counts = pp_bbox.size() / ((coord_t) scale_(step * 50)); + const Point grid_counts = pp_bbox.size() / ((coord_t) scale_(step * 50)); // if the grid is too dense, we increase the step if (grid_counts.minCoeff() > 1) { step = static_cast(grid_counts.minCoeff() + 1) * 10; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 9ac8e4bdbd..fc37a0ea6b 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -4746,19 +4746,28 @@ void Tab::rebuild_page_tree() // To avoid redundant clear/activate functions call // suppress activate page before page_tree rebuilding m_disable_tree_sel_changed_event = true; - m_tabctrl->DeleteAllItems(); + int curr_item = 0; for (auto p : m_pages) { if (!p->get_show()) continue; - auto itemId = m_tabctrl->AppendItem(translate_category(p->title(), m_type), p->iconID()); - m_tabctrl->SetItemTextColour(itemId, p->get_item_colour() == m_modified_label_clr ? p->get_item_colour() : StateColor( + if (m_tabctrl->GetCount() <= curr_item) { + m_tabctrl->AppendItem(translate_category(p->title(), m_type), p->iconID()); + } else { + m_tabctrl->SetItemText(curr_item, translate_category(p->title(), m_type)); + } + m_tabctrl->SetItemTextColour(curr_item, p->get_item_colour() == m_modified_label_clr ? p->get_item_colour() : StateColor( std::make_pair(0x6B6B6C, (int) StateColor::NotChecked), std::make_pair(p->get_item_colour(), (int) StateColor::Normal))); if (translate_category(p->title(), m_type) == selected) - item = itemId; + item = curr_item; + curr_item++; } + while (m_tabctrl->GetCount() > curr_item) { + m_tabctrl->DeleteItem(m_tabctrl->GetCount() - 1); + } + // BBS: on mac, root is selected, this fix it m_tabctrl->Unselect(); // BBS: not select on hide tab diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 73d792a4e0..1cfb8c5534 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -117,7 +117,23 @@ int TabCtrl::AppendItem(const wxString &item, bool TabCtrl::DeleteItem(int item) { - return false; + if (item < 0 || item >= btns.size()) { + return false; + } + + Button* btn = btns[item]; + btn->Destroy(); + btns.erase(btns.begin() + item); + sizer->Remove(item * 2); + if (btns.size() > 1) + sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); + relayout(); + if (sel >= item) { + sel--; + sendTabCtrlEvent(); + } + + return true; } void TabCtrl::DeleteAllItems() From d88be18ac23062eba9ed236bf6489b4408b58549 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Sun, 25 Aug 2024 07:33:32 +0300 Subject: [PATCH 140/151] Refactor stagger concentric seams (#6432) --- src/libslic3r/Fill/FillConcentric.cpp | 36 +++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/Fill/FillConcentric.cpp b/src/libslic3r/Fill/FillConcentric.cpp index f7fe82ad5f..b5a0c738c9 100644 --- a/src/libslic3r/Fill/FillConcentric.cpp +++ b/src/libslic3r/Fill/FillConcentric.cpp @@ -10,12 +10,15 @@ namespace Slic3r { template -int stagger_seam_index(int ind, LINE_T line) +int stagger_seam_index(int ind, LINE_T line, double shift, bool dir) { Point const *point = &line.points[ind]; double dist = 0; - while (dist < 0.5 / SCALING_FACTOR) { - ind = (ind + 1) % line.points.size(); + while (dist < shift / SCALING_FACTOR) { + if (dir) + ind = (ind + 1) % line.points.size(); + else + ind = ind > 0 ? --ind : line.points.size() - 1; Point const &next = line.points[ind]; dist += point->distance_to(next); point = &next; @@ -23,6 +26,8 @@ int stagger_seam_index(int ind, LINE_T line) return ind; } +#define STAGGER_SEAM_THRESHOLD 0.9 + void FillConcentric::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, @@ -55,8 +60,20 @@ void FillConcentric::_fill_surface_single( // split paths using a nearest neighbor search size_t iPathFirst = polylines_out.size(); Point last_pos(0, 0); + + double min_nozzle_diameter; + bool dir; + if (this->print_config != nullptr && params.density >= STAGGER_SEAM_THRESHOLD) { + min_nozzle_diameter = *std::min_element(print_config->nozzle_diameter.values.begin(), print_config->nozzle_diameter.values.end()); + dir = rand() % 2; + } + for (const Polygon &loop : loops) { - polylines_out.emplace_back(loop.split_at_index(stagger_seam_index(last_pos.nearest_point_index(loop.points), loop))); + int ind = (this->print_config != nullptr && params.density > STAGGER_SEAM_THRESHOLD) ? + stagger_seam_index(last_pos.nearest_point_index(loop.points), loop, min_nozzle_diameter / 2, dir) : + last_pos.nearest_point_index(loop.points); + + polylines_out.emplace_back(loop.split_at_index(ind)); last_pos = polylines_out.back().last_point(); } @@ -118,13 +135,18 @@ void FillConcentric::_fill_surface_single(const FillParams& params, // Split paths using a nearest neighbor search. size_t firts_poly_idx = thick_polylines_out.size(); Point last_pos(0, 0); + bool dir = rand() % 2; for (const Arachne::ExtrusionLine* extrusion : all_extrusions) { if (extrusion->empty()) continue; - ThickPolyline thick_polyline = Arachne::to_thick_polyline(*extrusion); - if (extrusion->is_closed) - thick_polyline.start_at_index(stagger_seam_index(last_pos.nearest_point_index(thick_polyline.points), thick_polyline)); + + if (extrusion->is_closed) { + int ind = (params.density >= STAGGER_SEAM_THRESHOLD) ? + stagger_seam_index(last_pos.nearest_point_index(thick_polyline.points), thick_polyline, min_nozzle_diameter / 2, dir) : + last_pos.nearest_point_index(thick_polyline.points); + thick_polyline.start_at_index(ind); + } thick_polylines_out.emplace_back(std::move(thick_polyline)); last_pos = thick_polylines_out.back().last_point(); } From 3acd0d7a0126a6b280cad09f07ace9e2c135c04b Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Sun, 25 Aug 2024 07:39:15 +0300 Subject: [PATCH 141/151] Fix crash when both Flow compensator and Verbose Gcode are enabled. (#6428) * Fix crash when both Flow compensator and Verbose Gcode are enabled. --- src/libslic3r/GCode.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 0fa6bbcbba..1b6335e169 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -5568,6 +5568,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, size_t start_index = fitting_result[fitting_index].start_point_index; size_t end_index = fitting_result[fitting_index].end_point_index; for (size_t point_index = start_index + 1; point_index < end_index + 1; point_index++) { + tempDescription = description; const Line line = Line(path.polyline.points[point_index - 1], path.polyline.points[point_index]); const double line_length = line.length() * SCALING_FACTOR; if (line_length < EPSILON) From 40e7978632114a20accfcd097b25207c496ffa18 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Sun, 25 Aug 2024 07:40:40 +0300 Subject: [PATCH 142/151] Remove unused slow down proportionally code (#6405) * Remove unused slow down proportionally code --- src/libslic3r/GCode/CoolingBuffer.cpp | 66 ++------------------------- src/libslic3r/GCode/CoolingBuffer.hpp | 3 -- 2 files changed, 3 insertions(+), 66 deletions(-) diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index ff36ce7e21..2f4938bc7a 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -521,62 +521,6 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: return per_extruder_adjustments; } -// Slow down an extruder range proportionally down to slow_down_layer_time. -// Return the total time for the complete layer. -static inline float extruder_range_slow_down_proportional( - std::vector::iterator it_begin, - std::vector::iterator it_end, - // Elapsed time for the extruders already processed. - float elapsed_time_total0, - // Initial total elapsed time before slow down. - float elapsed_time_before_slowdown, - // Target time for the complete layer (all extruders applied). - float slow_down_layer_time) -{ - // Total layer time after the slow down has been applied. - float total_after_slowdown = elapsed_time_before_slowdown; - // Now decide, whether the external perimeters shall be slowed down as well. - float max_time_nep = elapsed_time_total0; - for (auto it = it_begin; it != it_end; ++ it) - max_time_nep += (*it)->maximum_time_after_slowdown(false); - if (max_time_nep > slow_down_layer_time) { - // It is sufficient to slow down the non-external perimeter moves to reach the target layer time. - // Slow down the non-external perimeters proportionally. - float non_adjustable_time = elapsed_time_total0; - for (auto it = it_begin; it != it_end; ++ it) - non_adjustable_time += (*it)->non_adjustable_time(false); - // The following step is a linear programming task due to the minimum movement speeds of the print moves. - // Run maximum 5 iterations until a good enough approximation is reached. - for (size_t iter = 0; iter < 5; ++ iter) { - float factor = (slow_down_layer_time - non_adjustable_time) / (total_after_slowdown - non_adjustable_time); - assert(factor > 1.f); - total_after_slowdown = elapsed_time_total0; - for (auto it = it_begin; it != it_end; ++ it) - total_after_slowdown += (*it)->slow_down_proportional(factor, false); - if (total_after_slowdown > 0.95f * slow_down_layer_time) - break; - } - } else { - // Slow down everything. First slow down the non-external perimeters to maximum. - for (auto it = it_begin; it != it_end; ++ it) - (*it)->slowdown_to_minimum_feedrate(false); - // Slow down the external perimeters proportionally. - float non_adjustable_time = elapsed_time_total0; - for (auto it = it_begin; it != it_end; ++ it) - non_adjustable_time += (*it)->non_adjustable_time(true); - for (size_t iter = 0; iter < 5; ++ iter) { - float factor = (slow_down_layer_time - non_adjustable_time) / (total_after_slowdown - non_adjustable_time); - assert(factor > 1.f); - total_after_slowdown = elapsed_time_total0; - for (auto it = it_begin; it != it_end; ++ it) - total_after_slowdown += (*it)->slow_down_proportional(factor, true); - if (total_after_slowdown > 0.95f * slow_down_layer_time) - break; - } - } - return total_after_slowdown; -} - // Slow down an extruder range to slow_down_layer_time. // Return the total time for the complete layer. static inline void extruder_range_slow_down_non_proportional( @@ -674,9 +618,8 @@ float CoolingBuffer::calculate_layer_slowdown(std::vector 0) { by_slowdown_time.emplace_back(&adj); - if (! m_cooling_logic_proportional) - // sorts the lines, also sets adj.time_non_adjustable - adj.sort_lines_by_decreasing_feedrate(); + // sorts the lines, also sets adj.time_non_adjustable + adj.sort_lines_by_decreasing_feedrate(); } else elapsed_time_total0 += adj.elapsed_time_total(); } @@ -700,10 +643,7 @@ float CoolingBuffer::calculate_layer_slowdown(std::vectortime_maximum; if (max_time > slow_down_layer_time) { - if (m_cooling_logic_proportional) - extruder_range_slow_down_proportional(cur_begin, by_slowdown_time.end(), elapsed_time_total0, total, slow_down_layer_time); - else - extruder_range_slow_down_non_proportional(cur_begin, by_slowdown_time.end(), slow_down_layer_time - total); + extruder_range_slow_down_non_proportional(cur_begin, by_slowdown_time.end(), slow_down_layer_time - total); } else { // Slow down to maximum possible. for (auto it = cur_begin; it != by_slowdown_time.end(); ++ it) diff --git a/src/libslic3r/GCode/CoolingBuffer.hpp b/src/libslic3r/GCode/CoolingBuffer.hpp index 7fb55985f7..dcbf0120b8 100644 --- a/src/libslic3r/GCode/CoolingBuffer.hpp +++ b/src/libslic3r/GCode/CoolingBuffer.hpp @@ -54,9 +54,6 @@ private: // the PrintConfig slice of FullPrintConfig is constant, thus no thread synchronization is required. const PrintConfig &m_config; unsigned int m_current_extruder; - - // Old logic: proportional. - bool m_cooling_logic_proportional = false; //BBS: current fan speed int m_current_fan_speed; }; From fb26e502126e17c320450af1b354545435358fdd Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 25 Aug 2024 12:42:01 +0800 Subject: [PATCH 143/151] Make the checkbox on export preset dialog more visible in dark mode (#6539) * Make the checkbox on export preset dialog more visible in dark mode (SoftFever/OrcaSlicer#6536) * Merge branch 'main' into bugfox/export-checkbox --- src/slic3r/GUI/CreatePresetsDialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 48dcd07424..d40b1343a0 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -4122,13 +4122,13 @@ wxBoxSizer *ExportConfigsDialog::create_select_printer(wxWindow *parent) horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10)); m_scrolled_preset_window = new wxScrolledWindow(parent); m_scrolled_preset_window->SetScrollRate(5, 5); - m_scrolled_preset_window->SetBackgroundColour(PRINTER_LIST_COLOUR); + m_scrolled_preset_window->SetBackgroundColour(*wxWHITE); m_scrolled_preset_window->SetMaxSize(wxSize(FromDIP(660), FromDIP(400))); m_scrolled_preset_window->SetSize(wxSize(FromDIP(660), FromDIP(400))); wxBoxSizer *scrolled_window = new wxBoxSizer(wxHORIZONTAL); m_presets_window = new wxPanel(m_scrolled_preset_window, wxID_ANY); - m_presets_window->SetBackgroundColour(PRINTER_LIST_COLOUR); + m_presets_window->SetBackgroundColour(*wxWHITE); wxBoxSizer *select_printer_sizer = new wxBoxSizer(wxVERTICAL); m_preset_sizer = new wxGridSizer(3, FromDIP(5), FromDIP(5)); From 6853e16b70933412a4d1e57b429a5f4d41b3977d Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 26 Aug 2024 20:21:59 +0800 Subject: [PATCH 144/151] A bunch of tab fixes (#6551) * Make sure the speed tab is properly hidden when toggle off advance mode * Clear each page before clearing the parent, otherwise the child pages will be destroyed twice * Fix crash if current selected tab is positioned after the removed tab * Fix issue that sometimes the printer config first page is not displayed * Fix issue that the wrong tab item get bold if the number of tabs changed --- src/slic3r/GUI/OG_CustomCtrl.cpp | 13 ++++++++----- src/slic3r/GUI/PresetComboBoxes.cpp | 4 +++- src/slic3r/GUI/Tab.cpp | 11 ++--------- src/slic3r/GUI/Widgets/TabCtrl.cpp | 12 ++++++++++-- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index dadde84ebc..bfeb550d3d 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -492,13 +492,16 @@ bool OG_CustomCtrl::update_visibility(ConfigOptionMode mode) wxCoord h_pos2 = get_title_width() * m_em_unit; wxCoord v_pos = 0; - size_t invisible_lines = 0; + bool has_visible_lines = false; for (CtrlLine& line : ctrl_lines) { line.update_visibility(mode); - if (line.is_visible) + if (line.is_visible) { v_pos += (wxCoord)line.height; - else - invisible_lines++; + + if (!line.is_separator()) { // Ignore separators + has_visible_lines = true; + } + } } // BBS: multi-line title SetFont(Label::Head_16); @@ -513,7 +516,7 @@ bool OG_CustomCtrl::update_visibility(ConfigOptionMode mode) this->SetMinSize(wxSize(h_pos, v_pos)); - return invisible_lines != ctrl_lines.size(); + return has_visible_lines; } // BBS: call by Tab/Page diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index e634c4fe1a..2f5aed9f08 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -799,8 +799,10 @@ bool PlaterPresetComboBox::switch_to_tab() //BBS Select NoteBook Tab params if (tab->GetParent() == wxGetApp().params_panel()) wxGetApp().mainframe->select_tab(MainFrame::tp3DEditor); - else + else { wxGetApp().params_dialog()->Popup(); + tab->OnActivate(); + } tab->restore_last_select_item(); const Preset* selected_filament_preset = nullptr; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index fc37a0ea6b..077a095993 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -468,14 +468,7 @@ void Tab::create_preset_tab() // so that the cursor jumps to the last item. // BBS: bold selection m_tabctrl->Bind(wxEVT_TAB_SEL_CHANGING, [this](wxCommandEvent& event) { - if (m_disable_tree_sel_changed_event) - return; const auto sel_item = m_tabctrl->GetSelection(); - //OutputDebugStringA("wxEVT_TAB_SEL_CHANGING "); - //OutputDebugStringA(m_title.c_str()); - //const auto selection = sel_item >= 0 ? m_tabctrl->GetItemText(sel_item) : ""; - //OutputDebugString(selection); - //OutputDebugStringA("\n"); m_tabctrl->SetItemBold(sel_item, false); }); m_tabctrl->Bind(wxEVT_TAB_SEL_CHANGED, [this](wxCommandEvent& event) { @@ -5282,10 +5275,10 @@ bool Tab::update_current_page_in_background(int& item) // clear pages from the controlls // BBS: fix after new layout, clear page in backgroud - if (m_parent->is_active_and_shown_tab((wxPanel*)this)) - m_parent->clear_page(); for (auto p : m_pages) p->clear(); + if (m_parent->is_active_and_shown_tab((wxPanel*)this)) + m_parent->clear_page(); update_undo_buttons(); diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 1cfb8c5534..f766df864b 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -120,6 +120,11 @@ bool TabCtrl::DeleteItem(int item) if (item < 0 || item >= btns.size()) { return false; } + const bool selection_changed = sel >= item; + + if (selection_changed) { + sendTabCtrlEvent(true); + } Button* btn = btns[item]; btn->Destroy(); @@ -127,9 +132,12 @@ bool TabCtrl::DeleteItem(int item) sizer->Remove(item * 2); if (btns.size() > 1) sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); + + if (selection_changed) { + sel--; // `relayout()` uses `sel` so we need to update this before calling `relayout()` + } relayout(); - if (sel >= item) { - sel--; + if (selection_changed) { sendTabCtrlEvent(); } From e8e0a6f1f925b43d639726bc64d19becccf091bf Mon Sep 17 00:00:00 2001 From: Heiko Liebscher Date: Mon, 26 Aug 2024 14:22:56 +0200 Subject: [PATCH 145/151] add new msgid's fol all languages 2.2.0-Dev (#6543) * add new msgid's fol all languages * Merge branch 'main' into new_features_translation * Merge branch 'main' into new_features_translation --- localization/i18n/OrcaSlicer.pot | 561 +- localization/i18n/ca/OrcaSlicer_ca.po | 480 +- localization/i18n/cs/OrcaSlicer_cs.po | 434 +- localization/i18n/de/OrcaSlicer_de.po | 680 +- localization/i18n/en/OrcaSlicer_en.po | 374 +- localization/i18n/es/OrcaSlicer_es.po | 534 +- localization/i18n/fr/OrcaSlicer_fr.po | 1282 ++-- localization/i18n/hu/OrcaSlicer_hu.po | 392 +- localization/i18n/it/OrcaSlicer_it.po | 504 +- localization/i18n/ja/OrcaSlicer_ja.po | 390 +- localization/i18n/ko/OrcaSlicer_ko.po | 451 +- localization/i18n/nl/OrcaSlicer_nl.po | 6709 +++++++++++-------- localization/i18n/pl/OrcaSlicer_pl.po | 466 +- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 477 +- localization/i18n/ru/OrcaSlicer_ru.po | 498 +- localization/i18n/sv/OrcaSlicer_sv.po | 378 +- localization/i18n/tr/OrcaSlicer_tr.po | 2176 +++--- localization/i18n/uk/OrcaSlicer_uk.po | 476 +- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 397 +- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 388 +- 20 files changed, 11200 insertions(+), 6847 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 4fea2ad475..d5d2f245a9 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -78,6 +78,9 @@ msgstr "" msgid "On overhangs only" msgstr "" +msgid "Auto support threshold angle: " +msgstr "" + msgid "Circle" msgstr "" @@ -97,9 +100,6 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "" -msgid "Auto support threshold angle: " -msgstr "" - msgid "No auto support" msgstr "" @@ -1914,6 +1914,9 @@ msgstr "" msgid "Center" msgstr "" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "" @@ -3857,6 +3860,15 @@ msgstr "" msgid "Total cost" msgstr "" +msgid "up to" +msgstr "" + +msgid "above" +msgstr "" + +msgid "from" +msgstr "" + msgid "Color Scheme" msgstr "" @@ -3920,10 +3932,10 @@ msgstr "" msgid "Cost" msgstr "" -msgid "Print" +msgid "Color change" msgstr "" -msgid "Color change" +msgid "Print" msgstr "" msgid "Printer" @@ -4109,7 +4121,7 @@ msgstr "" msgid "Size:" msgstr "" -#, possible-c-format, possible-boost-format +#, possible-boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4540,6 +4552,18 @@ msgstr "" msgid "Flow rate test - Pass 2" msgstr "" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "" @@ -5721,18 +5745,13 @@ msgid "The file does not contain any geometry data." msgstr "" msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" msgstr "" msgid "Object too large" msgstr "" -msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "" - msgid "Export STL file:" msgstr "" @@ -6074,6 +6093,9 @@ msgstr "" msgid "Language selection" msgstr "" +msgid "Switching application language while some presets are modified." +msgstr "" + msgid "Changing application language" msgstr "" @@ -7065,8 +7087,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -7849,7 +7871,10 @@ msgstr "" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "" -msgid "Shift+G" +msgid "⌘+Shift+G" +msgstr "" + +msgid "Ctrl+Shift+G" msgstr "" msgid "Paste from clipboard" @@ -7897,18 +7922,33 @@ msgstr "" msgid "Collapse/Expand the sidebar" msgstr "" -msgid "Any arrow" +msgid "⌘+Any arrow" msgstr "" msgid "Movement in camera space" msgstr "" +msgid "⌥+Left mouse button" +msgstr "" + msgid "Select a part" msgstr "" +msgid "⌘+Left mouse button" +msgstr "" + msgid "Select multiple objects" msgstr "" +msgid "Ctrl+Any arrow" +msgstr "" + +msgid "Alt+Left mouse button" +msgstr "" + +msgid "Ctrl+Left mouse button" +msgstr "" + msgid "Shift+Left mouse button" msgstr "" @@ -8011,12 +8051,24 @@ msgstr "" msgid "Move: press to snap by 1mm" msgstr "" +msgid "⌘+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust pen radius" msgstr "" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "" +msgid "Ctrl+Mouse wheel" +msgstr "" + +msgid "Alt+Mouse wheel" +msgstr "" + msgid "Gizmo" msgstr "" @@ -8923,14 +8975,31 @@ msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -8990,7 +9059,10 @@ msgstr "" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Internal bridge flow ratio" @@ -8999,7 +9071,11 @@ msgstr "" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" @@ -9007,13 +9083,20 @@ msgstr "" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Bottom surface flow ratio" msgstr "" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Precise wall" @@ -9143,9 +9226,25 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "" +#, possible-c-format, possible-boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" msgid "mm/s or %" @@ -9154,7 +9253,13 @@ msgstr "" msgid "External" msgstr "" -msgid "Speed of bridge and completely overhang wall" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." msgstr "" msgid "mm/s" @@ -9164,8 +9269,8 @@ msgid "Internal" msgstr "" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" msgid "Brim width" @@ -9651,6 +9756,17 @@ msgid "" "has slight overflow or underflow" msgstr "" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "" @@ -9812,13 +9928,28 @@ msgstr "" msgid "Filament load time" msgstr "" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" msgid "Filament unload time" msgstr "" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" msgid "" @@ -9933,12 +10064,6 @@ msgstr "" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" -msgid "" -"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." -msgstr "" - msgid "Ramming parameters" msgstr "" @@ -9947,12 +10072,6 @@ msgid "" "parameters." msgstr "" -msgid "" -"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." -msgstr "" - msgid "Enable ramming for multitool setups" msgstr "" @@ -10259,10 +10378,10 @@ msgstr "" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -10320,7 +10439,10 @@ msgstr "" msgid "Layers and Perimeters" msgstr "" -msgid "Filter out gaps smaller than the threshold specified" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" msgid "" @@ -12048,22 +12170,39 @@ msgid "Activate temperature control" msgstr "" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" msgid "Chamber temperature" msgstr "" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" msgid "Nozzle temperature for layers after the initial one" @@ -13709,8 +13848,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -14461,151 +14600,151 @@ msgstr "" msgid "User cancelled." msgstr "" - -#: resources/data/hints.ini: [hint:Precise wall] -msgid "Precise wall\nDid you know that turning on precise wall can improve precision and layer consistency?" -msgstr "" - -#: resources/data/hints.ini: [hint:Sandwich mode] -msgid "Sandwich mode\nDid you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" -msgstr "" - -#: resources/data/hints.ini: [hint:Chamber temperature] -msgid "Chamber temperature\nDid you know that OrcaSlicer supports chamber temperature?" -msgstr "" - -#: resources/data/hints.ini: [hint:Calibration] -msgid "Calibration\nDid you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." -msgstr "" - -#: resources/data/hints.ini: [hint:Auxiliary fan] -msgid "Auxiliary fan\nDid you know that OrcaSlicer supports Auxiliary part cooling fan?" -msgstr "" - -#: resources/data/hints.ini: [hint:Air filtration] -msgid "Air filtration/Exhaust Fan\nDid you know that OrcaSlicer can support Air filtration/Exhaust Fan?" -msgstr "" - -#: resources/data/hints.ini: [hint:G-code window] -msgid "G-code window\nYou can turn on/off the G-code window by pressing the C key." -msgstr "" - -#: resources/data/hints.ini: [hint:Switch workspaces] -msgid "Switch workspaces\nYou can switch between Prepare and Preview workspaces by pressing the Tab key." -msgstr "" - -#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] -msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." -msgstr "" - -#: resources/data/hints.ini: [hint:Reverse on odd] -msgid "Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" -msgstr "" - -#: resources/data/hints.ini: [hint:Cut Tool] -msgid "Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool?" -msgstr "" - -#: resources/data/hints.ini: [hint:Fix Model] -msgid "Fix Model\nDid you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" -msgstr "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "Timelapse\nDid you know that you can generate a timelapse video during each print?" -msgstr "" - -#: resources/data/hints.ini: [hint:Auto-Arrange] -msgid "Auto-Arrange\nDid you know that you can auto-arrange all objects in your project?" -msgstr "" - -#: resources/data/hints.ini: [hint:Auto-Orient] -msgid "Auto-Orient\nDid you know that you can rotate objects to an optimal orientation for printing by a simple click?" -msgstr "" - -#: resources/data/hints.ini: [hint:Lay on Face] -msgid "Lay on Face\nDid you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." -msgstr "" - -#: resources/data/hints.ini: [hint:Object List] -msgid "Object List\nDid you know that you can view all objects/parts in a list and change settings for each object/part?" -msgstr "" - -#: resources/data/hints.ini: [hint:Search Functionality] -msgid "Search Functionality\nDid you know that you use the Search tool to quickly find a specific Orca Slicer setting?" -msgstr "" - -#: resources/data/hints.ini: [hint:Simplify Model] -msgid "Simplify Model\nDid you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." -msgstr "" - -#: resources/data/hints.ini: [hint:Slicing Parameter Table] -msgid "Slicing Parameter Table\nDid you know that you can view all objects/parts on a table and change settings for each object/part?" -msgstr "" - -#: resources/data/hints.ini: [hint:Split to Objects/Parts] -msgid "Split to Objects/Parts\nDid you know that you can split a big object into small ones for easy colorizing or printing?" -msgstr "" - -#: resources/data/hints.ini: [hint:Subtract a Part] -msgid "Subtract a Part\nDid you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." -msgstr "" - -#: resources/data/hints.ini: [hint:STEP] -msgid "STEP\nDid you know that you can improve your print quality by slicing a STEP file instead of an STL?\nOrca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" -msgstr "" - -#: resources/data/hints.ini: [hint:Z seam location] -msgid "Z seam location\nDid you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] -msgid "Fine-tuning for flow rate\nDid you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." -msgstr "" - -#: resources/data/hints.ini: [hint:Split your prints into plates] -msgid "Split your prints into plates\nDid you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." -msgstr "" - -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] -msgid "Speed up your print with Adaptive Layer Height\nDid you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Support painting] -msgid "Support painting\nDid you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." -msgstr "" - -#: resources/data/hints.ini: [hint:Different types of supports] -msgid "Different types of supports\nDid you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Printing Silk Filament] -msgid "Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." -msgstr "" - -#: resources/data/hints.ini: [hint:Brim for better adhesion] -msgid "Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" -msgstr "" - -#: resources/data/hints.ini: [hint:Set parameters for multiple objects] -msgid "Set parameters for multiple objects\nDid you know that you can set slicing parameters for all selected objects at one time?" -msgstr "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "Stack objects\nDid you know that you can stack objects as a whole one?" -msgstr "" - -#: resources/data/hints.ini: [hint:Flush into support/objects/infill] -msgid "Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" -msgstr "" - -#: resources/data/hints.ini: [hint:Improve strength] -msgid "Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" -msgstr "" - -#: resources/data/hints.ini: [hint:When need to print with the printer door opened] -msgid "When need to print with the printer door opened\nDid you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." -msgstr "" - -#: resources/data/hints.ini: [hint:Avoid warping] -msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping." -msgstr "" + +#: resources/data/hints.ini: [hint:Precise wall] +msgid "Precise wall\nDid you know that turning on precise wall can improve precision and layer consistency?" +msgstr "" + +#: resources/data/hints.ini: [hint:Sandwich mode] +msgid "Sandwich mode\nDid you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" +msgstr "" + +#: resources/data/hints.ini: [hint:Chamber temperature] +msgid "Chamber temperature\nDid you know that OrcaSlicer supports chamber temperature?" +msgstr "" + +#: resources/data/hints.ini: [hint:Calibration] +msgid "Calibration\nDid you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." +msgstr "" + +#: resources/data/hints.ini: [hint:Auxiliary fan] +msgid "Auxiliary fan\nDid you know that OrcaSlicer supports Auxiliary part cooling fan?" +msgstr "" + +#: resources/data/hints.ini: [hint:Air filtration] +msgid "Air filtration/Exhaust Fan\nDid you know that OrcaSlicer can support Air filtration/Exhaust Fan?" +msgstr "" + +#: resources/data/hints.ini: [hint:G-code window] +msgid "G-code window\nYou can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "Switch workspaces\nYou can switch between Prepare and Preview workspaces by pressing the Tab key." +msgstr "" + +#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] +msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." +msgstr "" + +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" +msgstr "" + +#: resources/data/hints.ini: [hint:Cut Tool] +msgid "Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool?" +msgstr "" + +#: resources/data/hints.ini: [hint:Fix Model] +msgid "Fix Model\nDid you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" +msgstr "" + +#: resources/data/hints.ini: [hint:Timelapse] +msgid "Timelapse\nDid you know that you can generate a timelapse video during each print?" +msgstr "" + +#: resources/data/hints.ini: [hint:Auto-Arrange] +msgid "Auto-Arrange\nDid you know that you can auto-arrange all objects in your project?" +msgstr "" + +#: resources/data/hints.ini: [hint:Auto-Orient] +msgid "Auto-Orient\nDid you know that you can rotate objects to an optimal orientation for printing by a simple click?" +msgstr "" + +#: resources/data/hints.ini: [hint:Lay on Face] +msgid "Lay on Face\nDid you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." +msgstr "" + +#: resources/data/hints.ini: [hint:Object List] +msgid "Object List\nDid you know that you can view all objects/parts in a list and change settings for each object/part?" +msgstr "" + +#: resources/data/hints.ini: [hint:Search Functionality] +msgid "Search Functionality\nDid you know that you use the Search tool to quickly find a specific Orca Slicer setting?" +msgstr "" + +#: resources/data/hints.ini: [hint:Simplify Model] +msgid "Simplify Model\nDid you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." +msgstr "" + +#: resources/data/hints.ini: [hint:Slicing Parameter Table] +msgid "Slicing Parameter Table\nDid you know that you can view all objects/parts on a table and change settings for each object/part?" +msgstr "" + +#: resources/data/hints.ini: [hint:Split to Objects/Parts] +msgid "Split to Objects/Parts\nDid you know that you can split a big object into small ones for easy colorizing or printing?" +msgstr "" + +#: resources/data/hints.ini: [hint:Subtract a Part] +msgid "Subtract a Part\nDid you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." +msgstr "" + +#: resources/data/hints.ini: [hint:STEP] +msgid "STEP\nDid you know that you can improve your print quality by slicing a STEP file instead of an STL?\nOrca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" +msgstr "" + +#: resources/data/hints.ini: [hint:Z seam location] +msgid "Z seam location\nDid you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] +msgid "Fine-tuning for flow rate\nDid you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." +msgstr "" + +#: resources/data/hints.ini: [hint:Split your prints into plates] +msgid "Split your prints into plates\nDid you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." +msgstr "" + +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +msgid "Speed up your print with Adaptive Layer Height\nDid you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Support painting] +msgid "Support painting\nDid you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." +msgstr "" + +#: resources/data/hints.ini: [hint:Different types of supports] +msgid "Different types of supports\nDid you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Printing Silk Filament] +msgid "Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." +msgstr "" + +#: resources/data/hints.ini: [hint:Brim for better adhesion] +msgid "Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" +msgstr "" + +#: resources/data/hints.ini: [hint:Set parameters for multiple objects] +msgid "Set parameters for multiple objects\nDid you know that you can set slicing parameters for all selected objects at one time?" +msgstr "" + +#: resources/data/hints.ini: [hint:Stack objects] +msgid "Stack objects\nDid you know that you can stack objects as a whole one?" +msgstr "" + +#: resources/data/hints.ini: [hint:Flush into support/objects/infill] +msgid "Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" +msgstr "" + +#: resources/data/hints.ini: [hint:Improve strength] +msgid "Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" +msgstr "" + +#: resources/data/hints.ini: [hint:When need to print with the printer door opened] +msgid "When need to print with the printer door opened\nDid you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." +msgstr "" + +#: resources/data/hints.ini: [hint:Avoid warping] +msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping." +msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index da702fafcf..ee7dd16611 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2024-07-07 18:43+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -79,6 +79,9 @@ msgstr "Angle de farciment intel·ligent" msgid "On overhangs only" msgstr "Només als voladissos" +msgid "Auto support threshold angle: " +msgstr "Angle llindar de suport automàtic: " + msgid "Circle" msgstr "Cercle" @@ -98,9 +101,6 @@ msgstr "Permet pintar només les facetes seleccionades per: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Ressalteu les cares segons l'angle del voladís." -msgid "Auto support threshold angle: " -msgstr "Angle llindar de suport automàtic: " - msgid "No auto support" msgstr "No suports automàtics" @@ -1995,6 +1995,9 @@ msgstr "Simplificar el model" msgid "Center" msgstr "Centre" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Editar la configuració de Processat" @@ -4170,6 +4173,15 @@ msgstr "Temps total" msgid "Total cost" msgstr "Cost total" +msgid "up to" +msgstr "fins a" + +msgid "above" +msgstr "sobre" + +msgid "from" +msgstr "des de" + msgid "Color Scheme" msgstr "Esquema de color" @@ -4233,12 +4245,12 @@ msgstr "Canvis de filament" msgid "Cost" msgstr "Cost" -msgid "Print" -msgstr "Imprimir" - msgid "Color change" msgstr "Canvi de color" +msgid "Print" +msgstr "Imprimir" + msgid "Printer" msgstr "Impressora" @@ -4422,7 +4434,7 @@ msgstr "Volum:" msgid "Size:" msgstr "Mida:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4864,6 +4876,18 @@ msgstr "Pas 2" msgid "Flow rate test - Pass 2" msgstr "Test de Flux - Pas 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Ratio de Flux" @@ -6171,14 +6195,6 @@ msgstr "S'ha detectat un objecte amb múltiples peces" msgid "The file does not contain any geometry data." msgstr "El fitxer no conté cap dada de geometria." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Objecte massa gran" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6186,6 +6202,9 @@ msgstr "" "El teu objecte sembla ser massa gran, Vols reduir-lo per adaptar-lo " "automàticament al llit?" +msgid "Object too large" +msgstr "Objecte massa gran" + msgid "Export STL file:" msgstr "Exportar el fitxer STL:" @@ -6564,6 +6583,9 @@ msgstr "Voleu continuar?" msgid "Language selection" msgstr "Selecció d'idiomes" +msgid "Switching application language while some presets are modified." +msgstr "Canviant l'idioma de l'aplicació mentre es modifiquen alguns perfils." + msgid "Changing application language" msgstr "Canviant de l'idioma de l'aplicació" @@ -7705,8 +7727,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Quan graveu timelapse sense capçal d'impressió, es recomana afegir una " "\"Torre de Purga Timelapse\" \n" @@ -8585,8 +8607,11 @@ msgstr "Llista d'objectes" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importar dades de geometria des de fitxers STL/STEP/3MF/OBJ/AMF" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Maj+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Maj+G" msgid "Paste from clipboard" msgstr "Enganxa des del porta-retalls" @@ -8637,18 +8662,33 @@ msgstr "Maj+Tab" msgid "Collapse/Expand the sidebar" msgstr "Replegar/Expandir barra lateral" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+Qualsevol fletxa" msgid "Movement in camera space" msgstr "Moviment a l'espai de la càmera" +msgid "⌥+Left mouse button" +msgstr "⌥+Botó esquerre del ratolí" + msgid "Select a part" msgstr "Seleccionar una peça" +msgid "⌘+Left mouse button" +msgstr "⌘+Botó esquerre del ratolí" + msgid "Select multiple objects" msgstr "Seleccionar múltiples objectes" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Qualsevol fletxa" + +msgid "Alt+Left mouse button" +msgstr "Alt+Botó esquerre del ratolí" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Botó esquerre del ratolí" + msgid "Shift+Left mouse button" msgstr "Maj+Botó esquerre del ratolí" @@ -8751,12 +8791,24 @@ msgstr "Plataforma" msgid "Move: press to snap by 1mm" msgstr "Moure: Clicka per ajustar en passos d'1 mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+Roda del ratolí" + msgid "Support/Color Painting: adjust pen radius" msgstr "Suport/Pintat de color: configuració del radi de la ploma" +msgid "⌥+Mouse wheel" +msgstr "⌥+Roda del ratolí" + msgid "Support/Color Painting: adjust section position" msgstr "Suport/Pintat de color: configuració de la posició de la secció" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Roda del ratolí" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Roda del ratolí" + msgid "Gizmo" msgstr "Gizmo" @@ -9838,25 +9890,32 @@ msgid "Apply gap fill" msgstr "Aplicar farciment de buits" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"Habilita farciment de buits per a les superfícies seleccionades. El mínim " -"del forat que s'omplirà es pot controlar des de l'opció filtrar forats " -"petits a continuació.\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Opcions:\n" -"1. A tot arreu: aplica farciment de buits a superfícies sòlides superiors, " -"inferiors i internes\n" -"2. Superfícies superiors i inferiors: aplica farciment de buit només a " -"superfícies superiors i inferiors\n" -"3. Enlloc: desactiva el farciment de buits\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "A tot arreu" @@ -9931,10 +9990,11 @@ msgstr "Ratio de flux del pont" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Disminuïu lleugerament aquest valor ( per exemple 0,9 ) per reduir la " -"quantitat de material per al pont, per millorar l'enfonsament" msgid "Internal bridge flow ratio" msgstr "Ratio de flux del pont intern" @@ -9942,30 +10002,33 @@ msgstr "Ratio de flux del pont intern" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Aquest valor regeix el gruix de la capa de pont intern. Aquesta és la " -"primera capa sobre el farciment poc dens. Disminuïu lleugerament aquest " -"valor ( per exemple 0,9 ) per millorar la qualitat de la superfície sobre el " -"farciment poc dens." msgid "Top surface flow ratio" msgstr "Ratio de flux superficial superior" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Aquest factor afecta la quantitat de material per al farciment sòlid " -"superior. Podeu disminuir-lo lleugerament per tenir un acabat superficial " -"suau" msgid "Bottom surface flow ratio" msgstr "Ratio de flux superficial inferior" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Aquest factor afecta la quantitat de material per al farciment sòlid inferior" msgid "Precise wall" msgstr "Perímetre precís" @@ -10142,12 +10205,26 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "Alentir la velocitat per a perímetres corbats" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Activeu aquesta opció per alentir la impressió en zones on potencialment " -"poden existir perímetres corbats" msgid "mm/s or %" msgstr "mm/s o %" @@ -10155,8 +10232,14 @@ msgstr "mm/s o %" msgid "External" msgstr "Extern" -msgid "Speed of bridge and completely overhang wall" -msgstr "Velocitat per a ponts i perímetres completament en voladís" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -10165,11 +10248,9 @@ msgid "Internal" msgstr "Intern" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Velocitat del pont intern. Si el valor s'expressa en percentatge, es " -"calcularà a partir de la bridge_speed. El valor predeterminat és del 150%." msgid "Brim width" msgstr "Ample de la Vora d'Adherència" @@ -10828,6 +10909,17 @@ msgstr "" "entre 0,95 i 1,05. Potser podeu ajustar aquest valor per obtenir una " "superfície ben plana quan hi ha un lleuger excés o dèficit de flux" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Activar l'Avanç de Pressió Lineal" @@ -11016,18 +11108,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Temps de càrrega del filament" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Temps per carregar nou filament quan canvia de filament. Només per a " -"estadístiques" msgid "Filament unload time" msgstr "Temps de descàrrega del filament" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Temps per descarregar filament vell en canviar de filament. Només per a " -"estadístiques" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11175,16 +11278,6 @@ msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" "Els moviments de refredament s'acceleren gradualment cap a aquesta velocitat." -msgid "" -"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." -msgstr "" -"Temps perquè el firmware de la impressora ( o la Unitat Multi Material 2.0 ) " -"carregui un filament durant un canvi d'eina ( en executar el Codi-T ). " -"Aquest temps s'afegeix al temps d'impressió total mitjançant l'estimador de " -"temps del Codi-G." - msgid "Ramming parameters" msgstr "Paràmetres de Moldejat de Punta( Ramming )" @@ -11195,16 +11288,6 @@ msgstr "" "RammingDialog processa aquesta cadena i conté paràmetres específics de " "Moldejat de Punta( Ramming )" -msgid "" -"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." -msgstr "" -"Temps perquè el firmware de la impressora ( o la Unitat Multi Material 2.0 ) " -"descarregui un filament durant un canvi d'eina ( en executar el Codi-T ). " -"Aquest temps s'afegeix al temps d'impressió total mitjançant l'estimador de " -"temps del Codi-G." - msgid "Enable ramming for multitool setups" msgstr "" "Habilita el Moldejat de Punta( Ramming ) per a configuracions multieina" @@ -11574,15 +11657,15 @@ msgstr "Velocitat màxima del ventilador a la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocitat del ventilador augmentarà linealment de zero a la capa " -"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer" -"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a " -"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " +"\"close_fan_the_first_x_layers\" al màxim a la capa " +"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior " +"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " "la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" @@ -11652,8 +11735,11 @@ msgstr "Filtrar els buits minúsculs" msgid "Layers and Perimeters" msgstr "Capes i Perímetres" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Filtrar els buits més petits que el llindar especificat" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13836,33 +13922,40 @@ msgid "Activate temperature control" msgstr "Activar el control de temperatura" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Activeu aquesta opció per al control de temperatura de la cambra. S'afegirà " -"una comanda M191 abans de \"machine_start_gcode\"\n" -"Comandes de Codi-G: M141 / M191 S ( 0-255 )" msgid "Chamber temperature" msgstr "Temperatura de la cambra" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Una temperatura de cambra més alta pot ajudar a suprimir o reduir la " -"deformació( warping ) i potencialment conduir a una major resistència d'unió " -"entre capes per a materials d'alta temperatura com ABS, ASA, PC, PA, etc. Al " -"mateix temps, la filtració d'aire d'ABS i ASA empitjorarà. Mentre que per a " -"PLA, PETG, TPU, PVA i altres materials de baixa temperatura, la temperatura " -"real de la cambra no hauria de ser alta per evitar obstruccions, pel que 0, " -"que significa apagar, és molt recomanable" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura del broquet per les capes després de l'inicial" @@ -15866,8 +15959,8 @@ msgstr "" "Vols reescriure'l?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus " @@ -17211,54 +17304,135 @@ msgstr "" "augmentar adequadament la temperatura del llit pot reduir la probabilitat de " "deformació." -#~ msgid "up to" -#~ msgstr "fins a" - -#~ msgid "above" -#~ msgstr "sobre" - -#~ msgid "from" -#~ msgstr "des de" - -#~ msgid "Switching application language while some presets are modified." +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" #~ msgstr "" -#~ "Canviant l'idioma de l'aplicació mentre es modifiquen alguns perfils." +#~ "Habilita farciment de buits per a les superfícies seleccionades. El mínim " +#~ "del forat que s'omplirà es pot controlar des de l'opció filtrar forats " +#~ "petits a continuació.\n" +#~ "\n" +#~ "Opcions:\n" +#~ "1. A tot arreu: aplica farciment de buits a superfícies sòlides " +#~ "superiors, inferiors i internes\n" +#~ "2. Superfícies superiors i inferiors: aplica farciment de buit només a " +#~ "superfícies superiors i inferiors\n" +#~ "3. Enlloc: desactiva el farciment de buits\n" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Maj+G" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Disminuïu lleugerament aquest valor ( per exemple 0,9 ) per reduir la " +#~ "quantitat de material per al pont, per millorar l'enfonsament" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Maj+G" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Aquest valor regeix el gruix de la capa de pont intern. Aquesta és la " +#~ "primera capa sobre el farciment poc dens. Disminuïu lleugerament aquest " +#~ "valor ( per exemple 0,9 ) per millorar la qualitat de la superfície sobre " +#~ "el farciment poc dens." -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+Qualsevol fletxa" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Aquest factor afecta la quantitat de material per al farciment sòlid " +#~ "superior. Podeu disminuir-lo lleugerament per tenir un acabat superficial " +#~ "suau" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Botó esquerre del ratolí" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Aquest factor afecta la quantitat de material per al farciment sòlid " +#~ "inferior" -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Botó esquerre del ratolí" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Activeu aquesta opció per alentir la impressió en zones on potencialment " +#~ "poden existir perímetres corbats" -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+Qualsevol fletxa" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Velocitat per a ponts i perímetres completament en voladís" -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Botó esquerre del ratolí" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Velocitat del pont intern. Si el valor s'expressa en percentatge, es " +#~ "calcularà a partir de la bridge_speed. El valor predeterminat és del 150%." -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Botó esquerre del ratolí" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Temps per carregar nou filament quan canvia de filament. Només per a " +#~ "estadístiques" -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Roda del ratolí" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Temps per descarregar filament vell en canviar de filament. Només per a " +#~ "estadístiques" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Roda del ratolí" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Temps perquè el firmware de la impressora ( o la Unitat Multi Material " +#~ "2.0 ) carregui un filament durant un canvi d'eina ( en executar el Codi-" +#~ "T ). Aquest temps s'afegeix al temps d'impressió total mitjançant " +#~ "l'estimador de temps del Codi-G." -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Roda del ratolí" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Temps perquè el firmware de la impressora ( o la Unitat Multi Material " +#~ "2.0 ) descarregui un filament durant un canvi d'eina ( en executar el " +#~ "Codi-T ). Aquest temps s'afegeix al temps d'impressió total mitjançant " +#~ "l'estimador de temps del Codi-G." -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Roda del ratolí" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Filtrar els buits més petits que el llindar especificat" + +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Activeu aquesta opció per al control de temperatura de la cambra. " +#~ "S'afegirà una comanda M191 abans de \"machine_start_gcode\"\n" +#~ "Comandes de Codi-G: M141 / M191 S ( 0-255 )" + +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Una temperatura de cambra més alta pot ajudar a suprimir o reduir la " +#~ "deformació( warping ) i potencialment conduir a una major resistència " +#~ "d'unió entre capes per a materials d'alta temperatura com ABS, ASA, PC, " +#~ "PA, etc. Al mateix temps, la filtració d'aire d'ABS i ASA empitjorarà. " +#~ "Mentre que per a PLA, PETG, TPU, PVA i altres materials de baixa " +#~ "temperatura, la temperatura real de la cambra no hauria de ser alta per " +#~ "evitar obstruccions, pel que 0, que significa apagar, és molt recomanable" #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 5c5c4aba53..fd186378a9 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2023-09-30 15:15+0200\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -78,6 +78,9 @@ msgstr "Úhel chytrého vybarvení" msgid "On overhangs only" msgstr "Pouze na převisech" +msgid "Auto support threshold angle: " +msgstr "Auto podpěry hraniční úhlel: " + msgid "Circle" msgstr "Kruh" @@ -97,9 +100,6 @@ msgstr "Umožňuje malovat pouze na fasety vybrané pomocí: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Zvýrazněte plochy podle úhlu převisů." -msgid "Auto support threshold angle: " -msgstr "Auto podpěry hraniční úhlel: " - msgid "No auto support" msgstr "Žádné automatické podpěry" @@ -1965,6 +1965,9 @@ msgstr "Zjednodušit model" msgid "Center" msgstr "Střed" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Upravit nastavení procesu" @@ -4085,6 +4088,15 @@ msgstr "Celkový čas" msgid "Total cost" msgstr "Celková cena" +msgid "up to" +msgstr "až do" + +msgid "above" +msgstr "nad" + +msgid "from" +msgstr "z" + msgid "Color Scheme" msgstr "Barevné schéma" @@ -4148,12 +4160,12 @@ msgstr "Doby výměny Filamentu" msgid "Cost" msgstr "Náklady" -msgid "Print" -msgstr "Tisk" - msgid "Color change" msgstr "Změna barvy" +msgid "Print" +msgstr "Tisk" + msgid "Printer" msgstr "Tiskárna" @@ -4337,7 +4349,7 @@ msgstr "Objem:" msgid "Size:" msgstr "Velikost:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4778,6 +4790,18 @@ msgstr "Postup 2" msgid "Flow rate test - Pass 2" msgstr "Test průtoku - Postup 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Průtok" @@ -6039,14 +6063,6 @@ msgstr "Byl detekován objekt s více částmi" msgid "The file does not contain any geometry data." msgstr "Soubor neobsahuje žádná geometrická data." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Objekt je příliš velký" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6054,6 +6070,9 @@ msgstr "" "Váš objekt se zdá být příliš velký, chcete jej zmenšit, aby se vešel na " "vyhřívanou podložku automaticky?" +msgid "Object too large" +msgstr "Objekt je příliš velký" + msgid "Export STL file:" msgstr "Exportovat STL soubor:" @@ -6421,6 +6440,9 @@ msgstr "Chcete pokračovat?" msgid "Language selection" msgstr "Výběr jazyka" +msgid "Switching application language while some presets are modified." +msgstr "Přepínání jazyka aplikace při změně některých předvoleb." + msgid "Changing application language" msgstr "Změna jazyka aplikace" @@ -7487,8 +7509,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Při nahrávání časosběru bez nástrojové hlavy se doporučuje přidat " "\"Timelapse Wipe Tower\" \n" @@ -8334,8 +8356,11 @@ msgstr "Seznam objektů" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometrických dat ze souborů STL/STEP/3MF/OBJ/AMF" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Vložit ze schránky" @@ -8385,18 +8410,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Sbalit/Rozbalit postranní panel" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+libovolná šipka" msgid "Movement in camera space" msgstr "Posun výběru v ortogonálním prostoru kamery" +msgid "⌥+Left mouse button" +msgstr "⌥+levé tlačítko myši" + msgid "Select a part" msgstr "Vyberte část" +msgid "⌘+Left mouse button" +msgstr "⌘+levé tlačítko myši" + msgid "Select multiple objects" msgstr "Vyberte více objektů" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+libovolná šipka" + +msgid "Alt+Left mouse button" +msgstr "Alt+levé tlačítko myši" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+levé tlačítko myši" + msgid "Shift+Left mouse button" msgstr "Shift+levé tlačítko myši" @@ -8499,12 +8539,24 @@ msgstr "Podložka" msgid "Move: press to snap by 1mm" msgstr "Posunout: stisknutím přitáhnete o 1 mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+kolečko myši" + msgid "Support/Color Painting: adjust pen radius" msgstr "Podpěry/Barva: upravit poloměr pera" +msgid "⌥+Mouse wheel" +msgstr "⌥+kolečko myši" + msgid "Support/Color Painting: adjust section position" msgstr "Podpěry/Barva: upravit polohu sekce" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+kolečko myši" + +msgid "Alt+Mouse wheel" +msgstr "Alt+kolečko myši" + msgid "Gizmo" msgstr "Gizmo" @@ -9525,14 +9577,31 @@ msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9605,10 +9674,11 @@ msgstr "Průtok mostu" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Snižte tuto hodnotu mírně (například 0,9), abyste snížili množství materiálu " -"pro most a zlepšili prověšení" msgid "Internal bridge flow ratio" msgstr "" @@ -9616,7 +9686,11 @@ msgstr "" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" @@ -9624,16 +9698,21 @@ msgstr "Poměr průtoku horní vrstvy" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Tento faktor ovlivňuje množství materiálu pro vrchní plnou výplň. Můžete jej " -"mírně snížit, abyste měli hladký povrch" msgid "Bottom surface flow ratio" msgstr "Poměr průtoku spodní vrstvy" -msgid "This factor affects the amount of material for bottom solid infill" -msgstr "Tento faktor ovlivňuje množství materiálu pro spodní plnou výplň" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Precise wall" msgstr "Přesná stěna" @@ -9779,12 +9858,26 @@ msgstr "Povolte tuto volbu pro zpomalení tisku pro různé stupně převisů" msgid "Slow down for curled perimeters" msgstr "Zpomalení pro zakroucené obvody" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Povolte tuto možnost pro zpomalení tisku na místech, kde mohou existovat " -"potenciální zakroucené obvody" msgid "mm/s or %" msgstr "mm/s or %" @@ -9792,8 +9885,14 @@ msgstr "mm/s or %" msgid "External" msgstr "Vnější" -msgid "Speed of bridge and completely overhang wall" -msgstr "Rychlost mostu a zcela převislé stěny" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9802,11 +9901,9 @@ msgid "Internal" msgstr "Vnitřní" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Rychlost vnitřního mostu. Pokud je hodnota vyjádřena jako procento, bude " -"vypočítána na základě most_speed. Výchozí hodnota je 150 %." msgid "Brim width" msgstr "Šířka límce" @@ -10341,6 +10438,17 @@ msgstr "" "můžete tuto hodnotu vyladit, abyste získali pěkně rovný povrch, když dochází " "k mírnému přetečení nebo podtečení" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Povolit předstih tlaku" @@ -10517,16 +10625,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Doba zavádění filamentu" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Čas na zavedení nového filamentu při výměně filamentu. Pouze pro statistiku" msgid "Filament unload time" msgstr "Doba vysouvání filamentu" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Čas vytažení starého filamentu při výměně filamentu. Pouze pro statistiku" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10661,15 +10782,6 @@ msgstr "Rychlost posledního pohybu chlazení" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Chladící pohyby se postupně zrychlují až k této rychlosti." -msgid "" -"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." -msgstr "" -"Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) zavádí " -"nový filament během jeho výměny (při provádění kódu T). Tento čas je přidán " -"k celkové době tisku pomocí G-kódu odhadovače tiskového času." - msgid "Ramming parameters" msgstr "Parametry rapidní extruze" @@ -10680,15 +10792,6 @@ msgstr "" "Tento řetězec je upravován dialogem RammingDialog a obsahuje specifické " "parametry pro rapidní extruzi." -msgid "" -"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." -msgstr "" -"Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) vysouvá " -"filament během jeho výměny (při provádění kódu T). Tento čas je přidán k " -"celkové době tisku pomocí G-kódu odhadovače tiskového času." - msgid "Enable ramming for multitool setups" msgstr "Povolení rapidní extruze tiskárny s více nástroji" @@ -11040,10 +11143,10 @@ msgstr "Maximální otáčky ventilátoru ve vrstvě" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Otáčky ventilátoru se lineárně zvýší z nuly ve vrstvě " "\"close_fan_first_layers\" na maximum ve vrstvě \"full_fan_speed_layer\". " @@ -11115,8 +11218,11 @@ msgstr "Odfiltrujte drobné mezery" msgid "Layers and Perimeters" msgstr "Vrstvy a perimetry" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Filtrovat mezery menší než stanovená hranice" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13107,33 +13213,40 @@ msgid "Activate temperature control" msgstr "Aktivovat řízení teploty" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" -msgstr "" -"Zapněte tuto volbu pro řízení teploty v komoře. Příkaz M191 bude přidán před " +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " "\"machine_start_gcode\"\n" -"G-kód příkazy: M141/M191 S(0-255)" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." +msgstr "" msgid "Chamber temperature" msgstr "Teplota v komoře" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Vyšší teplota komory může pomoci potlačit nebo snížit odchlipování a " -"potenciálně vést k vyšší pevnosti spojů mezi vrstvami pro materiály s " -"vysokou teplotou, jako je ABS, ASA, PC, PA a další. Zároveň se však zhorší " -"filtrace vzduchu pro ABS a ASA. Naopak pro PLA, PETG, TPU, PVA a další " -"materiály s nízkou teplotou by teplota komory neměla být vysoká, aby se " -"předešlo zanášení, takže je velmi doporučeno použít hodnotu 0, která znamená " -"vypnutí" msgid "Nozzle temperature for layers after the initial one" msgstr "Teplota trysky pro vrstvy po počáteční" @@ -14983,8 +15096,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -15878,8 +15991,8 @@ msgid "" msgstr "" "Plochou na podložku\n" "Věděli jste, že můžete rychle nastavit orientaci modelu tak, aby jedna z " -"jeho stěn spočívala na tiskovém podloží? Vyberte funkci \"Plochou na podložku" -"\" nebo stiskněte klávesu F." +"jeho stěn spočívala na tiskovém podloží? Vyberte funkci \"Plochou na " +"podložku\" nebo stiskněte klávesu F." #: resources/data/hints.ini: [hint:Object List] msgid "" @@ -16095,53 +16208,96 @@ msgid "" "probability of warping." msgstr "" -#~ msgid "up to" -#~ msgstr "až do" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Snižte tuto hodnotu mírně (například 0,9), abyste snížili množství " +#~ "materiálu pro most a zlepšili prověšení" -#~ msgid "above" -#~ msgstr "nad" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Tento faktor ovlivňuje množství materiálu pro vrchní plnou výplň. Můžete " +#~ "jej mírně snížit, abyste měli hladký povrch" -#~ msgid "from" -#~ msgstr "z" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "Tento faktor ovlivňuje množství materiálu pro spodní plnou výplň" -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "Přepínání jazyka aplikace při změně některých předvoleb." +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Povolte tuto možnost pro zpomalení tisku na místech, kde mohou existovat " +#~ "potenciální zakroucené obvody" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Rychlost mostu a zcela převislé stěny" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Rychlost vnitřního mostu. Pokud je hodnota vyjádřena jako procento, bude " +#~ "vypočítána na základě most_speed. Výchozí hodnota je 150 %." -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+libovolná šipka" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Čas na zavedení nového filamentu při výměně filamentu. Pouze pro " +#~ "statistiku" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+levé tlačítko myši" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Čas vytažení starého filamentu při výměně filamentu. Pouze pro statistiku" -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+levé tlačítko myši" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) " +#~ "zavádí nový filament během jeho výměny (při provádění kódu T). Tento čas " +#~ "je přidán k celkové době tisku pomocí G-kódu odhadovače tiskového času." -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+libovolná šipka" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Doba, po kterou firmware tiskárny (nebo jednotka Multi Material 2.0) " +#~ "vysouvá filament během jeho výměny (při provádění kódu T). Tento čas je " +#~ "přidán k celkové době tisku pomocí G-kódu odhadovače tiskového času." -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+levé tlačítko myši" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Filtrovat mezery menší než stanovená hranice" -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+levé tlačítko myši" +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Zapněte tuto volbu pro řízení teploty v komoře. Příkaz M191 bude přidán " +#~ "před \"machine_start_gcode\"\n" +#~ "G-kód příkazy: M141/M191 S(0-255)" -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+kolečko myši" - -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+kolečko myši" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+kolečko myši" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+kolečko myši" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Vyšší teplota komory může pomoci potlačit nebo snížit odchlipování a " +#~ "potenciálně vést k vyšší pevnosti spojů mezi vrstvami pro materiály s " +#~ "vysokou teplotou, jako je ABS, ASA, PC, PA a další. Zároveň se však " +#~ "zhorší filtrace vzduchu pro ABS a ASA. Naopak pro PLA, PETG, TPU, PVA a " +#~ "další materiály s nízkou teplotou by teplota komory neměla být vysoká, " +#~ "aby se předešlo zanášení, takže je velmi doporučeno použít hodnotu 0, " +#~ "která znamená vypnutí" #~ msgid "Wipe tower extruder" #~ msgstr "Extruder čistící věže" @@ -16172,12 +16328,12 @@ msgstr "" #~ "Najdete podrobnosti o kalibraci průtoku dynamiky v naší wiki.\n" #~ "\n" #~ "Obvykle kalibrace není potřebná. Při spuštění tisku s jednobarevným/" -#~ "materiálovým filamentem a zaškrtnutou volbou \"kalibrace průtoku dynamiky" -#~ "\" v menu spuštění tisku, tiskárna bude postupovat podle staré metody a " -#~ "zkalibruje filament před tiskem. Při spuštění tisku s vícebarevným/" -#~ "materiálovým filamentem bude tiskárna při každé změně filamentu používat " -#~ "výchozí kompenzační parametr pro filament, což má většinou dobrý " -#~ "výsledek.\n" +#~ "materiálovým filamentem a zaškrtnutou volbou \"kalibrace průtoku " +#~ "dynamiky\" v menu spuštění tisku, tiskárna bude postupovat podle staré " +#~ "metody a zkalibruje filament před tiskem. Při spuštění tisku s " +#~ "vícebarevným/materiálovým filamentem bude tiskárna při každé změně " +#~ "filamentu používat výchozí kompenzační parametr pro filament, což má " +#~ "většinou dobrý výsledek.\n" #~ "\n" #~ "Všimněte si, že existují některé případy, které mohou způsobit, že " #~ "výsledek kalibrace nebude spolehlivý: použití texturované podložky pro " diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 7547eaeee6..ed3799db7c 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -74,6 +74,9 @@ msgstr "Intelligenter Füllwinkel" msgid "On overhangs only" msgstr "Nur an Überhängen" +msgid "Auto support threshold angle: " +msgstr "Winkel für automatische Supports: " + msgid "Circle" msgstr "Kreis" @@ -94,9 +97,6 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Markieren der Flächen entsprechend dem Überhangwinkel." -msgid "Auto support threshold angle: " -msgstr "Winkel für automatische Supports: " - msgid "No auto support" msgstr "Kein automatischer Support" @@ -1995,6 +1995,9 @@ msgstr "Modell vereinfachen" msgid "Center" msgstr "Zur Mitte" +msgid "Drop" +msgstr "Ablegen" + msgid "Edit Process Settings" msgstr "Prozesseinstellungen" @@ -4214,6 +4217,15 @@ msgstr "Gesamtdauer" msgid "Total cost" msgstr "Geamtkosten" +msgid "up to" +msgstr "bis zu" + +msgid "above" +msgstr "über" + +msgid "from" +msgstr "von" + msgid "Color Scheme" msgstr "Farbschema" @@ -4277,12 +4289,12 @@ msgstr "Filamentwechselzeiten" msgid "Cost" msgstr "Kosten" -msgid "Print" -msgstr "aktuelle Platte drucken" - msgid "Color change" msgstr "Farbwechsel" +msgid "Print" +msgstr "aktuelle Platte drucken" + msgid "Printer" msgstr "Drucker" @@ -4466,7 +4478,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Größe:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4911,6 +4923,18 @@ msgstr "Durchgang 2" msgid "Flow rate test - Pass 2" msgstr "Durchflussratentests - Teil 1" +msgid "YOLO (Recommended)" +msgstr "YOLO (Empfohlen)" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "Orca YOLO Durchflusskalibrierung, 0.01 Schritt" + +msgid "YOLO (perfectionist version)" +msgstr "YOLO (Perfektionisten-Version)" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "Orca YOLO Durchflusskalibrierung, 0.005 Schritt" + msgid "Flow rate" msgstr "Durchflussrate" @@ -6232,16 +6256,6 @@ msgstr "Objekt mit mehreren Teilen wurde entdeckt" msgid "The file does not contain any geometry data." msgstr "Die Datei enthält keine Geometriedaten." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" -"Ihr Objekt scheint zu groß zu sein. Es wird automatisch verkleinert, um auf " -"das Druckbett zu passen." - -msgid "Object too large" -msgstr "Objekt zu groß" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6249,6 +6263,9 @@ msgstr "" "Ihr Objekt scheint zu groß zu sein. Möchten Sie es verkleinern, um es " "automatisch an das Druckbett anzupassen?" +msgid "Object too large" +msgstr "Objekt zu groß" + msgid "Export STL file:" msgstr "Exportiere STL Datei:" @@ -6634,6 +6651,10 @@ msgstr "Möchten Sie fortfahren?" msgid "Language selection" msgstr "Sprachauswahl" +msgid "Switching application language while some presets are modified." +msgstr "" +"Umschalten der Anwendungssprache, während einige Profile geändert werden." + msgid "Changing application language" msgstr "Anwendungssprache ändern" @@ -7382,8 +7403,8 @@ msgstr "" msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Zeitraffer wird nicht unterstützt, da die Druckreihenfolge auf \"Nach Objekt" -"\" eingestellt ist." +"Zeitraffer wird nicht unterstützt, da die Druckreihenfolge auf \"Nach " +"Objekt\" eingestellt ist." msgid "Errors" msgstr "Fehler" @@ -7777,13 +7798,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Wenn Sie einen Zeitraffer ohne Werkzeugkopf aufnehmen, wird empfohlen, einen " "\"Timelapse Wischturm\" hinzuzufügen, indem Sie mit der rechten Maustaste " -"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"->" -"\"Timelapse Wischturm\" wählen." +"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"-" +">\"Timelapse Wischturm\" wählen." msgid "Line width" msgstr "Breite der Linie" @@ -8674,8 +8695,11 @@ msgstr "Liste der Objekte" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importiere Geometriedaten aus STL/STEP/3MF/OBJ/AMF-Dateien" -msgid "Shift+G" -msgstr "Umschalt+G" +msgid "⌘+Shift+G" +msgstr "⌘+Umschalttaste+G" + +msgid "Ctrl+Shift+G" +msgstr "Strg+Umschalt+G" msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" @@ -8726,18 +8750,33 @@ msgstr "Umschalt+Tab" msgid "Collapse/Expand the sidebar" msgstr "Seitenleiste zu-/aufklappen" -msgid "Any arrow" -msgstr "Beliebiger Pfeil" +msgid "⌘+Any arrow" +msgstr "⌘+beliebiger Pfeil" msgid "Movement in camera space" msgstr "Bewegung im Kameraraum" +msgid "⌥+Left mouse button" +msgstr "⌥+Linke Maustaste" + msgid "Select a part" msgstr "Teil auswählen" +msgid "⌘+Left mouse button" +msgstr "⌘+Linke Maustaste" + msgid "Select multiple objects" msgstr "Mehrere Objekte auswählen" +msgid "Ctrl+Any arrow" +msgstr "Strg + beliebige Pfeiltaste" + +msgid "Alt+Left mouse button" +msgstr "Alt + Linke Maustaste" + +msgid "Ctrl+Left mouse button" +msgstr "Strg + Linke Maustaste" + msgid "Shift+Left mouse button" msgstr "Umschalt+Linke Maustaste" @@ -8840,12 +8879,24 @@ msgstr "Druckplatte" msgid "Move: press to snap by 1mm" msgstr "Verschieben: Drücken, um in 1 mm einzurasten" +msgid "⌘+Mouse wheel" +msgstr "⌘+Mausrad" + msgid "Support/Color Painting: adjust pen radius" msgstr "Stützen/Farbmalen: Stiftradius einstellen" +msgid "⌥+Mouse wheel" +msgstr "⌥+Mausrad" + msgid "Support/Color Painting: adjust section position" msgstr "Stützen/Farbmalen: Position des Abschnitts anpassen" +msgid "Ctrl+Mouse wheel" +msgstr "Strg + Mausrad" + +msgid "Alt+Mouse wheel" +msgstr "Alt + Mausrad" + msgid "Gizmo" msgstr "Gizmo" @@ -9939,25 +9990,60 @@ msgid "Apply gap fill" msgstr "Lückenfüllung anwenden" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" -"Schaltet die Lückenfüllung für die ausgewählten Oberflächen ein. Die " -"minimale Länge der Lücke, die gefüllt wird, kann über die Option \"winzige " -"Lücken herausfiltern\" unten gesteuert werden.\n" +"Schaltet die Lückenfüllung für die ausgewählten massiven Oberflächen ein. " +"Die minimale Lückenlänge, die gefüllt wird, kann von der Option zum " +"Filtern kleiner Lücken unten gesteuert werden.\n" "\n" "Optionen:\n" -"1. Überall: Füllt Lücken in oberen, unteren und inneren massiven Oberflächen " -"aus\n" +"1. Überall: Füllt Lücken in oberen, unteren und internen massiven " +"Oberflächen für maximale Festigkeit" "2. Obere und untere Oberflächen: Füllt Lücken nur in oberen und unteren " -"Oberflächen aus\n" -"3. Nirgendwo: Deaktiviert die Lückenfüllung\n" +"Oberflächen, um Druckgeschwindigkeit zu erhöhen, potenzielle Überextrusion " +"im massiven Infill zu reduzieren und sicherzustellen, dass die oberen und " +"unteren Oberflächen keine Löcher aufweisen" +"3. Nirgendwo: Deaktiviert die Lückenfüllung für alle massiven Infill-Bereiche.\n" +"\n" +"Beachten Sie, dass bei Verwendung des klassischen Umfangsgenerators " +"Lückenfüllung auch zwischen Umfängen generiert werden kann, wenn eine " +"volle Breitenlinie nicht zwischen ihnen passt. Diese Umfangslückenfüllung " +"wird nicht durch diese Einstellung gesteuert.\n" +"\n" +"Wenn Sie möchten, dass alle Lückenfüllungen, einschließlich der vom " +"klassischen Umfangsgenerator generierten, entfernt werden, setzen Sie den " +"Wert zum Filtern kleiner Lücken auf eine große Zahl, wie 999999.\n" +"\n" +"Dies wird jedoch nicht empfohlen, da die Lückenfüllung zwischen Umfängen zur " +"Festigkeit des Modells beiträgt. Für Modelle, bei denen zwischen Umfängen " +"übermäßige Lückenfüllung generiert wird, wäre eine bessere Option, auf den " +"Arachne-Wandgenerator umzusteigen und diese Option zu verwenden, um zu " +"steuern, ob die kosmetische Lückenfüllung für obere und untere Oberflächen " +"generiert wird." msgid "Everywhere" msgstr "Überall" @@ -10033,10 +10119,17 @@ msgstr "Brücken Flussrate" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Verringern Sie diesen Wert geringfügig (z. B. 0,9), um die Materialmenge für " -"die Brücke zu verringern und den Durchhang zu minimieren" +"Verringern Sie diesen Wert leicht (zum Beispiel 0,9), um die Materialmenge " +"für die Brücke zu reduzieren und das Durchhängen zu verbessern.\n" +"\n" +"Der tatsächliche Brückenfluss wird berechnet, indem dieser Wert mit dem " +"Filamentflussverhältnis und, falls festgelegt, dem Objektflussverhältnis " +"multipliziert wird." msgid "Internal bridge flow ratio" msgstr "Interne Brücken Flussrate" @@ -10044,29 +10137,52 @@ msgstr "Interne Brücken Flussrate" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" "Dieser Wert bestimmt die Dicke der internen Brückenschicht. Dies ist die " -"erste Schicht über der dünnen Füllung. Verringern Sie diesen Wert leicht (z. " -"B. 0,9), um die Oberflächenqualität über der dünnen Füllung zu verbessern." +"erste Schicht über der dünnen Füllung. Verringern Sie diesen Wert leicht " +"(zum Beispiel 0,9), um die Oberflächenqualität über der dünnen Füllung zu " +"verbessern.\n" +"\n" +"Der tatsächliche interne Brückenfluss wird berechnet, indem dieser Wert mit " +"dem Brückenflussverhältnis, dem Filamentflussverhältnis und, falls festgelegt, " +"dem Objektflussverhältnis multipliziert wird." msgid "Top surface flow ratio" msgstr "Durchflussverhältnis obere Fläche" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Dieser Faktor beeinflusst die Menge des Materials für die obere Füllung. Sie " -"können ihn leicht verringern, um eine glatte Oberflächenbeschichtung zu " -"erhalten" +"Dieser Faktor beeinflusst die Menge des Materials für die obere feste Füllung. " +"Sie können ihn leicht verringern, um eine glatte Oberfläche zu erhalten.\n" +"\n" +"Der tatsächliche obere Fluss wird berechnet, indem dieser Wert mit dem " +"Filamentflussverhältnis und, falls festgelegt, dem Objektflussverhältnis " +"multipliziert wird." msgid "Bottom surface flow ratio" msgstr "Durchflussverhältnis untere Fläche" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Dieser Faktor beeinflusst die Menge des Materials für die untere Füllung" +"Dieser Faktor beeinflusst die Menge des Materials für die untere feste Füllung.\n" +"\n" +"Der tatsächliche Fluss für die untere feste Füllung wird berechnet, indem " +"dieser Wert mit dem Filamentflussverhältnis und, falls festgelegt, dem " +"Objektflussverhältnis multipliziert wird." msgid "Precise wall" msgstr "Exakte Wand" @@ -10246,11 +10362,44 @@ msgid "Slow down for curled perimeters" msgstr "Langsamer Druck für gekrümmte Umfänge" msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" "Aktivieren Sie diese Option, um den Druck in Bereichen zu verlangsamen, in " -"denen möglicherweise gekrümmte Umfänge vorhanden sind" +"denen die Umfänge nach oben gekrümmt sein können. Zum Beispiel wird eine " +"zusätzliche Verlangsamung angewendet, wenn Überhänge an scharfen Ecken wie " +"der Vorderseite des Benchy-Rumpfes gedruckt werden, um das Kräuseln zu " +"reduzieren, das sich über mehrere Schichten hinweg aufbaut.\n" +"\n" +"Es wird im Allgemeinen empfohlen, diese Option eingeschaltet zu lassen, es " +"sei denn, Ihr Drucker ist leistungsstark genug oder die Druckgeschwindigkeit " +"ist langsam genug, dass das Kräuseln der Umfänge nicht auftritt. Wenn mit " +"einer hohen externen Umfangsgeschwindigkeit gedruckt wird, kann dieser " +"Parameter leichte Artefakte verursachen, wenn er aufgrund der großen " +"Varianz der Druckgeschwindigkeiten verlangsamt wird. Wenn Sie Artefakte " +"bemerken, stellen Sie sicher, dass Ihr Druckvorschub korrekt eingestellt " +"ist.\n" +"\n" +"Hinweis: Wenn diese Option aktiviert ist, werden Umfangsumfänge wie " +"Überhänge behandelt, was bedeutet, dass die Überhangsgeschwindigkeit " +"angewendet wird, auch wenn der überhängende Umfang Teil einer Brücke ist. " +"Zum Beispiel, wenn die Umfänge zu 100 % überhängen, ohne dass eine Wand sie " +"von unten stützt, wird die Überhangsgeschwindigkeit von 100 % angewendet." msgid "mm/s or %" msgstr "mm/s o. %" @@ -10258,8 +10407,20 @@ msgstr "mm/s o. %" msgid "External" msgstr "Extern" -msgid "Speed of bridge and completely overhang wall" -msgstr "Geschwindigkeit für Brücken und vollständig überhängende Wände." +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" +"Geschwindigkeit der extern sichtbaren Brückenextrusionen.\n" +"\n" +"Darüber hinaus wird, wenn die Option zum Verlangsamen von gekrümmten Umfängen " +"deaktiviert ist oder der klassische Überhangsmodus aktiviert ist, die " +"Druckgeschwindigkeit der Überhangswände, die zu weniger als 13 % gestützt " +"sind, ob sie Teil einer Brücke oder eines Überhangs sind." msgid "mm/s" msgstr "mm/s" @@ -10268,12 +10429,12 @@ msgid "Internal" msgstr "Intern" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Geschwindigkeit der internen Brücke. Wenn der Wert als Prozentsatz angegeben " -"ist, wird er basierend auf der Brückengeschwindigkeit berechnet. " -"Standardwert ist 150%." +"Geschwindigkeit der internen Brücken. Wenn der Wert als Prozentsatz angegeben " +"wird, wird er auf der Grundlage der Brückengeschwindigkeit berechnet. Der " +"Standardwert beträgt 150 %." msgid "Brim width" msgstr "Randbreite" @@ -10924,6 +11085,26 @@ msgstr "" "anpassen, um eine schöne flache Oberfläche zu erhalten, wenn es eine leichte " "Über- oder Unterextrusion gibt." +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" +"Das Material kann sich nach dem Wechsel zwischen geschmolzenem und " +"kristallinem Zustand volumetrisch verändern. Mit dieser Einstellung werden " +"alle Extrusionsströme dieses Filaments im G-Code proportional geändert. Der " +"empfohlene Wertebereich liegt zwischen 0,95 und 1,05. Sie können diesen Wert " +"anpassen, um eine schöne flache Oberfläche zu erhalten, wenn es eine leichte " +"Über- oder Unterextrusion gibt. \n" +"\n" +"Das endgültige Objekt-Flussverhältnis ist das Produkt aus diesem Wert und " +"dem Filament-Flussverhältnis." + msgid "Enable pressure advance" msgstr "Pressure advance aktivieren" @@ -10979,8 +11160,8 @@ msgstr "" "Druckbedingungen an den Drucker ausgegeben wird.\n" "\n" "Wenn diese Option aktiviert ist, wird der obige Druckvorschubwert überschrie-" -"ben. Es wird jedoch dringend empfohlen, einen vernünftigen Standardwert " -"oben zu verwenden, um als Fallback und für den Werkzeugwechsel zu dienen.\n" +"ben. Es wird jedoch dringend empfohlen, einen vernünftigen Standardwert oben " +"zu verwenden, um als Fallback und für den Werkzeugwechsel zu dienen.\n" "\n" msgid "Adaptive pressure advance measurements (beta)" @@ -11033,16 +11214,16 @@ msgstr "" "Druckbeschleunigungen durch und nicht schneller als die empfohlene maximale " "Beschleunigung, wie sie vom Klipper-Eingabe-Shaper angegeben wird.\n" "2. Notieren Sie den optimalen PA-Wert für jede Volumenfließgeschwindigkeit " -"und Beschleunigung. Sie können die Fließzahl auswählen, indem Sie Fluss aus" -"dem Farbschema-Dropdown auswählen und den horizontalen Schieberegler über den " -"PA-Musterlinien bewegen. Die Zahl sollte am unteren Rand der Seite sichtbar " -"sein. Der ideale PA-Wert sollte abnehmen, je höher die Volumenfließgeschwin-" -"digkeit ist. Wenn dies nicht der Fall ist, bestätigen Sie, dass Ihr Extruder " -"korrekt funktioniert. Je langsamer und mit weniger Beschleunigung Sie drucken, " -"desto größer ist der Bereich der akzeptablen PA-Werte. Wenn kein Unterschied " -"sichtbar ist, verwenden Sie den PA-Wert aus dem schnelleren Test.3. Geben Sie " -"die Triplets von PA-Werten, Fluss und Beschleunigungen im Textfeld hier ein " -"und speichern Sie Ihr Filamentprofil\n" +"und Beschleunigung. Sie können die Fließzahl auswählen, indem Sie Fluss " +"ausdem Farbschema-Dropdown auswählen und den horizontalen Schieberegler über " +"den PA-Musterlinien bewegen. Die Zahl sollte am unteren Rand der Seite " +"sichtbar sein. Der ideale PA-Wert sollte abnehmen, je höher die " +"Volumenfließgeschwin-digkeit ist. Wenn dies nicht der Fall ist, bestätigen " +"Sie, dass Ihr Extruder korrekt funktioniert. Je langsamer und mit weniger " +"Beschleunigung Sie drucken, desto größer ist der Bereich der akzeptablen PA-" +"Werte. Wenn kein Unterschied sichtbar ist, verwenden Sie den PA-Wert aus dem " +"schnelleren Test.3. Geben Sie die Triplets von PA-Werten, Fluss und " +"Beschleunigungen im Textfeld hier ein und speichern Sie Ihr Filamentprofil\n" "\n" msgid "Enable adaptive pressure advance for overhangs (beta)" @@ -11174,18 +11355,40 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Ladedauer des Filaments" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Zeit zum Laden des neuen Filaments, beim Wechseln des Filaments. Nur für " -"statistische Zwecke." +"Zeit zum Laden des neuen Filaments beim Wechsel des Filaments. Es ist in der " +"Regel für Einzel-Extruder-Multi-Material-Maschinen anwendbar. Für " +"Werkzeugwechsler oder Multi-Tool-Maschinen beträgt es in der Regel 0. Nur " +"für Statistiken" msgid "Filament unload time" msgstr "Entladezeit des Filaments" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Zeit zum Entladen des alten Filaments, beim Wechseln des Filaments. Nur für " -"statistische Zwecke." +"Zeit zum Entladen des alten Filaments beim Wechsel des Filaments. Es ist in " +"der Regel für Einzel-Extruder-Multi-Material-Maschinen anwendbar. Für " +"Werkzeugwechsler oder Multi-Tool-Maschinen beträgt es in der Regel 0. Nur " +"für Statistiken" + +msgid "Tool change time" +msgstr "Werkzeugwechselzeit" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" +msgstr "" +"Zeit, die zum Wechseln der Werkzeuge benötigt wird. Es ist in der Regel für " +"Werkzeugwechsler oder Multi-Tool-Maschinen anwendbar. Für Einzel-Extruder-" +"Multi-Material-Maschinen beträgt es in der Regel 0. Nur für Statistiken" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11334,16 +11537,6 @@ msgstr "Geschwindigkeit der letzten Kühlbewegung" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Kühlbewegungen beschleunigen allmählich auf diese Geschwindigkeit." -msgid "" -"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." -msgstr "" -"Zeit für die Drucker-Firmware (oder die Multi Material Unit 2.0), um ein " -"neues Filament während eines Werkzeugwechsels zu laden (wenn der T-Code " -"ausgeführt wird). Diese Zeit wird zur Gesamt-Druckzeit vom G-Code-Zeit-" -"Schätzer hinzugefügt." - msgid "Ramming parameters" msgstr "Ramming-Parameter" @@ -11354,16 +11547,6 @@ msgstr "" "Dieser String wird von RammingDialog bearbeitet und enthält ramming-" "spezifische Parameter." -msgid "" -"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." -msgstr "" -"Zeit für die Drucker-Firmware (oder die Multi Material Unit 2.0), um ein " -"Filament während eines Werkzeugwechsels zu entladen (wenn der T-Code " -"ausgeführt wird). Diese Zeit wird zur Gesamt-Druckzeit vom G-Code-Zeit-" -"Schätzer hinzugefügt." - msgid "Enable ramming for multitool setups" msgstr "Ermöglicht das Rammen für Multitool-Setups" @@ -11737,13 +11920,13 @@ msgstr "Volle Lüfterdrehzahl ab Schicht" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" -"Die Lüftergeschwindigkeit wird linear von Null bei der Schicht" -"\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " +"Die Lüftergeschwindigkeit wird linear von Null bei der " +"Schicht\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " "\"full_fan_speed_layer\" erhöht. \"full_fan_speed_layer\" wird ignoriert, " "wenn es niedriger ist als \"close_fan_the_first_x_layers\",in diesem Fall " "läuft der Lüfter bei Schicht \"close_fan_the_first_x_layers\"+ 1 mit maximal " @@ -11814,8 +11997,15 @@ msgstr "Filtert winzige Lücken aus" msgid "Layers and Perimeters" msgstr "Schichten und Perimeter" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Filtert Lücken aus, die kleiner als der angegebene Schwellenwert sind" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" +"Drucken Sie keine Lückenfüllung mit einer Länge, die kleiner als der " +"angegebene Schwellenwert (in mm) ist. Diese Einstellung gilt für die obere, " +"untere und massive Füllung und, wenn der klassische Perimeter-Generator " +"verwendet wird, für die Wandlückenfüllung." msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -12164,7 +12354,10 @@ msgid "" "\"mmu_segmented_region_interlocking_depth\"is bigger then " "\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" - +"Interlock-Tiefe eines segmentierten Bereichs. Es wird ignoriert, wenn " +"\"mmu_segmented_region_max_width\" null ist oder wenn " +"\"mmu_segmented_region_interlocking_depth\" größer ist als " +"\"mmu_segmented_region_max_width\". Null deaktiviert diese Funktion." msgid "Use beam interlocking" msgstr "Verwende Interlock-Strukturen" @@ -12683,8 +12876,8 @@ msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing." msgstr "" -"Diese Option senkt die Temperatur der inaktiven Extruder, um das Herauslaufen " -"des Filaments zu verhindern." +"Diese Option senkt die Temperatur der inaktiven Extruder, um das " +"Herauslaufen des Filaments zu verhindern." msgid "Filename format" msgstr "Format des Dateinamens" @@ -13472,8 +13665,8 @@ msgid "" "zero value." msgstr "" "Temperaturunterschied, der angewendet wird, wenn ein Extruder nicht aktiv " -"ist. Der Wert wird nicht verwendet, wenn 'idle_temperature' in den " -"Filament-Einstellungen auf einen Wert ungleich Null gesetzt ist." +"ist. Der Wert wird nicht verwendet, wenn 'idle_temperature' in den Filament-" +"Einstellungen auf einen Wert ungleich Null gesetzt ist." msgid "Preheat time" msgstr "Vorheizzeit" @@ -14005,34 +14198,68 @@ msgid "Activate temperature control" msgstr "aktiviere Temperaturkontrolle" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Diese Option aktivieren, um die Temperatur der Druckkammer zu steuern. Ein " -"M191-Befehl wird vor \"machine_start_gcode\" hinzugefügt\n" -"G-Code-Befehle: M141/M191 S(0-255)" +"Diese Option aktiviert die automatische Druckraumtemperaturkontrolle. Diese " +"Option aktiviert das Aussenden eines M191-Befehls vor dem " +"\"machine_start_gcode\", der die Druckraumtemperatur einstellt und wartet, " +"bis sie erreicht ist. Darüber hinaus wird am Ende des Drucks ein M141-Befehl " +"ausgegeben, um den Druckraumheizer auszuschalten, falls vorhanden. \n" +"\n" +"Diese Option basiert auf der Firmware, die die M191- und M141-Befehle " +"entweder über Makros oder nativ unterstützt und wird normalerweise verwendet, " +"wenn ein aktiver Druckraumheizer installiert ist." msgid "Chamber temperature" msgstr "Druckraum Temperatur" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Eine höhere Druckraumtemperatur kann das Verziehen unterdrücken oder " -"reduzieren und möglicherweise zu einer höheren " -"Zwischenschichtbindungsfestigkeit für Hochtemperaturmaterialien wie ABS, " -"ASA, PC, PA und so weiter führen. Gleichzeitig wird die Luftfiltration von " -"ABS und ASA schlechter. Für PLA, PETG, TPU, PVA und andere Materialien mit " -"niedriger Temperatur sollte die tatsächliche Druckraumtemperatur nicht hoch " -"sein, um Verstopfungen zu vermeiden, daher wird 0, was für das Ausschalten " -"steht, dringend empfohlen." +"Für Hochtemperaturmaterialien wie ABS, ASA, PC und PA kann eine höhere " +"Druckraumtemperatur helfen, das Verziehen zu unterdrücken oder zu reduzieren " +"und möglicherweise zu einer höheren Festigkeit der Zwischenschichtbindung " +"führen. Gleichzeitig verringert eine höhere Druckraumtemperatur jedoch die " +"Effizienz der Luftfiltration für ABS und ASA. \n" +"\n" +"Für PLA, PETG, TPU, PVA und andere Niedrigtemperaturmaterialien sollte diese " +"Option deaktiviert sein (auf 0 gesetzt werden), da die Druckraumtemperatur " +"niedrig sein sollte, um ein Verstopfen des Extruders durch Erweichung des " +"Materials am Heizblock zu vermeiden. \n" +"\n" +"Wenn diese Option aktiviert ist, wird auch eine G-Code-Variable namens " +"chamber_temperature gesetzt, die verwendet werden kann, um die gewünschte " +"Druckraumtemperatur an Ihr Druckstart-Makro oder ein Wärmespeicher-Makro " +"weiterzugeben, wie z.B. PRINT_START (andere Variablen) CHAMBER_TEMP=[" +"chamber_temperature]. Dies kann nützlich sein, wenn Ihr Drucker die Befehle " +"M141/M191 nicht unterstützt oder wenn Sie das Wärmespeichern im " +"Druckstart-Makro behandeln möchten, wenn kein aktiver Druckraumheizer " +"installiert ist." msgid "Nozzle temperature for layers after the initial one" msgstr "Düsentemperatur nach der ersten Schicht" @@ -14686,7 +14913,8 @@ msgid "" "Current position of the extruder axis. Only used with absolute extruder " "addressing." msgstr "" -"Aktuelle Position der Extruderachse. Wird nur bei absoluter Extruderadressierung verwendet." +"Aktuelle Position der Extruderachse. Wird nur bei absoluter " +"Extruderadressierung verwendet." msgid "Current extruder" msgstr "Aktueller Extruder" @@ -14742,7 +14970,9 @@ msgid "Has single extruder MM priming" msgstr "Hat einzelnes Extruder-MM-Priming" msgid "Are the extra multi-material priming regions used in this print?" -msgstr "Werden die zusätzlichen Multi-Material-Priming-Regionen in diesem Druck verwendet?" +msgstr "" +"Werden die zusätzlichen Multi-Material-Priming-Regionen in diesem Druck " +"verwendet?" msgid "Volume per extruder" msgstr "Volumen pro Extruder" @@ -16052,8 +16282,8 @@ msgstr "" "Möchten Sie es überschreiben?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Wir würden die Voreinstellungen als \"Hersteller Typ Seriennummer @Drucker, " @@ -17397,54 +17627,150 @@ msgstr "" "wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die " "Wahrscheinlichkeit von Verwerfungen verringert werden kann." -#~ msgid "up to" -#~ msgstr "bis zu" - -#~ msgid "above" -#~ msgstr "über" - -#~ msgid "from" -#~ msgstr "von" - -#~ msgid "Switching application language while some presets are modified." +#~ msgid "" +#~ "Your object appears to be too large. It will be scaled down to fit the " +#~ "heat bed automatically." #~ msgstr "" -#~ "Umschalten der Anwendungssprache, während einige Profile geändert werden." +#~ "Ihr Objekt scheint zu groß zu sein. Es wird automatisch verkleinert, um " +#~ "auf das Druckbett zu passen." -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Umschalttaste+G" +#~ msgid "Shift+G" +#~ msgstr "Umschalt+G" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Strg+Umschalt+G" +#~ msgid "Any arrow" +#~ msgstr "Beliebiger Pfeil" -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+beliebiger Pfeil" +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "Schaltet die Lückenfüllung für die ausgewählten Oberflächen ein. Die " +#~ "minimale Länge der Lücke, die gefüllt wird, kann über die Option " +#~ "\"winzige Lücken herausfiltern\" unten gesteuert werden.\n" +#~ "\n" +#~ "Optionen:\n" +#~ "1. Überall: Füllt Lücken in oberen, unteren und inneren massiven " +#~ "Oberflächen aus\n" +#~ "2. Obere und untere Oberflächen: Füllt Lücken nur in oberen und unteren " +#~ "Oberflächen aus\n" +#~ "3. Nirgendwo: Deaktiviert die Lückenfüllung\n" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Linke Maustaste" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Verringern Sie diesen Wert geringfügig (z. B. 0,9), um die Materialmenge " +#~ "für die Brücke zu verringern und den Durchhang zu minimieren" -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Linke Maustaste" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Dieser Wert bestimmt die Dicke der internen Brückenschicht. Dies ist die " +#~ "erste Schicht über der dünnen Füllung. Verringern Sie diesen Wert leicht " +#~ "(z. B. 0,9), um die Oberflächenqualität über der dünnen Füllung zu " +#~ "verbessern." -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Strg + beliebige Pfeiltaste" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Dieser Faktor beeinflusst die Menge des Materials für die obere Füllung. " +#~ "Sie können ihn leicht verringern, um eine glatte Oberflächenbeschichtung " +#~ "zu erhalten" -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt + Linke Maustaste" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Dieser Faktor beeinflusst die Menge des Materials für die untere Füllung" -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Strg + Linke Maustaste" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Aktivieren Sie diese Option, um den Druck in Bereichen zu verlangsamen, " +#~ "in denen möglicherweise gekrümmte Umfänge vorhanden sind" -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Mausrad" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Geschwindigkeit für Brücken und vollständig überhängende Wände." -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Mausrad" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Geschwindigkeit der internen Brücke. Wenn der Wert als Prozentsatz " +#~ "angegeben ist, wird er basierend auf der Brückengeschwindigkeit " +#~ "berechnet. Standardwert ist 150%." -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Strg + Mausrad" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Zeit zum Laden des neuen Filaments, beim Wechseln des Filaments. Nur für " +#~ "statistische Zwecke." -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt + Mausrad" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Zeit zum Entladen des alten Filaments, beim Wechseln des Filaments. Nur " +#~ "für statistische Zwecke." + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Zeit für die Drucker-Firmware (oder die Multi Material Unit 2.0), um ein " +#~ "neues Filament während eines Werkzeugwechsels zu laden (wenn der T-Code " +#~ "ausgeführt wird). Diese Zeit wird zur Gesamt-Druckzeit vom G-Code-Zeit-" +#~ "Schätzer hinzugefügt." + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Zeit für die Drucker-Firmware (oder die Multi Material Unit 2.0), um ein " +#~ "Filament während eines Werkzeugwechsels zu entladen (wenn der T-Code " +#~ "ausgeführt wird). Diese Zeit wird zur Gesamt-Druckzeit vom G-Code-Zeit-" +#~ "Schätzer hinzugefügt." + +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "" +#~ "Filtert Lücken aus, die kleiner als der angegebene Schwellenwert sind" + +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Diese Option aktivieren, um die Temperatur der Druckkammer zu steuern. " +#~ "Ein M191-Befehl wird vor \"machine_start_gcode\" hinzugefügt\n" +#~ "G-Code-Befehle: M141/M191 S(0-255)" + +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Eine höhere Druckraumtemperatur kann das Verziehen unterdrücken oder " +#~ "reduzieren und möglicherweise zu einer höheren " +#~ "Zwischenschichtbindungsfestigkeit für Hochtemperaturmaterialien wie ABS, " +#~ "ASA, PC, PA und so weiter führen. Gleichzeitig wird die Luftfiltration " +#~ "von ABS und ASA schlechter. Für PLA, PETG, TPU, PVA und andere " +#~ "Materialien mit niedriger Temperatur sollte die tatsächliche " +#~ "Druckraumtemperatur nicht hoch sein, um Verstopfungen zu vermeiden, daher " +#~ "wird 0, was für das Ausschalten steht, dringend empfohlen." #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " @@ -17757,8 +18083,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Wählen Sie einen AMS-Slot und drücken Sie dann \"Laden\" oder \"Entladen" -#~ "\", um automatisch Filament zu laden oder zu entladen." +#~ "Wählen Sie einen AMS-Slot und drücken Sie dann \"Laden\" oder " +#~ "\"Entladen\", um automatisch Filament zu laden oder zu entladen." #~ msgid "MC" #~ msgstr "MC" @@ -18081,8 +18407,8 @@ msgstr "" #~ msgstr "Keine dünnen Schichten (EXPERIMENTELL)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "Wir würden die Voreinstellungen als \"Hersteller Typ Seriennummer " diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 922551be48..dbb582f073 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,6 +74,9 @@ msgstr "Smart fill angle" msgid "On overhangs only" msgstr "On overhangs only" +msgid "Auto support threshold angle: " +msgstr "Auto support threshold angle: " + msgid "Circle" msgstr "Circle" @@ -93,9 +96,6 @@ msgstr "Allows painting only on facets selected by: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Highlight faces according to overhang angle." -msgid "Auto support threshold angle: " -msgstr "Auto support threshold angle: " - msgid "No auto support" msgstr "No auto support" @@ -1925,6 +1925,9 @@ msgstr "Simplify Model" msgid "Center" msgstr "Center" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Edit Process Settings" @@ -4041,6 +4044,15 @@ msgstr "Total time" msgid "Total cost" msgstr "Total cost" +msgid "up to" +msgstr "up to" + +msgid "above" +msgstr "above" + +msgid "from" +msgstr "from" + msgid "Color Scheme" msgstr "Color scheme" @@ -4104,12 +4116,12 @@ msgstr "Filament change times" msgid "Cost" msgstr "Cost" -msgid "Print" -msgstr "Print" - msgid "Color change" msgstr "Color change" +msgid "Print" +msgstr "Print" + msgid "Printer" msgstr "Printer" @@ -4293,7 +4305,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Size:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4733,6 +4745,18 @@ msgstr "Pass 2" msgid "Flow rate test - Pass 2" msgstr "Flow rate test - Pass 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Flow rate" @@ -5990,14 +6014,6 @@ msgstr "An object with multiple parts was detected" msgid "The file does not contain any geometry data." msgstr "The file does not contain any geometry data." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Object too large" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6005,6 +6021,9 @@ msgstr "" "Your object appears to be too large, Do you want to scale it down to fit the " "print bed automatically?" +msgid "Object too large" +msgstr "Object too large" + msgid "Export STL file:" msgstr "Export STL file:" @@ -6368,6 +6387,9 @@ msgstr "Do you want to continue?" msgid "Language selection" msgstr "Language selection" +msgid "Switching application language while some presets are modified." +msgstr "Switching application language while some presets are modified." + msgid "Changing application language" msgstr "Changing application language" @@ -7457,13 +7479,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgid "Line width" msgstr "Line width" @@ -8296,8 +8318,11 @@ msgstr "Objects list" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Paste from clipboard" @@ -8347,18 +8372,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Collapse/Expand the sidebar" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+Any arrow" msgid "Movement in camera space" msgstr "Movement in camera space" +msgid "⌥+Left mouse button" +msgstr "⌥+Left mouse button" + msgid "Select a part" msgstr "Select a part" +msgid "⌘+Left mouse button" +msgstr "⌘+Left mouse button" + msgid "Select multiple objects" msgstr "Select multiple objects" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Any arrow" + +msgid "Alt+Left mouse button" +msgstr "Alt+Left mouse button" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Left mouse button" + msgid "Shift+Left mouse button" msgstr "Shift+Left mouse button" @@ -8461,12 +8501,24 @@ msgstr "Plater" msgid "Move: press to snap by 1mm" msgstr "Move: press to snap by 1mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+Mouse wheel" + msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Color Painting: adjust pen radius" +msgid "⌥+Mouse wheel" +msgstr "⌥+Mouse wheel" + msgid "Support/Color Painting: adjust section position" msgstr "Support/Color Painting: adjust section position" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Mouse wheel" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Mouse wheel" + msgid "Gizmo" msgstr "Gizmo" @@ -9472,14 +9524,31 @@ msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9551,10 +9620,11 @@ msgstr "Bridge flow ratio" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Decrease this value slightly (for example 0.9) to reduce the amount of " -"material extruded for bridges to avoid sagging." msgid "Internal bridge flow ratio" msgstr "" @@ -9562,7 +9632,11 @@ msgstr "" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" @@ -9570,15 +9644,20 @@ msgstr "Top surface flow ratio" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" msgid "Bottom surface flow ratio" msgstr "" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Precise wall" @@ -9712,9 +9791,25 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" msgid "mm/s or %" @@ -9723,8 +9818,14 @@ msgstr "mm/s or %" msgid "External" msgstr "" -msgid "Speed of bridge and completely overhang wall" -msgstr "This is the speed for bridges and 100% overhang walls." +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9733,8 +9834,8 @@ msgid "Internal" msgstr "" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" msgid "Brim width" @@ -10263,6 +10364,17 @@ msgstr "" "1.05. You may be able to tune this value to get a nice flat surface if there " "is slight overflow or underflow." +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Enable pressure advance" @@ -10435,18 +10547,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Filament load time" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Time to load new filament when switching filament, for statistical purposes " -"only." msgid "Filament unload time" msgstr "Filament unload time" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Time to unload old filament when switching filament, for statistical " -"purposes only." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10567,12 +10690,6 @@ msgstr "" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" -msgid "" -"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." -msgstr "" - msgid "Ramming parameters" msgstr "" @@ -10581,12 +10698,6 @@ msgid "" "parameters." msgstr "" -msgid "" -"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." -msgstr "" - msgid "Enable ramming for multitool setups" msgstr "" @@ -10910,10 +11021,10 @@ msgstr "Full fan speed at layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -10978,7 +11089,10 @@ msgstr "Filter out tiny gaps" msgid "Layers and Perimeters" msgstr "Layers and Perimeters" -msgid "Filter out gaps smaller than the threshold specified" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" msgid "" @@ -12852,29 +12966,40 @@ msgid "Activate temperature control" msgstr "" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" msgid "Chamber temperature" msgstr "Chamber temperature" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on. At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials, the actual chamber temperature should not " -"be high to avoid clogs, so 0 (turned off) is highly recommended." msgid "Nozzle temperature for layers after the initial one" msgstr "Nozzle temperature after the first layer" @@ -14682,8 +14807,8 @@ msgstr "" "Do you want to rewrite it?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -15923,53 +16048,50 @@ msgstr "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping?" -#~ msgid "up to" -#~ msgstr "up to" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Decrease this value slightly (for example 0.9) to reduce the amount of " +#~ "material extruded for bridges to avoid sagging." -#~ msgid "above" -#~ msgstr "above" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" -#~ msgid "from" -#~ msgstr "from" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "This is the speed for bridges and 100% overhang walls." -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "Switching application language while some presets are modified." +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Time to load new filament when switching filament, for statistical " +#~ "purposes only." -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Time to unload old filament when switching filament, for statistical " +#~ "purposes only." -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" - -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+Any arrow" - -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Left mouse button" - -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Left mouse button" - -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+Any arrow" - -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Left mouse button" - -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Left mouse button" - -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Mouse wheel" - -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Mouse wheel" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Mouse wheel" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Mouse wheel" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on. At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials, the actual chamber " +#~ "temperature should not be high to avoid clogs, so 0 (turned off) is " +#~ "highly recommended." #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index c124c2eade..0f8f804cfb 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -74,6 +74,9 @@ msgstr "Ángulo de relleno en puente" msgid "On overhangs only" msgstr "Solo en voladizos" +msgid "Auto support threshold angle: " +msgstr "Ángulo del umbral de soporte automático: " + msgid "Circle" msgstr "Círculo" @@ -93,9 +96,6 @@ msgstr "Permite pintar solo las facetas seleccionadas por: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Resalte las caras según el ángulo del voladizo." -msgid "Auto support threshold angle: " -msgstr "Ángulo del umbral de soporte automático: " - msgid "No auto support" msgstr "No auto soportes" @@ -2007,6 +2007,9 @@ msgstr "Simplificar Modelo" msgid "Center" msgstr "Centrar" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Editar Ajustes de Procesado" @@ -4206,6 +4209,15 @@ msgstr "Tiempo total" msgid "Total cost" msgstr "Costo total" +msgid "up to" +msgstr "hasta" + +msgid "above" +msgstr "sobre" + +msgid "from" +msgstr "desde" + msgid "Color Scheme" msgstr "Esquema de colores" @@ -4269,12 +4281,12 @@ msgstr "Tiempos de cambio de filamento" msgid "Cost" msgstr "Coste" -msgid "Print" -msgstr "Imprimir" - msgid "Color change" msgstr "Cambio de color" +msgid "Print" +msgstr "Imprimir" + msgid "Printer" msgstr "Impresora" @@ -4458,7 +4470,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Tamaño:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4900,6 +4912,18 @@ msgstr "Paso 2" msgid "Flow rate test - Pass 2" msgstr "Test de Flujo - Paso 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Test de Flujo" @@ -6210,16 +6234,6 @@ msgstr "Se ha detectado un objeto con varias piezas" msgid "The file does not contain any geometry data." msgstr "El archivo no contiene ninguna información geométrica." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" -"Su objeto parece demasiado grande, ¿Desea disminuirlo para que quepa en la " -"cama caliente automáticamente?." - -msgid "Object too large" -msgstr "Objeto demasiado grande" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6227,6 +6241,9 @@ msgstr "" "Tu objeto parece demasiado grande, ¿Deseas disminuirlo para que quepa en la " "cama caliente automáticamente?" +msgid "Object too large" +msgstr "Objeto demasiado grande" + msgid "Export STL file:" msgstr "Exportar archivo STL:" @@ -6607,6 +6624,10 @@ msgstr "¿Quieres continuar?" msgid "Language selection" msgstr "Selección de idiomas" +msgid "Switching application language while some presets are modified." +msgstr "" +"Cambiando idioma de la aplicación mientras se modifican algunos perfiles." + msgid "Changing application language" msgstr "Cambiar el idioma de la aplicación" @@ -7382,9 +7403,10 @@ msgid "" "start printing." msgstr "" "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " -"compruebe si son los filamentos requeridos. Si lo son, presione \"Confirmar" -"\" para empezar a imprimir. Por favor, compruebe si son los filamentos " -"requeridos. Si lo son, presione \"Confirmar\" para empezar a imprimir." +"compruebe si son los filamentos requeridos. Si lo son, presione " +"\"Confirmar\" para empezar a imprimir. Por favor, compruebe si son los " +"filamentos requeridos. Si lo son, presione \"Confirmar\" para empezar a " +"imprimir." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7747,13 +7769,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Cuando se graba un timelapse sin cabezal, se recomienda añadir una \"Torre " "de Purga de Timelapse\" haciendo clic con el botón derecho del ratón en la " -"posición vacía de la bandeja de impresión y seleccionando \"Añadir Primitivo" -"\"->Torre de Purga de Timelapse\"." +"posición vacía de la bandeja de impresión y seleccionando \"Añadir " +"Primitivo\"->Torre de Purga de Timelapse\"." msgid "Line width" msgstr "Ancho de extrusión" @@ -8636,8 +8658,11 @@ msgstr "Lista de objetos" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importar datos de geometría de los archivos STL/STEP/3MF/OBJ/AMF" -msgid "Shift+G" -msgstr "Shift+G" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" @@ -8687,18 +8712,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Ocultar/Expandir barra lateral" -msgid "Any arrow" -msgstr "⌘+Cualquier flecha" +msgid "⌘+Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Movimiento en el espacio de la cámara" +msgid "⌥+Left mouse button" +msgstr "Botón de ratón ⌥+Left" + msgid "Select a part" msgstr "Seleccionar una pieza" +msgid "⌘+Left mouse button" +msgstr "⌘+botón izquierdo de ratón" + msgid "Select multiple objects" msgstr "Seleccionar varios objetos" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Cualquier flecha" + +msgid "Alt+Left mouse button" +msgstr "Alt+Botón izquierdo de ratón" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Botón izquierdo de ratón" + msgid "Shift+Left mouse button" msgstr "Shift+Left+Botón izquierdo de ratón" @@ -8801,12 +8841,24 @@ msgstr "Bandeja" msgid "Move: press to snap by 1mm" msgstr "Mover: pulsar para ajustar 1mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+Rueda del ratón" + msgid "Support/Color Painting: adjust pen radius" msgstr "Soporte/Pintado en color: ajuste del radio de la pluma" +msgid "⌥+Mouse wheel" +msgstr "⌥+Rueda del ratón" + msgid "Support/Color Painting: adjust section position" msgstr "Soporte/Pintado de color: ajuste de la posición de la sección" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Rueda del ratón" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Rueda del ratón" + msgid "Gizmo" msgstr "Artilugio" @@ -9896,25 +9948,32 @@ msgid "Apply gap fill" msgstr "Aplicar relleno de huecos" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"Activa el relleno de huecos para las superficies seleccionadas. La longitud " -"mínima de hueco que se rellenará puede controlarse desde la opción filtrar " -"huecos pequeños que aparece más abajo.\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Opciones: \n" -"1. En todas partes: Aplica el relleno de huecos a las superficies sólidas " -"superior, inferior e interna \n" -"2. Superficies superior e inferior: Aplica el relleno de huecos sólo a las " -"superficies superior e inferior. \n" -"3. En ninguna parte: Desactiva el relleno de huecos\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "En todas partes" @@ -9990,10 +10049,11 @@ msgstr "Ratio de flujo en puentes" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad " -"de material para mejorar o evitar el hundimiento de puentes." msgid "Internal bridge flow ratio" msgstr "Ratio de flujo de puentes internos" @@ -10001,30 +10061,33 @@ msgstr "Ratio de flujo de puentes internos" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Este valor regula el grosor de la capa puente interna. Es la primera capa " -"sobre el relleno de baja densidad. Disminuya ligeramente este valor (por " -"ejemplo, 0,9) para mejorar la calidad de la superficie sobre el relleno de " -"baja densidad." msgid "Top surface flow ratio" msgstr "Ratio de flujo en superficie superior" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Este factor afecta a la cantidad de material de para relleno sólido " -"superior. Puede disminuirlo ligeramente para obtener un acabado suave de " -"superficie" msgid "Bottom surface flow ratio" msgstr "Ratio de flujo en superficie inferior" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Este factor afecta a la cantidad de material para el relleno sólido inferior" msgid "Precise wall" msgstr "Perímetro preciso" @@ -10204,12 +10267,26 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "Reducir velocidad para perímetros curvados" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Active está opción para bajar la velocidad de impresión en las áreas donde " -"potencialmente podrían formarse perímetros curvados" msgid "mm/s or %" msgstr "mm/s o %" @@ -10217,8 +10294,14 @@ msgstr "mm/s o %" msgid "External" msgstr "Externo" -msgid "Speed of bridge and completely overhang wall" -msgstr "Velocidad del puente y perímetro completo en voladizo" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -10227,11 +10310,9 @@ msgid "Internal" msgstr "Interno" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Velocidad del puente interno. Si el valor es expresado como porcentaje, será " -"calculado en base a bridge_speed. El valor por defecto es 150%." msgid "Brim width" msgstr "Ancho del borde de adherencia" @@ -10894,6 +10975,17 @@ msgstr "" "para obtener una superficie plana adecuada cuando hay un ligero sobre flujo " "o infra flujo" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Activar Avance de Presión Lineal" @@ -11138,18 +11230,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Tiempo de carga de filamento" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Tiempo para cargar un nuevo filamento cuando se cambia de filamento. Sólo " -"para estadísticas" msgid "Filament unload time" msgstr "Tiempo de descarga del filamento" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Tiempo para descargar el filamento viejo cuando se cambia de filamento. Sólo " -"para las estadísticas" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11302,16 +11405,6 @@ msgstr "" "Los movimientos de refrigeración se aceleran gradualmente hacía esta " "velocidad." -msgid "" -"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." -msgstr "" -"Tiempo que tarda el firmware de la impresora (o la Unidad Multi Material " -"2.0) en cargar un nuevo filamento durante un cambio de cabezal (al ejecutar " -"el T-Code). El estimador de tiempo del G-Code añade este tiempo al tiempo " -"total de impresión." - msgid "Ramming parameters" msgstr "Parámetros de moldeado de extremo" @@ -11322,16 +11415,6 @@ msgstr "" "El Moldeado de ExtremoDialog edita esta cadena y contiene los parámetros " "específicos de moldeado de extremo." -msgid "" -"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." -msgstr "" -"Tiempo que tarda el firmware (para la unidad Multi Material 2.0) en " -"descargar el filamento durante el cambio de cabezal ( cuando se ejecuta el T-" -"Code). Esta duración se añade a la duración total de impresión estimada del " -"G-Code." - msgid "Enable ramming for multitool setups" msgstr "Activar moldeado de extremo para configuraciones multicabezal" @@ -11705,10 +11788,10 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocidad de ventilador se incrementará linealmente de cero a " "\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " @@ -11780,10 +11863,11 @@ msgstr "Filtrar pequeños huecos" msgid "Layers and Perimeters" msgstr "Capas y Perímetros" -msgid "Filter out gaps smaller than the threshold specified" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" -"Filtra los huecos menores que el umbral especificado. Este ajuste no " -"afectará a las capas superior/inferior" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13980,33 +14064,40 @@ msgid "Activate temperature control" msgstr "Activar control de temperatura" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Active esta opción para controlar la temperatura de la cámara. Se añadirá un " -"comando M191 antes de \"machine_start_gcode\"\n" -"Comandos G-Code: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Temperatura de cámara" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Una mayor temperatura de la cámara puede ayudar a suprimir o reducir la " -"deformación y potencialmente conducir a una mayor resistencia de unión entre " -"capas para materiales de alta temperatura como ABS, ASA, PC, PA, etc. Al " -"mismo tiempo, la filtración de aire de ABS y ASA empeorará. Mientras que " -"para PLA, PETG, TPU, PVA y otros materiales de baja temperatura, la " -"temperatura real de la cámara no debe ser alta para evitar obstrucciones, " -"por lo que 0, que significa apagar, es muy recomendable" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura de la boquilla después de la primera capa" @@ -14503,9 +14594,10 @@ msgstr "" "NOTA: Las superficies inferior y superior no se verán afectadas por este " "valor para evitar huecos visuales en el exterior del modelo. Ajuste \"Umbral " "de Perímetro\" en la configuración avanzada para ajustar la sensibilidad de " -"lo que se considera una superficie superior. El \"Umbral de un Solo Perímetro" -"\" sólo es visible si este valor es superior al valor predeterminado de 0,5, " -"o si las superficies superiores de un solo perímetro están activados." +"lo que se considera una superficie superior. El \"Umbral de un Solo " +"Perímetro\" sólo es visible si este valor es superior al valor " +"predeterminado de 0,5, o si las superficies superiores de un solo perímetro " +"están activados." msgid "First layer minimum wall width" msgstr "Ancho mínimo del perímetro de la primera capa" @@ -15275,12 +15367,12 @@ msgstr "" "impresión de varios colores/materiales, la impresora utilizará el parámetro " "de compensación por defecto para el filamento durante cada cambio de " "filamento que tendrá un buen resultado en la mayoría de los casos.\n" -"un solo color/material, con la opción \"calibración de la dinámica de flujo" -"\" marcada en el menú de inicio de impresión, la impresora seguirá el camino " -"antiguo, calibrar el filamento antes de la impresión; cuando se inicia una " -"impresión de varios colores/materiales, la impresora utilizará el parámetro " -"de compensación por defecto para el filamento durante cada cambio de " -"filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"un solo color/material, con la opción \"calibración de la dinámica de " +"flujo\" marcada en el menú de inicio de impresión, la impresora seguirá el " +"camino antiguo, calibrar el filamento antes de la impresión; cuando se " +"inicia una impresión de varios colores/materiales, la impresora utilizará el " +"parámetro de compensación por defecto para el filamento durante cada cambio " +"de filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos que pueden hacer que los resultados de " "la calibración no sean fiables, como una adhesión insuficiente en la bandeja " @@ -16036,8 +16128,8 @@ msgstr "" "¿Quieres reescribirlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " @@ -17379,51 +17471,151 @@ msgstr "" "aumentar adecuadamente la temperatura del lecho térmico puede reducir la " "probabilidad de deformaciones." -#~ msgid "up to" -#~ msgstr "hasta" - -#~ msgid "above" -#~ msgstr "sobre" - -#~ msgid "from" -#~ msgstr "desde" - -#~ msgid "Switching application language while some presets are modified." +#~ msgid "" +#~ "Your object appears to be too large. It will be scaled down to fit the " +#~ "heat bed automatically." #~ msgstr "" -#~ "Cambiando idioma de la aplicación mientras se modifican algunos perfiles." +#~ "Su objeto parece demasiado grande, ¿Desea disminuirlo para que quepa en " +#~ "la cama caliente automáticamente?." -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "Shift+G" +#~ msgstr "Shift+G" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "Any arrow" +#~ msgstr "⌘+Cualquier flecha" -#~ msgid "⌥+Left mouse button" -#~ msgstr "Botón de ratón ⌥+Left" +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "Activa el relleno de huecos para las superficies seleccionadas. La " +#~ "longitud mínima de hueco que se rellenará puede controlarse desde la " +#~ "opción filtrar huecos pequeños que aparece más abajo.\n" +#~ "\n" +#~ "Opciones: \n" +#~ "1. En todas partes: Aplica el relleno de huecos a las superficies sólidas " +#~ "superior, inferior e interna \n" +#~ "2. Superficies superior e inferior: Aplica el relleno de huecos sólo a " +#~ "las superficies superior e inferior. \n" +#~ "3. En ninguna parte: Desactiva el relleno de huecos\n" -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+botón izquierdo de ratón" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la " +#~ "cantidad de material para mejorar o evitar el hundimiento de puentes." -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+Cualquier flecha" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Este valor regula el grosor de la capa puente interna. Es la primera capa " +#~ "sobre el relleno de baja densidad. Disminuya ligeramente este valor (por " +#~ "ejemplo, 0,9) para mejorar la calidad de la superficie sobre el relleno " +#~ "de baja densidad." -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Botón izquierdo de ratón" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Este factor afecta a la cantidad de material de para relleno sólido " +#~ "superior. Puede disminuirlo ligeramente para obtener un acabado suave de " +#~ "superficie" -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Botón izquierdo de ratón" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Este factor afecta a la cantidad de material para el relleno sólido " +#~ "inferior" -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Rueda del ratón" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Active está opción para bajar la velocidad de impresión en las áreas " +#~ "donde potencialmente podrían formarse perímetros curvados" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Rueda del ratón" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Velocidad del puente y perímetro completo en voladizo" -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Rueda del ratón" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Velocidad del puente interno. Si el valor es expresado como porcentaje, " +#~ "será calculado en base a bridge_speed. El valor por defecto es 150%." -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Rueda del ratón" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Tiempo para cargar un nuevo filamento cuando se cambia de filamento. Sólo " +#~ "para estadísticas" + +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Tiempo para descargar el filamento viejo cuando se cambia de filamento. " +#~ "Sólo para las estadísticas" + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Tiempo que tarda el firmware de la impresora (o la Unidad Multi Material " +#~ "2.0) en cargar un nuevo filamento durante un cambio de cabezal (al " +#~ "ejecutar el T-Code). El estimador de tiempo del G-Code añade este tiempo " +#~ "al tiempo total de impresión." + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Tiempo que tarda el firmware (para la unidad Multi Material 2.0) en " +#~ "descargar el filamento durante el cambio de cabezal ( cuando se ejecuta " +#~ "el T-Code). Esta duración se añade a la duración total de impresión " +#~ "estimada del G-Code." + +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "" +#~ "Filtra los huecos menores que el umbral especificado. Este ajuste no " +#~ "afectará a las capas superior/inferior" + +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Active esta opción para controlar la temperatura de la cámara. Se añadirá " +#~ "un comando M191 antes de \"machine_start_gcode\"\n" +#~ "Comandos G-Code: M141/M191 S(0-255)" + +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Una mayor temperatura de la cámara puede ayudar a suprimir o reducir la " +#~ "deformación y potencialmente conducir a una mayor resistencia de unión " +#~ "entre capas para materiales de alta temperatura como ABS, ASA, PC, PA, " +#~ "etc. Al mismo tiempo, la filtración de aire de ABS y ASA empeorará. " +#~ "Mientras que para PLA, PETG, TPU, PVA y otros materiales de baja " +#~ "temperatura, la temperatura real de la cámara no debe ser alta para " +#~ "evitar obstrucciones, por lo que 0, que significa apagar, es muy " +#~ "recomendable" #~ msgid "" #~ "Interlocking depth of a segmented region. Zero disables this feature." @@ -17444,14 +17636,14 @@ msgstr "" #~ "Cuando grabamos timelapse sin cabezal de impresión, es recomendable " #~ "añadir un \"Torre de Purga de Intervalo\" \n" #~ "presionando con el botón derecho la posición vacía de la bandeja de " -#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga" -#~ "\"." +#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de " +#~ "Purga\"." #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more printers, Please go to printer selection" #~ msgstr "" #~ "Cambiaríamos el nombre de los preajustes a \"Número de serie del Vendedor " diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 1f2edeab23..adcd0f2f69 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -77,6 +77,9 @@ msgstr "Angle de remplissage intelligent" msgid "On overhangs only" msgstr "Sur les surplombs uniquement" +msgid "Auto support threshold angle: " +msgstr "Angle de seuil de support automatique : " + msgid "Circle" msgstr "Cercle" @@ -97,9 +100,6 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Mettre en surbrillance les faces en fonction de l'angle de surplomb." -msgid "Auto support threshold angle: " -msgstr "Angle de seuil de support automatique : " - msgid "No auto support" msgstr "Pas de support auto" @@ -2010,6 +2010,9 @@ msgstr "Simplifier le Modèle" msgid "Center" msgstr "Centrer" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Modifier les paramètres du traitement" @@ -4200,6 +4203,15 @@ msgstr "Durée totale" msgid "Total cost" msgstr "Coût total" +msgid "up to" +msgstr "" + +msgid "above" +msgstr "" + +msgid "from" +msgstr "" + msgid "Color Scheme" msgstr "Schéma de couleur" @@ -4263,12 +4275,12 @@ msgstr "Temps de changement de filament" msgid "Cost" msgstr "Coût" -msgid "Print" -msgstr "Imprimer" - msgid "Color change" msgstr "Changement de couleur" +msgid "Print" +msgstr "Imprimer" + msgid "Printer" msgstr "Imprimante" @@ -4897,6 +4909,18 @@ msgstr "Passe 2" msgid "Flow rate test - Pass 2" msgstr "Test de débit - Passe 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Débit" @@ -6214,16 +6238,6 @@ msgstr "Un objet en plusieurs parties a été détecté" msgid "The file does not contain any geometry data." msgstr "Le fichier ne contient pas de données géométriques." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" -"Votre objet est trop grand. Il sera automatiquement réduit pour s’adapter au " -"plateau." - -msgid "Object too large" -msgstr "Objet trop grand" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6231,6 +6245,9 @@ msgstr "" "Votre objet semble trop grand. Voulez-vous le réduire pour l'adapter " "automatiquement au plateau d'impression ?" +msgid "Object too large" +msgstr "Objet trop grand" + msgid "Export STL file:" msgstr "Exporter le fichier STL :" @@ -6621,6 +6638,9 @@ msgstr "Voulez-vous continuer?" msgid "Language selection" msgstr "Sélection de la langue" +msgid "Switching application language while some presets are modified." +msgstr "" + msgid "Changing application language" msgstr "Changer la langue de l'application" @@ -8705,8 +8725,11 @@ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "" "Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF." -msgid "Shift+G" -msgstr "Shift+G" +msgid "⌘+Shift+G" +msgstr "" + +msgid "Ctrl+Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" @@ -8758,18 +8781,33 @@ msgstr "Maj+Tab" msgid "Collapse/Expand the sidebar" msgstr "Réduire/développer la barre latérale" -msgid "Any arrow" -msgstr "Toutes les flèches" +msgid "⌘+Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Mouvement dans l'espace de la caméra" +msgid "⌥+Left mouse button" +msgstr "" + msgid "Select a part" msgstr "Sélectionner une pièce" +msgid "⌘+Left mouse button" +msgstr "" + msgid "Select multiple objects" msgstr "Sélectionnez tous les objets sur la plaque actuelle" +msgid "Ctrl+Any arrow" +msgstr "" + +msgid "Alt+Left mouse button" +msgstr "" + +msgid "Ctrl+Left mouse button" +msgstr "" + msgid "Shift+Left mouse button" msgstr "Maj+Bouton gauche de la souris" @@ -8872,12 +8910,24 @@ msgstr "Plateau" msgid "Move: press to snap by 1mm" msgstr "Déplacer : appuyez pour aligner de 1 mm" +msgid "⌘+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Peinture couleur : ajustez le rayon du stylet" +msgid "⌥+Mouse wheel" +msgstr "" + msgid "Support/Color Painting: adjust section position" msgstr "Support/Peinture couleur : ajuster la position de la section" +msgid "Ctrl+Mouse wheel" +msgstr "" + +msgid "Alt+Mouse wheel" +msgstr "" + msgid "Gizmo" msgstr "Gizmo" @@ -9982,25 +10032,32 @@ msgid "Apply gap fill" msgstr "Remplissage des trous" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"Active le remplissage des trous pour les surfaces sélectionnées. La longueur " -"minimale du trou qui sera comblé peut être contrôlée à l’aide de l’option " -"« Filtrer les petits trous » ci-dessous.\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Options :\n" -"1. Partout : Applique le remplissage des trous aux surfaces pleines " -"supérieures, inférieures et internes.\n" -"2. Surfaces supérieure et inférieure : Remplissage des trous uniquement sur " -"les surfaces supérieures et inférieures.\n" -"3. Nulle part : Désactive le remplissage des trous\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "Partout" @@ -10076,10 +10133,11 @@ msgstr "Débit des ponts" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Diminuez légèrement cette valeur (par exemple 0,9) pour réduire la quantité " -"de matériaux pour le pont, pour améliorer l'affaissement" msgid "Internal bridge flow ratio" msgstr "Ratio de débit du pont interne" @@ -10087,31 +10145,33 @@ msgstr "Ratio de débit du pont interne" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Cette valeur détermine l’épaisseur de la couche des ponts internes. Il " -"s’agit de la première couche sur le remplissage. Diminuez légèrement cette " -"valeur (par exemple 0.9) pour améliorer la qualité de la surface sur le " -"remplissage." msgid "Top surface flow ratio" msgstr "Ratio du débit des surfaces supérieures" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Ce facteur affecte la quantité de matériau pour le remplissage plein " -"supérieur. Vous pouvez le diminuer légèrement pour avoir une finition de " -"surface lisse" msgid "Bottom surface flow ratio" msgstr "Ratio du débit des surfaces inférieures" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Ce facteur affecte la quantité de matériau pour le remplissage plein du " -"dessous" msgid "Precise wall" msgstr "Parois précises" @@ -10292,12 +10352,26 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "Ralentir lors des périmètres courbés" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Activer cette option pour ralentir l’impression dans les zones où des " -"périmètres potentiellement courbées peuvent exister." msgid "mm/s or %" msgstr "mm/s ou %" @@ -10305,9 +10379,14 @@ msgstr "mm/s ou %" msgid "External" msgstr "Externe" -msgid "Speed of bridge and completely overhang wall" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." msgstr "" -"Il s'agit de la vitesse pour les ponts et les parois en surplomb à 100 %." msgid "mm/s" msgstr "mm/s" @@ -10316,11 +10395,9 @@ msgid "Internal" msgstr "Interne" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Vitesse des ponts internes. Si la valeur est exprimée en pourcentage, elle " -"sera calculée en fonction de bridge_speed. La valeur par défaut est 150%." msgid "Brim width" msgstr "Largeur de la bordure" @@ -10987,6 +11064,17 @@ msgstr "" "cette valeur pour obtenir une belle surface plane en cas de léger " "débordement ou sous-dépassement" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Activer la Pressure Advance" @@ -11008,7 +11096,7 @@ msgid "" "With increasing print speeds (and hence increasing volumetric flow through " "the nozzle) and increasing accelerations, it has been observed that the " "effective PA value typically decreases. This means that a single PA value is " -"not always 100%% optimal for all features and a compromise value is usually " +"not always 100% optimal for all features and a compromise value is usually " "used that does not cause too much bulging on features with lower flow speed " "and accelerations while also not causing gaps on faster features.\n" "\n" @@ -11024,27 +11112,6 @@ msgid "" "and for when tool changing.\n" "\n" msgstr "" -"Avec l’augmentation des vitesses d’impression (et donc du débit volumétrique " -"à travers la buse) et des accélérations, il a été observé que la valeur " -"effective de PA diminue généralement. Cela signifie qu’une valeur PA unique " -"n’est pas toujours optimale à 100%% pour toutes les caractéristiques et " -"qu’une valeur de compromis est généralement utilisée pour éviter de trop " -"gonfler les caractéristiques avec une vitesse d’écoulement et des " -"accélérations plus faibles, tout en évitant de créer des interstices sur les " -"traits plus rapides.\n" -"\n" -"Cette fonction vise à remédier à cette limitation en modélisant la réponse " -"du système d’extrusion de votre imprimante en fonction de la vitesse du flux " -"volumétrique et de l’accélération de l’impression. En interne, elle génère " -"un modèle ajusté qui peut extrapoler l’avance de pression nécessaire pour " -"une vitesse de débit volumétrique et une accélération données, qui est " -"ensuite émise à l’imprimante en fonction des conditions d’impression " -"actuelles.\n" -"\n" -"Lorsqu’elle est activée, la valeur de l’avance de pression ci-dessus est " -"annulée. Cependant, une valeur par défaut raisonnable est fortement " -"recommandée pour servir de solution de secours et en cas de changement " -"d’outil.\n" msgid "Adaptive pressure advance measurements (beta)" msgstr "Mesures adaptatives de l’avance de pression (beta)" @@ -11235,18 +11302,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Temps de chargement du filament" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Il est temps de charger un nouveau filament lors du changement de filament. " -"Pour les statistiques uniquement" msgid "Filament unload time" msgstr "Temps de déchargement du filament" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Il est temps de décharger l'ancien filament lorsque vous changez de " -"filament. Pour les statistiques uniquement" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11399,16 +11477,6 @@ msgstr "" "Les mouvements de refroidissement s’accélèrent progressivement vers cette " "vitesse." -msgid "" -"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." -msgstr "" -"Temps nécessaire au firmware de l’imprimante (ou au Multi Material Unit 2.0) " -"pour charger un nouveau filament lors d’un changement d’outil (lors de " -"l’exécution du code T). Ce temps est ajouté au temps d’impression total par " -"l’estimateur de temps du G-code." - msgid "Ramming parameters" msgstr "Paramètres de pilonnage" @@ -11419,16 +11487,6 @@ msgstr "" "Cette chaîne est éditée par RammingDialog et contient des paramètres " "spécifiques au pilonnage." -msgid "" -"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." -msgstr "" -"Temps nécessaire au firmware de l’imprimante (ou au Multi Material Unit 2.0) " -"pour décharger un filament lors d’un changement d’outil (lors de l’exécution " -"du code T). Ce temps est ajouté au temps d’impression total par l’estimateur " -"de temps du G-code." - msgid "Enable ramming for multitool setups" msgstr "Activer le pilonnage pour les configurations multi-outils" @@ -11880,8 +11938,11 @@ msgstr "Filtrer les petits espaces" msgid "Layers and Perimeters" msgstr "Couches et Périmètres" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Filtrer les petits espaces au seuil spécifié." +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -14104,34 +14165,40 @@ msgid "Activate temperature control" msgstr "Activer le contrôle de la température" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Activez cette option pour le contrôle de la température du caisson. Une " -"commande M191 sera ajoutée avant \"machine_start_gcode\"\n" -"Commandes G-code : M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Température du caisson" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Une température de caisson plus élevée peut aider à supprimer ou à réduire " -"la déformation et potentiellement conduire à une force de liaison " -"intercouche plus élevée pour les matériaux à haute température comme l’ABS, " -"l’ASA, le PC, le PA, etc. Dans le même temps, la filtration de l’air de " -"l’ABS et de l’ASA s’aggravera. Pour le PLA, le PETG, le TPU, le PVA et " -"d’autres matériaux à basse température, la température réelle du caisson ne " -"doit pas être élevée pour éviter les bouchages, donc la valeur 0 qui " -"signifie éteindre est fortement recommandé." msgid "Nozzle temperature for layers after the initial one" msgstr "Température de la buse pour les couches après la première" @@ -17150,6 +17217,592 @@ msgstr "" msgid "User cancelled." msgstr "L’utilisateur a annulé." +#: resources/data/hints.ini: [hint:Precise wall] +msgid "" +"Precise wall\n" +"Did you know that turning on precise wall can improve precision and layer " +"consistency?" +msgstr "" +"Paroi précise\n" +"Saviez-vous que l’activation de la paroi précise peut améliorer la précision " +"et l’homogénéité des couches ?" + +#: resources/data/hints.ini: [hint:Sandwich mode] +msgid "" +"Sandwich mode\n" +"Did you know that you can use sandwich mode (inner-outer-inner) to improve " +"precision and layer consistency if your model doesn't have very steep " +"overhangs?" +msgstr "" +"Mode sandwich\n" +"Saviez-vous que vous pouvez utiliser le mode sandwich (intérieur-extérieur-" +"intérieur) pour améliorer la précision et la cohérence des couches si votre " +"modèle n’a pas de porte-à-faux très prononcés ?" + +#: resources/data/hints.ini: [hint:Chamber temperature] +msgid "" +"Chamber temperature\n" +"Did you know that OrcaSlicer supports chamber temperature?" +msgstr "" +"Température du caisson\n" +"Saviez-vous qu’OrcaSlicer prend en charge la température du caisson ?" + +#: resources/data/hints.ini: [hint:Calibration] +msgid "" +"Calibration\n" +"Did you know that calibrating your printer can do wonders? Check out our " +"beloved calibration solution in OrcaSlicer." +msgstr "" +"Calibrage\n" +"Saviez-vous que le calibrage de votre imprimante peut faire des merveilles ? " +"Découvrez notre solution de calibrage bien-aimée dans OrcaSlicer." + +#: resources/data/hints.ini: [hint:Auxiliary fan] +msgid "" +"Auxiliary fan\n" +"Did you know that OrcaSlicer supports Auxiliary part cooling fan?" +msgstr "" +"Ventilateur auxiliaire\n" +"Saviez-vous qu’OrcaSlicer prend en charge le ventilateur auxiliaire de " +"refroidissement des pièces ?" + +#: resources/data/hints.ini: [hint:Air filtration] +msgid "" +"Air filtration/Exhaust Fan\n" +"Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" +msgstr "" +"Filtration de l’air/ventilateur d’extraction\n" +"Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/le " +"ventilateur d’extraction ?" + +#: resources/data/hints.ini: [hint:G-code window] +msgid "" +"G-code window\n" +"You can turn on/off the G-code window by pressing the C key." +msgstr "" +"Fenêtre de G-code\n" +"Vous pouvez activer/désactiver la fenêtre G-code en appuyant sur la touche " +"C." + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "" +"Switch workspaces\n" +"You can switch between Prepare and Preview workspaces by " +"pressing the Tab key." +msgstr "" +"Changer les espaces de travail\n" +"Vous pouvez alterner entre l’espace de travail Préparer et Aperçu en appuyant sur la touche Tab." + +#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] +msgid "" +"How to use keyboard shortcuts\n" +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " +"3D scene operations." +msgstr "" +"Comment utiliser les raccourcis clavier\n" +"Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " +"d’opérations sur les scènes 3D." + +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "" +"Reverse on odd\n" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" +msgstr "" +"Parois inversées sur couches impaires\n" +"Saviez-vous que la fonction Parois inversées sur couches impaires " +"peut améliorer de manière significative la qualité de la surface de vos " +"surplombs ?" + +#: resources/data/hints.ini: [hint:Cut Tool] +msgid "" +"Cut Tool\n" +"Did you know that you can cut a model at any angle and position with the " +"cutting tool?" +msgstr "" +"Outil de découpe\n" +"Saviez-vous que vous pouvez découper un modèle à n'importe quel angle et " +"dans n'importe quelle position avec l'outil de découpe ?" + +#: resources/data/hints.ini: [hint:Fix Model] +msgid "" +"Fix Model\n" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " +"problems on the Windows system?" +msgstr "" +"Réparer un modèle\n" +"Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " +"nombreux problèmes de découpage sur le système Windows ?" + +#: resources/data/hints.ini: [hint:Timelapse] +msgid "" +"Timelapse\n" +"Did you know that you can generate a timelapse video during each print?" +msgstr "" +"Timelapse\n" +"Saviez-vous que vous pouvez générer une vidéo en timelapse à chaque " +"impression ?" + +#: resources/data/hints.ini: [hint:Auto-Arrange] +msgid "" +"Auto-Arrange\n" +"Did you know that you can auto-arrange all objects in your project?" +msgstr "" +"Agencement Automatique\n" +"Saviez-vous que vous pouvez agencement automatiquement tous les objets de " +"votre projet ?" + +#: resources/data/hints.ini: [hint:Auto-Orient] +msgid "" +"Auto-Orient\n" +"Did you know that you can rotate objects to an optimal orientation for " +"printing by a simple click?" +msgstr "" +"Orientation Automatique\n" +"Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " +"optimale pour l'impression d'un simple clic ?" + +#: resources/data/hints.ini: [hint:Lay on Face] +msgid "" +"Lay on Face\n" +"Did you know that you can quickly orient a model so that one of its faces " +"sits on the print bed? Select the \"Place on face\" function or press the " +"F key." +msgstr "" +"Poser sur une face\n" +"Saviez-vous qu'il est possible d'orienter rapidement un modèle de manière à " +"ce que l'une de ses faces repose sur le plateau d'impression ? Sélectionnez " +"la fonction « Placer sur la face » ou appuyez sur la touche F." + +#: resources/data/hints.ini: [hint:Object List] +msgid "" +"Object List\n" +"Did you know that you can view all objects/parts in a list and change " +"settings for each object/part?" +msgstr "" +"Liste d'objets\n" +"Saviez-vous que vous pouvez afficher tous les objets/pièces dans une liste " +"et modifier les paramètres de chaque objet/pièce ?" + +#: resources/data/hints.ini: [hint:Search Functionality] +msgid "" +"Search Functionality\n" +"Did you know that you use the Search tool to quickly find a specific Orca " +"Slicer setting?" +msgstr "" +"Fonctionnalité de recherche\n" +"Saviez-vous que vous pouvez utiliser l’outil de recherche pour trouver " +"rapidement un paramètre spécifique de l’Orca Slicer ?" + +#: resources/data/hints.ini: [hint:Simplify Model] +msgid "" +"Simplify Model\n" +"Did you know that you can reduce the number of triangles in a mesh using the " +"Simplify mesh feature? Right-click the model and select Simplify model." +msgstr "" +"Simplifier le modèle\n" +"Saviez-vous que vous pouviez réduire le nombre de triangles dans un maillage " +"à l’aide de la fonction Simplifier le maillage ? Cliquez avec le bouton " +"droit de la souris sur le modèle et sélectionnez Simplifier le modèle." + +#: resources/data/hints.ini: [hint:Slicing Parameter Table] +msgid "" +"Slicing Parameter Table\n" +"Did you know that you can view all objects/parts on a table and change " +"settings for each object/part?" +msgstr "" +"Tableau des paramètres de découpe\n" +"Saviez-vous que vous pouvez afficher tous les objets/pièces sur un tableau " +"et modifier les paramètres de chaque objet/pièce ?" + +#: resources/data/hints.ini: [hint:Split to Objects/Parts] +msgid "" +"Split to Objects/Parts\n" +"Did you know that you can split a big object into small ones for easy " +"colorizing or printing?" +msgstr "" +"Séparer en objets/parties\n" +"Saviez-vous que vous pouvez séparer un gros objet en petits objets pour les " +"colorier ou les imprimer facilement ?" + +#: resources/data/hints.ini: [hint:Subtract a Part] +msgid "" +"Subtract a Part\n" +"Did you know that you can subtract one mesh from another using the Negative " +"part modifier? That way you can, for example, create easily resizable holes " +"directly in Orca Slicer." +msgstr "" +"Soustraire une pièce\n" +"Saviez-vous que vous pouviez soustraire un maillage d’un autre à l’aide du " +"modificateur de partie négative ? De cette façon, vous pouvez, par exemple, " +"créer des trous facilement redimensionnables directement dans Orca Slicer." + +#: resources/data/hints.ini: [hint:STEP] +msgid "" +"STEP\n" +"Did you know that you can improve your print quality by slicing a STEP file " +"instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a " +"lower resolution STL. Give it a try!" +msgstr "" +"STEP\n" +"Saviez-vous que vous pouvez améliorer votre qualité d'impression en " +"découpant un fichier .step au lieu d'un .stl ?\n" +"Orca Slicer prend en charge le découpage des fichiers .step, offrant des " +"résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" + +#: resources/data/hints.ini: [hint:Z seam location] +msgid "" +"Z seam location\n" +"Did you know that you can customize the location of the Z seam, and even " +"paint it on your print, to have it in a less visible location? This improves " +"the overall look of your model. Check it out!" +msgstr "" +"Emplacement de la couture Z\n" +"Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, et " +"même la peindre manuelle sur votre impression pour le placer dans un endroit " +"moins visible ? Cela améliore l'aspect général de votre modèle. Jetez-y un " +"coup d'œil !" + +#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] +msgid "" +"Fine-tuning for flow rate\n" +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." +msgstr "" +"Réglage fin du débit\n" +"Saviez-vous que le débit peut être réglé avec précision pour obtenir des " +"impressions encore plus belles ? En fonction du matériau, vous pouvez " +"améliorer la finition générale du modèle imprimé en procédant à un réglage " +"fin." + +#: resources/data/hints.ini: [hint:Split your prints into plates] +msgid "" +"Split your prints into plates\n" +"Did you know that you can split a model that has a lot of parts into " +"individual plates ready to print? This will simplify the process of keeping " +"track of all the parts." +msgstr "" +"Divisez vos impressions en plateaux\n" +"Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " +"pièces en plateaux individuels prêts à être imprimés ? Cela simplifie le " +"processus de suivi de toutes les pièces." + +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] +msgid "" +"Speed up your print with Adaptive Layer Height\n" +"Did you know that you can print a model even faster, by using the Adaptive " +"Layer Height option? Check it out!" +msgstr "" +"Accélérez votre impression grâce à la Hauteur de Couche Adaptative\n" +"Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " +"utilisant l'option Adaptive Layer Height ? Jetez-y un coup d'œil !" + +#: resources/data/hints.ini: [hint:Support painting] +msgid "" +"Support painting\n" +"Did you know that you can paint the location of your supports? This feature " +"makes it easy to place the support material only on the sections of the " +"model that actually need it." +msgstr "" +"Peinture de support\n" +"Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " +"caractéristique permet de placer facilement le matériau de support " +"uniquement sur les sections du modèle qui en ont réellement besoin." + +#: resources/data/hints.ini: [hint:Different types of supports] +msgid "" +"Different types of supports\n" +"Did you know that you can choose from multiple types of supports? Tree " +"supports work great for organic models, while saving filament and improving " +"print speed. Check them out!" +msgstr "" +"Différents types de supports\n" +"Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? Les " +"supports arborescents fonctionnent parfaitement pour les modèles organiques " +"tout en économisant du filament et en améliorant la vitesse d'impression. " +"Découvrez-les !" + +#: resources/data/hints.ini: [hint:Printing Silk Filament] +msgid "" +"Printing Silk Filament\n" +"Did you know that Silk filament needs special consideration to print it " +"successfully? Higher temperature and lower speed are always recommended for " +"the best results." +msgstr "" +"Impression de filament Soie\n" +"Saviez-vous que le filament soie nécessite une attention particulière pour " +"une impression réussie ? Une température plus élevée et une vitesse plus " +"faible sont toujours recommandées pour obtenir les meilleurs résultats." + +#: resources/data/hints.ini: [hint:Brim for better adhesion] +msgid "" +"Brim for better adhesion\n" +"Did you know that when printing models have a small contact interface with " +"the printing surface, it's recommended to use a brim?" +msgstr "" +"Bordure pour une meilleure adhésion\n" +"Saviez-vous que lorsque les modèles imprimés ont une faible interface de " +"contact avec la surface d'impression, il est recommandé d'utiliser une " +"bordure ?" + +#: resources/data/hints.ini: [hint:Set parameters for multiple objects] +msgid "" +"Set parameters for multiple objects\n" +"Did you know that you can set slicing parameters for all selected objects at " +"one time?" +msgstr "" +"Définir les paramètres de plusieurs objets\n" +"Saviez-vous que vous pouvez définir des paramètres de découpe pour tous les " +"objets sélectionnés en une seule fois ?" + +#: resources/data/hints.ini: [hint:Stack objects] +msgid "" +"Stack objects\n" +"Did you know that you can stack objects as a whole one?" +msgstr "" +"Empiler des objets\n" +"Saviez-vous que vous pouvez empiler des objets pour n'en former qu'un?" + +#: resources/data/hints.ini: [hint:Flush into support/objects/infill] +msgid "" +"Flush into support/objects/infill\n" +"Did you know that you can save the wasted filament by flushing them into " +"support/objects/infill during filament change?" +msgstr "" +"Purger dans les supports/les objets/le remplissage\n" +"Saviez-vous que vous pouvez réduire le filament gaspillé en le purgeant dans " +"les supports/les objets/le remplissage lors des changements de filament ?" + +#: resources/data/hints.ini: [hint:Improve strength] +msgid "" +"Improve strength\n" +"Did you know that you can use more wall loops and higher sparse infill " +"density to improve the strength of the model?" +msgstr "" +"Améliorer la solidité\n" +"Saviez-vous que vous pouvez définir un plus grand nombre de périmètre et une " +"densité de remplissage plus élevée pour améliorer la résistance du modèle ?" + +#: resources/data/hints.ini: [hint:When need to print with the printer door +#: opened] +msgid "" +"When need to print with the printer door opened\n" +"Did you know that opening the printer door can reduce the probability of " +"extruder/hotend clogging when printing lower temperature filament with a " +"higher enclosure temperature. More info about this in the Wiki." +msgstr "" +"Quand il faut imprimer avec la porte de l’imprimante ouverte\n" +"Saviez-vous que l’ouverture de la porte de l’imprimante peut réduire la " +"probabilité de blocage de l’extrudeuse/du réchauffeur lors de l’impression " +"de filament à basse température avec une température de boîtier plus élevée. " +"Plus d’informations à ce sujet dans le Wiki." + +#: resources/data/hints.ini: [hint:Avoid warping] +msgid "" +"Avoid warping\n" +"Did you know that when printing materials that are prone to warping such as " +"ABS, appropriately increasing the heatbed temperature can reduce the " +"probability of warping." +msgstr "" +"Éviter la déformation\n" +"Saviez-vous que lors de l’impression de matériaux susceptibles de se " +"déformer, tels que l’ABS, une augmentation appropriée de la température du " +"plateau chauffant peut réduire la probabilité de déformation." + +#~ msgid "" +#~ "Your object appears to be too large. It will be scaled down to fit the " +#~ "heat bed automatically." +#~ msgstr "" +#~ "Votre objet est trop grand. Il sera automatiquement réduit pour s’adapter " +#~ "au plateau." + +#~ msgid "Shift+G" +#~ msgstr "Shift+G" + +#~ msgid "Any arrow" +#~ msgstr "Toutes les flèches" + +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "Active le remplissage des trous pour les surfaces sélectionnées. La " +#~ "longueur minimale du trou qui sera comblé peut être contrôlée à l’aide de " +#~ "l’option « Filtrer les petits trous » ci-dessous.\n" +#~ "\n" +#~ "Options :\n" +#~ "1. Partout : Applique le remplissage des trous aux surfaces pleines " +#~ "supérieures, inférieures et internes.\n" +#~ "2. Surfaces supérieure et inférieure : Remplissage des trous uniquement " +#~ "sur les surfaces supérieures et inférieures.\n" +#~ "3. Nulle part : Désactive le remplissage des trous\n" + +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Diminuez légèrement cette valeur (par exemple 0,9) pour réduire la " +#~ "quantité de matériaux pour le pont, pour améliorer l'affaissement" + +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Cette valeur détermine l’épaisseur de la couche des ponts internes. Il " +#~ "s’agit de la première couche sur le remplissage. Diminuez légèrement " +#~ "cette valeur (par exemple 0.9) pour améliorer la qualité de la surface " +#~ "sur le remplissage." + +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Ce facteur affecte la quantité de matériau pour le remplissage plein " +#~ "supérieur. Vous pouvez le diminuer légèrement pour avoir une finition de " +#~ "surface lisse" + +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Ce facteur affecte la quantité de matériau pour le remplissage plein du " +#~ "dessous" + +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Activer cette option pour ralentir l’impression dans les zones où des " +#~ "périmètres potentiellement courbées peuvent exister." + +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "" +#~ "Il s'agit de la vitesse pour les ponts et les parois en surplomb à 100 %." + +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Vitesse des ponts internes. Si la valeur est exprimée en pourcentage, " +#~ "elle sera calculée en fonction de bridge_speed. La valeur par défaut est " +#~ "150%." + +#, c-format, boost-format +#~ msgid "" +#~ "With increasing print speeds (and hence increasing volumetric flow " +#~ "through the nozzle) and increasing accelerations, it has been observed " +#~ "that the effective PA value typically decreases. This means that a single " +#~ "PA value is not always 100%% optimal for all features and a compromise " +#~ "value is usually used that does not cause too much bulging on features " +#~ "with lower flow speed and accelerations while also not causing gaps on " +#~ "faster features.\n" +#~ "\n" +#~ "This feature aims to address this limitation by modeling the response of " +#~ "your printer's extrusion system depending on the volumetric flow speed " +#~ "and acceleration it is printing at. Internally, it generates a fitted " +#~ "model that can extrapolate the needed pressure advance for any given " +#~ "volumetric flow speed and acceleration, which is then emmited to the " +#~ "printer depending on the current print conditions.\n" +#~ "\n" +#~ "When enabled, the pressure advance value above is overriden. However, a " +#~ "reasonable default value above is strongly recomended to act as a " +#~ "fallback and for when tool changing.\n" +#~ "\n" +#~ msgstr "" +#~ "Avec l’augmentation des vitesses d’impression (et donc du débit " +#~ "volumétrique à travers la buse) et des accélérations, il a été observé " +#~ "que la valeur effective de PA diminue généralement. Cela signifie qu’une " +#~ "valeur PA unique n’est pas toujours optimale à 100%% pour toutes les " +#~ "caractéristiques et qu’une valeur de compromis est généralement utilisée " +#~ "pour éviter de trop gonfler les caractéristiques avec une vitesse " +#~ "d’écoulement et des accélérations plus faibles, tout en évitant de créer " +#~ "des interstices sur les traits plus rapides.\n" +#~ "\n" +#~ "Cette fonction vise à remédier à cette limitation en modélisant la " +#~ "réponse du système d’extrusion de votre imprimante en fonction de la " +#~ "vitesse du flux volumétrique et de l’accélération de l’impression. En " +#~ "interne, elle génère un modèle ajusté qui peut extrapoler l’avance de " +#~ "pression nécessaire pour une vitesse de débit volumétrique et une " +#~ "accélération données, qui est ensuite émise à l’imprimante en fonction " +#~ "des conditions d’impression actuelles.\n" +#~ "\n" +#~ "Lorsqu’elle est activée, la valeur de l’avance de pression ci-dessus est " +#~ "annulée. Cependant, une valeur par défaut raisonnable est fortement " +#~ "recommandée pour servir de solution de secours et en cas de changement " +#~ "d’outil.\n" + +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Il est temps de charger un nouveau filament lors du changement de " +#~ "filament. Pour les statistiques uniquement" + +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Il est temps de décharger l'ancien filament lorsque vous changez de " +#~ "filament. Pour les statistiques uniquement" + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Temps nécessaire au firmware de l’imprimante (ou au Multi Material Unit " +#~ "2.0) pour charger un nouveau filament lors d’un changement d’outil (lors " +#~ "de l’exécution du code T). Ce temps est ajouté au temps d’impression " +#~ "total par l’estimateur de temps du G-code." + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Temps nécessaire au firmware de l’imprimante (ou au Multi Material Unit " +#~ "2.0) pour décharger un filament lors d’un changement d’outil (lors de " +#~ "l’exécution du code T). Ce temps est ajouté au temps d’impression total " +#~ "par l’estimateur de temps du G-code." + +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Filtrer les petits espaces au seuil spécifié." + +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Activez cette option pour le contrôle de la température du caisson. Une " +#~ "commande M191 sera ajoutée avant \"machine_start_gcode\"\n" +#~ "Commandes G-code : M141/M191 S(0-255)" + +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Une température de caisson plus élevée peut aider à supprimer ou à " +#~ "réduire la déformation et potentiellement conduire à une force de liaison " +#~ "intercouche plus élevée pour les matériaux à haute température comme " +#~ "l’ABS, l’ASA, le PC, le PA, etc. Dans le même temps, la filtration de " +#~ "l’air de l’ABS et de l’ASA s’aggravera. Pour le PLA, le PETG, le TPU, le " +#~ "PVA et d’autres matériaux à basse température, la température réelle du " +#~ "caisson ne doit pas être élevée pour éviter les bouchages, donc la valeur " +#~ "0 qui signifie éteindre est fortement recommandé." + #~ msgid "Current association: " #~ msgstr "Association actuelle : " @@ -17189,371 +17842,6 @@ msgstr "L’utilisateur a annulé." #~ msgid "Internel error" #~ msgstr "Erreur interne" -#~ msgid "" -#~ "Precise wall\n" -#~ "Did you know that turning on precise wall can improve precision and layer " -#~ "consistency?" -#~ msgstr "" -#~ "Paroi précise\n" -#~ "Saviez-vous que l’activation de la paroi précise peut améliorer la " -#~ "précision et l’homogénéité des couches ?" - -#~ msgid "" -#~ "Sandwich mode\n" -#~ "Did you know that you can use sandwich mode (inner-outer-inner) to " -#~ "improve precision and layer consistency if your model doesn't have very " -#~ "steep overhangs?" -#~ msgstr "" -#~ "Mode sandwich\n" -#~ "Saviez-vous que vous pouvez utiliser le mode sandwich (intérieur-" -#~ "extérieur-intérieur) pour améliorer la précision et la cohérence des " -#~ "couches si votre modèle n’a pas de porte-à-faux très prononcés ?" - -#~ msgid "" -#~ "Chamber temperature\n" -#~ "Did you know that OrcaSlicer supports chamber temperature?" -#~ msgstr "" -#~ "Température du caisson\n" -#~ "Saviez-vous qu’OrcaSlicer prend en charge la température du caisson ?" - -#~ msgid "" -#~ "Calibration\n" -#~ "Did you know that calibrating your printer can do wonders? Check out our " -#~ "beloved calibration solution in OrcaSlicer." -#~ msgstr "" -#~ "Calibrage\n" -#~ "Saviez-vous que le calibrage de votre imprimante peut faire des " -#~ "merveilles ? Découvrez notre solution de calibrage bien-aimée dans " -#~ "OrcaSlicer." - -#~ msgid "" -#~ "Auxiliary fan\n" -#~ "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" -#~ msgstr "" -#~ "Ventilateur auxiliaire\n" -#~ "Saviez-vous qu’OrcaSlicer prend en charge le ventilateur auxiliaire de " -#~ "refroidissement des pièces ?" - -#~ msgid "" -#~ "Air filtration/Exhaust Fan\n" -#~ "Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" -#~ msgstr "" -#~ "Filtration de l’air/ventilateur d’extraction\n" -#~ "Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/" -#~ "le ventilateur d’extraction ?" - -#~ msgid "" -#~ "G-code window\n" -#~ "You can turn on/off the G-code window by pressing the C key." -#~ msgstr "" -#~ "Fenêtre de G-code\n" -#~ "Vous pouvez activer/désactiver la fenêtre G-code en appuyant sur la " -#~ "touche C." - -#~ msgid "" -#~ "Switch workspaces\n" -#~ "You can switch between Prepare and Preview workspaces by " -#~ "pressing the Tab key." -#~ msgstr "" -#~ "Changer les espaces de travail\n" -#~ "Vous pouvez alterner entre l’espace de travail Préparer et " -#~ "Aperçu en appuyant sur la touche Tab." - -#~ msgid "" -#~ "How to use keyboard shortcuts\n" -#~ "Did you know that Orca Slicer offers a wide range of keyboard shortcuts " -#~ "and 3D scene operations." -#~ msgstr "" -#~ "Comment utiliser les raccourcis clavier\n" -#~ "Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " -#~ "d’opérations sur les scènes 3D." - -#~ msgid "" -#~ "Reverse on odd\n" -#~ "Did you know that Reverse on odd feature can significantly improve " -#~ "the surface quality of your overhangs?" -#~ msgstr "" -#~ "Parois inversées sur couches impaires\n" -#~ "Saviez-vous que la fonction Parois inversées sur couches impaires " -#~ "peut améliorer de manière significative la qualité de la surface de vos " -#~ "surplombs ?" - -#~ msgid "" -#~ "Cut Tool\n" -#~ "Did you know that you can cut a model at any angle and position with the " -#~ "cutting tool?" -#~ msgstr "" -#~ "Outil de découpe\n" -#~ "Saviez-vous que vous pouvez découper un modèle à n'importe quel angle et " -#~ "dans n'importe quelle position avec l'outil de découpe ?" - -#~ msgid "" -#~ "Fix Model\n" -#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " -#~ "slicing problems on the Windows system?" -#~ msgstr "" -#~ "Réparer un modèle\n" -#~ "Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " -#~ "nombreux problèmes de découpage sur le système Windows ?" - -#~ msgid "" -#~ "Timelapse\n" -#~ "Did you know that you can generate a timelapse video during each print?" -#~ msgstr "" -#~ "Timelapse\n" -#~ "Saviez-vous que vous pouvez générer une vidéo en timelapse à chaque " -#~ "impression ?" - -#~ msgid "" -#~ "Auto-Arrange\n" -#~ "Did you know that you can auto-arrange all objects in your project?" -#~ msgstr "" -#~ "Agencement Automatique\n" -#~ "Saviez-vous que vous pouvez agencement automatiquement tous les objets de " -#~ "votre projet ?" - -#~ msgid "" -#~ "Auto-Orient\n" -#~ "Did you know that you can rotate objects to an optimal orientation for " -#~ "printing by a simple click?" -#~ msgstr "" -#~ "Orientation Automatique\n" -#~ "Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " -#~ "optimale pour l'impression d'un simple clic ?" - -#~ msgid "" -#~ "Lay on Face\n" -#~ "Did you know that you can quickly orient a model so that one of its faces " -#~ "sits on the print bed? Select the \"Place on face\" function or press the " -#~ "F key." -#~ msgstr "" -#~ "Poser sur une face\n" -#~ "Saviez-vous qu'il est possible d'orienter rapidement un modèle de manière " -#~ "à ce que l'une de ses faces repose sur le plateau d'impression ? " -#~ "Sélectionnez la fonction « Placer sur la face » ou appuyez sur la touche " -#~ "F." - -#~ msgid "" -#~ "Object List\n" -#~ "Did you know that you can view all objects/parts in a list and change " -#~ "settings for each object/part?" -#~ msgstr "" -#~ "Liste d'objets\n" -#~ "Saviez-vous que vous pouvez afficher tous les objets/pièces dans une " -#~ "liste et modifier les paramètres de chaque objet/pièce ?" - -#~ msgid "" -#~ "Search Functionality\n" -#~ "Did you know that you use the Search tool to quickly find a specific Orca " -#~ "Slicer setting?" -#~ msgstr "" -#~ "Fonctionnalité de recherche\n" -#~ "Saviez-vous que vous pouvez utiliser l’outil de recherche pour trouver " -#~ "rapidement un paramètre spécifique de l’Orca Slicer ?" - -#~ msgid "" -#~ "Simplify Model\n" -#~ "Did you know that you can reduce the number of triangles in a mesh using " -#~ "the Simplify mesh feature? Right-click the model and select Simplify " -#~ "model." -#~ msgstr "" -#~ "Simplifier le modèle\n" -#~ "Saviez-vous que vous pouviez réduire le nombre de triangles dans un " -#~ "maillage à l’aide de la fonction Simplifier le maillage ? Cliquez avec le " -#~ "bouton droit de la souris sur le modèle et sélectionnez Simplifier le " -#~ "modèle." - -#~ msgid "" -#~ "Slicing Parameter Table\n" -#~ "Did you know that you can view all objects/parts on a table and change " -#~ "settings for each object/part?" -#~ msgstr "" -#~ "Tableau des paramètres de découpe\n" -#~ "Saviez-vous que vous pouvez afficher tous les objets/pièces sur un " -#~ "tableau et modifier les paramètres de chaque objet/pièce ?" - -#~ msgid "" -#~ "Split to Objects/Parts\n" -#~ "Did you know that you can split a big object into small ones for easy " -#~ "colorizing or printing?" -#~ msgstr "" -#~ "Séparer en objets/parties\n" -#~ "Saviez-vous que vous pouvez séparer un gros objet en petits objets pour " -#~ "les colorier ou les imprimer facilement ?" - -#~ msgid "" -#~ "Subtract a Part\n" -#~ "Did you know that you can subtract one mesh from another using the " -#~ "Negative part modifier? That way you can, for example, create easily " -#~ "resizable holes directly in Orca Slicer." -#~ msgstr "" -#~ "Soustraire une pièce\n" -#~ "Saviez-vous que vous pouviez soustraire un maillage d’un autre à l’aide " -#~ "du modificateur de partie négative ? De cette façon, vous pouvez, par " -#~ "exemple, créer des trous facilement redimensionnables directement dans " -#~ "Orca Slicer." - -#~ msgid "" -#~ "STEP\n" -#~ "Did you know that you can improve your print quality by slicing a STEP " -#~ "file instead of an STL?\n" -#~ "Orca Slicer supports slicing STEP files, providing smoother results than " -#~ "a lower resolution STL. Give it a try!" -#~ msgstr "" -#~ "STEP\n" -#~ "Saviez-vous que vous pouvez améliorer votre qualité d'impression en " -#~ "découpant un fichier .step au lieu d'un .stl ?\n" -#~ "Orca Slicer prend en charge le découpage des fichiers .step, offrant des " -#~ "résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" - -#~ msgid "" -#~ "Z seam location\n" -#~ "Did you know that you can customize the location of the Z seam, and even " -#~ "paint it on your print, to have it in a less visible location? This " -#~ "improves the overall look of your model. Check it out!" -#~ msgstr "" -#~ "Emplacement de la couture Z\n" -#~ "Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, " -#~ "et même la peindre manuelle sur votre impression pour le placer dans un " -#~ "endroit moins visible ? Cela améliore l'aspect général de votre modèle. " -#~ "Jetez-y un coup d'œil !" - -#~ msgid "" -#~ "Fine-tuning for flow rate\n" -#~ "Did you know that flow rate can be fine-tuned for even better-looking " -#~ "prints? Depending on the material, you can improve the overall finish of " -#~ "the printed model by doing some fine-tuning." -#~ msgstr "" -#~ "Réglage fin du débit\n" -#~ "Saviez-vous que le débit peut être réglé avec précision pour obtenir des " -#~ "impressions encore plus belles ? En fonction du matériau, vous pouvez " -#~ "améliorer la finition générale du modèle imprimé en procédant à un " -#~ "réglage fin." - -#~ msgid "" -#~ "Split your prints into plates\n" -#~ "Did you know that you can split a model that has a lot of parts into " -#~ "individual plates ready to print? This will simplify the process of " -#~ "keeping track of all the parts." -#~ msgstr "" -#~ "Divisez vos impressions en plateaux\n" -#~ "Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " -#~ "pièces en plateaux individuels prêts à être imprimés ? Cela simplifie le " -#~ "processus de suivi de toutes les pièces." - -#~ msgid "" -#~ "Speed up your print with Adaptive Layer Height\n" -#~ "Did you know that you can print a model even faster, by using the " -#~ "Adaptive Layer Height option? Check it out!" -#~ msgstr "" -#~ "Accélérez votre impression grâce à la Hauteur de Couche Adaptative\n" -#~ "Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " -#~ "utilisant l'option Adaptive Layer Height ? Jetez-y un coup d'œil !" - -#~ msgid "" -#~ "Support painting\n" -#~ "Did you know that you can paint the location of your supports? This " -#~ "feature makes it easy to place the support material only on the sections " -#~ "of the model that actually need it." -#~ msgstr "" -#~ "Peinture de support\n" -#~ "Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " -#~ "caractéristique permet de placer facilement le matériau de support " -#~ "uniquement sur les sections du modèle qui en ont réellement besoin." - -#~ msgid "" -#~ "Different types of supports\n" -#~ "Did you know that you can choose from multiple types of supports? Tree " -#~ "supports work great for organic models, while saving filament and " -#~ "improving print speed. Check them out!" -#~ msgstr "" -#~ "Différents types de supports\n" -#~ "Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? " -#~ "Les supports arborescents fonctionnent parfaitement pour les modèles " -#~ "organiques tout en économisant du filament et en améliorant la vitesse " -#~ "d'impression. Découvrez-les !" - -#~ msgid "" -#~ "Printing Silk Filament\n" -#~ "Did you know that Silk filament needs special consideration to print it " -#~ "successfully? Higher temperature and lower speed are always recommended " -#~ "for the best results." -#~ msgstr "" -#~ "Impression de filament Soie\n" -#~ "Saviez-vous que le filament soie nécessite une attention particulière " -#~ "pour une impression réussie ? Une température plus élevée et une vitesse " -#~ "plus faible sont toujours recommandées pour obtenir les meilleurs " -#~ "résultats." - -#~ msgid "" -#~ "Brim for better adhesion\n" -#~ "Did you know that when printing models have a small contact interface " -#~ "with the printing surface, it's recommended to use a brim?" -#~ msgstr "" -#~ "Bordure pour une meilleure adhésion\n" -#~ "Saviez-vous que lorsque les modèles imprimés ont une faible interface de " -#~ "contact avec la surface d'impression, il est recommandé d'utiliser une " -#~ "bordure ?" - -#~ msgid "" -#~ "Set parameters for multiple objects\n" -#~ "Did you know that you can set slicing parameters for all selected objects " -#~ "at one time?" -#~ msgstr "" -#~ "Définir les paramètres de plusieurs objets\n" -#~ "Saviez-vous que vous pouvez définir des paramètres de découpe pour tous " -#~ "les objets sélectionnés en une seule fois ?" - -#~ msgid "" -#~ "Stack objects\n" -#~ "Did you know that you can stack objects as a whole one?" -#~ msgstr "" -#~ "Empiler des objets\n" -#~ "Saviez-vous que vous pouvez empiler des objets pour n'en former qu'un?" - -#~ msgid "" -#~ "Flush into support/objects/infill\n" -#~ "Did you know that you can save the wasted filament by flushing them into " -#~ "support/objects/infill during filament change?" -#~ msgstr "" -#~ "Purger dans les supports/les objets/le remplissage\n" -#~ "Saviez-vous que vous pouvez réduire le filament gaspillé en le purgeant " -#~ "dans les supports/les objets/le remplissage lors des changements de " -#~ "filament ?" - -#~ msgid "" -#~ "Improve strength\n" -#~ "Did you know that you can use more wall loops and higher sparse infill " -#~ "density to improve the strength of the model?" -#~ msgstr "" -#~ "Améliorer la solidité\n" -#~ "Saviez-vous que vous pouvez définir un plus grand nombre de périmètre et " -#~ "une densité de remplissage plus élevée pour améliorer la résistance du " -#~ "modèle ?" - -#~ msgid "" -#~ "When need to print with the printer door opened\n" -#~ "Did you know that opening the printer door can reduce the probability of " -#~ "extruder/hotend clogging when printing lower temperature filament with a " -#~ "higher enclosure temperature. More info about this in the Wiki." -#~ msgstr "" -#~ "Quand il faut imprimer avec la porte de l’imprimante ouverte\n" -#~ "Saviez-vous que l’ouverture de la porte de l’imprimante peut réduire la " -#~ "probabilité de blocage de l’extrudeuse/du réchauffeur lors de " -#~ "l’impression de filament à basse température avec une température de " -#~ "boîtier plus élevée. Plus d’informations à ce sujet dans le Wiki." - -#~ msgid "" -#~ "Avoid warping\n" -#~ "Did you know that when printing materials that are prone to warping such " -#~ "as ABS, appropriately increasing the heatbed temperature can reduce the " -#~ "probability of warping." -#~ msgstr "" -#~ "Éviter la déformation\n" -#~ "Saviez-vous que lors de l’impression de matériaux susceptibles de se " -#~ "déformer, tels que l’ABS, une augmentation appropriée de la température " -#~ "du plateau chauffant peut réduire la probabilité de déformation." - #~ msgid "" #~ "File size exceeds the 100MB upload limit. Please upload your file through " #~ "the panel." diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index c6abe9ecb4..ebcfec825a 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,6 +71,9 @@ msgstr "Okos kitöltési szög" msgid "On overhangs only" msgstr "Csak túlnyúlásokon" +msgid "Auto support threshold angle: " +msgstr "Automatikus támasz szögének határértéke: " + msgid "Circle" msgstr "Kör" @@ -90,9 +93,6 @@ msgstr "Csak a(z) „%1%“ által kijelölt felületeken történik festés" msgid "Highlight faces according to overhang angle." msgstr "Felületek kiemelése a túlnyúlási szögnek megfelelően." -msgid "Auto support threshold angle: " -msgstr "Automatikus támasz szögének határértéke: " - msgid "No auto support" msgstr "Nincs automatikus támasz" @@ -1932,6 +1932,9 @@ msgstr "Modell egyszerűsítése" msgid "Center" msgstr "Közép" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Folyamatbeállítások szerkesztése" @@ -4082,6 +4085,15 @@ msgstr "Teljes idő" msgid "Total cost" msgstr "Total cost" +msgid "up to" +msgstr "legfeljebb" + +msgid "above" +msgstr "felett" + +msgid "from" +msgstr "ettől" + msgid "Color Scheme" msgstr "Színséma" @@ -4145,12 +4157,12 @@ msgstr "Filamentcserék száma" msgid "Cost" msgstr "Költség" -msgid "Print" -msgstr "Nyomtatás" - msgid "Color change" msgstr "Színváltás" +msgid "Print" +msgstr "Nyomtatás" + msgid "Printer" msgstr "Nyomtató" @@ -4334,7 +4346,7 @@ msgstr "Térfogat:" msgid "Size:" msgstr "Méret:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4774,6 +4786,18 @@ msgstr "2. menet" msgid "Flow rate test - Pass 2" msgstr "Anyagáramlás teszt - 2. menet" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Anyagáramlás" @@ -6036,14 +6060,6 @@ msgstr "Több részből álló objektumot észleltünk" msgid "The file does not contain any geometry data." msgstr "A fájl nem tartalmaz geometriai adatokat." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Az objektum túl nagy" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6051,6 +6067,9 @@ msgstr "" "Úgy tűnik, hogy az objektum túl nagy. Szeretnéd átméretezni, hogy " "illeszkedjen a nyomtatótér méretéhez?" +msgid "Object too large" +msgstr "Az objektum túl nagy" + msgid "Export STL file:" msgstr "STL fájl exportálása:" @@ -6418,6 +6437,9 @@ msgstr "Szeretnéd folytatni?" msgid "Language selection" msgstr "Nyelv kiválasztása" +msgid "Switching application language while some presets are modified." +msgstr "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak." + msgid "Changing application language" msgstr "Alkalmazás nyelvének megváltoztatása" @@ -7528,8 +7550,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Ha a nyomtatófej nélküli timelapse engedélyezve van, javasoljuk, hogy " "helyezz el a tálcán egy „Timelapse törlőtornyot“. Ehhez kattints jobb " @@ -8384,8 +8406,11 @@ msgstr "Objektumok listája" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Beillesztés a vágólapról" @@ -8435,18 +8460,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Az oldalsáv összecsukása/kinyitása" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+Bármilyen nyíl gomb" msgid "Movement in camera space" msgstr "Mozgás a kameratérben" +msgid "⌥+Left mouse button" +msgstr "⌥+Bal egérgomb" + msgid "Select a part" msgstr "Válassz egy tárgyat" +msgid "⌘+Left mouse button" +msgstr "⌘+Bal egérgomb" + msgid "Select multiple objects" msgstr "Több objektum kijelölése" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Bármelyik nyílgomb" + +msgid "Alt+Left mouse button" +msgstr "Alt+bal egérgomb" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Bal egérgomb" + msgid "Shift+Left mouse button" msgstr "Shift+Bal egérgomb" @@ -8549,12 +8589,24 @@ msgstr "Plater" msgid "Move: press to snap by 1mm" msgstr "Move: press to snap by 1mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+Egérgörgő" + msgid "Support/Color Painting: adjust pen radius" msgstr "Támasz/Színfestés: toll méretének beállítása" +msgid "⌥+Mouse wheel" +msgstr "⌥+Egérgörgő" + msgid "Support/Color Painting: adjust section position" msgstr "Támasz/Színfestés: metszet pozíciójának beállítása" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Egérgörgő" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Egérgörgő" + msgid "Gizmo" msgstr "Gizmo" @@ -9585,14 +9637,31 @@ msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9667,10 +9736,11 @@ msgstr "Áthidalás áramlási sebessége" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Csökkentsd kicsit ezt az értéket (például 0,9-re), hogy ezzel csökkentsd az " -"áthidaláshoz használt anyag mennyiségét, és a megereszkedést" msgid "Internal bridge flow ratio" msgstr "" @@ -9678,7 +9748,11 @@ msgstr "" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" @@ -9686,15 +9760,20 @@ msgstr "Felső felület anyagáramlása" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Ez a beállítás a felső szilárd kitöltésnél használt anyag mennyiségét " -"befolyásolja. Kis mértékben csökkentve simább felület érhető el vele." msgid "Bottom surface flow ratio" msgstr "" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Precise wall" @@ -9828,9 +9907,25 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" msgid "mm/s or %" @@ -9839,8 +9934,14 @@ msgstr "mm/s vagy %" msgid "External" msgstr "" -msgid "Speed of bridge and completely overhang wall" -msgstr "Az áthidalások és a teljesen túlnyúló falak nyomtatási sebessége" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9849,8 +9950,8 @@ msgid "Internal" msgstr "" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" msgid "Brim width" @@ -10378,6 +10479,17 @@ msgstr "" "értéknek a változtatásával szép sík felületet kaphatsz, ha úgy tapasztalod, " "hogy túl sok vagy kevés az anyagáramlás." +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Nyomáselőtolás engedélyezése" @@ -10552,18 +10664,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Filament betöltési idő" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Az új filament betöltésének ideje filament váltáskor, csak statisztikai " -"célokra van használva." msgid "Filament unload time" msgstr "Filament kitöltési idő" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"A régi filament kitöltésének ideje filament váltáskor, csak statisztikai " -"célokra van használva." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10686,15 +10809,6 @@ msgstr "Az utolsó hűtési lépés sebessége" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "A hűtési lépések fokozatosan felgyorsulnak erre a sebességre." -msgid "" -"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." -msgstr "" -"Az az idő, amíg a nyomtató vezérlő szoftvere (vagy a Multi Material Unit " -"2.0) új filamentet tölt be a szerszámcsere során (a T kód végrehajtásakor). " -"Ezt az időt a G-kód időbecslő hozzáadja a teljes nyomtatási időhöz." - msgid "Ramming parameters" msgstr "Tömörítési paraméterek" @@ -10705,16 +10819,6 @@ msgstr "" "Ez a karakterlánc a TömörítésPárbeszéd ablakban szerkeszthető, és a " "tömörítéssel kapcsolatos paramétereket tartalmaz." -msgid "" -"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." -msgstr "" -"Az az idő, amíg a nyomtató vezérlő szoftvere (vagy a Multi Material Unit " -"2.0) az előző Filamenet kiüríti a szerszámcsere során (a T kód " -"végrehajtásakor). Ezt az időt a G-kód időbecslő hozzáadja a teljes " -"nyomtatási időhöz." - msgid "Enable ramming for multitool setups" msgstr "" @@ -11041,10 +11145,10 @@ msgstr "Teljes ventilátor fordulatszám ennél a rétegnél" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -11107,7 +11211,10 @@ msgstr "Apró rések szűrése" msgid "Layers and Perimeters" msgstr "Rétegek és peremek" -msgid "Filter out gaps smaller than the threshold specified" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" msgid "" @@ -13030,29 +13137,40 @@ msgid "Activate temperature control" msgstr "" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" msgid "Chamber temperature" msgstr "Kamra hőmérséklete" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on. At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials, the actual chamber temperature should not " -"be high to avoid clogs, so 0 (turned off) is highly recommended." msgid "Nozzle temperature for layers after the initial one" msgstr "Fúvóka hőmérséklete az első réteg után" @@ -14876,8 +14994,8 @@ msgstr "" "Szeretnéd felülírni?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -16118,54 +16236,70 @@ msgstr "" "Tudtad, hogy a vetemedésre hajlamos anyagok (például ABS) nyomtatásakor a " "tárgyasztal hőmérsékletének növelése csökkentheti a vetemedés valószínűségét?" -#~ msgid "up to" -#~ msgstr "legfeljebb" - -#~ msgid "above" -#~ msgstr "felett" - -#~ msgid "from" -#~ msgstr "ettől" - -#~ msgid "Switching application language while some presets are modified." +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" #~ msgstr "" -#~ "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak." +#~ "Csökkentsd kicsit ezt az értéket (például 0,9-re), hogy ezzel csökkentsd " +#~ "az áthidaláshoz használt anyag mennyiségét, és a megereszkedést" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Ez a beállítás a felső szilárd kitöltésnél használt anyag mennyiségét " +#~ "befolyásolja. Kis mértékben csökkentve simább felület érhető el vele." -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Az áthidalások és a teljesen túlnyúló falak nyomtatási sebessége" -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+Bármilyen nyíl gomb" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Az új filament betöltésének ideje filament váltáskor, csak statisztikai " +#~ "célokra van használva." -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Bal egérgomb" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "A régi filament kitöltésének ideje filament váltáskor, csak statisztikai " +#~ "célokra van használva." -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Bal egérgomb" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Az az idő, amíg a nyomtató vezérlő szoftvere (vagy a Multi Material Unit " +#~ "2.0) új filamentet tölt be a szerszámcsere során (a T kód " +#~ "végrehajtásakor). Ezt az időt a G-kód időbecslő hozzáadja a teljes " +#~ "nyomtatási időhöz." -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+Bármelyik nyílgomb" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Az az idő, amíg a nyomtató vezérlő szoftvere (vagy a Multi Material Unit " +#~ "2.0) az előző Filamenet kiüríti a szerszámcsere során (a T kód " +#~ "végrehajtásakor). Ezt az időt a G-kód időbecslő hozzáadja a teljes " +#~ "nyomtatási időhöz." -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+bal egérgomb" - -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Bal egérgomb" - -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Egérgörgő" - -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Egérgörgő" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Egérgörgő" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Egérgörgő" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on. At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials, the actual chamber " +#~ "temperature should not be high to avoid clogs, so 0 (turned off) is " +#~ "highly recommended." #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index ec66aa6dd4..bb1ee27c0c 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,6 +74,9 @@ msgstr "Angolo riempimento intelligente" msgid "On overhangs only" msgstr "Solo sulle sporgenze" +msgid "Auto support threshold angle: " +msgstr "Angolo di soglia per supporto automatico: " + msgid "Circle" msgstr "Cerchio" @@ -93,9 +96,6 @@ msgstr "Consente di pitturare solo sulle sfaccettature selezionate da: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Evidenziare le facce in base all'angolo di sporgenza." -msgid "Auto support threshold angle: " -msgstr "Angolo di soglia per supporto automatico: " - msgid "No auto support" msgstr "Nessun supporto automatico" @@ -1995,6 +1995,9 @@ msgstr "Semplifica Modello" msgid "Center" msgstr "Centro" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Modifica le impostazioni del processo" @@ -4181,6 +4184,15 @@ msgstr "Tempo totale" msgid "Total cost" msgstr "Costo totale" +msgid "up to" +msgstr "fino a" + +msgid "above" +msgstr "sopra" + +msgid "from" +msgstr "da" + msgid "Color Scheme" msgstr "Schema Colore" @@ -4244,12 +4256,12 @@ msgstr "Tempi cambio filamento" msgid "Cost" msgstr "Costo" -msgid "Print" -msgstr "Stampa" - msgid "Color change" msgstr "Cambio colore" +msgid "Print" +msgstr "Stampa" + msgid "Printer" msgstr "Stampante" @@ -4433,7 +4445,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Dimensione:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4875,6 +4887,18 @@ msgstr "Passaggio 2" msgid "Flow rate test - Pass 2" msgstr "Test di portata - Pass 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Flusso" @@ -6165,14 +6189,6 @@ msgstr "È stato rilevato un oggetto con più parti" msgid "The file does not contain any geometry data." msgstr "Il file non contiene dati geometrici." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Oggetto troppo grande" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6180,6 +6196,9 @@ msgstr "" "L'oggetto sembra troppo grande. Vuoi ridimensionarlo per adattarlo " "automaticamente al piatto di stampa?" +msgid "Object too large" +msgstr "Oggetto troppo grande" + msgid "Export STL file:" msgstr "Esporta file STL:" @@ -6558,6 +6577,9 @@ msgstr "Vuoi continuare?" msgid "Language selection" msgstr "Selezione lingua" +msgid "Switching application language while some presets are modified." +msgstr "Cambio lingua applicazione durante la modifica di alcuni preset." + msgid "Changing application language" msgstr "Modifica lingua applicazione" @@ -7680,8 +7702,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Quando si registra un timelapse senza testa di stampa, si consiglia di " "aggiungere un \"Timelapse Torre di pulizia\"\n" @@ -8555,8 +8577,11 @@ msgstr "Elenco oggetti" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importa geometrie da file STL/STEP/3MF/OBJ/AMF." -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Incolla dagli appunti" @@ -8608,18 +8633,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Riduci/Espandi barra laterale" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+Freccia qualsiasi" msgid "Movement in camera space" msgstr "Movimento nello spazio della camera" +msgid "⌥+Left mouse button" +msgstr "⌥+Tasto sinistro mouse" + msgid "Select a part" msgstr "Seleziona parte" +msgid "⌘+Left mouse button" +msgstr "⌘+Tasto sinistro del mouse" + msgid "Select multiple objects" msgstr "Seleziona più oggetti" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+qualsiasi freccia" + +msgid "Alt+Left mouse button" +msgstr "Alt+tasto sinistro del mouse" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Tasto sinistro del mouse" + msgid "Shift+Left mouse button" msgstr "Shift+tasto sinistro mouse" @@ -8722,12 +8762,24 @@ msgstr "Piano" msgid "Move: press to snap by 1mm" msgstr "Sposta: premi per muovere di 1 mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+Rotella mouse" + msgid "Support/Color Painting: adjust pen radius" msgstr "Supporto/Pittura a colori: regolare il raggio della penna" +msgid "⌥+Mouse wheel" +msgstr "⌥+Rotella mouse" + msgid "Support/Color Painting: adjust section position" msgstr "Supporto/Pittura a colori: regolare la posizione della sezione" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Rotellina del mouse" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Rotella del mouse" + msgid "Gizmo" msgstr "Gizmo" @@ -8937,8 +8989,8 @@ msgid "" msgstr "" "È stato rilevato un aggiornamento importante che deve essere eseguito prima " "che la stampa possa continuare. Si desidera aggiornare ora? È possibile " -"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" -"\"." +"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna " +"firmware\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -9812,25 +9864,32 @@ msgid "Apply gap fill" msgstr "Applicare il riempimento degli spazi vuoti" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"Abilita il riempimento degli spazi vuoti per le superfici selezionate. La " -"lunghezza minima degli spazi vuoti che verranno riempiti può essere " -"controllata dall'opzione Filtra piccoli spazi vuoti di seguito.\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Opzioni:\n" -"1. Ovunque: applica il riempimento degli spazi vuoti alle superfici solide " -"superiori, inferiori e interne\n" -"2. Superfici superiore e inferiore: applica il riempimento degli spazi vuoti " -"solo alle superfici superiore e inferiore\n" -"3. Da nessuna parte: disabilita il riempimento degli spazi vuoti\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "Ovunque" @@ -9905,10 +9964,11 @@ msgstr "Flusso del Bridge" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la quantità " -"di materiale per il ponte e migliorare l'abbassamento dello stesso" msgid "Internal bridge flow ratio" msgstr "Rapporto Flusso del bridge interno" @@ -9916,30 +9976,33 @@ msgstr "Rapporto Flusso del bridge interno" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Questo valore governa lo spessore dello strato del bridge interno. Questo è " -"il primo strato sopra il riempimento. Riduci leggermente questo valore (ad " -"esempio 0.9) per migliorare la qualità della superficie sopra il riempimento." msgid "Top surface flow ratio" msgstr "Rapporto di portata superficiale superiore" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"solido superiore. Puoi diminuirlo leggermente per avere una finitura " -"superficiale liscia" msgid "Bottom surface flow ratio" msgstr "Rapporto di flusso della superficie inferiore" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"solido inferiore" msgid "Precise wall" msgstr "Parete precisa" @@ -10118,12 +10181,26 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "Rallenta per perimetri arricciati" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Attivare questa opzione per rallentare la stampa nelle aree in cui possono " -"esistere potenziali perimetri arricciati" msgid "mm/s or %" msgstr "mm/s o %" @@ -10131,8 +10208,14 @@ msgstr "mm/s o %" msgid "External" msgstr "Esterno" -msgid "Speed of bridge and completely overhang wall" -msgstr "Indica la velocità per i bridge e le pareti completamente a sbalzo." +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -10141,11 +10224,9 @@ msgid "Internal" msgstr "Interno" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Velocità del ponte interno. Se il valore è espresso in percentuale, verrà " -"calcolato in base al bridge_speed. Il valore predefinito è 150%." msgid "Brim width" msgstr "Larghezza brim" @@ -10801,6 +10882,17 @@ msgstr "" "regolare questo valore per ottenere una superficie piatta se si verifica una " "leggera sovra-estrusione o sotto-estrusione." +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Abilita l'avanzamento della pressione" @@ -10980,18 +11072,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Durata caricamento filamento" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Tempo di caricamento del nuovo filamento quando si cambia filamento, solo a " -"fini statistici." msgid "Filament unload time" msgstr "Durata scaricamento filamento" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Tempo di scarico vecchio filamento quando si cambia filamento, solo a fini " -"statistici." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11131,16 +11234,6 @@ msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" "I movimenti di raffreddamento accelerano gradualmente verso questa velocità." -msgid "" -"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." -msgstr "" -"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per " -"il caricamento del nuovo filamento durante il cambio strumento (quando viene " -"eseguito il T code). Questa durata viene aggiunta alla stima del tempo " -"totale di stampa del G-code." - msgid "Ramming parameters" msgstr "Parametri del ramming" @@ -11151,16 +11244,6 @@ msgstr "" "Questa stringa viene controllata da RammingDialog e contiene parametri " "specifici del ramming." -msgid "" -"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." -msgstr "" -"Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) per " -"lo scaricamento del nuovo filamento durante il cambio strumento (quando " -"viene eseguito il T code). Questa durata viene aggiunta alla stima del tempo " -"totale di stampa del G-code." - msgid "Enable ramming for multitool setups" msgstr "Abilita ramming per configurazioni multitool" @@ -11532,16 +11615,17 @@ msgstr "Massima velocità della ventola al layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocità della ventola aumenterà linearmente da zero al livello " -"\"close_fan_the_first_x_layers\" al massimo al livello \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" verrà ignorato se inferiore a " -"\"close_fan_the_first_x_layers\", nel qual caso la ventola funzionerà alla " -"massima velocità consentita al livello \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" al massimo al livello " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" verrà ignorato se " +"inferiore a \"close_fan_the_first_x_layers\", nel qual caso la ventola " +"funzionerà alla massima velocità consentita al livello " +"\"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "" @@ -11609,8 +11693,11 @@ msgstr "Filtra i piccoli spazi vuoti" msgid "Layers and Perimeters" msgstr "Layer e Perimetri" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Filtra gli spazi più piccoli della soglia specificata" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13742,34 +13829,40 @@ msgid "Activate temperature control" msgstr "Attiva il controllo della temperatura" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Abilitare questa opzione per il controllo della temperatura della camera. Un " -"comando M191 verrà aggiunto prima di \"machine_start_gcode\"\n" -"Comandi G-code: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Temperatura della camera di stampa" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Una temperatura della camera più elevata può aiutare a sopprimere o ridurre " -"la deformazione e potenzialmente portare a una maggiore forza di adesione " -"tra gli strati per materiali ad alta temperatura come ABS, ASA, PC, PA e " -"così via. Allo stesso tempo, la filtrazione dell'aria di ABS e ASA " -"peggiorerà. Mentre per PLA, PETG, TPU, PVA e altri materiali a bassa " -"temperatura, la temperatura effettiva della camera non dovrebbe essere " -"elevata per evitare intasamenti, quindi 0 che sta per spegnimento è " -"altamente raccomandato" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura del nozzle dopo il primo layer" @@ -15744,8 +15837,8 @@ msgstr "" "Vuoi riscriverlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Rinomineremo le preimpostazioni come \"Tipo di fornitore seriale @printer " @@ -17061,53 +17154,137 @@ msgstr "" "aumentare in modo appropriato la temperatura del piano riscaldato può " "ridurre la probabilità di deformazione." -#~ msgid "up to" -#~ msgstr "fino a" +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "Abilita il riempimento degli spazi vuoti per le superfici selezionate. La " +#~ "lunghezza minima degli spazi vuoti che verranno riempiti può essere " +#~ "controllata dall'opzione Filtra piccoli spazi vuoti di seguito.\n" +#~ "\n" +#~ "Opzioni:\n" +#~ "1. Ovunque: applica il riempimento degli spazi vuoti alle superfici " +#~ "solide superiori, inferiori e interne\n" +#~ "2. Superfici superiore e inferiore: applica il riempimento degli spazi " +#~ "vuoti solo alle superfici superiore e inferiore\n" +#~ "3. Da nessuna parte: disabilita il riempimento degli spazi vuoti\n" -#~ msgid "above" -#~ msgstr "sopra" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la " +#~ "quantità di materiale per il ponte e migliorare l'abbassamento dello " +#~ "stesso" -#~ msgid "from" -#~ msgstr "da" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Questo valore governa lo spessore dello strato del bridge interno. Questo " +#~ "è il primo strato sopra il riempimento. Riduci leggermente questo valore " +#~ "(ad esempio 0.9) per migliorare la qualità della superficie sopra il " +#~ "riempimento." -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "Cambio lingua applicazione durante la modifica di alcuni preset." +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Questo fattore influisce sulla quantità di materiale per il riempimento " +#~ "solido superiore. Puoi diminuirlo leggermente per avere una finitura " +#~ "superficiale liscia" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Questo fattore influisce sulla quantità di materiale per il riempimento " +#~ "solido inferiore" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Attivare questa opzione per rallentare la stampa nelle aree in cui " +#~ "possono esistere potenziali perimetri arricciati" -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+Freccia qualsiasi" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Indica la velocità per i bridge e le pareti completamente a sbalzo." -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Tasto sinistro mouse" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Velocità del ponte interno. Se il valore è espresso in percentuale, verrà " +#~ "calcolato in base al bridge_speed. Il valore predefinito è 150%." -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Tasto sinistro del mouse" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Tempo di caricamento del nuovo filamento quando si cambia filamento, solo " +#~ "a fini statistici." -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+qualsiasi freccia" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Tempo di scarico vecchio filamento quando si cambia filamento, solo a " +#~ "fini statistici." -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+tasto sinistro del mouse" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) " +#~ "per il caricamento del nuovo filamento durante il cambio strumento " +#~ "(quando viene eseguito il T code). Questa durata viene aggiunta alla " +#~ "stima del tempo totale di stampa del G-code." -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Tasto sinistro del mouse" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Tempo per il firmware della stampante (o per l'unità Multi Material 2.0) " +#~ "per lo scaricamento del nuovo filamento durante il cambio strumento " +#~ "(quando viene eseguito il T code). Questa durata viene aggiunta alla " +#~ "stima del tempo totale di stampa del G-code." -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Rotella mouse" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Filtra gli spazi più piccoli della soglia specificata" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Rotella mouse" +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Abilitare questa opzione per il controllo della temperatura della camera. " +#~ "Un comando M191 verrà aggiunto prima di \"machine_start_gcode\"\n" +#~ "Comandi G-code: M141/M191 S(0-255)" -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Rotellina del mouse" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Rotella del mouse" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Una temperatura della camera più elevata può aiutare a sopprimere o " +#~ "ridurre la deformazione e potenzialmente portare a una maggiore forza di " +#~ "adesione tra gli strati per materiali ad alta temperatura come ABS, ASA, " +#~ "PC, PA e così via. Allo stesso tempo, la filtrazione dell'aria di ABS e " +#~ "ASA peggiorerà. Mentre per PLA, PETG, TPU, PVA e altri materiali a bassa " +#~ "temperatura, la temperatura effettiva della camera non dovrebbe essere " +#~ "elevata per evitare intasamenti, quindi 0 che sta per spegnimento è " +#~ "altamente raccomandato" #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " @@ -17164,12 +17341,13 @@ msgstr "" #~ "nostro wiki.\n" #~ "\n" #~ "Di solito la calibrazione non è necessaria. Quando si avvia una stampa a " -#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del flusso" -#~ "\" selezionata nel menu di avvio della stampa, la stampante seguirà il " -#~ "vecchio modo, calibrando il filamento prima della stampa; Quando si avvia " -#~ "una stampa multicolore/materiale, la stampante utilizzerà il parametro di " -#~ "compensazione predefinito per il filamento durante ogni cambio di " -#~ "filamento, che avrà un buon risultato nella maggior parte dei casi.\n" +#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del " +#~ "flusso\" selezionata nel menu di avvio della stampa, la stampante seguirà " +#~ "il vecchio modo, calibrando il filamento prima della stampa; Quando si " +#~ "avvia una stampa multicolore/materiale, la stampante utilizzerà il " +#~ "parametro di compensazione predefinito per il filamento durante ogni " +#~ "cambio di filamento, che avrà un buon risultato nella maggior parte dei " +#~ "casi.\n" #~ "\n" #~ "Si prega di notare che ci sono alcuni casi che renderanno il risultato " #~ "della calibrazione non affidabile: utilizzo di una piastra di texture per " @@ -17566,8 +17744,8 @@ msgstr "" #~ msgstr "Nessun layer sparso (SPERIMENTALE)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "Rinomineremo le impostazioni predefinite come \"Tipo di fornitore seriale " diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 16b11846d9..83e11fca49 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,6 +74,9 @@ msgstr "自動充填角度" msgid "On overhangs only" msgstr "オーバーハングのみ" +msgid "Auto support threshold angle: " +msgstr "自動サポート角度閾値" + msgid "Circle" msgstr "円形" @@ -93,9 +96,6 @@ msgstr "%1%で選択した面だけをペイントする" msgid "Highlight faces according to overhang angle." msgstr "オーバーハングの角度によりハイライト" -msgid "Auto support threshold angle: " -msgstr "自動サポート角度閾値" - msgid "No auto support" msgstr "自動サポート無し" @@ -1942,6 +1942,9 @@ msgstr "モデルを簡略化" msgid "Center" msgstr "センター" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "プロセス設定を編集" @@ -4023,6 +4026,15 @@ msgstr "総時間" msgid "Total cost" msgstr "Total cost" +msgid "up to" +msgstr "最大" + +msgid "above" +msgstr "以上" + +msgid "from" +msgstr "from" + msgid "Color Scheme" msgstr "配色スキーム" @@ -4086,12 +4098,12 @@ msgstr "フィラメント交換回数" msgid "Cost" msgstr "コスト" -msgid "Print" -msgstr "造形する" - msgid "Color change" msgstr "色変更" +msgid "Print" +msgstr "造形する" + msgid "Printer" msgstr "プリンター" @@ -4275,7 +4287,7 @@ msgstr "ボリューム" msgid "Size:" msgstr "サイズ:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4711,6 +4723,18 @@ msgstr "Pass 2" msgid "Flow rate test - Pass 2" msgstr "Flow rate test - Pass 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Flow rate" @@ -5951,19 +5975,14 @@ msgstr "複数のパーツを含むオブジェクトが検出されました" msgid "The file does not contain any geometry data." msgstr "このファイルにはジオメトリデータが含まれていません。" -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "オブジェクトが大きすぎます" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" msgstr "オブジェクトが大きすぎのようです、ベッドに合わせてスケールしますか?" +msgid "Object too large" +msgstr "オブジェクトが大きすぎます" + msgid "Export STL file:" msgstr "STLファイルをエクスポート:" @@ -6333,6 +6352,9 @@ msgstr "続行しますか?" msgid "Language selection" msgstr "言語選択" +msgid "Switching application language while some presets are modified." +msgstr "アプリケーション言語を切り替える時に、プリセットの変更があります" + msgid "Changing application language" msgstr "言語を変更" @@ -7398,8 +7420,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "ヘッド無しのタイムラプスビデオを録画する時に、「タイムラプスプライムタワー」" "を追加してください。プレートで右クリックして、「プリミティブを追加」→「タイム" @@ -8230,8 +8252,11 @@ msgstr "オブジェクト一覧" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "貼り付け" @@ -8278,18 +8303,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "サイドバーを展開/隠す" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+↑↓←→" msgid "Movement in camera space" msgstr "オブジェクト移動" +msgid "⌥+Left mouse button" +msgstr "⌥+マウス左ボタン" + msgid "Select a part" msgstr "パーツを選択" +msgid "⌘+Left mouse button" +msgstr "⌘+マウス左ボタン" + msgid "Select multiple objects" msgstr "複数のオブジェクトを選択" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+↑↓←→" + +msgid "Alt+Left mouse button" +msgstr "Alt+マウス左ボタン" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+マウス左ボタン" + msgid "Shift+Left mouse button" msgstr "Shift + マウス左ボタン" @@ -8392,12 +8432,24 @@ msgstr "準備" msgid "Move: press to snap by 1mm" msgstr "1mm単位で移動" +msgid "⌘+Mouse wheel" +msgstr "⌘+マウスホイール" + msgid "Support/Color Painting: adjust pen radius" msgstr "サポート/色塗り: 半径のサイズ" +msgid "⌥+Mouse wheel" +msgstr "⌥+マウスホイール" + msgid "Support/Color Painting: adjust section position" msgstr "サポート/色塗り: 断面の位置" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+マウスホイール" + +msgid "Alt+Mouse wheel" +msgstr "Alt+マウスホイール" + msgid "Gizmo" msgstr "Gizmo" @@ -9382,14 +9434,31 @@ msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9459,10 +9528,11 @@ msgstr "ブリッジ流量" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"この値を少し (例えば 0.9) 小さくし、ブリッジ用に押出し量を減らし、たるみを防" -"ぎます。" msgid "Internal bridge flow ratio" msgstr "" @@ -9470,7 +9540,11 @@ msgstr "" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" @@ -9478,15 +9552,20 @@ msgstr "Top surface flow ratio" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have a smooth surface finish." msgid "Bottom surface flow ratio" msgstr "" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Precise wall" @@ -9618,9 +9697,25 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" msgid "mm/s or %" @@ -9629,8 +9724,14 @@ msgstr "mm/s or %" msgid "External" msgstr "" -msgid "Speed of bridge and completely overhang wall" -msgstr "ブリッジを造形する時に速度です。" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9639,8 +9740,8 @@ msgid "Internal" msgstr "" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" msgid "Brim width" @@ -10153,6 +10254,17 @@ msgstr "" "フィラメントは温度により体積が変わります。この設定で押出流量を比例的に調整し" "ます。 0.95 ~ 1.05の間で設定していください。" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Enable pressure advance" @@ -10320,18 +10432,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "フィラメントロード時間" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"フィラメントを入れ替える時に、フィラメントをロードする時間です、統計目的に使" -"用されています。" msgid "Filament unload time" msgstr "フィラメントアンロード時間" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"フィラメントを入れ替える時に、フィラメントをアンロードする時間です、統計目的" -"に使用されています。" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10454,15 +10577,6 @@ msgstr "最後の冷却移動の速度" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "冷却動作は、この速度に向かって徐々に加速しています。" -msgid "" -"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." -msgstr "" -"ツールの変更中(Tコードの実行時)にプリンターファームウェア(またはMulti " -"Material Unit 2.0)が新しいフィラメントをロードする時間。 この時間は、Gコード" -"時間推定プログラムによって合計プリント時間に追加されます。" - msgid "Ramming parameters" msgstr "ラミングパラメーター" @@ -10473,15 +10587,6 @@ msgstr "" "この文字列はラミングダイアログで編集され、ラミング固有のパラメーターが含まれ" "ています。" -msgid "" -"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." -msgstr "" -"ツールチェンジ中(Tコードの実行時)にプリンターファームウェア(またはMulti " -"Material Unit 2.0)がフィラメントをアンロードする時間。 この時間は、Gコード時" -"間予測プログラムによって合計プリント予測時間に追加されます。" - msgid "Enable ramming for multitool setups" msgstr "マルチツールのセットアップでラミングを有効にする" @@ -10801,10 +10906,10 @@ msgstr "最大回転速度の積層" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -10864,7 +10969,10 @@ msgstr "Filter out tiny gaps" msgid "Layers and Perimeters" msgstr "積層と境界" -msgid "Filter out gaps smaller than the threshold specified" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" msgid "" @@ -12730,29 +12838,40 @@ msgid "Activate temperature control" msgstr "" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" msgid "Chamber temperature" msgstr "Chamber temperature" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on. At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials, the actual chamber temperature should not " -"be high to avoid clogs, so 0 (turned off) is highly recommended." msgid "Nozzle temperature for layers after the initial one" msgstr "1層目後のノズル温度" @@ -14575,8 +14694,8 @@ msgstr "" "Do you want to rewrite it?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -15794,53 +15913,68 @@ msgstr "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping?" -#~ msgid "up to" -#~ msgstr "最大" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "この値を少し (例えば 0.9) 小さくし、ブリッジ用に押出し量を減らし、たるみを" +#~ "防ぎます。" -#~ msgid "above" -#~ msgstr "以上" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have a smooth surface finish." -#~ msgid "from" -#~ msgstr "from" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "ブリッジを造形する時に速度です。" -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "アプリケーション言語を切り替える時に、プリセットの変更があります" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "フィラメントを入れ替える時に、フィラメントをロードする時間です、統計目的に" +#~ "使用されています。" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "フィラメントを入れ替える時に、フィラメントをアンロードする時間です、統計目" +#~ "的に使用されています。" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "ツールの変更中(Tコードの実行時)にプリンターファームウェア(またはMulti " +#~ "Material Unit 2.0)が新しいフィラメントをロードする時間。 この時間は、G" +#~ "コード時間推定プログラムによって合計プリント時間に追加されます。" -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+↑↓←→" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "ツールチェンジ中(Tコードの実行時)にプリンターファームウェア(または" +#~ "Multi Material Unit 2.0)がフィラメントをアンロードする時間。 この時間は、" +#~ "Gコード時間予測プログラムによって合計プリント予測時間に追加されます。" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+マウス左ボタン" - -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+マウス左ボタン" - -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+↑↓←→" - -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+マウス左ボタン" - -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+マウス左ボタン" - -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+マウスホイール" - -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+マウスホイール" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+マウスホイール" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+マウスホイール" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on. At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials, the actual chamber " +#~ "temperature should not be high to avoid clogs, so 0 (turned off) is " +#~ "highly recommended." #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index d9d2118ec3..27b80dc0f3 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2024-05-31 23:33+0900\n" "Last-Translator: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github." "com>\n" @@ -79,6 +79,9 @@ msgstr "스마트 채우기 각도" msgid "On overhangs only" msgstr "돌출부에만 칠하기" +msgid "Auto support threshold angle: " +msgstr "자동 지지대 임계값 각도: " + msgid "Circle" msgstr "원" @@ -98,9 +101,6 @@ msgstr "\"%1%\"에서 선택한 영역에만 칠하기 허용" msgid "Highlight faces according to overhang angle." msgstr "돌출부 각도에 따라 면을 강조 표시합니다." -msgid "Auto support threshold angle: " -msgstr "자동 지지대 임계값 각도: " - msgid "No auto support" msgstr "자동 지지대 비활성" @@ -1962,6 +1962,9 @@ msgstr "모델 단순화" msgid "Center" msgstr "중앙" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "프로세스 설정에서 편집" @@ -4052,6 +4055,15 @@ msgstr "시간 합계" msgid "Total cost" msgstr "총 비용" +msgid "up to" +msgstr "까지" + +msgid "above" +msgstr "위에" + +msgid "from" +msgstr "부터" + msgid "Color Scheme" msgstr "색 구성표" @@ -4115,12 +4127,12 @@ msgstr "필라멘트 변경 시간" msgid "Cost" msgstr "비용" -msgid "Print" -msgstr "출력" - msgid "Color change" msgstr "색 변경" +msgid "Print" +msgstr "출력" + msgid "Printer" msgstr "프린터" @@ -4304,7 +4316,7 @@ msgstr "용량:" msgid "Size:" msgstr "크기:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4744,6 +4756,18 @@ msgstr "2차 테스트" msgid "Flow rate test - Pass 2" msgstr "유량 테스트 - 2차" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "유량" @@ -5998,19 +6022,14 @@ msgstr "여러 부품으로 구성된 개체가 감지되었습니다" msgid "The file does not contain any geometry data." msgstr "파일에 형상 데이터가 포함되어 있지 않습니다." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "개체가 너무 큼" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" msgstr "개체가 너무 큽니다. 자동으로 고온 베드에 맞게 크기를 줄이시겠습니까?" +msgid "Object too large" +msgstr "개체가 너무 큼" + msgid "Export STL file:" msgstr "STL 파일 내보내기:" @@ -6380,6 +6399,9 @@ msgstr "계속하시겠습니까?" msgid "Language selection" msgstr "언어 선택" +msgid "Switching application language while some presets are modified." +msgstr "일부 사전 설정이 수정되는 동안 응용 프로그램 언어를 전환합니다." + msgid "Changing application language" msgstr "응용 프로그램 언어 변경" @@ -7460,8 +7482,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 닦기 타워\"를 추가하는 것이 좋" "습니다\n" @@ -8312,8 +8334,11 @@ msgstr "개체 목록" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "STL/STEP/3MF/OBJ/AMF 파일에서 형상 데이터 가져오기" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "클립보드에서 붙여넣기" @@ -8363,18 +8388,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "사이드바 접기/펼치기" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+아무 화살표" msgid "Movement in camera space" msgstr "카메라 공간에서 이동" +msgid "⌥+Left mouse button" +msgstr "⌥+마우스 왼쪽 버튼" + msgid "Select a part" msgstr "부품 선택" +msgid "⌘+Left mouse button" +msgstr "⌘+마우스 왼쪽 버튼" + msgid "Select multiple objects" msgstr "여러 개체 선택" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+화살표" + +msgid "Alt+Left mouse button" +msgstr "Alt+마우스 왼쪽 버튼" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+마우스 왼쪽 버튼" + msgid "Shift+Left mouse button" msgstr "Shift+마우스 왼쪽 버튼" @@ -8477,12 +8517,24 @@ msgstr "출력판" msgid "Move: press to snap by 1mm" msgstr "이동: 눌러서 1mm씩 이동" +msgid "⌘+Mouse wheel" +msgstr "⌘+마우스 휠" + msgid "Support/Color Painting: adjust pen radius" msgstr "지지대/색상 칠하기: 펜 반경 조정" +msgid "⌥+Mouse wheel" +msgstr "⌥+마우스 휠" + msgid "Support/Color Painting: adjust section position" msgstr "지지대/색상 칠하기: 단면 위치 조정" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+마우스 휠" + +msgid "Alt+Mouse wheel" +msgstr "Alt+마우스 휠" + msgid "Gizmo" msgstr "도구 상자" @@ -9502,22 +9554,32 @@ msgid "Apply gap fill" msgstr "간격 채우기 적용" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"선택한 표면에 대해 간격 채우기를 활성화합니다. 채워질 최소 간격 길이는 아래" -"의 작은 간격 필터링 옵션에서 제어할 수 있습니다.\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"옵션:\n" -"1. 어디에서나: 상단, 하단 및 내부 솔리드 표면에 간격 채우기를 적용합니다.\n" -"2. 상단 및 하단 표면: 상단 및 하단 표면에만 간격 채우기를 적용합니다.\n" -"3. 아무데도: 간격 채우기를 비활성화합니다.\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "어디에나" @@ -9588,8 +9650,11 @@ msgstr "브릿지 유량 비율" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" -msgstr "이 값을 약간(예: 0.9) 줄여 브릿지의 압출량을 줄여 처짐을 개선합니다" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Internal bridge flow ratio" msgstr "내부 브릿지 유량 비율" @@ -9597,27 +9662,33 @@ msgstr "내부 브릿지 유량 비율" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"이 값은 내부 브릿지 레이어의 두께를 결정합니다. 이것은 드문 채우기 위의 첫 번" -"째 레이어입니다. 드문 채우기보다 표면 품질을 향상시키려면 이 값을 약간(예: " -"0.9) 줄입니다." msgid "Top surface flow ratio" msgstr "상단 표면 유량 비율" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"이 값은 상단 꽉찬 내부 채우기의 재료의 양에 영향을 미칩니다. 부드러운 표면 마" -"감을 위해 약간 줄여도 됩니다" msgid "Bottom surface flow ratio" msgstr "하단 표면 유량 비율" -msgid "This factor affects the amount of material for bottom solid infill" -msgstr "이 값은 하단 꽉찬 내부 채우기의 재료의 양에 영향을 미칩니다" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Precise wall" msgstr "정밀한 벽" @@ -9784,12 +9855,26 @@ msgstr "돌출부 정도에 따라 출력 속도를 낮추려면 이 옵션을 msgid "Slow down for curled perimeters" msgstr "꺾여 있는 둘레에서 감속" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"꺾여 있는 둘레가 있을 수 있는 영역에서 출력 속도를 낮추려면 이 옵션을 활성화" -"하세요" msgid "mm/s or %" msgstr "mm/s 또는 %" @@ -9797,8 +9882,14 @@ msgstr "mm/s 또는 %" msgid "External" msgstr "외부" -msgid "Speed of bridge and completely overhang wall" -msgstr "브릿지와 돌출부 벽의 속도" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9807,11 +9898,9 @@ msgid "Internal" msgstr "내부" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"내부 브릿지 속도. 값을 백분율로 표시하면 외부 브릿지 속도를 기준으로 계산됩니" -"다. 기본값은 150%입니다." msgid "Brim width" msgstr "브림 너비" @@ -10420,6 +10509,17 @@ msgstr "" "범위는 0.95와 1.05 사이입니다. 약간의 과대압출 또는 과소압출이 있을 때 이 값" "을 조정하여 평평한 표면을 얻을 수 있습니다" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "프레셔 어드밴스 활성화" @@ -10601,15 +10701,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "필라멘트 넣기 시간" -msgid "Time to load new filament when switch filament. For statistics only" -msgstr "필라멘트 교체 시 새 필라멘트를 넣는 시간입니다. 통계에만 사용됩니다" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" msgid "Filament unload time" msgstr "필라멘트 빼기 시간" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"필라멘트를 교체할 때 기존 필라멘트를 빼는 시간입니다. 통계에만 사용됩니다" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10747,15 +10861,6 @@ msgstr "마지막 냉각 이동 속도" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "냉각 동작은 이 속도를 향해 점진적으로 감속됩니다." -msgid "" -"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." -msgstr "" -"툴 교체 중(T 코드 실행 시) 프린터 펌웨어(또는 Multi Material Unit 2.0)가 새 " -"필라멘트를 넣는 시간입니다. 이 시간은 G코드 시간 계산기에 의해 총 출력 시간" -"에 추가됩니다." - msgid "Ramming parameters" msgstr "래밍 매개변수" @@ -10765,15 +10870,6 @@ msgid "" msgstr "" "이 문자열은 RammingDialog에 의해 편집되며 래밍 관련 매개변수를 포함합니다." -msgid "" -"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." -msgstr "" -"툴 교체 중(T 코드 실행 시) 프린터 펌웨어(또는 Multi Material Unit 2.0)가 필라" -"멘트를 빼는 시간입니다. 이 시간은 G코드 시간 계산기에 의해 총 출력 시간에 추" -"가됩니다." - msgid "Enable ramming for multitool setups" msgstr "다중 압출기 설정을 위한 래밍 활성화" @@ -11120,10 +11216,10 @@ msgstr "팬 최대 속도 레이어" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" " "의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 " @@ -11191,8 +11287,11 @@ msgstr "작은 간격 필터링" msgid "Layers and Perimeters" msgstr "레이어와 윤곽선" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "지정된 임계값보다 작은 간격을 필터링합니다" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13238,31 +13337,40 @@ msgid "Activate temperature control" msgstr "온도 제어 활성화" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"챔버 온도 제어를 위해 이 옵션을 활성화합니다. M191 명령이 " -"\"machine_start_gcode\" 앞에 추가됩니다.\n" -"G코드 명령: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "챔버 온도" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"챔버 온도가 높을수록 뒤틀림을 억제하거나 줄이는 데 도움이 될 수 있으며 잠재적" -"으로 ABS, ASA, PC, PA 등과 같은 고온 재료의 층간 결합 강도가 높아질 수 있습니" -"다. 동시에 ABS 및 ASA의 공기 여과는 더욱 악화됩니다. PLA, PETG, TPU, PVA 및 " -"기타 저온 재료의 경우 막힘을 방지하려면 실제 챔버 온도가 높지 않아야 하므로 " -"꺼짐을 의미하는 0을 적극 권장합니다" msgid "Nozzle temperature for layers after the initial one" msgstr "초기 레이어 이후의 노즐 온도" @@ -15157,8 +15265,8 @@ msgstr "" "다시 작성하시겠습니까?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -16422,53 +16530,120 @@ msgstr "" "ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 " "높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" -#~ msgid "up to" -#~ msgstr "까지" +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "선택한 표면에 대해 간격 채우기를 활성화합니다. 채워질 최소 간격 길이는 아" +#~ "래의 작은 간격 필터링 옵션에서 제어할 수 있습니다.\n" +#~ "\n" +#~ "옵션:\n" +#~ "1. 어디에서나: 상단, 하단 및 내부 솔리드 표면에 간격 채우기를 적용합니" +#~ "다.\n" +#~ "2. 상단 및 하단 표면: 상단 및 하단 표면에만 간격 채우기를 적용합니다.\n" +#~ "3. 아무데도: 간격 채우기를 비활성화합니다.\n" -#~ msgid "above" -#~ msgstr "위에" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "이 값을 약간(예: 0.9) 줄여 브릿지의 압출량을 줄여 처짐을 개선합니다" -#~ msgid "from" -#~ msgstr "부터" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "이 값은 내부 브릿지 레이어의 두께를 결정합니다. 이것은 드문 채우기 위의 " +#~ "첫 번째 레이어입니다. 드문 채우기보다 표면 품질을 향상시키려면 이 값을 약" +#~ "간(예: 0.9) 줄입니다." -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "일부 사전 설정이 수정되는 동안 응용 프로그램 언어를 전환합니다." +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "이 값은 상단 꽉찬 내부 채우기의 재료의 양에 영향을 미칩니다. 부드러운 표" +#~ "면 마감을 위해 약간 줄여도 됩니다" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "이 값은 하단 꽉찬 내부 채우기의 재료의 양에 영향을 미칩니다" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "꺾여 있는 둘레가 있을 수 있는 영역에서 출력 속도를 낮추려면 이 옵션을 활성" +#~ "화하세요" -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+아무 화살표" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "브릿지와 돌출부 벽의 속도" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+마우스 왼쪽 버튼" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "내부 브릿지 속도. 값을 백분율로 표시하면 외부 브릿지 속도를 기준으로 계산" +#~ "됩니다. 기본값은 150%입니다." -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+마우스 왼쪽 버튼" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "필라멘트 교체 시 새 필라멘트를 넣는 시간입니다. 통계에만 사용됩니다" -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+화살표" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "필라멘트를 교체할 때 기존 필라멘트를 빼는 시간입니다. 통계에만 사용됩니다" -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+마우스 왼쪽 버튼" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "툴 교체 중(T 코드 실행 시) 프린터 펌웨어(또는 Multi Material Unit 2.0)가 " +#~ "새 필라멘트를 넣는 시간입니다. 이 시간은 G코드 시간 계산기에 의해 총 출력 " +#~ "시간에 추가됩니다." -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+마우스 왼쪽 버튼" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "툴 교체 중(T 코드 실행 시) 프린터 펌웨어(또는 Multi Material Unit 2.0)가 " +#~ "필라멘트를 빼는 시간입니다. 이 시간은 G코드 시간 계산기에 의해 총 출력 시" +#~ "간에 추가됩니다." -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+마우스 휠" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "지정된 임계값보다 작은 간격을 필터링합니다" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+마우스 휠" +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "챔버 온도 제어를 위해 이 옵션을 활성화합니다. M191 명령이 " +#~ "\"machine_start_gcode\" 앞에 추가됩니다.\n" +#~ "G코드 명령: M141/M191 S(0-255)" -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+마우스 휠" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+마우스 휠" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "챔버 온도가 높을수록 뒤틀림을 억제하거나 줄이는 데 도움이 될 수 있으며 잠" +#~ "재적으로 ABS, ASA, PC, PA 등과 같은 고온 재료의 층간 결합 강도가 높아질 " +#~ "수 있습니다. 동시에 ABS 및 ASA의 공기 여과는 더욱 악화됩니다. PLA, PETG, " +#~ "TPU, PVA 및 기타 저온 재료의 경우 막힘을 방지하려면 실제 챔버 온도가 높지 " +#~ "않아야 하므로 꺼짐을 의미하는 0을 적극 권장합니다" #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " @@ -16913,8 +17088,8 @@ msgstr "" #~ msgstr "드문 레이어 없음(실험적)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 48573c2b04..8b0635b100 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,6 +74,9 @@ msgstr "Slim vullen hoek" msgid "On overhangs only" msgstr "Alleen op overhangen" +msgid "Auto support threshold angle: " +msgstr "Maximale hoek automatische ondersteuning: " + msgid "Circle" msgstr "Cirkel" @@ -93,9 +96,6 @@ msgstr "Staat alleen schilderen toe op facetten geselecteerd met: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Gebieden markeren op basis van overhangende hoek." -msgid "Auto support threshold angle: " -msgstr "Maximale hoek automatische ondersteuning: " - msgid "No auto support" msgstr "Geen automatische ondersteuning" @@ -110,11 +110,12 @@ msgstr "Op zijde leggen" #, boost-format msgid "" -"Filament count exceeds the maximum number that painting tool supports. only the first %1% " -"filaments will be available in painting tool." +"Filament count exceeds the maximum number that painting tool supports. only " +"the first %1% filaments will be available in painting tool." msgstr "" -"Het aantal filamenten overschrijdt het maximale aantal dat het tekengereedschap " -"ondersteunt. Alleen de eerste %1% filamenten zijn beschikbaar in de tekentool." +"Het aantal filamenten overschrijdt het maximale aantal dat het " +"tekengereedschap ondersteunt. Alleen de eerste %1% filamenten zijn " +"beschikbaar in de tekentool." msgid "Color Painting" msgstr "Kleuren schilderen" @@ -522,7 +523,8 @@ msgstr "Snij met behulp van vlak" msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" msgstr "" -"hiet-gevormde randen worden veroorzaakt door snijgereedschap: wil je dit nu herstellen?" +"hiet-gevormde randen worden veroorzaakt door snijgereedschap: wil je dit nu " +"herstellen?" msgid "Repairing model object" msgstr "Model object repareren" @@ -544,11 +546,11 @@ msgstr "Decimeren verhouding" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is highly recommended " -"to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is " +"highly recommended to simplify the model." msgstr "" -"Het verwerken van model '%1%' met meer dan 1 miljoen driehoeken kan traag zijn. Het wordt " -"sterk aanbevolen om het model te vereenvoudigen." +"Het verwerken van model '%1%' met meer dan 1 miljoen driehoeken kan traag " +"zijn. Het wordt sterk aanbevolen om het model te vereenvoudigen." msgid "Simplify model" msgstr "Model vereenvoudigen" @@ -558,7 +560,8 @@ msgstr "Vereenvoudigen" msgid "Simplification is currently only allowed when a single part is selected" msgstr "" -"Vereenvoudiging is momenteel alleen toegestaan wanneer één enkel onderdeel is geselecteerd" +"Vereenvoudiging is momenteel alleen toegestaan wanneer één enkel onderdeel " +"is geselecteerd" msgid "Error" msgstr "Fout" @@ -717,7 +720,8 @@ msgid "Advanced" msgstr "Geavanceerd" msgid "" -"The text cannot be written using the selected font. Please try choosing a different font." +"The text cannot be written using the selected font. Please try choosing a " +"different font." msgstr "" msgid "Embossed text cannot contain only white spaces." @@ -761,7 +765,8 @@ msgid "Click to change text into object part." msgstr "Klik om tekst in objectgedeelte te veranderen." msgid "You can't change a type of the last solid part of the object." -msgstr "U kunt het type van het laatste onderdeel van een object niet wijzigen." +msgstr "" +"U kunt het type van het laatste onderdeel van een object niet wijzigen." msgctxt "EmbossOperation" msgid "Cut" @@ -871,7 +876,8 @@ msgstr "Ongeldige stijl." #, boost-format msgid "Style \"%1%\" can't be used and will be removed from a list." -msgstr "Stijl \"%1%\" kan niet worden gebruikt en wordt uit de lijst verwijderd." +msgstr "" +"Stijl \"%1%\" kan niet worden gebruikt en wordt uit de lijst verwijderd." msgid "Unset italic" msgstr "" @@ -992,11 +998,12 @@ msgstr "" #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Application selected a similar one(\"%2%\"). You " -"have to specify font for enable edit text." +"Can't load exactly same font(\"%1%\"). Application selected a similar " +"one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Kan niet exact hetzelfde lettertype laden(\"%1%\"). Er is een vergelijkbaar lettertype(\"%2%" -"\") geselecteerd. U moet een lettertype opgeven om tekst te kunnen bewerken." +"Kan niet exact hetzelfde lettertype laden(\"%1%\"). Er is een vergelijkbaar " +"lettertype(\"%2%\") geselecteerd. U moet een lettertype opgeven om tekst te " +"kunnen bewerken." msgid "No symbol" msgstr "" @@ -1111,7 +1118,9 @@ msgstr "" msgid "Path can't be healed from selfintersection and multiple points." msgstr "" -msgid "Final shape constains selfintersection or multiple points with same coordinate." +msgid "" +"Final shape constains selfintersection or multiple points with same " +"coordinate." msgstr "" #, boost-format @@ -1337,7 +1346,8 @@ msgid "%1% was replaced with %2%" msgstr "%1% werd vervangen door %2%" msgid "The configuration may be generated by a newer version of OrcaSlicer." -msgstr "De configuratie was mogelijks met een nieuwere versie Orcaslicer gemaakt." +msgstr "" +"De configuratie was mogelijks met een nieuwere versie Orcaslicer gemaakt." msgid "Some values have been replaced. Please check them:" msgstr "Sommige waarden zijn aangepast. Controleer deze alstublieft:" @@ -1352,28 +1362,32 @@ msgid "Machine" msgstr "Machine" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "Het onfiguratiepakket werd geladen, maar sommige waarden werden niet herkend." +msgstr "" +"Het onfiguratiepakket werd geladen, maar sommige waarden werden niet herkend." #, boost-format -msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "Configuratiebestand “%1%” werd geladen, maar sommige waarden werden niet herkend." +msgid "" +"Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "" +"Configuratiebestand “%1%” werd geladen, maar sommige waarden werden niet " +"herkend." msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be " -"appreciated if you report the issue to our team." +"OrcaSlicer will terminate because of running out of memory.It may be a bug. " +"It will be appreciated if you report the issue to our team." msgstr "" -"OrcaSlicer zal sluiten, omdat het geen geheugen meer heeft. Dit kan een bug zijn. Ons team " -"een rapport schrijven over deze fout wordt erg gewaardeerd." +"OrcaSlicer zal sluiten, omdat het geen geheugen meer heeft. Dit kan een bug " +"zijn. Ons team een rapport schrijven over deze fout wordt erg gewaardeerd." msgid "Fatal error" msgstr "Fatale fout" msgid "" -"OrcaSlicer will terminate because of a localization error. It will be appreciated if you " -"report the specific scenario this issue happened." +"OrcaSlicer will terminate because of a localization error. It will be " +"appreciated if you report the specific scenario this issue happened." msgstr "" -"OrcaSlicer zal sluiten door een vertalingsfout. Ons team een rapport schrijven over de " -"situatie waar dit zich voor deed wordt erg gewaardeerd." +"OrcaSlicer zal sluiten door een vertalingsfout. Ons team een rapport " +"schrijven over de situatie waar dit zich voor deed wordt erg gewaardeerd." msgid "Critical error" msgstr "Kritieke fout" @@ -1399,11 +1413,12 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "Verbinding met %s is mislukt! [SN: %s, code=%s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " +"features.\n" "Click Yes to install it now." msgstr "" -"OrcaSlicer heeft het MicroSoft WebView2 Runtime nodig om bepaalde functies in werking te " -"stellen.\n" +"OrcaSlicer heeft het MicroSoft WebView2 Runtime nodig om bepaalde functies " +"in werking te stellen.\n" "Klik Ja om het nu te installeren." msgid "WebView2 Runtime" @@ -1425,7 +1440,8 @@ msgstr "Configuratie wordt geladen" #, c-format, boost-format msgid "Click to download new version in default browser: %s" -msgstr "Klik hier om de nieuwe versie te downloaden in je standaard browser: %s" +msgstr "" +"Klik hier om de nieuwe versie te downloaden in je standaard browser: %s" msgid "The Orca Slicer needs an upgrade" msgstr "Orca Slicer heeft een upgrade nodig" @@ -1439,7 +1455,8 @@ msgstr "Informatie" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will not be affected." +"Please note, application settings will be lost, but printer profiles will " +"not be affected." msgstr "" msgid "Rebuild" @@ -1470,11 +1487,11 @@ msgid "Some presets are modified." msgstr "Sommige voorinstellingen zijn aangepast." msgid "" -"You can keep the modifield presets to the new project, discard or save changes as new " -"presets." +"You can keep the modifield presets to the new project, discard or save " +"changes as new presets." msgstr "" -"Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project ze laten vervallen " -"of opslaan als nieuwe voorinstelling." +"Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project ze " +"laten vervallen of opslaan als nieuwe voorinstelling." msgid "User logged out" msgstr "Gebruiker is uitgelogd" @@ -1486,22 +1503,22 @@ msgid "Open Project" msgstr "Open project" msgid "" -"The version of Orca Slicer is too low and needs to be updated to the latest version before " -"it can be used normally" +"The version of Orca Slicer is too low and needs to be updated to the latest " +"version before it can be used normally" msgstr "" -"De versie van Orca Slicer is te oud en dient te worden bijgewerkt naar de nieuwste versie " -"voordat deze normaal kan worden gebruikt" +"De versie van Orca Slicer is te oud en dient te worden bijgewerkt naar de " +"nieuwste versie voordat deze normaal kan worden gebruikt" msgid "Privacy Policy Update" msgstr "Privacy Policy Update" msgid "" -"The number of user presets cached in the cloud has exceeded the upper limit, newly created " -"user presets can only be used locally." +"The number of user presets cached in the cloud has exceeded the upper limit, " +"newly created user presets can only be used locally." msgstr "" -"Het aantal gebruikersvoorinstellingen dat in de cloud is opgeslagen, heeft de bovengrens " -"overschreden. Nieuw gemaakte gebruikersvoorinstellingen kunnen alleen lokaal worden " -"gebruikt." +"Het aantal gebruikersvoorinstellingen dat in de cloud is opgeslagen, heeft " +"de bovengrens overschreden. Nieuw gemaakte gebruikersvoorinstellingen kunnen " +"alleen lokaal worden gebruikt." msgid "Sync user presets" msgstr "Synchroniseer gebruikersvoorinstellingen" @@ -1534,8 +1551,8 @@ msgid "Select a G-code file:" msgstr "Selecteer een G-code bestand:" msgid "" -"Could not start URL download. Destination folder is not set. Please choose destination " -"folder in Configuration Wizard." +"Could not start URL download. Destination folder is not set. Please choose " +"destination folder in Configuration Wizard." msgstr "" msgid "Import File" @@ -1696,9 +1713,9 @@ msgid "Orca String Hell" msgstr "" msgid "" -"This model features text embossment on the top surface. For optimal results, it is " -"advisable to set the 'One Wall Threshold(min_width_top_surface)' to 0 for the 'Only One " -"Wall on Top Surfaces' to work best.\n" +"This model features text embossment on the top surface. For optimal results, " +"it is advisable to set the 'One Wall Threshold(min_width_top_surface)' to 0 " +"for the 'Only One Wall on Top Surfaces' to work best.\n" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" @@ -1804,10 +1821,12 @@ msgid "Assemble" msgstr "Monteren" msgid "Assemble the selected objects to an object with multiple parts" -msgstr "Monteer de geselecteerde objecten tot een object bestaande uit meerdere delen" +msgstr "" +"Monteer de geselecteerde objecten tot een object bestaande uit meerdere delen" msgid "Assemble the selected objects to an object with single part" -msgstr "Monteer de geselecteerde objecten tot een object bestaande uit 1 onderdeel" +msgstr "" +"Monteer de geselecteerde objecten tot een object bestaande uit 1 onderdeel" msgid "Mesh boolean" msgstr "Mesh booleaan" @@ -1885,7 +1904,8 @@ msgid "Auto orientation" msgstr "Automatisch oriënteren" msgid "Auto orient the object to improve print quality." -msgstr "Automatisch oriënteren van het object om de printkwaliteit te verbeteren." +msgstr "" +"Automatisch oriënteren van het object om de printkwaliteit te verbeteren." msgid "Select All" msgstr "Alles selecteren" @@ -1932,6 +1952,9 @@ msgstr "Model vereenvoudigen" msgid "Center" msgstr "Centreren" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Procesinstellingen bewerken" @@ -1981,21 +2004,25 @@ msgstr[0] "%1$d non-manifold edges@%1$d non-manifold edges" msgstr[1] "%1$d non-manifold edges@%1$d non-manifold edges" msgid "Right click the icon to fix model object" -msgstr "Klik met de rechter muisknop op het pictogram om het modelobject te repareren" +msgstr "" +"Klik met de rechter muisknop op het pictogram om het modelobject te repareren" msgid "Right button click the icon to drop the object settings" -msgstr "Klik met de rechter muisknop op het pictogram om de objectinstellingen te verwijderen" +msgstr "" +"Klik met de rechter muisknop op het pictogram om de objectinstellingen te " +"verwijderen" msgid "Click the icon to reset all settings of the object" msgstr "Klik op het icoon om alle instellingen van het object terug te zetten" msgid "Right button click the icon to drop the object printable property" msgstr "" -"Klik met de rechter muisknop op het pictogram om de printbare eigenschap van het object te " -"verwijderen" +"Klik met de rechter muisknop op het pictogram om de printbare eigenschap van " +"het object te verwijderen" msgid "Click the icon to toggle printable property of the object" -msgstr "Klik op het pictogram om de afdruk eigenschap van het object in te schakelen" +msgstr "" +"Klik op het pictogram om de afdruk eigenschap van het object in te schakelen" msgid "Click the icon to edit support painting of the object" msgstr "Klik op het pictogram om de support van het object te bewerken" @@ -2023,12 +2050,15 @@ msgstr "Aanpasser toevoegen" msgid "Switch to per-object setting mode to edit modifier settings." msgstr "" -"Schakel over naar instellingsmodus per object om instellingen van de aanpassing te bewerken." +"Schakel over naar instellingsmodus per object om instellingen van de " +"aanpassing te bewerken." -msgid "Switch to per-object setting mode to edit process settings of selected objects." +msgid "" +"Switch to per-object setting mode to edit process settings of selected " +"objects." msgstr "" -"Schakel over naar de instellingsmodus per object om procesinstellingen van geselecteerde " -"objecten te bewerken." +"Schakel over naar de instellingsmodus per object om procesinstellingen van " +"geselecteerde objecten te bewerken." msgid "Delete connector from object which is a part of cut" msgstr "Verwijder verbinding van object dat deel is van een knipbewerking" @@ -2039,23 +2069,25 @@ msgstr "Verwijder vast onderdeel van object dat deel is van een knipbewerking" msgid "Delete negative volume from object which is a part of cut" msgstr "Verwijder negatief volume van object dat deel is van een knipbewerking" -msgid "To save cut correspondence you can delete all connectors from all related objects." +msgid "" +"To save cut correspondence you can delete all connectors from all related " +"objects." msgstr "" -"Om de knipovereenkomst op te slaan kan je alle verbindingen verwijderen uit gerelateerde " -"objecten." +"Om de knipovereenkomst op te slaan kan je alle verbindingen verwijderen uit " +"gerelateerde objecten." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate cut infornation " -"first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut infornation first." msgstr "" "This action will break a cut correspondence.\n" "After that, model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate cut information " -"first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut information first." msgid "Delete all connectors" msgstr "Verwijder alle vberbindingen" @@ -2064,7 +2096,9 @@ msgid "Deleting the last solid part is not allowed." msgstr "Het is niet toegestaand om het laaste vaste deel te verwijderen." msgid "The target object contains only one part and can not be splited." -msgstr "Het doelbestand bevat slechts 1 onderdeel en kan daarom niet worden opgesplitst." +msgstr "" +"Het doelbestand bevat slechts 1 onderdeel en kan daarom niet worden " +"opgesplitst." msgid "Assembly" msgstr "Montage" @@ -2105,18 +2139,22 @@ msgstr "Laag" msgid "Selection conflicts" msgstr "Selectieconflicten" -msgid "If first selected item is an object, the second one should also be object." +msgid "" +"If first selected item is an object, the second one should also be object." msgstr "" -"Als het eerste geselecteerde item een object is, dient het tweede item ook een object te " -"zijn." +"Als het eerste geselecteerde item een object is, dient het tweede item ook " +"een object te zijn." -msgid "If first selected item is a part, the second one should be part in the same object." +msgid "" +"If first selected item is a part, the second one should be part in the same " +"object." msgstr "" -"Als het eerst geselecteerde item een onderdeel is, moet het tweede een onderdeel van " -"hetzelfde object zijn." +"Als het eerst geselecteerde item een onderdeel is, moet het tweede een " +"onderdeel van hetzelfde object zijn." msgid "The type of the last solid object part is not to be changed." -msgstr "Het type van het laatste solide object onderdeel kan niet worden veranderd." +msgstr "" +"Het type van het laatste solide object onderdeel kan niet worden veranderd." msgid "Negative Part" msgstr "Negatief deel" @@ -2142,9 +2180,11 @@ msgstr "Hernoemen" msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" msgstr[0] "" -"De volgende model objecten zijn gerepareerd@De volgende model objecten zijn gerepareerd" +"De volgende model objecten zijn gerepareerd@De volgende model objecten zijn " +"gerepareerd" msgstr[1] "" -"De volgende model objecten zijn gerepareerd@De volgende model objecten zijn gerepareerd" +"De volgende model objecten zijn gerepareerd@De volgende model objecten zijn " +"gerepareerd" msgid "Failed to repair following model object" msgid_plural "Failed to repair following model objects" @@ -2173,7 +2213,9 @@ msgid "Invalid numeric." msgstr "Onjuist getal." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "één cel kan alleen naar één of meerdere cellen in dezelfde kolom worden gekopieerd" +msgstr "" +"één cel kan alleen naar één of meerdere cellen in dezelfde kolom worden " +"gekopieerd" msgid "multiple cells copy is not supported" msgstr "Het kopiëren van meerdere cellen wordt niet ondersteund." @@ -2387,7 +2429,8 @@ msgstr "AMS kalibreren..." msgid "A problem occurred during calibration. Click to view the solution." msgstr "" -"Er is een probleem opgetreden tijdens de kalibratie. Klik om de oplossing te bekijken." +"Er is een probleem opgetreden tijdens de kalibratie. Klik om de oplossing te " +"bekijken." msgid "Calibrate again" msgstr "Opnieuw kalibreren" @@ -2426,11 +2469,11 @@ msgid "Grab new filament" msgstr "Grab new filament" msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload " -"filaments." +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " +"load or unload filaments." msgstr "" -"Kies een AMS-sleuf en druk op de knop \"Laden\" of \"Lossen\" om automatisch filament te " -"laden of te ontladen." +"Kies een AMS-sleuf en druk op de knop \"Laden\" of \"Lossen\" om automatisch " +"filament te laden of te ontladen." msgid "Edit" msgstr "Bewerken" @@ -2461,25 +2504,29 @@ msgstr "Rangschikken" msgid "Arranging canceled." msgstr "Rangschikken geannuleerd." -msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." +msgid "" +"Arranging is done but there are unpacked items. Reduce spacing and try again." msgstr "" -"Rangschikken voltooid, sommige zaken konden niet geranschikt worden. Verklein de afstand en " -"probeer het opnieuw." +"Rangschikken voltooid, sommige zaken konden niet geranschikt worden. " +"Verklein de afstand en probeer het opnieuw." msgid "Arranging done." msgstr "Rangschikken voltooid." -msgid "Arrange failed. Found some exceptions when processing object geometries." +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"Het rangschikken is mislukt. Er zijn enkele uitzonderingen gevonden tijdens het verwerken " -"van het object." +"Het rangschikken is mislukt. Er zijn enkele uitzonderingen gevonden tijdens " +"het verwerken van het object." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single bed:\n" +"Arrangement ignored the following objects which can't fit into a single " +"bed:\n" "%s" msgstr "" -"De volgende objecten zijn niet gerangschikt omdat ze niet op het printbed passen:\n" +"De volgende objecten zijn niet gerangschikt omdat ze niet op het printbed " +"passen:\n" "%s" msgid "" @@ -2548,11 +2595,11 @@ msgid "Print file not found. please slice again." msgstr "Print file not found; please slice again." msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the model and " -"slice again." +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again." msgstr "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the model and " -"slice again." +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again." msgid "Failed to send the print job. Please try again." msgstr "Het verzenden van de printopdracht is mislukt. Probeer het opnieuw." @@ -2560,17 +2607,28 @@ msgstr "Het verzenden van de printopdracht is mislukt. Probeer het opnieuw." msgid "Failed to upload file to ftp. Please try again." msgstr "Failed to upload file to ftp. Please try again." -msgid "Check the current status of the bambu server by clicking on the link above." -msgstr "Check the current status of the Bambu Lab server by clicking on the link above." +msgid "" +"Check the current status of the bambu server by clicking on the link above." +msgstr "" +"Check the current status of the Bambu Lab server by clicking on the link " +"above." -msgid "The size of the print file is too large. Please adjust the file size and try again." -msgstr "The size of the print file is too large. Please adjust the file size and try again." +msgid "" +"The size of the print file is too large. Please adjust the file size and try " +"again." +msgstr "" +"The size of the print file is too large. Please adjust the file size and try " +"again." msgid "Print file not found, Please slice it again and send it for printing." msgstr "Print file not found; please slice it again and send it for printing." -msgid "Failed to upload print file to FTP. Please check the network status and try again." -msgstr "Failed to upload print file via FTP. Please check the network status and try again." +msgid "" +"Failed to upload print file to FTP. Please check the network status and try " +"again." +msgstr "" +"Failed to upload print file via FTP. Please check the network status and try " +"again." msgid "Sending print job over LAN" msgstr "Printopdracht verzenden via LAN" @@ -2596,10 +2654,13 @@ msgstr "Succesvol verzonden. Springt automatisch naar de apparaatpagina in %ss" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" -msgstr "Succesvol verzonden. Springt automatisch naar de volgende pagina in %ss" +msgstr "" +"Succesvol verzonden. Springt automatisch naar de volgende pagina in %ss" msgid "An SD card needs to be inserted before printing via LAN." -msgstr "Er moet een MicroSD-kaart worden geplaatst voordat er via LAN kan worden afgedrukt." +msgstr "" +"Er moet een MicroSD-kaart worden geplaatst voordat er via LAN kan worden " +"afgedrukt." msgid "Sending gcode file over LAN" msgstr "G-codebestand verzenden via LAN" @@ -2613,17 +2674,18 @@ msgstr "Succesvol verzonden. Sluit de huidige pagina in %s s" msgid "An SD card needs to be inserted before sending to printer." msgstr "" -"Een MicroSD-kaart moet worden geplaatst voordat er iets naar de printer wordt gestuurd." +"Een MicroSD-kaart moet worden geplaatst voordat er iets naar de printer " +"wordt gestuurd." msgid "Importing SLA archive" msgstr "Importing SLA archive" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA printer preset first " -"before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." msgstr "" -"The SLA archive doesn't contain any presets. Please activate some SLA printer presets first " -"before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer presets first before importing that SLA archive." msgid "Importing canceled." msgstr "Importing canceled." @@ -2632,11 +2694,11 @@ msgid "Importing done." msgstr "Importing done." msgid "" -"The imported SLA archive did not contain any presets. The current SLA presets were used as " -"fallback." +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." msgstr "" -"The imported SLA archive did not contain any presets. The current SLA presets were used as " -"fallback." +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." msgid "You cannot load SLA project with a multi-part object on the bed" msgstr "You cannot load an SLA project with a multi-part object on the bed" @@ -2687,11 +2749,12 @@ msgid "Libraries" msgstr "Bibliotheken" msgid "" -"This software uses open source components whose copyright and other proprietary rights " -"belong to their respective owners" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" msgstr "" -"Deze software maakt gebruik van open source-componenten waarvan het auteursrecht en andere " -"rechten eigendom zijn van hun respectievelijke eigenaren." +"Deze software maakt gebruik van open source-componenten waarvan het " +"auteursrecht en andere rechten eigendom zijn van hun respectievelijke " +"eigenaren." #, c-format, boost-format msgid "About %s" @@ -2707,10 +2770,15 @@ msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." -msgstr "PrusaSlicer is oorspronkelijk gebaseerd op Slic3r van Alessandro Ranellucci." +msgstr "" +"PrusaSlicer is oorspronkelijk gebaseerd op Slic3r van Alessandro Ranellucci." -msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." -msgstr "Slic3r is gemaakt door Alessandro Ranellucci met de hulp van vele andere bijdragers." +msgid "" +"Slic3r was created by Alessandro Ranellucci with the help of many other " +"contributors." +msgstr "" +"Slic3r is gemaakt door Alessandro Ranellucci met de hulp van vele andere " +"bijdragers." msgid "Version" msgstr "Versie" @@ -2748,7 +2816,9 @@ msgid "SN" msgstr "SN" msgid "Setting AMS slot information while printing is not supported" -msgstr "Het instellen van AMS slot informatie tijdens het printen wordt niet ondersteund." +msgstr "" +"Het instellen van AMS slot informatie tijdens het printen wordt niet " +"ondersteund." msgid "Factors of Flow Dynamics Calibration" msgstr "Factoren van Flow Dynamics Calibration" @@ -2789,13 +2859,14 @@ msgid "Dynamic flow calibration" msgstr "Dynamic flow calibration" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration results. Please fill " -"in the same values as the actual printing. They can be auto-filled by selecting a filament " -"preset." +"The nozzle temp and max volumetric speed will affect the calibration " +"results. Please fill in the same values as the actual printing. They can be " +"auto-filled by selecting a filament preset." msgstr "" -"De temperatuur van het mondstuk en de maximale volumetrische snelheid zijn van invloed op " -"de kalibratieresultaten. Voer dezelfde waarden in als bij de daadwerkelijke afdruk. Ze " -"kunnen automatisch worden gevuld door een voorinstelling voor filamenten te selecteren." +"De temperatuur van het mondstuk en de maximale volumetrische snelheid zijn " +"van invloed op de kalibratieresultaten. Voer dezelfde waarden in als bij de " +"daadwerkelijke afdruk. Ze kunnen automatisch worden gevuld door een " +"voorinstelling voor filamenten te selecteren." msgid "Nozzle Diameter" msgstr "Mondstukdiameter" @@ -2828,11 +2899,13 @@ msgid "Next" msgstr "Volgende" msgid "" -"Calibration completed. Please find the most uniform extrusion line on your hot bed like the " -"picture below, and fill the value on its left side into the factor K input box." +"Calibration completed. Please find the most uniform extrusion line on your " +"hot bed like the picture below, and fill the value on its left side into the " +"factor K input box." msgstr "" -"Kalibratie voltooid. Zoek de meest uniforme extrusielijn op uw hotbed, zoals op de " -"afbeelding hieronder, en vul de waarde aan de linkerkant in het invoervak factor K in." +"Kalibratie voltooid. Zoek de meest uniforme extrusielijn op uw hotbed, zoals " +"op de afbeelding hieronder, en vul de waarde aan de linkerkant in het " +"invoervak factor K in." msgid "Save" msgstr "Bewaar" @@ -2863,10 +2936,11 @@ msgstr "Stap" msgid "AMS Slots" msgstr "AMS Slots" -msgid "Note: Only the AMS slots loaded with the same material type can be selected." +msgid "" +"Note: Only the AMS slots loaded with the same material type can be selected." msgstr "" -"Opmerking: Alleen de AMS-slots die met hetzelfde materiaaltype zijn geladen, kunnen worden " -"geselecteerd." +"Opmerking: Alleen de AMS-slots die met hetzelfde materiaaltype zijn geladen, " +"kunnen worden geselecteerd." msgid "Enable AMS" msgstr "AMS inschakelen" @@ -2884,18 +2958,21 @@ msgid "Current Cabin humidity" msgstr "Current Cabin humidity" msgid "" -"Please change the desiccant when it is too wet. The indicator may not represent accurately " -"in following cases : when the lid is open or the desiccant pack is changed. it take hours " -"to absorb the moisture, low temperatures also slow down the process." +"Please change the desiccant when it is too wet. The indicator may not " +"represent accurately in following cases : when the lid is open or the " +"desiccant pack is changed. it take hours to absorb the moisture, low " +"temperatures also slow down the process." msgstr "" -"Please change the desiccant when it is too wet. The indicator may not represent accurately " -"in following cases: when the lid is open or the desiccant pack is changed. It takes a few " -"hours to absorb the moisture, and low temperatures also slow down the process." +"Please change the desiccant when it is too wet. The indicator may not " +"represent accurately in following cases: when the lid is open or the " +"desiccant pack is changed. It takes a few hours to absorb the moisture, and " +"low temperatures also slow down the process." -msgid "Config which AMS slot should be used for a filament used in the print job" +msgid "" +"Config which AMS slot should be used for a filament used in the print job" msgstr "" -"Configureer welke AMS-sleuf moet worden gebruikt voor een filament dat voor de " -"printopdracht wordt gebruikt." +"Configureer welke AMS-sleuf moet worden gebruikt voor een filament dat voor " +"de printopdracht wordt gebruikt." msgid "Filament used in this print job" msgstr "Filament gebruikt in deze printopdracht" @@ -2919,11 +2996,11 @@ msgid "Print with filaments mounted on the back of the chassis" msgstr "Print met filament op een externe spoel" msgid "" -"When the current material run out, the printer will continue to print in the following " -"order." +"When the current material run out, the printer will continue to print in the " +"following order." msgstr "" -"Als het huidige materiaal op is, gaat de printer verder met afdrukken in de volgende " -"volgorde." +"Als het huidige materiaal op is, gaat de printer verder met afdrukken in de " +"volgende volgorde." msgid "Group" msgstr "Group" @@ -2931,17 +3008,21 @@ msgstr "Group" msgid "The printer does not currently support auto refill." msgstr "De printer ondersteunt automatisch bijvullen momenteel niet." -msgid "AMS filament backup is not enabled, please enable it in the AMS settings." -msgstr "AMS filament backup is not enabled; please enable it in the AMS settings." +msgid "" +"AMS filament backup is not enabled, please enable it in the AMS settings." +msgstr "" +"AMS filament backup is not enabled; please enable it in the AMS settings." msgid "" -"If there are two identical filaments in AMS, AMS filament backup will be enabled. \n" -"(Currently supporting automatic supply of consumables with the same brand, material type, " -"and color)" +"If there are two identical filaments in AMS, AMS filament backup will be " +"enabled. \n" +"(Currently supporting automatic supply of consumables with the same brand, " +"material type, and color)" msgstr "" -"If there are two identical filaments in an AMS, AMS filament backup will be enabled. \n" -"(This currently supports automatic supply of consumables with the same brand, material " -"type, and color)" +"If there are two identical filaments in an AMS, AMS filament backup will be " +"enabled. \n" +"(This currently supports automatic supply of consumables with the same " +"brand, material type, and color)" msgid "DRY" msgstr "DRY" @@ -2956,74 +3037,78 @@ msgid "Insertion update" msgstr "Update gegevens bij invoeren" msgid "" -"The AMS will automatically read the filament information when inserting a new Bambu Lab " -"filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." msgstr "" -"De AMS zal automatisch de filamentinformatie lezen bij het plaatsen van een nieuw Bambu Lab " -"filament. Dit duurt ongeveer 20 seconden." +"De AMS zal automatisch de filamentinformatie lezen bij het plaatsen van een " +"nieuw Bambu Lab filament. Dit duurt ongeveer 20 seconden." msgid "" -"Note: if a new filament is inserted during printing, the AMS will not automatically read " -"any information until printing is completed." +"Note: if a new filament is inserted during printing, the AMS will not " +"automatically read any information until printing is completed." msgstr "" -"Opmerking: als er tijdens het printen een nieuw filament wordt geplaatst, zal het AMS niet " -"automatisch informatie lezen totdat het printen is voltooid." +"Opmerking: als er tijdens het printen een nieuw filament wordt geplaatst, " +"zal het AMS niet automatisch informatie lezen totdat het printen is voltooid." msgid "" -"When inserting a new filament, the AMS will not automatically read its information, leaving " -"it blank for you to enter manually." +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." msgstr "" -"Bij het laden van nieuw filament zal de informatie niet automatisch ingelezen worden door " -"de AMS, de informatie kan door uzelf worden ingegeven." +"Bij het laden van nieuw filament zal de informatie niet automatisch " +"ingelezen worden door de AMS, de informatie kan door uzelf worden ingegeven." msgid "Power on update" msgstr "Update gegevens bij aanzetten" msgid "" -"The AMS will automatically read the information of inserted filament on start-up. It will " -"take about 1 minute.The reading process will roll filament spools." +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." msgstr "" -"De AMS leest automatisch de informatie van het ingevoegde filament bij het opstarten. Dit " -"duurt ongeveer 1 minuut. Tijdens het leesproces zullen de filamentspoelen rollen." +"De AMS leest automatisch de informatie van het ingevoegde filament bij het " +"opstarten. Dit duurt ongeveer 1 minuut. Tijdens het leesproces zullen de " +"filamentspoelen rollen." msgid "" -"The AMS will not automatically read information from inserted filament during startup and " -"will continue to use the information recorded before the last shutdown." +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." msgstr "" -"De informatie van het geladen filament zal niet automatisch gelezen worden door de AMS " -"tijdens het opstarten. De tijdens de laatste keer uitzetten opgeslagen informatie zal " -"gebruikt worden." +"De informatie van het geladen filament zal niet automatisch gelezen worden " +"door de AMS tijdens het opstarten. De tijdens de laatste keer uitzetten " +"opgeslagen informatie zal gebruikt worden." msgid "Update remaining capacity" msgstr "Resterende capaciteit bijwerken" msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament info is " -"updated. During printing, remaining capacity will be updated automatically." +"The AMS will estimate Bambu filament's remaining capacity after the filament " +"info is updated. During printing, remaining capacity will be updated " +"automatically." msgstr "" -"De AMS zal een schatting maken van de resterende capaciteit van het Bambu-filament nadat de " -"filamentinformatie is bijgewerkt. Tijdens het afdrukken wordt de resterende capaciteit " -"automatisch bijgewerkt." +"De AMS zal een schatting maken van de resterende capaciteit van het Bambu-" +"filament nadat de filamentinformatie is bijgewerkt. Tijdens het afdrukken " +"wordt de resterende capaciteit automatisch bijgewerkt." msgid "AMS filament backup" msgstr "AMS filament backup" msgid "" -"AMS will continue to another spool with the same properties of filament automatically when " -"current filament runs out" +"AMS will continue to another spool with the same properties of filament " +"automatically when current filament runs out" msgstr "" -"AMS gaat automatisch verder met een andere spoel met dezelfde filament eigenschappen " -"wanneer het huidige filament op is." +"AMS gaat automatisch verder met een andere spoel met dezelfde filament " +"eigenschappen wanneer het huidige filament op is." msgid "Air Printing Detection" msgstr "Air Printing Detection" msgid "" -"Detects clogging and filament grinding, halting printing immediately to conserve time and " -"filament." +"Detects clogging and filament grinding, halting printing immediately to " +"conserve time and filament." msgstr "" -"Detects clogging and filament grinding, halting printing immediately to conserve time and " -"filament." +"Detects clogging and filament grinding, halting printing immediately to " +"conserve time and filament." msgid "File" msgstr "Bestand" @@ -3032,18 +3117,18 @@ msgid "Calibration" msgstr "Kalibratie" msgid "" -"Failed to download the plug-in. Please check your firewall settings and vpn software, check " -"and retry." +"Failed to download the plug-in. Please check your firewall settings and vpn " +"software, check and retry." msgstr "" -"Het downloaden van de plug-in is mislukt. Controleer je firewall-instellingen en VPN-" -"software en probeer het opnieuw." +"Het downloaden van de plug-in is mislukt. Controleer je firewall-" +"instellingen en VPN-software en probeer het opnieuw." msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus " -"software." +"Failed to install the plug-in. Please check whether it is blocked or deleted " +"by anti-virus software." msgstr "" -"De installatie van de plug-in is mislukt. Controleer of deze is geblokkeerd of verwijderd " -"door anti-virussoftware." +"De installatie van de plug-in is mislukt. Controleer of deze is geblokkeerd " +"of verwijderd door anti-virussoftware." msgid "click here to see more info" msgstr "klik hier voor meer informatie" @@ -3052,18 +3137,21 @@ msgid "Please home all axes (click " msgstr "Centreer alle assen (klik" msgid "" -") to locate the toolhead's position. This prevents device moving beyond the printable " -"boundary and causing equipment wear." +") to locate the toolhead's position. This prevents device moving beyond the " +"printable boundary and causing equipment wear." msgstr "" -") om de positie van de gereedschapskop te bepalen. Dit voorkomt dat het apparaat de " -"printbare grens overschrijdt en dat apparatuur slijt." +") om de positie van de gereedschapskop te bepalen. Dit voorkomt dat het " +"apparaat de printbare grens overschrijdt en dat apparatuur slijt." msgid "Go Home" msgstr "Near home positie" -msgid "A error occurred. Maybe memory of system is not enough or it's a bug of the program" +msgid "" +"A error occurred. Maybe memory of system is not enough or it's a bug of the " +"program" msgstr "" -"Er is een probleem opgetreden. Er is geen vrij geheugen of er een is een bug opgetreden" +"Er is een probleem opgetreden. Er is geen vrij geheugen of er een is een bug " +"opgetreden" msgid "Please save project and restart the program. " msgstr "Sla uw project alstublieft op en herstart het programma. " @@ -3106,46 +3194,47 @@ msgstr "Onbekende fout opgetreden tijdens exporteren van de G-code." #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write " -"locked?\n" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD " +"card is write locked?\n" "Error message: %1%" msgstr "" -"Fout bij het exporteren naar output-G-code. Is de SD-kaart geblokkeerd tegen schrijven?\n" +"Fout bij het exporteren naar output-G-code. Is de SD-kaart geblokkeerd tegen " +"schrijven?\n" "Foutbericht: %1%" #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. There might be problem with " -"target device, please try exporting again or using different device. The corrupted output G-" -"code is at %1%.tmp." +"Copying of the temporary G-code to the output G-code failed. There might be " +"problem with target device, please try exporting again or using different " +"device. The corrupted output G-code is at %1%.tmp." msgstr "" -"Fout bij het exporteren naar output-G-code. Het probleem ligt mogelijk bij het " -"doelapparaat. Probeer het opnieuw te exporteren of gebruik een ander apparat. De " -"beschadigde G-code is opgeslagen als %1%.tmp." +"Fout bij het exporteren naar output-G-code. Het probleem ligt mogelijk bij " +"het doelapparaat. Probeer het opnieuw te exporteren of gebruik een ander " +"apparat. De beschadigde G-code is opgeslagen als %1%.tmp." #, boost-format msgid "" -"Renaming of the G-code after copying to the selected destination folder has failed. Current " -"path is %1%.tmp. Please try exporting again." +"Renaming of the G-code after copying to the selected destination folder has " +"failed. Current path is %1%.tmp. Please try exporting again." msgstr "" -"Fout bij het exporteren naar output-G-code. Hernoemen van het bestand mislukt. Huidige " -"locatie is %1%.tmp. Probeer opnieuw te exporteren." +"Fout bij het exporteren naar output-G-code. Hernoemen van het bestand " +"mislukt. Huidige locatie is %1%.tmp. Probeer opnieuw te exporteren." #, boost-format msgid "" -"Copying of the temporary G-code has finished but the original code at %1% couldn't be " -"opened during copy check. The output G-code is at %2%.tmp." +"Copying of the temporary G-code has finished but the original code at %1% " +"couldn't be opened during copy check. The output G-code is at %2%.tmp." msgstr "" -"Fout bij het exporteren naar output-G-code. Exporteren gelukt, maar kan het bestand %1% " -"niet openen om te controleren. De output is %2%.tmp." +"Fout bij het exporteren naar output-G-code. Exporteren gelukt, maar kan het " +"bestand %1% niet openen om te controleren. De output is %2%.tmp." #, boost-format msgid "" -"Copying of the temporary G-code has finished but the exported code couldn't be opened " -"during copy check. The output G-code is at %1%.tmp." +"Copying of the temporary G-code has finished but the exported code couldn't " +"be opened during copy check. The output G-code is at %1%.tmp." msgstr "" -"Fout bij het exporteren naar output-G-code. Exporteren gelukt, maar kan het bestand niet " -"openen om te controleren. De output is %1%.tmp." +"Fout bij het exporteren naar output-G-code. Exporteren gelukt, maar kan het " +"bestand niet openen om te controleren. De output is %1%.tmp." #, boost-format msgid "G-code file exported to %1%" @@ -3165,7 +3254,8 @@ msgstr "" "Bronbestand %2%." msgid "Copying of the temporary G-code to the output G-code failed" -msgstr "Het kopiëren van de tijdelijke G-code naar de G-uitvoercode is mislukt." +msgstr "" +"Het kopiëren van de tijdelijke G-code naar de G-uitvoercode is mislukt." #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" @@ -3221,7 +3311,8 @@ msgstr "Device Status" msgid "Actions" msgstr "Actions" -msgid "Please select the devices you would like to manage here (up to 6 devices)" +msgid "" +"Please select the devices you would like to manage here (up to 6 devices)" msgstr "" msgid "Add" @@ -3351,17 +3442,19 @@ msgid "Send to" msgstr "" msgid "" -"printers at the same time.(It depends on how many devices can undergo heating at the same " -"time.)" +"printers at the same time.(It depends on how many devices can undergo " +"heating at the same time.)" msgstr "" -"printers at the same time. (It depends on how many devices can undergo heating at the same " -"time.)" +"printers at the same time. (It depends on how many devices can undergo " +"heating at the same time.)" msgid "Wait" msgstr "Wait" -msgid "minute each batch.(It depends on how long it takes to complete the heating.)" -msgstr "minute each batch. (It depends on how long it takes to complete heating.)" +msgid "" +"minute each batch.(It depends on how long it takes to complete the heating.)" +msgstr "" +"minute each batch. (It depends on how long it takes to complete heating.)" msgid "Send" msgstr "Versturen" @@ -3393,14 +3486,19 @@ msgstr "Begin" msgid "Size in X and Y of the rectangular plate." msgstr "Maat in X en Y van de vierkante printplaat." -msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." +msgid "" +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." msgstr "" -"Afstand van het 0,0 G-code coordinaat gezien vanuit de linker voorhoek van het printbed." +"Afstand van het 0,0 G-code coordinaat gezien vanuit de linker voorhoek van " +"het printbed." -msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." +msgid "" +"Diameter of the print bed. It is assumed that origin (0,0) is located in the " +"center." msgstr "" -"Diameter van het printbed, ervan uitgaande dat de thuispositie (0,0) in het midden van het " -"bed is." +"Diameter van het printbed, ervan uitgaande dat de thuispositie (0,0) in het " +"midden van het bed is." msgid "Rectangular" msgstr "Rechthoekig" @@ -3427,7 +3525,8 @@ msgid "Model" msgstr "Model" msgid "Choose an STL file to import bed shape from:" -msgstr "Kies een STL bestand waar de vorm van het printbed uit opgehaald kan worden:" +msgstr "" +"Kies een STL bestand waar de vorm van het printbed uit opgehaald kan worden:" msgid "Invalid file format." msgstr "Ongeldig bestandsformaat." @@ -3438,13 +3537,15 @@ msgstr "Fout: Ongeldig model" msgid "The selected file contains no geometry." msgstr "Het gekozen bestand bevat geen geometrische data." -msgid "The selected file contains several disjoint areas. This is not supported." +msgid "" +"The selected file contains several disjoint areas. This is not supported." msgstr "" -"Het geselecteerde bestand bevat verschillende onsamenhangende gebieden. Dit is niet " -"toegestaan." +"Het geselecteerde bestand bevat verschillende onsamenhangende gebieden. Dit " +"is niet toegestaan." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "Kies een bestand om de textuur van het printbed uit op te halen (PNG/SVG):" +msgstr "" +"Kies een bestand om de textuur van het printbed uit op te halen (PNG/SVG):" msgid "Choose an STL file to import bed model from:" msgstr "Kies een STL bestand waaruit het printbed model geladen kan worden:" @@ -3453,18 +3554,18 @@ msgid "Bed Shape" msgstr "Printbed vorm" msgid "" -"The recommended minimum temperature is less than 190 degree or the recommended maximum " -"temperature is greater than 300 degree.\n" +"The recommended minimum temperature is less than 190 degree or the " +"recommended maximum temperature is greater than 300 degree.\n" msgstr "" "De aanbevolen minimumtemperatuur is lager dan 190 graden of de aanbevolen " "maximumtemperatuur is hoger dan 300 graden.\n" msgid "" -"The recommended minimum temperature cannot be higher than the recommended maximum " -"temperature.\n" +"The recommended minimum temperature cannot be higher than the recommended " +"maximum temperature.\n" msgstr "" -"The recommended minimum temperature cannot be higher than the recommended maximum " -"temperature.\n" +"The recommended minimum temperature cannot be higher than the recommended " +"maximum temperature.\n" msgid "Please check.\n" msgstr "Controleer het.\n" @@ -3474,14 +3575,18 @@ msgid "" "Please make sure whether to use the temperature to print.\n" "\n" msgstr "" -"Het kan zijn dat het mondstuk verstopt raakt indien er geprint wordt met een temperatuur " -"buiten de voorgestelde range.\n" +"Het kan zijn dat het mondstuk verstopt raakt indien er geprint wordt met een " +"temperatuur buiten de voorgestelde range.\n" "Controleer en bevestig de temperatuur voordat u verder gaat met printen.\n" "\n" #, c-format, boost-format -msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" -msgstr "De aanbevolen mondstuk temperatuur voor dit type filament is [%d, %d] graden Celsius" +msgid "" +"Recommended nozzle temperature of this filament type is [%d, %d] degree " +"centigrade" +msgstr "" +"De aanbevolen mondstuk temperatuur voor dit type filament is [%d, %d] graden " +"Celsius" msgid "" "Too small max volumetric speed.\n" @@ -3492,12 +3597,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature,it may result in " -"material softening and clogging.The maximum safe temperature for the material is %d" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" msgstr "" -"De huidige kamertemperatuur is hoger dan de veilige temperatuur van het materiaal; dit kan " -"leiden tot verzachting van het materiaal en verstoppingen van het mondstuk. De maximale " -"veilige temperatuur voor het materiaal is %d" +"De huidige kamertemperatuur is hoger dan de veilige temperatuur van het " +"materiaal; dit kan leiden tot verzachting van het materiaal en verstoppingen " +"van het mondstuk. De maximale veilige temperatuur voor het materiaal is %d" msgid "" "Too small layer height.\n" @@ -3523,15 +3629,17 @@ msgstr "" "De hoogte voor de eerste laag wordt teruggezet naar 0.2." msgid "" -"This setting is only used for model size tunning with small value in some cases.\n" +"This setting is only used for model size tunning with small value in some " +"cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Deze instelling wordt in sommige gevallen alleen gebruikt voor modelafmetingen met een " -"kleine waarde.\n" -"Als bijvoorbeeld de modelgrootte een kleine fout heeft en moeilijk te monteren is.\n" +"Deze instelling wordt in sommige gevallen alleen gebruikt voor " +"modelafmetingen met een kleine waarde.\n" +"Als bijvoorbeeld de modelgrootte een kleine fout heeft en moeilijk te " +"monteren is.\n" "Gebruik voor het afstemmen van grote prints de shaal functie.\n" "\n" "De waarde wordt teruggezet naar 0." @@ -3544,30 +3652,33 @@ msgid "" "The value will be reset to 0." msgstr "" "Het is niet reëel om een grote \"elephant foot\" compensatie in te stellen\n" -"Controleer andere instellingen indien er echt een groot \"elephant foot\" effect optreeft.\n" +"Controleer andere instellingen indien er echt een groot \"elephant foot\" " +"effect optreeft.\n" "Het kan bijvoorbeeld zijn dat de temperatuur van het printbed te hoog is.\n" "\n" "De waarde wordt teruggezet naar 0." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness is set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness " +"is set to All. " msgstr "" msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable alternate extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable " +"alternate extra wall\n" "No - Dont use alternate extra wall" msgstr "" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support Layer Height is " -"on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support " +"Layer Height is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"Prime tower werkt niet wanneer adaptieve laag hoogte of onafhankelijke support laaghoogte " -"is ingeschakeld.\n" +"Prime tower werkt niet wanneer adaptieve laag hoogte of onafhankelijke " +"support laaghoogte is ingeschakeld.\n" "Welke instelling wilt u gebruiken\n" "JA - laat de prime-tower aan staan\n" "NO - laat adaptieve laag en onafhankelijke support-laaghoogte ingeschakeld" @@ -3589,7 +3700,8 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"Prime tower werkt niet wanneer onafhankelijke support laag hoogte is ingeschakeld.\n" +"Prime tower werkt niet wanneer onafhankelijke support laag hoogte is " +"ingeschakeld.\n" "Welke instelling wilt u gebruiken\n" "JA - laat de prime-tower aan staan\n" "NO - laat onafhankelijke support-laag-hoogte ingeschakeld" @@ -3607,11 +3719,11 @@ msgid "" msgstr "" msgid "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, " -"sparse infill density is 0 and timelapse type is traditional." +"Spiral mode only works when wall loops is 1, support is disabled, top shell " +"layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, " -"sparse infill density is 0 and timelapse type is traditional." +"Spiral mode only works when wall loops is 1, support is disabled, top shell " +"layers is 0, sparse infill density is 0 and timelapse type is traditional." msgid " But machines with I3 structure will not generate timelapse videos." msgstr " Maar machines met een I3-structuur genereren geen timelapsevideo's." @@ -3704,7 +3816,8 @@ msgid "Paused due to AMS lost" msgstr "Gepauzeerd wegens verlies van AMS" msgid "Paused due to low speed of the heat break fan" -msgstr "Gepauzeerd vanwege lage snelheid van de ventilator voor warmteonderbreking" +msgstr "" +"Gepauzeerd vanwege lage snelheid van de ventilator voor warmteonderbreking" msgid "Paused due to chamber temperature control error" msgstr "Gepauzeerd vanwege een fout in de temperatuurregeling van de kamer" @@ -3755,32 +3868,39 @@ msgid "Update failed." msgstr "Updaten mislukt." msgid "" -"The current chamber temperature or the target chamber temperature exceeds 45℃.In order to " -"avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." msgstr "" -"The current chamber temperature or the target chamber temperature exceeds 45℃. In order to " -"avoid extruder clogging, low temperature filament (PLA/PETG/TPU) is not allowed to be " -"loaded." +"The current chamber temperature or the target chamber temperature exceeds " +"45℃. In order to avoid extruder clogging, low temperature filament (PLA/PETG/" +"TPU) is not allowed to be loaded." msgid "" -"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to avoid extruder " -"clogging,it is not allowed to set the chamber temperature above 45℃." +"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " +"avoid extruder clogging,it is not allowed to set the chamber temperature " +"above 45℃." msgstr "" -"Low temperature filament (PLA/PETG/TPU) is loaded in the extruder. In order to avoid " -"extruder clogging, it is not allowed to set the chamber temperature above 45℃." +"Low temperature filament (PLA/PETG/TPU) is loaded in the extruder. In order " +"to avoid extruder clogging, it is not allowed to set the chamber temperature " +"above 45℃." msgid "" -"When you set the chamber temperature below 40℃, the chamber temperature control will not be " -"activated. And the target chamber temperature will automatically be set to 0℃." +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated. And the target chamber temperature will " +"automatically be set to 0℃." msgstr "" -"When you set the chamber temperature below 40℃, the chamber temperature control will not be " -"activated, and the target chamber temperature will automatically be set to 0℃." +"When you set the chamber temperature below 40℃, the chamber temperature " +"control will not be activated, and the target chamber temperature will " +"automatically be set to 0℃." msgid "Failed to start printing job" msgstr "Het starten van de printopdracht is mislukt" -msgid "This calibration does not support the currently selected nozzle diameter" -msgstr "Deze kalibratie ondersteunt de momenteel geselecteerde mondstukdiameter niet" +msgid "" +"This calibration does not support the currently selected nozzle diameter" +msgstr "" +"Deze kalibratie ondersteunt de momenteel geselecteerde mondstukdiameter niet" msgid "Current flowrate cali param is invalid" msgstr "Huidige stroomsnelheid cali param is ongeldig" @@ -3801,18 +3921,18 @@ msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF wordt niet ondersteund door AMS." msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to dry it before " -"use." +"Damp PVA will become flexible and get stuck inside AMS,please take care to " +"dry it before use." msgstr "" -"Vochtige PVA zal flexibel worden en vast komen te zitten in de AMS, zorg er dus voor dat je " -"het droogt voor gebruik." +"Vochtige PVA zal flexibel worden en vast komen te zitten in de AMS, zorg er " +"dus voor dat je het droogt voor gebruik." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, please use " -"with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." msgstr "" -"CF/GF-filamenten zijn hard en bros. Ze kunnen gemakkelijk breken of vast komen te zitten in " -"AMS." +"CF/GF-filamenten zijn hard en bros. Ze kunnen gemakkelijk breken of vast " +"komen te zitten in AMS." msgid "default" msgstr "Standaard" @@ -3911,8 +4031,11 @@ msgstr "" "NEE voor %s %s." #, boost-format -msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" -msgstr "Ongeldige invoer. Verwachte waarde moet in het volgende format: \"%1%\"" +msgid "" +"Invalid input format. Expected vector of dimensions in the following format: " +"\"%1%\"" +msgstr "" +"Ongeldige invoer. Verwachte waarde moet in het volgende format: \"%1%\"" msgid "Input value is out of range" msgstr "Ingevoerde waarde valt buiten het bereik" @@ -4002,6 +4125,15 @@ msgstr "Totale tijd" msgid "Total cost" msgstr "Total cost" +msgid "up to" +msgstr "tot" + +msgid "above" +msgstr "Boven" + +msgid "from" +msgstr "Van" + msgid "Color Scheme" msgstr "Kleurschema" @@ -4065,12 +4197,12 @@ msgstr "Filamentwisseltijden" msgid "Cost" msgstr "Kosten" -msgid "Print" -msgstr "Print" - msgid "Color change" msgstr "Kleur veranderen" +msgid "Print" +msgstr "Print" + msgid "Printer" msgstr "Printer" @@ -4254,10 +4386,10 @@ msgstr "Volume:" msgid "Size:" msgstr "Maat:" -#, c-format, boost-format +#, boost-format msgid "" -"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate the " -"conflicted objects farther (%s <-> %s)." +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " +"separate the conflicted objects farther (%s <-> %s)." msgstr "" msgid "An object is layed over the boundary of plate." @@ -4274,12 +4406,13 @@ msgstr "Alleen het object waaraan gewerkt wordt is zichtbaar." msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and confirming that the " -"height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and " +"confirming that the height is within the build volume." msgstr "" -"Een object is over de grens van de plaat geplaatst of overschrijdt de hoogtelimiet.\n" -"Los het probleem op door het geheel op of van de plaat te verplaatsen, en controleer of de " -"hoogte binnen het bouwvolume valt." +"Een object is over de grens van de plaat geplaatst of overschrijdt de " +"hoogtelimiet.\n" +"Los het probleem op door het geheel op of van de plaat te verplaatsen, en " +"controleer of de hoogte binnen het bouwvolume valt." msgid "Calibration step selection" msgstr "Kalibratiestap selectie" @@ -4300,12 +4433,12 @@ msgid "Calibration program" msgstr "Kalibratie programma" msgid "" -"The calibration program detects the status of your device automatically to minimize " -"deviation.\n" +"The calibration program detects the status of your device automatically to " +"minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Het kalibratieprogramma detecteert automatisch de status van uw apparaat om afwijkingen te " -"minimaliseren.\n" +"Het kalibratieprogramma detecteert automatisch de status van uw apparaat om " +"afwijkingen te minimaliseren.\n" "Het zorgt ervoor dat het apparaat optimaal blijft presteren." msgid "Calibration Flow" @@ -4693,6 +4826,18 @@ msgstr "Fase 2" msgid "Flow rate test - Pass 2" msgstr "Stroomsnelheidstest - Fase 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Flowrate" @@ -4797,13 +4942,15 @@ msgstr "Selecteer het te laden profiel:" #, c-format, boost-format msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "There are %d configs imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" msgstr[0] "" msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing the configs." +"Hint: Make sure you have added the corresponding printer before importing " +"the configs." msgstr "" msgid "Import result" @@ -4841,24 +4988,32 @@ msgid "Player is malfunctioning. Please reinstall the system player." msgstr "De speler werkt niet goed. Installeer de systeemspeler opnieuw." msgid "The player is not loaded, please click \"play\" button to retry." -msgstr "De speler is niet geladen; klik op de \"play\" knop om het opnieuw te proberen." +msgstr "" +"De speler is niet geladen; klik op de \"play\" knop om het opnieuw te " +"proberen." msgid "Please confirm if the printer is connected." msgstr "Controleer of de printer is aangesloten." -msgid "The printer is currently busy downloading. Please try again after it finishes." +msgid "" +"The printer is currently busy downloading. Please try again after it " +"finishes." msgstr "" -"De printer is momenteel bezig met downloaden. Probeer het opnieuw nadat het is voltooid." +"De printer is momenteel bezig met downloaden. Probeer het opnieuw nadat het " +"is voltooid." msgid "Printer camera is malfunctioning." msgstr "De printercamera werkt niet goed." msgid "Problem occured. Please update the printer firmware and try again." msgstr "" -"Er heeft zich een probleem voorgedaan. Werk de printerfirmware bij en probeer het opnieuw." +"Er heeft zich een probleem voorgedaan. Werk de printerfirmware bij en " +"probeer het opnieuw." -msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." -msgstr "LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "" +"LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgstr "" +"LAN Only Liveview is off. Please turn on the liveview on printer screen." msgid "Please enter the IP of printer to connect." msgstr "Voer het IP-adres in van de printer waarmee u verbinding wilt maken." @@ -4870,11 +5025,11 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Verbinding mislukt. Controleer het netwerk en probeer het opnieuw" msgid "" -"Please check the network and try again, You can restart or update the printer if the issue " -"persists." +"Please check the network and try again, You can restart or update the " +"printer if the issue persists." msgstr "" -"Controleer het netwerk en probeer het opnieuw. U kunt de printer opnieuw opstarten of " -"bijwerken als het probleem zich blijft voordoen." +"Controleer het netwerk en probeer het opnieuw. U kunt de printer opnieuw " +"opstarten of bijwerken als het probleem zich blijft voordoen." msgid "The printer has been logged out and cannot connect." msgstr "De printer is afgemeld en kan geen verbinding maken." @@ -4988,11 +5143,11 @@ msgid "Initialize failed (Device connection not ready)!" msgstr "Initialization failed (Device connection not ready)!" msgid "" -"Browsing file in SD card is not supported in current firmware. Please update the printer " -"firmware." +"Browsing file in SD card is not supported in current firmware. Please update " +"the printer firmware." msgstr "" -"Browsing file in SD card is not supported in current firmware. Please update the printer " -"firmware." +"Browsing file in SD card is not supported in current firmware. Please update " +"the printer firmware." msgid "Initialize failed (Storage unavailable, insert SD card.)!" msgstr "" @@ -5009,7 +5164,8 @@ msgstr "Initialisatie is mislukt (%s)!" #, c-format, boost-format msgid "You are going to delete %u file from printer. Are you sure to continue?" -msgid_plural "You are going to delete %u files from printer. Are you sure to continue?" +msgid_plural "" +"You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" msgstr[1] "" @@ -5033,8 +5189,8 @@ msgid "Failed to parse model information." msgstr "Mislukt bij het parsen van modelinformatie." msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and export a " -"new .gcode.3mf file." +"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " +"and export a new .gcode.3mf file." msgstr "" #, c-format, boost-format @@ -5066,11 +5222,11 @@ msgid "Downloading %d%%..." msgstr "%d%% downloaden..." msgid "" -"Reconnecting the printer, the operation cannot be completed immediately, please try again " -"later." +"Reconnecting the printer, the operation cannot be completed immediately, " +"please try again later." msgstr "" -"Reconnecting the printer, the operation cannot be completed immediately, please try again " -"later." +"Reconnecting the printer, the operation cannot be completed immediately, " +"please try again later." msgid "File does not exist." msgstr "Bestand bestaat niet." @@ -5149,8 +5305,12 @@ msgstr "" msgid "How do you like this printing file?" msgstr "Wat vind je van dit afdrukbestand?" -msgid "(The model has already been rated. Your rating will overwrite the previous rating.)" -msgstr "(Het model is al beoordeeld. Uw beoordeling overschrijft de vorige beoordeling)." +msgid "" +"(The model has already been rated. Your rating will overwrite the previous " +"rating.)" +msgstr "" +"(Het model is al beoordeeld. Uw beoordeling overschrijft de vorige " +"beoordeling)." msgid "Rate" msgstr "Tarief" @@ -5224,8 +5384,12 @@ msgstr "Layer: %s" msgid "Layer: %d/%d" msgstr "Layer: %d/%d" -msgid "Please heat the nozzle to above 170 degree before loading or unloading filament." -msgstr "Verwarm het mondstuk tot boven de 170 graden voordat u filament laadt of lost." +msgid "" +"Please heat the nozzle to above 170 degree before loading or unloading " +"filament." +msgstr "" +"Verwarm het mondstuk tot boven de 170 graden voordat u filament laadt of " +"lost." msgid "Still unload" msgstr "Nog steeds aan het ontladen" @@ -5237,11 +5401,11 @@ msgid "Please select an AMS slot before calibration" msgstr "Selecteer een AMS-slot voor de kalibratie." msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please unload the " -"filament and try again." +"Cannot read filament info: the filament is loaded to the tool head,please " +"unload the filament and try again." msgstr "" -"Kan de filament informatie niet lezen: het filament is in de printkop geladen; verwijder " -"het filament en probeer het opnieuw." +"Kan de filament informatie niet lezen: het filament is in de printkop " +"geladen; verwijder het filament en probeer het opnieuw." msgid "This only takes effect during printing" msgstr "Dit is alleen van kracht tijdens het printen" @@ -5307,12 +5471,12 @@ msgid " can not be opened\n" msgstr " cannot be opened\n" msgid "" -"The following issues occurred during the process of uploading images. Do you want to ignore " -"them?\n" +"The following issues occurred during the process of uploading images. Do you " +"want to ignore them?\n" "\n" msgstr "" -"De volgende problemen deden zich voor tijdens het uploaden van afbeeldingen. Wil je ze " -"negeren?\n" +"De volgende problemen deden zich voor tijdens het uploaden van afbeeldingen. " +"Wil je ze negeren?\n" "\n" msgid "info" @@ -5320,7 +5484,8 @@ msgstr "Informatie" msgid "Synchronizing the printing results. Please retry a few seconds later." msgstr "" -"De afdrukresultaten worden gesynchroniseerd. Probeer het een paar seconden later opnieuw." +"De afdrukresultaten worden gesynchroniseerd. Probeer het een paar seconden " +"later opnieuw." msgid "Upload failed\n" msgstr "Uploaden mislukt\n" @@ -5350,10 +5515,11 @@ msgstr "" "Would you like to redirect to the webpage to give a rating?" msgid "" -"Some of your images failed to upload. Would you like to redirect to the webpage for rating?" +"Some of your images failed to upload. Would you like to redirect to the " +"webpage for rating?" msgstr "" -"Sommige afbeeldingen zijn niet geüpload. Wilt u doorverwijzen naar de webpagina voor " -"beoordeling?" +"Sommige afbeeldingen zijn niet geüpload. Wilt u doorverwijzen naar de " +"webpagina voor beoordeling?" msgid "You can select up to 16 images." msgstr "Je kunt tot 16 afbeeldingen selecteren." @@ -5404,7 +5570,9 @@ msgstr "Overslaan" msgid "Newer 3mf version" msgstr "Nieuwere versie 3mf" -msgid "The 3mf file version is in Beta and it is newer than the current OrcaSlicer version." +msgid "" +"The 3mf file version is in Beta and it is newer than the current OrcaSlicer " +"version." msgstr "" msgid "If you would like to try Orca Slicer Beta, you may click to" @@ -5480,19 +5648,21 @@ msgstr "Safely remove hardware." msgid "%1$d Object has custom supports." msgid_plural "%1$d Objects have custom supports." msgstr[0] "" -"%1$d de objecten hebben handmatig toegevoegde supports.@%1$d de objecten hebben handmatig " -"toegevoegde supports." +"%1$d de objecten hebben handmatig toegevoegde supports.@%1$d de objecten " +"hebben handmatig toegevoegde supports." msgstr[1] "" -"%1$d de objecten hebben handmatig toegevoegde supports.@%1$d de objecten hebben handmatig " -"toegevoegde supports." +"%1$d de objecten hebben handmatig toegevoegde supports.@%1$d de objecten " +"hebben handmatig toegevoegde supports." #, c-format, boost-format msgid "%1$d Object has color painting." msgid_plural "%1$d Objects have color painting." msgstr[0] "" -"%1$d De objecten hebben geschilderde kleuren.@%1$d De objecten hebben geschilderde kleuren." +"%1$d De objecten hebben geschilderde kleuren.@%1$d De objecten hebben " +"geschilderde kleuren." msgstr[1] "" -"%1$d De objecten hebben geschilderde kleuren.@%1$d De objecten hebben geschilderde kleuren." +"%1$d De objecten hebben geschilderde kleuren.@%1$d De objecten hebben " +"geschilderde kleuren." #, c-format, boost-format msgid "%1$d object was loaded as a part of cut object." @@ -5560,10 +5730,12 @@ msgstr "Lagen" msgid "Range" msgstr "Bereik" -msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" +msgid "" +"The application cannot run normally because OpenGL version is lower than " +"2.0.\n" msgstr "" -"De toepassing kan niet volledig naar behoren functioneren omdat de geinstalleerde versie " -"van OpenGL lager is dan 2.0.\n" +"De toepassing kan niet volledig naar behoren functioneren omdat de " +"geinstalleerde versie van OpenGL lager is dan 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Upgrade uw videokaart drivers." @@ -5600,11 +5772,12 @@ msgid "Enable detection of build plate position" msgstr "Detectie van de positie van de printplaat inschakelen" msgid "" -"The localization tag of build plate is detected, and printing is paused if the tag is not " -"in predefined range." +"The localization tag of build plate is detected, and printing is paused if " +"the tag is not in predefined range." msgstr "" -"De lokalisatietag van de bouwplaat wordt gedetecteerd en het afdrukken wordt gepauzeerd als " -"de tag zich niet binnen het vooraf gedefinieerde bereik bevindt." +"De lokalisatietag van de bouwplaat wordt gedetecteerd en het afdrukken wordt " +"gepauzeerd als de tag zich niet binnen het vooraf gedefinieerde bereik " +"bevindt." msgid "First Layer Inspection" msgstr "Inspectie van de eerste laag" @@ -5623,7 +5796,8 @@ msgstr "Detectie van klontvorming in mondstuk" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "" -"Controleer of er klonten in het mondstuk zitten door filament of andere vreemde voorwerpen." +"Controleer of er klonten in het mondstuk zitten door filament of andere " +"vreemde voorwerpen." msgid "Nozzle Type" msgstr "Mondstuk Type" @@ -5735,21 +5909,28 @@ msgstr "Zoek plaat, object en onderdeel." msgid "Pellets" msgstr "" -msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." -msgstr "Geen AMS filamenten. Selecteer een printer in 'Apparaat' pagina om AMS info te laden." +msgid "" +"No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgstr "" +"Geen AMS filamenten. Selecteer een printer in 'Apparaat' pagina om AMS info " +"te laden." msgid "Sync filaments with AMS" msgstr "Synchroniseer filamenten met AMS" msgid "" -"Sync filaments with AMS will drop all current selected filament presets and colors. Do you " -"want to continue?" +"Sync filaments with AMS will drop all current selected filament presets and " +"colors. Do you want to continue?" msgstr "" -"Door filamenten te synchroniseren met de AMS zullen alle huidige geselecteerde filament " -"presets en kleuren wegvallen. Wilt u doorgaan?" +"Door filamenten te synchroniseren met de AMS zullen alle huidige " +"geselecteerde filament presets en kleuren wegvallen. Wilt u doorgaan?" -msgid "Already did a synchronization, do you want to sync only changes or resync all?" -msgstr "Already did a synchronization; do you want to sync only changes or resync all?" +msgid "" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" +msgstr "" +"Already did a synchronization; do you want to sync only changes or resync " +"all?" msgid "Sync" msgstr "Sync" @@ -5758,11 +5939,14 @@ msgid "Resync" msgstr "Resync" msgid "There are no compatible filaments, and sync is not performed." -msgstr "Er zijn geen compatibele filamenten en er wordt geen synchronisatie uitgevoerd." +msgstr "" +"Er zijn geen compatibele filamenten en er wordt geen synchronisatie " +"uitgevoerd." msgid "" -"There are some unknown filaments mapped to generic preset. Please update Orca Slicer or " -"restart Orca Slicer to check if there is an update to system presets." +"There are some unknown filaments mapped to generic preset. Please update " +"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"presets." msgstr "" #, boost-format @@ -5770,44 +5954,49 @@ msgid "Do you want to save changes to \"%1%\"?" msgstr "Wilt u de wijzigingen opslaan in \"%1%\"?" #, c-format, boost-format -msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgid "" +"Successfully unmounted. The device %s(%s) can now be safely removed from the " +"computer." msgstr "" -"Succesvol ontkoppeld. Het apparaat %s(%s) kan nu veilig van de computer worden verwijderd." +"Succesvol ontkoppeld. Het apparaat %s(%s) kan nu veilig van de computer " +"worden verwijderd." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." msgstr "Het uitwerpen van apparaat %s(%s) is mislukt." msgid "Previous unsaved project detected, do you want to restore it?" -msgstr "Er is niet opgeslagen project data gedectereerd, wilt u deze herstellen?" +msgstr "" +"Er is niet opgeslagen project data gedectereerd, wilt u deze herstellen?" msgid "Restore" msgstr "Herstellen" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be clogged when printing " -"this filament in a closed enclosure. Please open the front door and/or remove the upper " -"glass." +"The current hot bed temperature is relatively high. The nozzle may be " +"clogged when printing this filament in a closed enclosure. Please open the " +"front door and/or remove the upper glass." msgstr "" -"De huidige warmtebedtemperatuur is relatief hoog. Het mondstuk kan verstopt raken bij het " -"printen van dit filament in een gesloten omgeving. Open de voordeur en/of verwijder het " -"bovenste glas." +"De huidige warmtebedtemperatuur is relatief hoog. Het mondstuk kan verstopt " +"raken bij het printen van dit filament in een gesloten omgeving. Open de " +"voordeur en/of verwijder het bovenste glas." msgid "" -"The nozzle hardness required by the filament is higher than the default nozzle hardness of " -"the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be " -"attrited or damaged." +"The nozzle hardness required by the filament is higher than the default " +"nozzle hardness of the printer. Please replace the hardened nozzle or " +"filament, otherwise, the nozzle will be attrited or damaged." msgstr "" -"De door het filament vereiste hardheid van het mondstuk is hoger dan de standaard hardheid " -"van het mondstuk van de printer. Vervang het geharde mondstuk of het filament, anders raakt " -"het mondstuk versleten of beschadigd." +"De door het filament vereiste hardheid van het mondstuk is hoger dan de " +"standaard hardheid van het mondstuk van de printer. Vervang het geharde " +"mondstuk of het filament, anders raakt het mondstuk versleten of beschadigd." msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. It is " -"recommended to change to smooth mode." +"Enabling traditional timelapse photography may cause surface imperfections. " +"It is recommended to change to smooth mode." msgstr "" -"Het inschakelen van traditionele timelapse-fotografie kan oneffenheden in het oppervlak " -"veroorzaken. Het wordt aanbevolen om over te schakelen naar de vloeiende modus." +"Het inschakelen van traditionele timelapse-fotografie kan oneffenheden in " +"het oppervlak veroorzaken. Het wordt aanbevolen om over te schakelen naar de " +"vloeiende modus." msgid "Expand sidebar" msgstr "Zijbalk uitklappen" @@ -5820,25 +6009,30 @@ msgid "Loading file: %s" msgstr "Bestand laden: %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." -msgstr "De 3mf is niet van Orca Slicer, er worden alleen geometriegegevens geladen." +msgstr "" +"De 3mf is niet van Orca Slicer, er worden alleen geometriegegevens geladen." msgid "Load 3mf" msgstr "Laad 3mf" #, c-format, boost-format -msgid "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" +msgid "" +"The 3mf's version %s is newer than %s's version %s, Found following keys " +"unrecognized:" msgstr "" -"Versie %s van de 3mf is nieuwer dan versie %s van %s. De volgende sleutels worden niet " -"herkend:" +"Versie %s van de 3mf is nieuwer dan versie %s van %s. De volgende sleutels " +"worden niet herkend:" msgid "You'd better upgrade your software.\n" msgstr "U dient de software te upgraden.\n" #, c-format, boost-format -msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software." msgstr "" -"Versie %s van de 3mf is nieuwer dan versie %s van %s. Wij stellen voor om uw software te " -"upgraden." +"Versie %s van de 3mf is nieuwer dan versie %s van %s. Wij stellen voor om uw " +"software te upgraden." msgid "Invalid values found in the 3mf:" msgstr "Invalid values found in the 3mf:" @@ -5850,21 +6044,26 @@ msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "The 3mf has following modified G-code in filament or printer presets:" msgid "" -"Please confirm that these modified G-codes are safe to prevent any damage to the machine!" +"Please confirm that these modified G-codes are safe to prevent any damage to " +"the machine!" msgstr "" -"Controleer of deze aangepaste G-codes veilig zijn om schade aan de machine te voorkomen!" +"Controleer of deze aangepaste G-codes veilig zijn om schade aan de machine " +"te voorkomen!" msgid "Modified G-codes" msgstr "Modified G-code" msgid "The 3mf has following customized filament or printer presets:" -msgstr "De 3mf heeft de volgende aangepaste voorinstellingen voor filament of printer:" +msgstr "" +"De 3mf heeft de volgende aangepaste voorinstellingen voor filament of " +"printer:" msgid "" -"Please confirm that the G-codes within these presets are safe to prevent any damage to the " -"machine!" +"Please confirm that the G-codes within these presets are safe to prevent any " +"damage to the machine!" msgstr "" -"Controleer of de G-codes in deze presets veilig zijn om schade aan de machine te voorkomen!" +"Controleer of de G-codes in deze presets veilig zijn om schade aan de " +"machine te voorkomen!" msgid "Customized Preset" msgstr "Aangepaste voorinstelling" @@ -5873,14 +6072,17 @@ msgid "Name of components inside step file is not UTF8 format!" msgstr "Naam van componenten in step-bestand is niet UTF8-formaat!" msgid "The name may show garbage characters!" -msgstr "Vanwege niet-ondersteunde tekstcodering kunnen er onjuiste tekens verschijnen!" +msgstr "" +"Vanwege niet-ondersteunde tekstcodering kunnen er onjuiste tekens " +"verschijnen!" msgid "Remember my choice." msgstr "Remember my choice." #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "Kan bestand \"%1%\" niet laden. Er is een ongeldige configuratie gevonden." +msgstr "" +"Kan bestand \"%1%\" niet laden. Er is een ongeldige configuratie gevonden." msgid "Objects with zero volume removed" msgstr "Objecten zonder inhoud zijn verwijderd" @@ -5904,7 +6106,8 @@ msgid "" "Instead of considering them as multiple objects, should \n" "the file be loaded as a single object having multiple parts?" msgstr "" -"Dit bestand bevat verschillende objecten die op verschillende hoogten zijn geplaatst.\n" +"Dit bestand bevat verschillende objecten die op verschillende hoogten zijn " +"geplaatst.\n" "In plaats van ze te beschouwen als meerdere objecten, moet\n" "het bestand worden geladen als een enkel object met meerdere delen?" @@ -5912,7 +6115,9 @@ msgid "Multi-part object detected" msgstr "Object met meerdere onderdelen gedetecteerd" msgid "Load these files as a single object with multiple parts?\n" -msgstr "Wilt u deze bestanden laden als een enkel object bestaande uit meerdere onderdelen?\n" +msgstr "" +"Wilt u deze bestanden laden als een enkel object bestaande uit meerdere " +"onderdelen?\n" msgid "Object with multiple parts was detected" msgstr "Er is een object met meerdere onderdelen gedetecteerd" @@ -5921,19 +6126,15 @@ msgid "The file does not contain any geometry data." msgstr "Het bestand bevat geen geometriegegevens." msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat bed " -"automatically." +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" msgstr "" +"Uw object lijkt te groot. Wilt u het verkleinen zodat het automatisch op het " +"printbed past?" msgid "Object too large" msgstr "Object te groot" -msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the heat bed " -"automatically?" -msgstr "" -"Uw object lijkt te groot. Wilt u het verkleinen zodat het automatisch op het printbed past?" - msgid "Export STL file:" msgstr "Exporteer STL bestand:" @@ -6027,21 +6228,24 @@ msgstr "Slicing printbed %d" msgid "Please resolve the slicing errors and publish again." msgstr "Los aub de slicing fouten op en publiceer opnieuw." -msgid "Network Plug-in is not detected. Network related features are unavailable." +msgid "" +"Network Plug-in is not detected. Network related features are unavailable." msgstr "" -"Netwerk plug-in is niet gedetecteerd. Netwerkgerelateerde functies zijn niet beschikbaar." +"Netwerk plug-in is niet gedetecteerd. Netwerkgerelateerde functies zijn niet " +"beschikbaar." msgid "" "Preview only mode:\n" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" "Voorvertoning modus:\n" -"Het geladen bestand bevat alleen G-code, hierdoor is het niet mogelijk om naar de pagina " -"Voorbereiden schakelen." +"Het geladen bestand bevat alleen G-code, hierdoor is het niet mogelijk om " +"naar de pagina Voorbereiden schakelen." msgid "You can keep the modified presets to the new project or discard them" msgstr "" -"Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project of ze laten vervallen" +"Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project of ze " +"laten vervallen" msgid "Creating a new project" msgstr "Start een nieuw project" @@ -6051,11 +6255,12 @@ msgstr "Project laden" msgid "" "Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the project file." +"Please check whether the folder exists online or if other programs open the " +"project file." msgstr "" "Het is niet gelukt om het project op te slaan.\n" -"Controleer of de map online bestaat of dat het projectbestand in andere programma's is " -"geopend." +"Controleer of de map online bestaat of dat het projectbestand in andere " +"programma's is geopend." msgid "Save project" msgstr "Project opslaan" @@ -6079,7 +6284,9 @@ msgstr "Download failed; File size exception." msgid "Project downloaded %d%%" msgstr "Project %d%% gedownload" -msgid "Importing to Orca Slicer failed. Please download the file and manually import it." +msgid "" +"Importing to Orca Slicer failed. Please download the file and manually " +"import it." msgstr "" msgid "Import SLA archive" @@ -6107,7 +6314,8 @@ msgstr "Kan het bestand niet uitpakken naar %1%: %2%" #, boost-format msgid "Failed to find unzipped file at %1%. Unzipping of file has failed." msgstr "" -"Kan het uitgepakte bestand op %1% niet vinden. Het uitpakken van het bestand is mislukt." +"Kan het uitgepakte bestand op %1% niet vinden. Het uitpakken van het bestand " +"is mislukt." msgid "Drop project file" msgstr "Projectbestand neerzetten" @@ -6138,8 +6346,8 @@ msgstr "Alle objecten zullen verwijderd worden, doorgaan?" msgid "The current project has unsaved changes, save it before continue?" msgstr "" -"Het huidige project heeft niet-opgeslagen wijzigingen. Wilt u eerst opslaan voordat u " -"verder gaat?" +"Het huidige project heeft niet-opgeslagen wijzigingen. Wilt u eerst opslaan " +"voordat u verder gaat?" msgid "Number of copies:" msgstr "Aantal kopieën:" @@ -6164,17 +6372,18 @@ msgstr "Bewaar het geslicede bestand als:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed on the printer." +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." msgstr "" -"Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de printer worden " -"bekeken." +"Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de " +"printer worden bekeken." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will be kept. You " -"may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be kept. You may fix the meshes and try again." msgstr "" -"Unable to perform boolean operation on model meshes. Only positive parts will be kept. You " -"may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be kept. You may fix the meshes and try again." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -6193,7 +6402,8 @@ msgid "Reason: \"%1%\" and another part have no intersection." msgstr "Reason: \"%1%\" and another part have no intersection." msgid "" -"Are you sure you want to store original SVGs with their local paths into the 3MF file?\n" +"Are you sure you want to store original SVGs with their local paths into the " +"3MF file?\n" "If you hit 'NO', all SVGs in the project will not be editable any more." msgstr "" @@ -6211,8 +6421,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Afdrukken per object:\n" -"Het wordt geadviseerd om automatisch rangschikken te gebruiken om botsingen tijdens het " -"afdrukken te voorkomen." +"Het wordt geadviseerd om automatisch rangschikken te gebruiken om botsingen " +"tijdens het afdrukken te voorkomen." msgid "Send G-code" msgstr "Verstuur G-code" @@ -6221,7 +6431,8 @@ msgid "Send to printer" msgstr "Stuur naar printer" msgid "Custom supports and color painting were removed before repairing." -msgstr "Handmatig aangebrachte support en kleuren zijn verwijderd voor het repareren." +msgstr "" +"Handmatig aangebrachte support en kleuren zijn verwijderd voor het repareren." msgid "Optimize Rotation" msgstr "" @@ -6272,22 +6483,25 @@ msgid "Tips:" msgstr "Tips:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca " -"Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model " +"on Orca Slicer(windows) or CAD softwares." msgstr "" -"De functie \"Model repareren\" is momenteel alleen beschikbaar op Windows. Repareer het " -"model met OrcaSlicer (Windows) of andere CAD-software." +"De functie \"Model repareren\" is momenteel alleen beschikbaar op Windows. " +"Repareer het model met OrcaSlicer (Windows) of andere CAD-software." #, c-format, boost-format msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you still want to do " -"this printing, please set this filament's bed temperature to non zero." +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " +"still want to do this printing, please set this filament's bed temperature " +"to non zero." msgstr "" -"Plate% d: %s is not suggested for use printing filament %s(%s). If you still want to do " -"this print job, please set this filament's bed temperature to a number that is not zero." +"Plate% d: %s is not suggested for use printing filament %s(%s). If you still " +"want to do this print job, please set this filament's bed temperature to a " +"number that is not zero." msgid "Switching the language requires application restart.\n" -msgstr "Om de taal te wijzigen dient de toepassing opnieuw opgestart te worden.\n" +msgstr "" +"Om de taal te wijzigen dient de toepassing opnieuw opgestart te worden.\n" msgid "Do you want to continue?" msgstr "Wilt u doorgaan?" @@ -6295,6 +6509,11 @@ msgstr "Wilt u doorgaan?" msgid "Language selection" msgstr "Taal selectie" +msgid "Switching application language while some presets are modified." +msgstr "" +"De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn " +"aangepast." + msgid "Changing application language" msgstr "Taal van de applicatie wijzigen" @@ -6353,12 +6572,12 @@ msgid "Stealth Mode" msgstr "Stealth-modus" msgid "" -"This stops the transmission of data to Bambu's cloud services. Users who don't use BBL " -"machines or use LAN mode only can safely turn on this function." +"This stops the transmission of data to Bambu's cloud services. Users who " +"don't use BBL machines or use LAN mode only can safely turn on this function." msgstr "" -"Hiermee wordt het versturen van gegevens naar Bambu's cloudservices gestopt. Gebruikers die " -"geen BambuLab-machines gebruiken of alleen de LAN-modus gebruiken, kunnen deze functie " -"veilig inschakelen." +"Hiermee wordt het versturen van gegevens naar Bambu's cloudservices gestopt. " +"Gebruikers die geen BambuLab-machines gebruiken of alleen de LAN-modus " +"gebruiken, kunnen deze functie veilig inschakelen." msgid "Enable network plugin" msgstr "Netwerkplug-in inschakelen" @@ -6379,20 +6598,22 @@ msgid "Allow only one OrcaSlicer instance" msgstr "Sta slechts één OrcaSlicer-instantie toe" msgid "" -"On OSX there is always only one instance of app running by default. However it is allowed " -"to run multiple instances of same app from the command line. In such case this settings " -"will allow only one instance." +"On OSX there is always only one instance of app running by default. However " +"it is allowed to run multiple instances of same app from the command line. " +"In such case this settings will allow only one instance." msgstr "" -"In OSX is er standaard altijd maar één instantie van een app actief. Het is echter " -"toegestaan om meerdere instanties van dezelfde app uit te voeren vanaf de opdrachtregel. In " -"dat geval staat deze instelling slechts één instantie toe." +"In OSX is er standaard altijd maar één instantie van een app actief. Het is " +"echter toegestaan om meerdere instanties van dezelfde app uit te voeren " +"vanaf de opdrachtregel. In dat geval staat deze instelling slechts één " +"instantie toe." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the same OrcaSlicer is " -"already running, that instance will be reactivated instead." +"If this is enabled, when starting OrcaSlicer and another instance of the " +"same OrcaSlicer is already running, that instance will be reactivated " +"instead." msgstr "" -"Als deze optie is ingeschakeld, wordt OrcaSlicer opnieuw geactiveerd wanneer er al een " -"ander exemplaar van OrcaSlicer is gestart." +"Als deze optie is ingeschakeld, wordt OrcaSlicer opnieuw geactiveerd wanneer " +"er al een ander exemplaar van OrcaSlicer is gestart." msgid "Home" msgstr "Thuis" @@ -6422,24 +6643,27 @@ msgid "Zoom to mouse position" msgstr "Zoomen naar muispositie" msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window " -"center." +"Zoom in towards the mouse pointer's position in the 3D view, rather than the " +"2D window center." msgstr "" -"Zoom in op de positie van de muisaanwijzer in de 3D-weergave, in plaats van op het midden " -"van het venster." +"Zoom in op de positie van de muisaanwijzer in de 3D-weergave, in plaats van " +"op het midden van het venster." msgid "Use free camera" msgstr "Gebruik vrij beweegbare camera" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" -"Als dit is ingeschakeld wordt de vrij beweegbare camera gebruikt, anders een vaste camera." +"Als dit is ingeschakeld wordt de vrij beweegbare camera gebruikt, anders een " +"vaste camera." msgid "Reverse mouse zoom" msgstr "Omgekeerde muiszoom" msgid "If enabled, reverses the direction of zoom with mouse wheel." -msgstr "Als deze optie is ingeschakeld, wordt de zoomrichting met het muiswiel omgedraaid." +msgstr "" +"Als deze optie is ingeschakeld, wordt de zoomrichting met het muiswiel " +"omgedraaid." msgid "Show splash screen" msgstr "Toon startscherm" @@ -6451,42 +6675,48 @@ msgid "Show \"Tip of the day\" notification after start" msgstr "Toon de melding 'Tip van de dag' na het starten" msgid "If enabled, useful hints are displayed at startup." -msgstr "Indien ingeschakeld, worden bij het opstarten nuttige tips weergegeven." +msgstr "" +"Indien ingeschakeld, worden bij het opstarten nuttige tips weergegeven." msgid "Flushing volumes: Auto-calculate everytime the color changed." -msgstr "Spoelvolumes: Automatisch berekenen telkens wanneer de kleur verandert." +msgstr "" +"Spoelvolumes: Automatisch berekenen telkens wanneer de kleur verandert." msgid "If enabled, auto-calculate everytime the color changed." msgstr "" -"Als deze optie is ingeschakeld, wordt elke keer dat de kleur verandert automatisch berekend." +"Als deze optie is ingeschakeld, wordt elke keer dat de kleur verandert " +"automatisch berekend." -msgid "Flushing volumes: Auto-calculate every time when the filament is changed." -msgstr "Spoelvolumes: Automatisch berekenen telkens wanneer het filament wordt vervangen." +msgid "" +"Flushing volumes: Auto-calculate every time when the filament is changed." +msgstr "" +"Spoelvolumes: Automatisch berekenen telkens wanneer het filament wordt " +"vervangen." msgid "If enabled, auto-calculate every time when filament is changed" msgstr "" -"Als dit is ingeschakeld, wordt er automatisch berekend telkens wanneer het filament wordt " -"verwisseld" +"Als dit is ingeschakeld, wordt er automatisch berekend telkens wanneer het " +"filament wordt verwisseld" msgid "Remember printer configuration" msgstr "Printerconfiguratie onthouden" msgid "" -"If enabled, Orca will remember and switch filament/process configuration for each printer " -"automatically." +"If enabled, Orca will remember and switch filament/process configuration for " +"each printer automatically." msgstr "" -"Als dit is ingeschakeld, onthoudt Orca automatisch de filament-/procesconfiguratie voor " -"elke printer en schakelt deze automatisch om." +"Als dit is ingeschakeld, onthoudt Orca automatisch de filament-/" +"procesconfiguratie voor elke printer en schakelt deze automatisch om." msgid "Multi-device Management(Take effect after restarting Orca)." msgstr "Beheer van meerdere apparaten (Werkt nadat Orca opnieuw is opgestart)." msgid "" -"With this option enabled, you can send a task to multiple devices at the same time and " -"manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the " +"same time and manage multiple devices." msgstr "" -"With this option enabled, you can send a task to multiple devices at the same time and " -"manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the " +"same time and manage multiple devices." msgid "Auto arrange plate after cloning" msgstr "Plaat automatisch rangschikken na het klonen" @@ -6498,7 +6728,9 @@ msgid "Network" msgstr "Netwerk" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "Gebruikersvoorinstellingen automatisch synchroniseren (printer/filament/proces)" +msgstr "" +"Gebruikersvoorinstellingen automatisch synchroniseren (printer/filament/" +"proces)" msgid "User Sync" msgstr "Gebruiker synchroniseren" @@ -6520,24 +6752,24 @@ msgstr "Koppel .3mf-bestanden aan OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" msgstr "" -"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing om .3mf-" -"bestanden te openen" +"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing " +"om .3mf-bestanden te openen" msgid "Associate .stl files to OrcaSlicer" msgstr "Koppel .stl-bestanden aan OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" msgstr "" -"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing om .stl-" -"bestanden te openen" +"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing " +"om .stl-bestanden te openen" msgid "Associate .step/.stp files to OrcaSlicer" msgstr "Koppel .step/.stp bestanden aan OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" msgstr "" -"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing om .step-" -"bestanden te openen" +"Indien ingeschakeld, wordt OrcaSlicer ingesteld als de standaardtoepassing " +"om .step-bestanden te openen" msgid "Associate web links to OrcaSlicer" msgstr "Koppel weblinks aan OrcaSlicer" @@ -6560,10 +6792,11 @@ msgstr "Geen waarschuwingen bij het laden van 3MF met aangepaste G-codes" msgid "Auto-Backup" msgstr "Automatisch een back-up maken" -msgid "Backup your project periodically for restoring from the occasional crash." +msgid "" +"Backup your project periodically for restoring from the occasional crash." msgstr "" -"Maak regelmatig een back-up van uw project, zodat u het kunt herstellen na een incidentele " -"crash." +"Maak regelmatig een back-up van uw project, zodat u het kunt herstellen na " +"een incidentele crash." msgid "every" msgstr "elke" @@ -6784,7 +7017,8 @@ msgid "Jump to model publish web page" msgstr "Ga naar de website om het model te publiceren" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "Notitie: het voorbereiden kan enkele minuten duren. Even geduld alstublieft." +msgstr "" +"Notitie: het voorbereiden kan enkele minuten duren. Even geduld alstublieft." msgid "Publish" msgstr "Publiceren" @@ -6823,15 +7057,17 @@ msgstr "Voorinstelling \"%1%\" bestaat al." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "Voorinstelling \"%1%\" bestaat al en is niet compatibel met de huidige printer." +msgstr "" +"Voorinstelling \"%1%\" bestaat al en is niet compatibel met de huidige " +"printer." msgid "Please note that saving action will replace this preset" msgstr "Let er aub op dat opslaan de voorinstelling zal overschrijven" msgid "The name cannot be the same as a preset alias name." msgstr "" -"Er kan niet voor een naam gekozen worden die hetzelfde is als de naam van een " -"voorinstelling." +"Er kan niet voor een naam gekozen worden die hetzelfde is als de naam van " +"een voorinstelling." msgid "Save preset" msgstr "Bewaar voorinstelling" @@ -6854,7 +7090,8 @@ msgstr "Voor \"%1%\", dient \"%2%\" veranderd te worden in \"%3%\" " #, boost-format msgid "For \"%1%\", add \"%2%\" as a new preset" -msgstr "Voor \"%1%\", dient \"%2%\" toegevoegd te worden als nieuwe voorinstelling" +msgstr "" +"Voor \"%1%\", dient \"%2%\" toegevoegd te worden als nieuwe voorinstelling" #, boost-format msgid "Simply switch to \"%1%\"" @@ -6937,98 +7174,110 @@ msgstr "Time-out tijdens synchronisatie van apparaatinformatie" msgid "Cannot send the print job when the printer is updating firmware" msgstr "" -"Kan geen printopdracht verzenden terwijl de printer bezig is met het updaten van de firmware" +"Kan geen printopdracht verzenden terwijl de printer bezig is met het updaten " +"van de firmware" -msgid "The printer is executing instructions. Please restart printing after it ends" +msgid "" +"The printer is executing instructions. Please restart printing after it ends" msgstr "" -"De printer is instructies aan het uitvoeren. Begin opnieuw met printen nadat dit is voltooid" +"De printer is instructies aan het uitvoeren. Begin opnieuw met printen nadat " +"dit is voltooid" msgid "The printer is busy on other print job" msgstr "De printer is bezig met een andere printtaak" #, c-format, boost-format msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer firmware to support " -"AMS slot assignment." +"Filament %s exceeds the number of AMS slots. Please update the printer " +"firmware to support AMS slot assignment." msgstr "" -"Filament %s overschrijdt het aantal AMS-sleuven. Update de firmware van de printer om de " -"toewijzing van AMS-sleuven te ondersteunen." +"Filament %s overschrijdt het aantal AMS-sleuven. Update de firmware van de " +"printer om de toewijzing van AMS-sleuven te ondersteunen." msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware to support AMS " -"slot assignment." +"Filament exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." msgstr "" -"Het filament overschrijdt het aantal AMS-sleuven. Update de firmware van de printer om de " -"toewijzing van AMS-sleuven te ondersteunen." +"Het filament overschrijdt het aantal AMS-sleuven. Update de firmware van de " +"printer om de toewijzing van AMS-sleuven te ondersteunen." msgid "" -"Filaments to AMS slots mappings have been established. You can click a filament above to " -"change its mapping AMS slot" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" msgstr "" -"De toewijzingen van filamenten aan AMS-slots zijn vastgesteld. U kunt op een filament " -"hierboven klikken om de toewijzing van het AMS slot te wijzigen" +"De toewijzingen van filamenten aan AMS-slots zijn vastgesteld. U kunt op een " +"filament hierboven klikken om de toewijzing van het AMS slot te wijzigen" msgid "" -"Please click each filament above to specify its mapping AMS slot before sending the print " -"job" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" msgstr "" -"Klik op elk filament hierboven om de bijbehorende AMS-sleuf op te geven voordat u de " -"printopdracht verzendt" +"Klik op elk filament hierboven om de bijbehorende AMS-sleuf op te geven " +"voordat u de printopdracht verzendt" #, c-format, boost-format msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the printer firmware " -"to support AMS slot assignment." +"Filament %s does not match the filament in AMS slot %s. Please update the " +"printer firmware to support AMS slot assignment." msgstr "" -"Filament %s komt niet overeen met het filament in AMS-sleuf %s. Werk de firmware van de " -"printer bij om de toewijzing van AMS-sleuven te ondersteunen." +"Filament %s komt niet overeen met het filament in AMS-sleuf %s. Werk de " +"firmware van de printer bij om de toewijzing van AMS-sleuven te ondersteunen." msgid "" -"Filament does not match the filament in AMS slot. Please update the printer firmware to " -"support AMS slot assignment." +"Filament does not match the filament in AMS slot. Please update the printer " +"firmware to support AMS slot assignment." msgstr "" -"Het filament komt niet overeen met het filament in de AMS-sleuf. Update de firmware van de " -"printer om de toewijzing van AMS-sleuven te ondersteunen." +"Het filament komt niet overeen met het filament in de AMS-sleuf. Update de " +"firmware van de printer om de toewijzing van AMS-sleuven te ondersteunen." -msgid "The printer firmware only supports sequential mapping of filament => AMS slot." +msgid "" +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." msgstr "" -"De firmware van de printer ondersteunt alleen sequentiële toewijzing van filament => AMS-" -"sleuf." +"De firmware van de printer ondersteunt alleen sequentiële toewijzing van " +"filament => AMS-sleuf." msgid "An SD card needs to be inserted before printing." msgstr "Er moet een MicroSD-kaart worden geplaatst voordat u kunt afdrukken." #, c-format, boost-format msgid "" -"The selected printer (%s) is incompatible with the chosen printer profile in the slicer " -"(%s)." +"The selected printer (%s) is incompatible with the chosen printer profile in " +"the slicer (%s)." msgstr "" -"The selected printer (%s) is incompatible with the chosen printer profile in the slicer " -"(%s)." +"The selected printer (%s) is incompatible with the chosen printer profile in " +"the slicer (%s)." msgid "An SD card needs to be inserted to record timelapse." -msgstr "Er moet een MicroSD-kaart worden geplaatst om een timelapse op te nemen." - -msgid "Cannot send the print job to a printer whose firmware is required to get updated." msgstr "" -"Kan de printopdracht niet naar een printer sturen waarvan de firmware moet worden " -"bijgewerkt." +"Er moet een MicroSD-kaart worden geplaatst om een timelapse op te nemen." + +msgid "" +"Cannot send the print job to a printer whose firmware is required to get " +"updated." +msgstr "" +"Kan de printopdracht niet naar een printer sturen waarvan de firmware moet " +"worden bijgewerkt." msgid "Cannot send the print job for empty plate" msgstr "Kan geen afdruktaak verzenden voor een lege plaat" msgid "This printer does not support printing all plates" -msgstr "Deze printer biedt geen ondersteuning voor het afdrukken van alle platen" +msgstr "" +"Deze printer biedt geen ondersteuning voor het afdrukken van alle platen" msgid "" -"When enable spiral vase mode, machines with I3 structure will not generate timelapse videos." +"When enable spiral vase mode, machines with I3 structure will not generate " +"timelapse videos." msgstr "" -"When spiral vase mode is enabled, machines with I3 structure will not generate timelapse " -"videos." +"When spiral vase mode is enabled, machines with I3 structure will not " +"generate timelapse videos." -msgid "Timelapse is not supported because Print sequence is set to \"By object\"." +msgid "" +"Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Timelapse wordt niet ondersteund omdat Afdruksequentie is ingesteld op \"Per object\"." +"Timelapse wordt niet ondersteund omdat Afdruksequentie is ingesteld op \"Per " +"object\"." msgid "Errors" msgstr "Fouten" @@ -7037,18 +7286,22 @@ msgid "Please check the following:" msgstr "Controleer het volgende:" msgid "" -"The printer type selected when generating G-Code is not consistent with the currently " -"selected printer. It is recommended that you use the same printer type for slicing." +"The printer type selected when generating G-Code is not consistent with the " +"currently selected printer. It is recommended that you use the same printer " +"type for slicing." msgstr "" -"The printer type selected when generating G-Code is not consistent with the currently " -"selected printer. It is recommended that you use the same printer type for slicing." +"The printer type selected when generating G-Code is not consistent with the " +"currently selected printer. It is recommended that you use the same printer " +"type for slicing." msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether they are the " -"required filaments. If they are okay, press \"Confirm\" to start printing." +"There are some unknown filaments in the AMS mappings. Please check whether " +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." msgstr "" -"Er zijn enkele onbekende filamenten in de AMS mappings. Controleer of het de vereiste " -"filamenten zijn. Als ze in orde zijn, klikt u op \"Bevestigen\" om het afdrukken te starten." +"Er zijn enkele onbekende filamenten in de AMS mappings. Controleer of het de " +"vereiste filamenten zijn. Als ze in orde zijn, klikt u op \"Bevestigen\" om " +"het afdrukken te starten." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7059,34 +7312,41 @@ msgid "nozzle memorized: %.2f %s" msgstr "mondstuk onthouden: %.2f %s" msgid "" -"Your nozzle diameter in sliced file is not consistent with memorized nozzle. If you changed " -"your nozzle lately, please go to Device > Printer Parts to change settings." +"Your nozzle diameter in sliced file is not consistent with memorized nozzle. " +"If you changed your nozzle lately, please go to Device > Printer Parts to " +"change settings." msgstr "" -"De dieameter van het mondstuk in het bestand komt niet overeen met het opgeslagen mondstuk. " -"Als u uw mondstuk onlangs hebt gewijzigd, ga dan naar Apparaat > Printeronderdelen om de " -"instellingen te wijzigen." +"De dieameter van het mondstuk in het bestand komt niet overeen met het " +"opgeslagen mondstuk. Als u uw mondstuk onlangs hebt gewijzigd, ga dan naar " +"Apparaat > Printeronderdelen om de instellingen te wijzigen." #, c-format, boost-format -msgid "Printing high temperature material(%s material) with %s may cause nozzle damage" +msgid "" +"Printing high temperature material(%s material) with %s may cause nozzle " +"damage" msgstr "" -"Het printen van materiaal met een hoge temperatuur (%s materiaal) met %s kan schade aan het " -"mondstuk veroorzaken" +"Het printen van materiaal met een hoge temperatuur (%s materiaal) met %s kan " +"schade aan het mondstuk veroorzaken" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." -msgid "Please click the confirm button if you still want to proceed with printing." -msgstr "Please click the confirm button if you still want to proceed with printing." - -msgid "Connecting to the printer. Unable to cancel during the connection process." -msgstr "Aansluiten op de printer. Kan niet annuleren tijdens het verbindingsproces." +msgid "" +"Please click the confirm button if you still want to proceed with printing." +msgstr "" +"Please click the confirm button if you still want to proceed with printing." msgid "" -"Caution to use! Flow calibration on Textured PEI Plate may fail due to the scattered " -"surface." +"Connecting to the printer. Unable to cancel during the connection process." msgstr "" -"Let op bij gebruik! Flowkalibratie op de PEI-plaat met structuur kan mislukken vanwege het " -"verstrooide oppervlak." +"Aansluiten op de printer. Kan niet annuleren tijdens het verbindingsproces." + +msgid "" +"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " +"scattered surface." +msgstr "" +"Let op bij gebruik! Flowkalibratie op de PEI-plaat met structuur kan " +"mislukken vanwege het verstrooide oppervlak." msgid "Automatic flow calibration using Micro Lidar" msgstr "Automatic flow calibration using the Micro Lidar" @@ -7104,17 +7364,21 @@ msgid "Cannot send the print task when the upgrade is in progress" msgstr "Kan de printtaak niet verzenden wanneer de upgrade wordt uitgevoerd" msgid "The selected printer is incompatible with the chosen printer presets." -msgstr "De geselecteerde printer is niet compatibel met de gekozen printervoorinstellingen." +msgstr "" +"De geselecteerde printer is niet compatibel met de gekozen " +"printervoorinstellingen." msgid "An SD card needs to be inserted before send to printer SD card." -msgstr "A MicroSD card needs to be inserted before sending to the printer SD card." +msgstr "" +"A MicroSD card needs to be inserted before sending to the printer SD card." msgid "The printer is required to be in the same LAN as Orca Slicer." msgstr "De printer moet zich in hetzelfde LAN bevinden als Orca Slicer." msgid "The printer does not support sending to printer SD card." msgstr "" -"De printer biedt geen ondersteuning voor het verzenden naar de microSD-kaart van de printer." +"De printer biedt geen ondersteuning voor het verzenden naar de microSD-kaart " +"van de printer." msgid "Slice ok." msgstr "Slice gelukt." @@ -7187,17 +7451,17 @@ msgid "Terms and Conditions" msgstr "Algemene voorwaarden" msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, please read " -"the termsand conditions.By clicking to agree to use your Bambu Lab device, you agree to " -"abide by the Privacy Policyand Terms of Use(collectively, the \"Terms\"). If you do not " -"comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment " -"and services." +"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " +"device, please read the termsand conditions.By clicking to agree to use your " +"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " +"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " +"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgstr "" -"Thank you for purchasing a Bambu Lab device. Before using your Bambu Lab device, please " -"read the terms and conditions. By clicking to agree to use your Bambu Lab device, you agree " -"to abide by the Privacy Policy and Terms of Use (collectively, the \"Terms\"). If you do " -"not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab " -"equipment and services." +"Thank you for purchasing a Bambu Lab device. Before using your Bambu Lab " +"device, please read the terms and conditions. By clicking to agree to use " +"your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of " +"Use (collectively, the \"Terms\"). If you do not comply with or agree to the " +"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgid "and" msgstr "en" @@ -7213,25 +7477,29 @@ msgstr "Statement about User Experience Improvement Program" #, c-format, boost-format msgid "" -"In the 3D Printing community, we learn from each other's successes and failures to adjust " -"our own slicing parameters and settings. %s follows the same principle and uses machine " -"learning to improve its performance from the successes and failures of the vast number of " -"prints by our users. We are training %s to be smarter by feeding them the real-world data. " -"If you are willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will not collect any " -"Personal Data by which an individual can be identified directly or indirectly, including " -"without limitation names, addresses, payment information, or phone numbers. By enabling " -"this service, you agree to these terms and the statement about Privacy Policy." +"In the 3D Printing community, we learn from each other's successes and " +"failures to adjust our own slicing parameters and settings. %s follows the " +"same principle and uses machine learning to improve its performance from the " +"successes and failures of the vast number of prints by our users. We are " +"training %s to be smarter by feeding them the real-world data. If you are " +"willing, this service will access information from your error logs and usage " +"logs, which may include information described in Privacy Policy. We will " +"not collect any Personal Data by which an individual can be identified " +"directly or indirectly, including without limitation names, addresses, " +"payment information, or phone numbers. By enabling this service, you agree " +"to these terms and the statement about Privacy Policy." msgstr "" -"In the 3D Printing community, we learn from each other's successes and failures to adjust " -"our own slicing parameters and settings. %s follows the same principle and uses machine " -"learning to improve its performance from the successes and failures of the vast number of " -"prints by our users. We are training %s to be smarter by feeding them the real-world data. " -"If you are willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will not collect any " -"Personal Data by which an individual can be identified directly or indirectly, including " -"without limitation names, addresses, payment information, or phone numbers. By enabling " -"this service, you agree to these terms and the statement about Privacy Policy." +"In the 3D Printing community, we learn from each other's successes and " +"failures to adjust our own slicing parameters and settings. %s follows the " +"same principle and uses machine learning to improve its performance from the " +"successes and failures of the vast number of prints by our users. We are " +"training %s to be smarter by feeding them the real-world data. If you are " +"willing, this service will access information from your error logs and usage " +"logs, which may include information described in Privacy Policy. We will " +"not collect any Personal Data by which an individual can be identified " +"directly or indirectly, including without limitation names, addresses, " +"payment information, or phone numbers. By enabling this service, you agree " +"to these terms and the statement about Privacy Policy." msgid "Statement on User Experience Improvement Plan" msgstr "Statement on User Experience Improvement Plan" @@ -7250,7 +7518,8 @@ msgstr "Eerst inloggen aub." msgid "There was a problem connecting to the printer. Please try again." msgstr "" -"Er is een probleem opgetreden tijdens het verbinden met de printer. Probeer het opnieuw." +"Er is een probleem opgetreden tijdens het verbinden met de printer. Probeer " +"het opnieuw." msgid "Failed to log out." msgstr "Uitloggen mislukt." @@ -7267,33 +7536,38 @@ msgid "Search in preset" msgstr "Zoeken in voorinstelling" msgid "Click to reset all settings to the last saved preset." -msgstr "Klik om alle instellingen terug te zetten naar de laatst opgeslagen voorinstelling." +msgstr "" +"Klik om alle instellingen terug te zetten naar de laatst opgeslagen " +"voorinstelling." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the model without prime " -"tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" msgstr "" -"Een Prime-toren is vereist voor een vloeiende timeplase-modus. Er kunnen gebreken ontstaan " -"aan het model zonder prime-toren. Weet je zeker dat je de prime-toren wilt uitschakelen?" +"Een Prime-toren is vereist voor een vloeiende timeplase-modus. Er kunnen " +"gebreken ontstaan aan het model zonder prime-toren. Weet je zeker dat je de " +"prime-toren wilt uitschakelen?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the model without prime " -"tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Do you want to enable prime tower?" msgstr "" -"Een prime-toren is vereist voor een vloeiende timelapse-modus. Er kunnen gebreken ontstaan " -"aan het model zonder prime-toren. Wilt u de prime-toren inschakelen?" +"Een prime-toren is vereist voor een vloeiende timelapse-modus. Er kunnen " +"gebreken ontstaan aan het model zonder prime-toren. Wilt u de prime-toren " +"inschakelen?" msgid "Still print by object?" msgstr "Print je nog steeds per object?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller support volume but " -"weaker strength.\n" +"We have added an experimental style \"Tree Slim\" that features smaller " +"support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" "We hebben een experimentele stijl toegevoegd, „Tree Slim”, met een kleiner " "ondersteuningsvolume maar een zwakkere sterkte.\n" -"We raden aan om het te gebruiken met: 0 interfacelagen, 0 bovenafstand, 2 muren." +"We raden aan om het te gebruiken met: 0 interfacelagen, 0 bovenafstand, 2 " +"muren." msgid "" "Change these settings automatically? \n" @@ -7305,34 +7579,34 @@ msgstr "" "Nee - Wijzig deze instellingen niet voor mij" msgid "" -"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following settings: at " -"least 2 interface layers, at least 0.1mm top z distance or using support materials on " -"interface." +"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." msgstr "" -"Voor de stijlen „Tree Strong” en „Tree Hybrid” raden we de volgende instellingen aan: ten " -"minste 2 interfacelagen, ten minste 0,1 mm op z afstand of gebruik support materiaal op de " -"interface." +"Voor de stijlen „Tree Strong” en „Tree Hybrid” raden we de volgende " +"instellingen aan: ten minste 2 interfacelagen, ten minste 0,1 mm op z " +"afstand of gebruik support materiaal op de interface." msgid "" -"When using support material for the support interface, We recommend the following " -"settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable independent support " -"layer height" +"When using support material for the support interface, We recommend the " +"following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable " +"independent support layer height" msgstr "" -"When using support material for the support interface, we recommend the following " -"settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable independent support " -"layer height" +"When using support material for the support interface, we recommend the " +"following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable " +"independent support layer height" msgid "" -"Enabling this option will modify the model's shape. If your print requires precise " -"dimensions or is part of an assembly, it's important to double-check whether this change in " -"geometry impacts the functionality of your print." +"Enabling this option will modify the model's shape. If your print requires " +"precise dimensions or is part of an assembly, it's important to double-check " +"whether this change in geometry impacts the functionality of your print." msgstr "" -"Als u deze optie inschakelt, wordt de vorm van het model aangepast. Als uw afdruk precieze " -"afmetingen vereist of deel uitmaakt van een samenstelling, is het belangrijk om te " -"controleren of deze geometrie verandering van invloed is op de functionaliteit van uw " -"afdruk." +"Als u deze optie inschakelt, wordt de vorm van het model aangepast. Als uw " +"afdruk precieze afmetingen vereist of deel uitmaakt van een samenstelling, " +"is het belangrijk om te controleren of deze geometrie verandering van " +"invloed is op de functionaliteit van uw afdruk." msgid "Are you sure you want to enable this option?" msgstr "Weet u zeker dat u deze optie wilt inschakelen?" @@ -7345,8 +7619,8 @@ msgstr "" "Het zal worden ingesteld op min_layer_height\n" msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits ,this " -"may cause printing quality issues." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " +"height limits ,this may cause printing quality issues." msgstr "" "De laaghoogte overschrijdt de limiet in Printerinstellingen -> Extruder -> " "Laaghoogtelimieten, dit kan problemen met de afdrukkwaliteit veroorzaken." @@ -7361,36 +7635,38 @@ msgid "Ignore" msgstr "Negeer" msgid "" -"Experimental feature: Retracting and cutting off the filament at a greater distance during " -"filament changes to minimize flush.Although it can notably reduce flush, it may also " -"elevate the risk of nozzle clogs or other printing complications." +"Experimental feature: Retracting and cutting off the filament at a greater " +"distance during filament changes to minimize flush.Although it can notably " +"reduce flush, it may also elevate the risk of nozzle clogs or other " +"printing complications." msgstr "" -"Experimentele functie: Het filament op grotere afstand terugtrekken en afsnijden tijdens " -"filamentwisselingen om flush te minimaliseren. Hoewel het het doorspoelen aanzienlijk kan " -"verminderen, kan het ook het risico op een verstopt mondstuk of andere printcomplicaties " -"vergroten." +"Experimentele functie: Het filament op grotere afstand terugtrekken en " +"afsnijden tijdens filamentwisselingen om flush te minimaliseren. Hoewel het " +"het doorspoelen aanzienlijk kan verminderen, kan het ook het risico op een " +"verstopt mondstuk of andere printcomplicaties vergroten." msgid "" -"Experimental feature: Retracting and cutting off the filament at a greater distance during " -"filament changes to minimize flush.Although it can notably reduce flush, it may also " -"elevate the risk of nozzle clogs or other printing complications.Please use with the latest " -"printer firmware." +"Experimental feature: Retracting and cutting off the filament at a greater " +"distance during filament changes to minimize flush.Although it can notably " +"reduce flush, it may also elevate the risk of nozzle clogs or other printing " +"complications.Please use with the latest printer firmware." msgstr "" -"Experimentele functie: Het filament op grotere afstand terugtrekken en afsnijden tijdens " -"filamentwisselingen om flush te minimaliseren. Hoewel het het doorspoelen aanzienlijk kan " -"verminderen, kan het ook het risico op een verstopt mondstuk of andere printcomplicaties " -"vergroten. Gebruik dit met de nieuwste printerfirmware." +"Experimentele functie: Het filament op grotere afstand terugtrekken en " +"afsnijden tijdens filamentwisselingen om flush te minimaliseren. Hoewel het " +"het doorspoelen aanzienlijk kan verminderen, kan het ook het risico op een " +"verstopt mondstuk of andere printcomplicaties vergroten. Gebruik dit met de " +"nieuwste printerfirmware." msgid "" -"When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe " -"Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse " -"Wipe Tower\"." +"When recording timelapse without toolhead, it is recommended to add a " +"\"Timelapse Wipe Tower\" \n" +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" -"Bij het opnemen van timelapse zonder toolhead is het aan te raden om een „Timelapse Wipe " -"Tower” toe te voegen \n" -"door met de rechtermuisknop op de lege positie van de bouwplaat te klikken en „Add " -"Primitive” ->\"Timelapse Wipe Tower” te kiezen." +"Bij het opnemen van timelapse zonder toolhead is het aan te raden om een " +"„Timelapse Wipe Tower” toe te voegen \n" +"door met de rechtermuisknop op de lege positie van de bouwplaat te klikken " +"en „Add Primitive” ->\"Timelapse Wipe Tower” te kiezen." msgid "Line width" msgstr "Lijn dikte" @@ -7429,13 +7705,14 @@ msgid "Overhang speed" msgstr "Snelheid voor overhangende gebieden" msgid "" -"This is the speed for various overhang degrees. Overhang degrees are expressed as a " -"percentage of line width. 0 speed means no slowing down for the overhang degree range and " -"wall speed is used" +"This is the speed for various overhang degrees. Overhang degrees are " +"expressed as a percentage of line width. 0 speed means no slowing down for " +"the overhang degree range and wall speed is used" msgstr "" -"Dit is de snelheid voor diverse overhanggraden. Overhanggraden worden uitgedrukt als een " -"percentage van de laag breedte. 0 betekend dat er niet afgeremd wordt voor overhanggraden " -"en dat dezelfde snelheid als voor wanden gebruikt wordt" +"Dit is de snelheid voor diverse overhanggraden. Overhanggraden worden " +"uitgedrukt als een percentage van de laag breedte. 0 betekend dat er niet " +"afgeremd wordt voor overhanggraden en dat dezelfde snelheid als voor wanden " +"gebruikt wordt" msgid "Bridge" msgstr "Brug" @@ -7494,18 +7771,20 @@ msgstr "Veelgebruikt" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time estimation." +"Please remove it, or will beat G-code visualization and printing time " +"estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time estimation." +"Please remove them, or will beat G-code visualization and printing time " +"estimation." msgstr[0] "" "De volgende regel %s bevat gereserveerde trefwoorden.\n" -"Verwijder deze woorden alstublieft, anders overschrijven deze de G-code-visualisatie en de " -"schatting van de afdruktijd." +"Verwijder deze woorden alstublieft, anders overschrijven deze de G-code-" +"visualisatie en de schatting van de afdruktijd." msgstr[1] "" "De volgende regel %s bevat gereserveerde trefwoorden.\n" -"Verwijder deze woorden alstublieft, anders overschrijven deze de G-code-visualisatie en de " -"schatting van de afdruktijd." +"Verwijder deze woorden alstublieft, anders overschrijven deze de G-code-" +"visualisatie en de schatting van de afdruktijd." msgid "Reserved keywords found" msgstr "Gereserveerde zoekworden gevonden" @@ -7524,7 +7803,8 @@ msgstr "Aanbevolen mondstuk temperatuur" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" -"De geadviseerde mondstuk temperatuur voor dit filament. 0 betekend dat er geen waarde is" +"De geadviseerde mondstuk temperatuur voor dit filament. 0 betekend dat er " +"geen waarde is" msgid "Flow ratio and Pressure Advance" msgstr "" @@ -7545,42 +7825,45 @@ msgid "Cool plate" msgstr "Koudeplaat" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does not support " -"to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur wanneer de koelplaat is geïnstalleerd. Een waarde van 0 betekent " -"dat het filament printen op de Cool Plate niet ondersteunt." +"Dit is de bedtemperatuur wanneer de koelplaat is geïnstalleerd. Een waarde " +"van 0 betekent dat het filament printen op de Cool Plate niet ondersteunt." msgid "Engineering plate" msgstr "Engineering plaat" msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the filament does not " -"support to print on the Engineering Plate" +"Bed temperature when engineering plate is installed. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur wanneer de technische plaat is geïnstalleerd. Een waarde van 0 " -"betekent dat het filament afdrukken op de Engineering Plate niet ondersteunt." +"Dit is de bedtemperatuur wanneer de technische plaat is geïnstalleerd. Een " +"waarde van 0 betekent dat het filament afdrukken op de Engineering Plate " +"niet ondersteunt." msgid "Smooth PEI Plate / High Temp Plate" msgstr "Gladde PEI-plaat / Hoge temperatuurplaat" msgid "" -"Bed temperature when Smooth PEI Plate/High temperature plate is installed. Value 0 means " -"the filament does not support to print on the Smooth PEI Plate/High Temp Plate" +"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " +"Value 0 means the filament does not support to print on the Smooth PEI Plate/" +"High Temp Plate" msgstr "" -"Bedtemperatuur wanneer gladde PEI-plaat/hoge temperatuurplaat is geïnstalleerd. Waarde 0 " -"betekent dat het filament niet geschikt is voor afdrukken op de gladde PEI-plaat/hoge " -"temperatuurplaat." +"Bedtemperatuur wanneer gladde PEI-plaat/hoge temperatuurplaat is " +"geïnstalleerd. Waarde 0 betekent dat het filament niet geschikt is voor " +"afdrukken op de gladde PEI-plaat/hoge temperatuurplaat." msgid "Textured PEI Plate" msgstr "Getextureerde PEI-plaat" msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" -"Bedtemperatuur wanneer een getextureerde PEI-plaat is geïnstalleerd. 0 betekent dat het " -"filament niet wordt ondersteund op de getextureerde PEI-plaat" +"Bedtemperatuur wanneer een getextureerde PEI-plaat is geïnstalleerd. 0 " +"betekent dat het filament niet wordt ondersteund op de getextureerde PEI-" +"plaat" msgid "Volumetric speed limitation" msgstr "Volumetrische snelheidsbeperking" @@ -7598,24 +7881,26 @@ msgid "Min fan speed threshold" msgstr "Minimale snelheidsdrempel ventilator snelheid" msgid "" -"Part cooling fan speed will start to run at min speed when the estimated layer time is no " -"longer than the layer time in setting. When layer time is shorter than threshold, fan speed " -"is interpolated between the minimum and maximum fan speed according to layer printing time" +"Part cooling fan speed will start to run at min speed when the estimated " +"layer time is no longer than the layer time in setting. When layer time is " +"shorter than threshold, fan speed is interpolated between the minimum and " +"maximum fan speed according to layer printing time" msgstr "" -"De snelheid van de printkop ventilator begint op minimale snelheid te draaien wanneer de " -"geschatte printtijd voor de laag niet langer is dan de printtijd in de instelling. Wanneer " -"de printtijd korter is dan de drempelwaarde, wordt de ventilatorsnelheid geïnterpoleerd " -"tussen de minimale en maximale ventilatorsnelheid volgens de printtijd van de laag" +"De snelheid van de printkop ventilator begint op minimale snelheid te " +"draaien wanneer de geschatte printtijd voor de laag niet langer is dan de " +"printtijd in de instelling. Wanneer de printtijd korter is dan de " +"drempelwaarde, wordt de ventilatorsnelheid geïnterpoleerd tussen de minimale " +"en maximale ventilatorsnelheid volgens de printtijd van de laag" msgid "Max fan speed threshold" msgstr "Snelheidsdrempel ventilatorsnelheid" msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter than the " -"setting value" +"Part cooling fan speed will be max when the estimated layer time is shorter " +"than the setting value" msgstr "" -"De snelheid van de printkop ventilator zal maximaal zijn als de inschatte tijd voor het " -"printen van de laag lager is dan de ingestelde waarde" +"De snelheid van de printkop ventilator zal maximaal zijn als de inschatte " +"tijd voor het printen van de laag lager is dan de ingestelde waarde" msgid "Auxiliary part cooling fan" msgstr "Extra koel ventilator" @@ -7730,8 +8015,8 @@ msgstr "" msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder nozzle diameter " -"value?" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" msgstr "" msgid "Nozzle diameter" @@ -7744,8 +8029,8 @@ msgid "Single extruder multimaterial parameters" msgstr "Parameter voor multi-material met één extruder" msgid "" -"This is a single extruder multimaterial printer, diameters of all extruders will be set to " -"the new value. Do you want to proceed?" +"This is a single extruder multimaterial printer, diameters of all extruders " +"will be set to the new value. Do you want to proceed?" msgstr "" msgid "Layer height limits" @@ -7774,14 +8059,15 @@ msgstr "Losgemaakt" #, c-format, boost-format msgid "" -"%d Filament Preset and %d Process Preset is attached to this printer. Those presets would " -"be deleted if the printer is deleted." +"%d Filament Preset and %d Process Preset is attached to this printer. Those " +"presets would be deleted if the printer is deleted." msgstr "" -"%d Filament Preset en %d Process Preset zijn gekoppeld aan deze printer. Deze " -"voorinstellingen worden verwijderd als de printer wordt verwijderd." +"%d Filament Preset en %d Process Preset zijn gekoppeld aan deze printer. " +"Deze voorinstellingen worden verwijderd als de printer wordt verwijderd." msgid "Presets inherited by other presets can not be deleted!" -msgstr "Presets die door andere presets worden geërfd, kunnen niet worden verwijderd!" +msgstr "" +"Presets die door andere presets worden geërfd, kunnen niet worden verwijderd!" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." @@ -7800,12 +8086,12 @@ msgstr[1] "De volgende voorinstelling zal ook verwijderd worden@" msgid "" "Are you sure to delete the selected preset? \n" -"If the preset corresponds to a filament currently in use on your printer, please reset the " -"filament information for that slot." +"If the preset corresponds to a filament currently in use on your printer, " +"please reset the filament information for that slot." msgstr "" "Weet je zeker dat je de geselecteerde preset wilt verwijderen? \n" -"Als de voorinstelling overeenkomt met een filament dat momenteel in gebruik is op je " -"printer, reset dan de filamentinformatie voor die sleuf." +"Als de voorinstelling overeenkomt met een filament dat momenteel in gebruik " +"is op je printer, reset dan de filamentinformatie voor die sleuf." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -7818,11 +8104,13 @@ msgid "Set" msgstr "Instellen" msgid "Click to reset current value and attach to the global value." -msgstr "Klik om de huidige waarde terug te zetten en de globale waarde toe te passen." +msgstr "" +"Klik om de huidige waarde terug te zetten en de globale waarde toe te passen." msgid "Click to drop current modify and reset to saved value." msgstr "" -"Klik om de huidige aanpassingen te verwerpen en terug te gaan naar de standaard instelling." +"Klik om de huidige aanpassingen te verwerpen en terug te gaan naar de " +"standaard instelling." msgid "Process Settings" msgstr "Procesinstellingen" @@ -7867,7 +8155,9 @@ msgid "Keep the selected options." msgstr "Bewaar de geselecteerde opties." msgid "Transfer the selected options to the newly selected preset." -msgstr "Breng de geselecteerde opties over naar de nieuwe geselecteerde voorinstelling" +msgstr "" +"Breng de geselecteerde opties over naar de nieuwe geselecteerde " +"voorinstelling" #, boost-format msgid "" @@ -7882,28 +8172,30 @@ msgid "" "Transfer the selected options to the newly selected preset \n" "\"%1%\"." msgstr "" -"Breng de geselecteerde opties over naar de nieuwe geselecteerde voorinstelling\n" +"Breng de geselecteerde opties over naar de nieuwe geselecteerde " +"voorinstelling\n" "\"%1%\"." #, boost-format msgid "Preset \"%1%\" contains the following unsaved changes:" -msgstr "Voorinstelling \"%1%\" bevat de navolgende nog niet opgeslagen aanpassingen:" +msgstr "" +"Voorinstelling \"%1%\" bevat de navolgende nog niet opgeslagen aanpassingen:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it contains the following " -"unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" msgstr "" -"Voorinstelling \"%1%\" is niet compatibel met het nieuwe printer profiel en bevat de " -"navolgende nog niet opgeslagen aanpassingen:" +"Voorinstelling \"%1%\" is niet compatibel met het nieuwe printer profiel en " +"bevat de navolgende nog niet opgeslagen aanpassingen:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it contains the following " -"unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" msgstr "" -"Voorinstelling \"%1%\" is niet compatibel met het niet proces profiel en bevat de " -"navolgende nog niet opgeslagen aanpassingen:" +"Voorinstelling \"%1%\" is niet compatibel met het niet proces profiel en " +"bevat de navolgende nog niet opgeslagen aanpassingen:" #, boost-format msgid "You have changed some settings of preset \"%1%\". " @@ -7918,8 +8210,8 @@ msgstr "" msgid "" "\n" -"You can save or discard the preset values you have modified, or choose to transfer the " -"values you have modified to the new preset." +"You can save or discard the preset values you have modified, or choose to " +"transfer the values you have modified to the new preset." msgstr "" msgid "You have previously modified your settings." @@ -7927,8 +8219,8 @@ msgstr "You have previously modified your settings." msgid "" "\n" -"You can discard the preset values you have modified, or choose to transfer the modified " -"values to the new project" +"You can discard the preset values you have modified, or choose to transfer " +"the modified values to the new project" msgstr "" msgid "Extruders count" @@ -7946,19 +8238,22 @@ msgstr "Toon alle presets (inclusief incompatibele)" msgid "Select presets to compare" msgstr "Select presets to compare" -msgid "You can only transfer to current active profile because it has been modified." +msgid "" +"You can only transfer to current active profile because it has been modified." msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close this dialog." +"Note: New modified presets will be selected in settings tabs after close " +"this dialog." msgstr "" msgid "Transfer values from left to right" msgstr "" msgid "" -"If enabled, this dialog can be used for transfer selected values from left to right preset." +"If enabled, this dialog can be used for transfer selected values from left " +"to right preset." msgstr "" msgid "Add File" @@ -8003,7 +8298,9 @@ msgid "Configuration update" msgstr "Configuratie update" msgid "A new configuration package available, Do you want to install it?" -msgstr "Er is een installatiebestand met een nieuwe configuratie. Wilt u deze installeren?" +msgstr "" +"Er is een installatiebestand met een nieuwe configuratie. Wilt u deze " +"installeren?" msgid "Description:" msgstr "Omschrijving:" @@ -8027,7 +8324,9 @@ msgid "Exit %s" msgstr "Exit %s" msgid "the Configuration package is incompatible with current APP." -msgstr "Het configuratie bestand is niet compatibel met de huidige versie van Bambu Studio." +msgstr "" +"Het configuratie bestand is niet compatibel met de huidige versie van Bambu " +"Studio." msgid "Configuration updates" msgstr "Configuratie updates" @@ -8096,24 +8395,26 @@ msgid "Ramming customization" msgstr "Ramming aanpassen" msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM " -"printer. Its purpose is to properly shape the end of the unloaded filament so it does not " -"prevent insertion of the new filament and can itself be reinserted later. This phase is " -"important and different materials can require different extrusion speeds to get the good " -"shape. For this reason, the extrusion rates during ramming are adjustable.\n" +"Ramming denotes the rapid extrusion just before a tool change in a single-" +"extruder MM printer. Its purpose is to properly shape the end of the " +"unloaded filament so it does not prevent insertion of the new filament and " +"can itself be reinserted later. This phase is important and different " +"materials can require different extrusion speeds to get the good shape. For " +"this reason, the extrusion rates during ramming are adjustable.\n" "\n" -"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder " -"wheel grinding into filament etc." +"This is an expert-level setting, incorrect adjustment will likely lead to " +"jams, extruder wheel grinding into filament etc." msgstr "" -"Ramming wordt gebruikt voor het snel extruderen vlak voor een toolwisseling bij multi-" -"materialprinters met één extruder. Het doel daarvan is om het einde van het ongeladen " -"filament goed te vormen (zodat het later weer geladen kan worden) en nieuw filament niet " -"verhinderd wordt. Deze fase is belangrijk. Verschillende materialen vereisen verschillende " -"extrusiesnelheden voor de juiste vorm. Daarom zijn de waarden tijdens de ramming aan te " -"passen.\n" +"Ramming wordt gebruikt voor het snel extruderen vlak voor een toolwisseling " +"bij multi-materialprinters met één extruder. Het doel daarvan is om het " +"einde van het ongeladen filament goed te vormen (zodat het later weer " +"geladen kan worden) en nieuw filament niet verhinderd wordt. Deze fase is " +"belangrijk. Verschillende materialen vereisen verschillende " +"extrusiesnelheden voor de juiste vorm. Daarom zijn de waarden tijdens de " +"ramming aan te passen.\n" "\n" -"Dit is een expert-level instelling. Onjuiste aanpassingen kunnen zorgen voor verstoppingen " -"en andere problemen." +"Dit is een expert-level instelling. Onjuiste aanpassingen kunnen zorgen voor " +"verstoppingen en andere problemen." msgid "Total ramming time" msgstr "Totale ramming-tijd" @@ -8140,8 +8441,8 @@ msgid "Flushing volumes for filament change" msgstr "Volumes reinigen voor filament wijziging" msgid "" -"Orca would re-calculate your flushing volumes everytime the filaments color changed. You " -"could disable the auto-calculate in Orca Slicer > Preferences" +"Orca would re-calculate your flushing volumes everytime the filaments color " +"changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" msgid "Flushing volume (mm³) for each filament pair." @@ -8153,7 +8454,8 @@ msgstr "Suggestie: Spoelvolume in bereik [%d, %d]" #, c-format, boost-format msgid "The multiplier should be in range [%.2f, %.2f]." -msgstr "De vermenigvuldigingsfactor moet in het bereik liggen van [%.2f, %.2f]." +msgstr "" +"De vermenigvuldigingsfactor moet in het bereik liggen van [%.2f, %.2f]." msgid "Multiplier" msgstr "Vermenigvuldiger" @@ -8174,29 +8476,29 @@ msgid "To" msgstr "Naar" msgid "" -"Windows Media Player is required for this task! Do you want to enable 'Windows Media " -"Player' for your operation system?" +"Windows Media Player is required for this task! Do you want to enable " +"'Windows Media Player' for your operation system?" msgstr "" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes to re-register " -"it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes " +"to re-register it. You will be promoted twice" msgstr "" msgid "" -"Missing BambuSource component registered for media playing! Please re-install BambuStutio " -"or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-" +"install BambuStutio or seek after-sales help." msgstr "" msgid "" -"Using a BambuSource from a different install, video play may not work correctly! Press Yes " -"to fix it." +"Using a BambuSource from a different install, video play may not work " +"correctly! Press Yes to fix it." msgstr "" msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try " -"installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca " -"Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to " +"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" +"libav packages, then restart Orca Slicer?)" msgstr "" msgid "Bambu Network plug-in not detected." @@ -8223,14 +8525,19 @@ msgstr "Object lijst" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Plakken vanuit klembord" msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Dialoogvenster met instellingen voor 3Dconnexion-apparaten weergeven/verbergen" +msgstr "" +"Dialoogvenster met instellingen voor 3Dconnexion-apparaten weergeven/" +"verbergen" msgid "Switch table page" msgstr "Schakeltabel pagina" @@ -8260,12 +8567,13 @@ msgid "Shift+R" msgstr "Shift+R" msgid "" -"Auto orientates selected objects or all objects.If there are selected objects, it just " -"orientates the selected ones.Otherwise, it will orientates all objects in the current disk." +"Auto orientates selected objects or all objects.If there are selected " +"objects, it just orientates the selected ones.Otherwise, it will orientates " +"all objects in the current disk." msgstr "" -"Oriënteert automatisch geselecteerde objecten of alle objecten. Als er geselecteerde " -"objecten zijn, oriënteert het alleen de geselecteerde objecten. Anders oriënteert het alle " -"objecten op de disk." +"Oriënteert automatisch geselecteerde objecten of alle objecten. Als er " +"geselecteerde objecten zijn, oriënteert het alleen de geselecteerde " +"objecten. Anders oriënteert het alle objecten op de disk." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -8273,18 +8581,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "De menubalk in-/uitschuiven" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+willekeurige pijl" msgid "Movement in camera space" msgstr "Beweging in cameragebied" +msgid "⌥+Left mouse button" +msgstr "⌥+Linker muisknop" + msgid "Select a part" msgstr "Selecteer een onderdeel" +msgid "⌘+Left mouse button" +msgstr "⌘+Linker muisknop" + msgid "Select multiple objects" msgstr "Selecteer meerdere objecten" +msgid "Ctrl+Any arrow" +msgstr "CTRL+willekeurige pijl" + +msgid "Alt+Left mouse button" +msgstr "Alt+Linker muisknop" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Linker muisknop" + msgid "Shift+Left mouse button" msgstr "Shift+Linker muisknop" @@ -8387,12 +8710,24 @@ msgstr "Plaat" msgid "Move: press to snap by 1mm" msgstr "Verplaatsen: druk om 1 mm te verplaatsen" +msgid "⌘+Mouse wheel" +msgstr "⌘+muiswiel" + msgid "Support/Color Painting: adjust pen radius" msgstr "Support/kleur intekenen: pas de pen diameter aan" +msgid "⌥+Mouse wheel" +msgstr "⌥+Muiswiel" + msgid "Support/Color Painting: adjust section position" msgstr "Support/kleur intekenen: pas de sectie positie aan" +msgid "Ctrl+Mouse wheel" +msgstr "CTRL+muiswiel" + +msgid "Alt+Mouse wheel" +msgstr "Alt+muiswiel" + msgid "Gizmo" msgstr "Gizmo" @@ -8403,13 +8738,16 @@ msgid "Delete objects, parts, modifiers " msgstr "Verwijder objecten, onderdelen, aanpassingen " msgid "Select the object/part and press space to change the name" -msgstr "Selecteer het object/onderdeel en druk op de spatiebalk om de naam aan te passen" +msgstr "" +"Selecteer het object/onderdeel en druk op de spatiebalk om de naam aan te " +"passen" msgid "Mouse click" msgstr "Muisklik" msgid "Select the object/part and mouse click to change the name" -msgstr "Selecteer het object/onderdeel en rechtermuisklik om de naam aan te passen" +msgstr "" +"Selecteer het object/onderdeel en rechtermuisklik om de naam aan te passen" msgid "Objects List" msgstr "Objecten lijst" @@ -8454,14 +8792,16 @@ msgstr "versie %s update informatie:" msgid "Network plug-in update" msgstr "Netwerk plug-in update" -msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." +msgid "" +"Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Klik op OK om de netwerkplug-in bij te werken wanneer Orca Slicer de volgende keer wordt " -"gestart." +"Klik op OK om de netwerkplug-in bij te werken wanneer Orca Slicer de " +"volgende keer wordt gestart." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" -msgstr "Een nieuwe netwerk plug-in (%s) is beschikbaar. Wilt je deze installeren?" +msgstr "" +"Een nieuwe netwerk plug-in (%s) is beschikbaar. Wilt je deze installeren?" msgid "New version of Orca Slicer" msgstr "Nieuwe versie van Orca Slicer" @@ -8514,15 +8854,18 @@ msgstr "Bevestig en update het mondstuk" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN-verbinding mislukt (verzenden afdrukbestand)" -msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "Stap 1, bevestig dat Orca Slicer en uw printer zich in hetzelfde LAN bevinden." +msgid "" +"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "" +"Stap 1, bevestig dat Orca Slicer en uw printer zich in hetzelfde LAN " +"bevinden." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values on your " -"printer, please correct them." +"Step 2, if the IP and Access Code below are different from the actual values " +"on your printer, please correct them." msgstr "" -"Stap 2, als het IP-adres en de toegangscode hieronder afwijken van de werkelijke waarden op " -"uw printer, corrigeer ze dan." +"Stap 2, als het IP-adres en de toegangscode hieronder afwijken van de " +"werkelijke waarden op uw printer, corrigeer ze dan." msgid "IP" msgstr "IP" @@ -8534,7 +8877,8 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "Waar vind je het IP-adres en de toegangscode van je printer?" msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "Stap 3: Ping het IP-adres om te controleren op pakketverlies en latentie." +msgstr "" +"Stap 3: Ping het IP-adres om te controleren op pakketverlies en latentie." msgid "Test" msgstr "Test" @@ -8580,28 +8924,29 @@ msgid "Updating successful" msgstr "Update geslaagd" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not turn off the power " -"while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not " +"turn off the power while the printer is updating." msgstr "" -"Weet u zeker dat u de firmware wilt bijwerken? Dit duurt ongeveer 10 minuten. Zet de " -"printer NIET uit tijdens dit proces." +"Weet u zeker dat u de firmware wilt bijwerken? Dit duurt ongeveer 10 " +"minuten. Zet de printer NIET uit tijdens dit proces." msgid "" -"An important update was detected and needs to be run before printing can continue. Do you " -"want to update now? You can also update later from 'Upgrade firmware'." +"An important update was detected and needs to be run before printing can " +"continue. Do you want to update now? You can also update later from 'Upgrade " +"firmware'." msgstr "" -"Er is een belangrijke update gedetecteerd die moet worden uitgevoerd voordat het printen " -"kan worden voortgezet. Wil je nu updaten? Je kunt ook later updaten via 'Firmware " -"bijwerken'." +"Er is een belangrijke update gedetecteerd die moet worden uitgevoerd voordat " +"het printen kan worden voortgezet. Wil je nu updaten? Je kunt ook later " +"updaten via 'Firmware bijwerken'." msgid "" -"The firmware version is abnormal. Repairing and updating are required before printing. Do " -"you want to update now? You can also update later on printer or update next time starting " -"Orca." +"The firmware version is abnormal. Repairing and updating are required before " +"printing. Do you want to update now? You can also update later on printer or " +"update next time starting Orca." msgstr "" -"De firmwareversie is abnormaal. Repareren en bijwerken is vereist voor het afdrukken. Wil " -"je nu updaten? Je kunt ook later op de printer updaten of updaten wanneer je Orca Slicer de " -"volgende keer start." +"De firmwareversie is abnormaal. Repareren en bijwerken is vereist voor het " +"afdrukken. Wil je nu updaten? Je kunt ook later op de printer updaten of " +"updaten wanneer je Orca Slicer de volgende keer start." msgid "Extension Board" msgstr "Extension Board" @@ -8659,7 +9004,8 @@ msgid "Copying of file %1% to %2% failed: %3%" msgstr "Het kopieeren van bestand %1% naar %2% is mislukt: %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "Controleer niet-opgeslagen wijzigingen voordat u de configuratie bijwerkt." +msgstr "" +"Controleer niet-opgeslagen wijzigingen voordat u de configuratie bijwerkt." msgid "Configuration package: " msgstr "" @@ -8671,29 +9017,36 @@ msgid "Open G-code file:" msgstr "Open G-code bestand:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the bottom or enable " -"supports." +"One object has empty initial layer and can't be printed. Please Cut the " +"bottom or enable supports." msgstr "" -"Eén object heeft een lege eerste laag en kan niet geprint worden. Knip een stuk van de " -"bodem van het object of genereer support." +"Eén object heeft een lege eerste laag en kan niet geprint worden. Knip een " +"stuk van de bodem van het object of genereer support." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." -msgstr "Het object heeft lege lagen tussen %1% en %2% en kan daarom niet geprint worden." +msgstr "" +"Het object heeft lege lagen tussen %1% en %2% en kan daarom niet geprint " +"worden." #, boost-format msgid "Object: %1%" msgstr "Object: %1%" -msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" +msgid "" +"Maybe parts of the object at these height are too thin, or the object has " +"faulty mesh" msgstr "" -"Delen van het object op deze hoogts kunnen te dun zijn of het object kan een defect in de " -"constructie hebben." +"Delen van het object op deze hoogts kunnen te dun zijn of het object kan een " +"defect in de constructie hebben." msgid "No object can be printed. Maybe too small" -msgstr "Er kunnen geen objecten geprint worden. Het kan zijn dat ze te klein zijn." +msgstr "" +"Er kunnen geen objecten geprint worden. Het kan zijn dat ze te klein zijn." -msgid "Your print is very close to the priming regions. Make sure there is no collision." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." msgstr "" msgid "" @@ -8749,12 +9102,12 @@ msgstr "Meerdere" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" -"Kan de lijndikte van %1% niet berekenen omdat de waarde van \"%2%\" niet opgehaald kan " -"worden" +"Kan de lijndikte van %1% niet berekenen omdat de waarde van \"%2%\" niet " +"opgehaald kan worden" msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height and extrusion " -"width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" msgstr "" msgid "undefined error" @@ -8851,10 +9204,11 @@ msgid "write callback failed" msgstr "callback schrijven is mislukt" #, boost-format -msgid "%1% is too close to exclusion area, there may be collisions when printing." +msgid "" +"%1% is too close to exclusion area, there may be collisions when printing." msgstr "" -"%1% bevindt zich te dicht bij het uitsluitingsgebied. Er kunnen botsingen optreden tijdens " -"het afdrukken." +"%1% bevindt zich te dicht bij het uitsluitingsgebied. Er kunnen botsingen " +"optreden tijdens het afdrukken." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -8865,46 +9219,59 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% is te hoog en er kunnen botsingen ontstaan." msgid " is too close to others, there may be collisions when printing." -msgstr "staat te dicht bij anderen; er kunnen botsingen optreden tijdens het afdrukken." +msgstr "" +"staat te dicht bij anderen; er kunnen botsingen optreden tijdens het " +"afdrukken." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "is te dicht bij het uitsluitingsgebied, er botsingen optreden tijdens het printen." +msgstr "" +"is te dicht bij het uitsluitingsgebied, er botsingen optreden tijdens het " +"printen." msgid "Prime Tower" msgstr "Prime toren" msgid " is too close to others, and collisions may be caused.\n" -msgstr "staat te dicht bij andere objecten en er kunnen botsingen worden veroorzaakt.\n" +msgstr "" +"staat te dicht bij andere objecten en er kunnen botsingen worden " +"veroorzaakt.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" msgstr "" -" bevindt zich te dicht bij het uitsluitingsgebied en er zullen botsingen worden " -"veroorzaakt.\n" +" bevindt zich te dicht bij het uitsluitingsgebied en er zullen botsingen " +"worden veroorzaakt.\n" msgid "" -"Can not print multiple filaments which have large difference of temperature together. " -"Otherwise, the extruder and nozzle may be blocked or damaged during printing" +"Can not print multiple filaments which have large difference of temperature " +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" msgstr "" "Het is niet mogelijk om met meerdere filamenten te printen die een groot " -"temperatuurverschil hebben. Anders kunnen de extruder en het mondstuk tijdens het afdrukken " -"worden geblokkeerd of beschadigd" +"temperatuurverschil hebben. Anders kunnen de extruder en het mondstuk " +"tijdens het afdrukken worden geblokkeerd of beschadigd" msgid "No extrusions under current settings." msgstr "Geen extrusion onder de huidige instellingen" -msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." +msgid "" +"Smooth mode of timelapse is not supported when \"by object\" sequence is " +"enabled." msgstr "" -"Vloeiende modus van timelapse wordt niet ondersteund wanneer \"per object\" sequentie is " -"ingeschakeld." +"Vloeiende modus van timelapse wordt niet ondersteund wanneer \"per object\" " +"sequentie is ingeschakeld." msgid "" -"Please select \"By object\" print sequence to print multiple objects in spiral vase mode." +"Please select \"By object\" print sequence to print multiple objects in " +"spiral vase mode." msgstr "" -"Selecteer de afdrukvolgorde \"per object\" om meerdere objecten in spiraalvaasmodus af te " -"drukken." +"Selecteer de afdrukvolgorde \"per object\" om meerdere objecten in " +"spiraalvaasmodus af te drukken." -msgid "The spiral vase mode does not work when an object contains more than one materials." -msgstr "Spiraal (vaas) modus werkt niet als een object meer dan 1 filament bevalt." +msgid "" +"The spiral vase mode does not work when an object contains more than one " +"materials." +msgstr "" +"Spiraal (vaas) modus werkt niet als een object meer dan 1 filament bevalt." #, boost-format msgid "The object %1% exceeds the maximum build volume height." @@ -8912,70 +9279,82 @@ msgstr "" #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds the maximum build " -"volume height." +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." msgstr "" msgid "" -"You might want to reduce the size of your model or change current print settings and retry." +"You might want to reduce the size of your model or change current print " +"settings and retry." msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "Variabele laaghoogte wordt niet ondersteund met organische steunen." msgid "" -"Different nozzle diameters and different filament diameters may not work well when the " -"prime tower is enabled. It's very experimental, so please proceed with caution." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" msgid "" -"The Wipe Tower is currently only supported with the relative extruder addressing " -"(use_relative_e_distances=1)." +"The Wipe Tower is currently only supported with the relative extruder " +"addressing (use_relative_e_distances=1)." msgstr "" -"De Wipe Tower wordt momenteel alleen ondersteund met de relatieve extruderadressering " -"(use_relative_e_distances=1)." +"De Wipe Tower wordt momenteel alleen ondersteund met de relatieve " +"extruderadressering (use_relative_e_distances=1)." msgid "" -"Ooze prevention is only supported with the wipe tower when 'single_extruder_multi_material' " -"is off." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" msgid "" -"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware " -"and Repetier G-code flavors." +"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " +"RepRapFirmware and Repetier G-code flavors." msgstr "" -"De prime tower wordt momenteel alleen ondersteund voor de Marlin, RepRap/Sprinter, " -"RepRapFirmware en Repetier G-code smaken." +"De prime tower wordt momenteel alleen ondersteund voor de Marlin, RepRap/" +"Sprinter, RepRapFirmware en Repetier G-code smaken." msgid "The prime tower is not supported in \"By object\" print." msgstr "Een prime-toren wordt niet ondersteund bij het \"per object\" printen." msgid "" -"The prime tower is not supported when adaptive layer height is on. It requires that all " -"objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It " +"requires that all objects have the same layer height." msgstr "" -"Een prime toren wordt niet ondersteund tijdens het printen met adaptieve laaghoogte. Voor " -"het werken met een prime toren is het van belang dat alle lagen dezelfde laaghoogte hebben." +"Een prime toren wordt niet ondersteund tijdens het printen met adaptieve " +"laaghoogte. Voor het werken met een prime toren is het van belang dat alle " +"lagen dezelfde laaghoogte hebben." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"Een prime toren vereist dat elke \"support opening\" een veelvoud van de laaghoogte is." +"Een prime toren vereist dat elke \"support opening\" een veelvoud van de " +"laaghoogte is." msgid "The prime tower requires that all objects have the same layer heights" msgstr "Een prime toren vereist dat alle objecten dezelfde laaghoogte hebben." msgid "" -"The prime tower requires that all objects are printed over the same number of raft layers" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" msgstr "" -"Een prime-toren vereist dat alle objecten op hetzelfde aantal raftlagen worden afgedrukt." +"Een prime-toren vereist dat alle objecten op hetzelfde aantal raftlagen " +"worden afgedrukt." -msgid "The prime tower requires that all objects are sliced with the same layer heights." -msgstr "Een prime toren vereist dat alle objecten met dezelfde laaghoogte gesliced worden." - -msgid "The prime tower is only supported if all objects have the same variable layer height" +msgid "" +"The prime tower requires that all objects are sliced with the same layer " +"heights." msgstr "" -"De prime toren wordt alleen ondersteund als alle objecten dezelfde variabele laaghoogte " -"hebben" +"Een prime toren vereist dat alle objecten met dezelfde laaghoogte gesliced " +"worden." + +msgid "" +"The prime tower is only supported if all objects have the same variable " +"layer height" +msgstr "" +"De prime toren wordt alleen ondersteund als alle objecten dezelfde variabele " +"laaghoogte hebben" msgid "Too small line width" msgstr "Te kleine lijnbreedte" @@ -8983,79 +9362,91 @@ msgstr "Te kleine lijnbreedte" msgid "Too large line width" msgstr "Te groote lijnbreedte" -msgid "The prime tower requires that support has the same layer height with object." -msgstr "Een prime toren vereist dat support dezelfde laaghoogte heeft als het object." +msgid "" +"The prime tower requires that support has the same layer height with object." +msgstr "" +"Een prime toren vereist dat support dezelfde laaghoogte heeft als het object." msgid "" -"Organic support tree tip diameter must not be smaller than support material extrusion width." +"Organic support tree tip diameter must not be smaller than support material " +"extrusion width." msgstr "" msgid "" -"Organic support branch diameter must not be smaller than 2x support material extrusion " -"width." +"Organic support branch diameter must not be smaller than 2x support material " +"extrusion width." msgstr "" -msgid "Organic support branch diameter must not be smaller than support tree tip diameter." +msgid "" +"Organic support branch diameter must not be smaller than support tree tip " +"diameter." msgstr "" -msgid "Support enforcers are used but support is not enabled. Please enable support." -msgstr "Er zijn support handhavers ingesteld, maar support staat uit. Schakel support in." +msgid "" +"Support enforcers are used but support is not enabled. Please enable support." +msgstr "" +"Er zijn support handhavers ingesteld, maar support staat uit. Schakel " +"support in." msgid "Layer height cannot exceed nozzle diameter" msgstr "De laaghoogte kan niet groter zijn dan de diameter van het mondstuk" msgid "" -"Relative extruder addressing requires resetting the extruder position at each layer to " -"prevent loss of floating point accuracy. Add \"G92 E0\" to layer_gcode." +"Relative extruder addressing requires resetting the extruder position at " +"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"layer_gcode." msgstr "" -"Relatieve extruderwaarden vereist het resetten van de extruderpositie op elke laag om " -"decimale onnauwkeurigheid te voorkomen. Voeg \"G92 E0\" toe aan layer_gcode." +"Relatieve extruderwaarden vereist het resetten van de extruderpositie op " +"elke laag om decimale onnauwkeurigheid te voorkomen. Voeg \"G92 E0\" toe aan " +"layer_gcode." msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute extruder " -"addressing." +"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " +"absolute extruder addressing." msgstr "" -"\"G92 E0\" gevonden in before_layer_gcode, wat niet compatibel is met absolute " +"\"G92 E0\" gevonden in before_layer_gcode, wat niet compatibel is met " +"absolute positionering." + +msgid "" +"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " +"extruder addressing." +msgstr "" +"\"G92 E0\" gevonden in layer_gcode, wat niet compatibel is met absolute " "positionering." -msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder " -"addressing." -msgstr "" -"\"G92 E0\" gevonden in layer_gcode, wat niet compatibel is met absolute positionering." - #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" msgstr "Printbed %d: %s ondersteunt filament %s niet." -msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" +msgid "" +"Setting the jerk speed too low could lead to artifacts on curved surfaces" msgstr "" msgid "" "The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/" "machine_max_jerk_y).\n" -"Orca will automatically cap the jerk speed to ensure it doesn't surpass the printer's " -"capabilities.\n" -"You can adjust the maximum jerk setting in your printer's configuration to get higher " -"speeds." +"Orca will automatically cap the jerk speed to ensure it doesn't surpass the " +"printer's capabilities.\n" +"You can adjust the maximum jerk setting in your printer's configuration to " +"get higher speeds." msgstr "" msgid "" "The acceleration setting exceeds the printer's maximum acceleration " "(machine_max_acceleration_extruding).\n" -"Orca will automatically cap the acceleration speed to ensure it doesn't surpass the " -"printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your printer's configuration " -"to get higher speeds." +"Orca will automatically cap the acceleration speed to ensure it doesn't " +"surpass the printer's capabilities.\n" +"You can adjust the machine_max_acceleration_extruding value in your " +"printer's configuration to get higher speeds." msgstr "" msgid "" -"The travel acceleration setting exceeds the printer's maximum travel acceleration " -"(machine_max_acceleration_travel).\n" -"Orca will automatically cap the travel acceleration speed to ensure it doesn't surpass the " -"printer's capabilities.\n" -"You can adjust the machine_max_acceleration_travel value in your printer's configuration to " -"get higher speeds." +"The travel acceleration setting exceeds the printer's maximum travel " +"acceleration (machine_max_acceleration_travel).\n" +"Orca will automatically cap the travel acceleration speed to ensure it " +"doesn't surpass the printer's capabilities.\n" +"You can adjust the machine_max_acceleration_travel value in your printer's " +"configuration to get higher speeds." msgstr "" msgid "Generating skirt & brim" @@ -9077,13 +9468,14 @@ msgid "Bed exclude area" msgstr "Uitgesloten printbed gebied" msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front left corner to " -"cut filament during filament change. The area is expressed as polygon by points in " -"following format: \"XxY, XxY, ...\"" +"Unprintable area in XY plane. For example, X1 Series printers use the front " +"left corner to cut filament during filament change. The area is expressed as " +"polygon by points in following format: \"XxY, XxY, ...\"" msgstr "" -"Onafdrukbaar gebied in XY-vlak. Printers uit de X1-serie gebruiken bijvoorbeeld de " -"linkervoorhoek om filament af te snijden tijdens het verwisselen van filament. Het gebied " -"wordt uitgedrukt als polygoon door punten in het volgende formaat: „xxY, xxY,...”" +"Onafdrukbaar gebied in XY-vlak. Printers uit de X1-serie gebruiken " +"bijvoorbeeld de linkervoorhoek om filament af te snijden tijdens het " +"verwisselen van filament. Het gebied wordt uitgedrukt als polygoon door " +"punten in het volgende formaat: „xxY, xxY,...”" msgid "Bed custom texture" msgstr "Bed aangepaste textuur" @@ -9094,39 +9486,44 @@ msgstr "Bed aangepast model" msgid "Elephant foot compensation" msgstr "\"Elephant foot\" compensatie" -msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" +msgid "" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" msgstr "" -"Hierdoor krimpt de eerste laag op de bouwplaat om het \"elephant foot\" effect te " -"compenseren." +"Hierdoor krimpt de eerste laag op de bouwplaat om het \"elephant foot\" " +"effect te compenseren." msgid "Elephant foot compensation layers" msgstr "\"Elephant foot\" compensatielagen" msgid "" -"The number of layers on which the elephant foot compensation will be active. The first " -"layer will be shrunk by the elephant foot compensation value, then the next layers will be " -"linearly shrunk less, up to the layer indicated by this value." +"The number of layers on which the elephant foot compensation will be active. " +"The first layer will be shrunk by the elephant foot compensation value, then " +"the next layers will be linearly shrunk less, up to the layer indicated by " +"this value." msgstr "" -"Het aantal lagen waarop de \"elephant foot\" compensatie actief zal zijn. De eerste laag " -"zal worden verkleind met de \"elephant foot\" compensatiewaarde, daarna zullen de volgende " -"lagen lineair minder worden verkleind, tot aan de laag die wordt aangegeven door deze " -"waarde." +"Het aantal lagen waarop de \"elephant foot\" compensatie actief zal zijn. De " +"eerste laag zal worden verkleind met de \"elephant foot\" compensatiewaarde, " +"daarna zullen de volgende lagen lineair minder worden verkleind, tot aan de " +"laag die wordt aangegeven door deze waarde." msgid "layers" msgstr "Lagen" msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and more printing " -"time" +"Slicing height for each layer. Smaller layer height means more accurate and " +"more printing time" msgstr "" -"Dit is de hoogte voor iedere laag. Kleinere laaghoogtes geven een grotere nauwkeurigheid " -"maar een langere printtijd." +"Dit is de hoogte voor iedere laag. Kleinere laaghoogtes geven een grotere " +"nauwkeurigheid maar een langere printtijd." msgid "Printable height" msgstr "Hoogte waarbinnen geprint kan worden" msgid "Maximum printable height which is limited by mechanism of printer" -msgstr "Dit is de maximale printbare hoogte gelimiteerd door de constructie van de printer" +msgstr "" +"Dit is de maximale printbare hoogte gelimiteerd door de constructie van de " +"printer" msgid "Preferred orientation" msgstr "Voorkeursoriëntatie" @@ -9147,34 +9544,37 @@ msgid "Hostname, IP or URL" msgstr "Hostnaam, IP of URL" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain the " -"hostname, IP address or URL of the printer host instance. Print host behind HAProxy with " -"basic auth enabled can be accessed by putting the user name and password into the URL in " -"the following format: https://username:password@your-octopi-address/" +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the hostname, IP address or URL of the printer host instance. Print " +"host behind HAProxy with basic auth enabled can be accessed by putting the " +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet de hostnaam, " -"het IP-adres of de URL van de printerhostinstantie bevatten. Printhost achter HAProxy met " -"ingeschakelde basisauthenticatie is toegankelijk door de gebruikersnaam en het wachtwoord " -"in de volgende indeling in de URL te plaatsen: https://username:password@your-octopi-" +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " +"de hostnaam, het IP-adres of de URL van de printerhostinstantie bevatten. " +"Printhost achter HAProxy met ingeschakelde basisauthenticatie is " +"toegankelijk door de gebruikersnaam en het wachtwoord in de volgende " +"indeling in de URL te plaatsen: https://username:password@your-octopi-" "address/" msgid "Device UI" msgstr "UI van het apparaat" -msgid "Specify the URL of your device user interface if it's not same as print_host" +msgid "" +"Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Geef de URL op van de gebruikersinterface van uw apparaat als deze niet hetzelfde is als " -"print_host" +"Geef de URL op van de gebruikersinterface van uw apparaat als deze niet " +"hetzelfde is als print_host" msgid "API Key / Password" msgstr "API sleutel / wachtwoord" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should contain the API " -"Key or the password required for authentication." +"Orca Slicer can upload G-code files to a printer host. This field should " +"contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet de API-sleutel " -"of het wachtwoord bevatten dat nodig is voor authenticatie." +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " +"de API-sleutel of het wachtwoord bevatten dat nodig is voor authenticatie." msgid "Name of the printer" msgstr "Naam van de printer" @@ -9183,12 +9583,13 @@ msgid "HTTPS CA File" msgstr "HTTPS CA Bestand" msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem " -"format. If left blank, the default OS CA certificate repository is used." +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." msgstr "" -"Een aangepast CA-certificaatbestand kan worden gespecificeerd voor HTTPS OctoPrint-" -"verbindingen, in crt/pem-formaat. Indien leeg gelaten, wordt de standaard opslagplaats voor " -"OS CA-certificaten gebruikt." +"Een aangepast CA-certificaatbestand kan worden gespecificeerd voor HTTPS " +"OctoPrint-verbindingen, in crt/pem-formaat. Indien leeg gelaten, wordt de " +"standaard opslagplaats voor OS CA-certificaten gebruikt." msgid "User" msgstr "Gebruiker" @@ -9200,12 +9601,13 @@ msgid "Ignore HTTPS certificate revocation checks" msgstr "HTTPS-certificaatintrekkingscontroles negeren" msgid "" -"Ignore HTTPS certificate revocation checks in case of missing or offline distribution " -"points. One may want to enable this option for self signed certificates if connection fails." +"Ignore HTTPS certificate revocation checks in case of missing or offline " +"distribution points. One may want to enable this option for self signed " +"certificates if connection fails." msgstr "" -"HTTPS-certificaatherroepingscontroles negeren in geval van ontbrekende of offline " -"distributiepunten. Men kan deze optie inschakelen voor zelfondertekende certificaten als de " -"verbinding mislukt." +"HTTPS-certificaatherroepingscontroles negeren in geval van ontbrekende of " +"offline distributiepunten. Men kan deze optie inschakelen voor " +"zelfondertekende certificaten als de verbinding mislukt." msgid "Names of presets related to the physical printer" msgstr "Namen van voorinstellingen gerelateerd aan de fysieke printer" @@ -9224,21 +9626,23 @@ msgstr "Vermijd het oversteken van walls" msgid "Detour and avoid to travel across wall which may cause blob on surface" msgstr "" -"Omweg om te voorkomen dat de printkop over wanden verplaatst, dit zou namelijk klodders op " -"het oppervlak kunnen veroorzaken" +"Omweg om te voorkomen dat de printkop over wanden verplaatst, dit zou " +"namelijk klodders op het oppervlak kunnen veroorzaken" msgid "Avoid crossing wall - Max detour length" msgstr "Walls vermijden - Maximale omleidingslengte" msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is " -"large than this value. Detour length could be specified either as an absolute value or as " -"percentage (for example 50%) of a direct travel path. Zero to disable" +"Maximum detour distance for avoiding crossing wall. Don't detour if the " +"detour distance is large than this value. Detour length could be specified " +"either as an absolute value or as percentage (for example 50%) of a direct " +"travel path. Zero to disable" msgstr "" -"Maximale omleidingsafstand om te voorkomen dat een muur wordt overgestoken: De printer zal " -"geen omweg maken als de omleidingsafstand groter is dan deze waarde. De lengte van de " -"omleiding kan worden gespecificeerd als absolute waarde of als percentage (bijvoorbeeld " -"50%) van een directe reisroute. Een waarde van 0 zal dit uitschakelen." +"Maximale omleidingsafstand om te voorkomen dat een muur wordt overgestoken: " +"De printer zal geen omweg maken als de omleidingsafstand groter is dan deze " +"waarde. De lengte van de omleiding kan worden gespecificeerd als absolute " +"waarde of als percentage (bijvoorbeeld 50%) van een directe reisroute. Een " +"waarde van 0 zal dit uitschakelen." msgid "mm or %" msgstr "mm of %" @@ -9247,35 +9651,36 @@ msgid "Other layers" msgstr "Andere lagen" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament does not " -"support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur voor alle lagen behalve de eerste. Een waarde van 0 betekent dat " -"het filament het afdrukken op de Cool Plate niet ondersteunt." +"Dit is de bedtemperatuur voor alle lagen behalve de eerste. Een waarde van 0 " +"betekent dat het filament het afdrukken op de Cool Plate niet ondersteunt." msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament does not " -"support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van 0 betekent dat " -"het filament afdrukken op de Engineering Plate niet ondersteunt." +"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van " +"0 betekent dat het filament afdrukken op de Engineering Plate niet " +"ondersteunt." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament does not " -"support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" msgstr "" -"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van 0 betekent dat " -"het filament printen op de High Temp Plate niet ondersteunt." +"Dit is de bedtemperatuur voor lagen, behalve voor de eerste. Een waarde van " +"0 betekent dat het filament printen op de High Temp Plate niet ondersteunt." msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" -"Bedtemperatuur na de eerste laag. 0 betekent dat het filament niet wordt ondersteund op de " -"getextureerde PEI-plaat." +"Bedtemperatuur na de eerste laag. 0 betekent dat het filament niet wordt " +"ondersteund op de getextureerde PEI-plaat." msgid "Initial layer" msgstr "Eerste laag" @@ -9284,32 +9689,32 @@ msgid "Initial layer bed temperature" msgstr "Printbed temperatuur voor de eerste laag" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to print " -"on the Cool Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Cool Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het filament " -"printen op de Cool Plate niet ondersteunt." +"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " +"filament printen op de Cool Plate niet ondersteunt." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to print " -"on the Engineering Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Engineering Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het filament " -"afdrukken op de Engineering Plate niet ondersteunt." +"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " +"filament afdrukken op de Engineering Plate niet ondersteunt." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to print " -"on the High Temp Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the High Temp Plate" msgstr "" -"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het filament " -"printen op de High Temp Plate niet ondersteunt." +"Dit is de bedtemperatuur van de beginlaag. Een waarde van 0 betekent dat het " +"filament printen op de High Temp Plate niet ondersteunt." msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not support to print " -"on the Textured PEI Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" msgstr "" -"De bedtemperatuur van de eerste laag 0 betekent dat het filament niet wordt ondersteund op " -"de getextureerde PEI-plaat." +"De bedtemperatuur van de eerste laag 0 betekent dat het filament niet wordt " +"ondersteund op de getextureerde PEI-plaat." msgid "Bed types supported by the printer" msgstr "Printbedden ondersteund door de printer" @@ -9333,45 +9738,66 @@ msgid "Other layers filament sequence" msgstr "Other layers filament sequence" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "De G-code wordt bij iedere laagwisseling toegevoegd voor het optillen van Z" +msgstr "" +"De G-code wordt bij iedere laagwisseling toegevoegd voor het optillen van Z" msgid "Bottom shell layers" msgstr "Aantal bodemlagen" msgid "" -"This is the number of solid layers of bottom shell, including the bottom surface layer. " -"When the thickness calculated by this value is thinner than bottom shell thickness, the " -"bottom shell layers will be increased" +"This is the number of solid layers of bottom shell, including the bottom " +"surface layer. When the thickness calculated by this value is thinner than " +"bottom shell thickness, the bottom shell layers will be increased" msgstr "" -"Dit is het aantal vaste lagen van de onderkant inclusief de onderste oppervlaktelaag. " -"Wanneer de door deze waarde berekende dikte dunner is dan de dikte van de onderste laag, " -"worden de onderste lagen vergroot" +"Dit is het aantal vaste lagen van de onderkant inclusief de onderste " +"oppervlaktelaag. Wanneer de door deze waarde berekende dikte dunner is dan " +"de dikte van de onderste laag, worden de onderste lagen vergroot" msgid "Bottom shell thickness" msgstr "Bodemdikte" msgid "" -"The number of bottom solid layers is increased when slicing if the thickness calculated by " -"bottom shell layers is thinner than this value. This can avoid having too thin shell when " -"layer height is small. 0 means that this setting is disabled and thickness of bottom shell " -"is absolutely determained by bottom shell layers" +"The number of bottom solid layers is increased when slicing if the thickness " +"calculated by bottom shell layers is thinner than this value. This can avoid " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of bottom shell is absolutely determained by " +"bottom shell layers" msgstr "" -"Het aantal onderste solide lagen wordt verhoogd tijdens het slicen als de totale dikte van " -"de onderste lagen lager is dan deze waarde. Dit zorgt ervoor dat de schaal niet te dun is " -"bij een lage laaghoogte. 0 betekend dat deze instelling niet actief is en dat de dikte van " -"de bodem bepaald wordt door het aantal bodem lagen." +"Het aantal onderste solide lagen wordt verhoogd tijdens het slicen als de " +"totale dikte van de onderste lagen lager is dan deze waarde. Dit zorgt " +"ervoor dat de schaal niet te dun is bij een lage laaghoogte. 0 betekend dat " +"deze instelling niet actief is en dat de dikte van de bodem bepaald wordt " +"door het aantal bodem lagen." msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will be filled can " -"be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" -"3. Nowhere: Disables gap fill\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9387,134 +9813,155 @@ msgid "Force cooling for overhang and bridge" msgstr "Forceer koeling voor overhangende delen en bruggen (bridge)" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and bridge to get better " -"cooling" +"Enable this option to optimize part cooling fan speed for overhang and " +"bridge to get better cooling" msgstr "" -"Schakel deze optie in om de snelheid van de koelventilator van de printkop te optimaliseren " -"voor overhang en bruggen" +"Schakel deze optie in om de snelheid van de koelventilator van de printkop " +"te optimaliseren voor overhang en bruggen" msgid "Fan speed for overhang" msgstr "Ventilator snelheid voor overhangende delen" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang wall which has " -"large overhang degree. Forcing cooling for overhang and bridge can get better quality for " -"these part" +"Force part cooling fan to be this speed when printing bridge or overhang " +"wall which has large overhang degree. Forcing cooling for overhang and " +"bridge can get better quality for these part" msgstr "" -"Forceer de koelventilator van de printkop om deze snelheid te hebben bij het afdrukken van " -"een brug of overhangende muur met een grote overhanggraad. Het forceren van koeling voor " -"overhang en brug kan een resulteren in een betere kwaliteit voor dit onderdeel" +"Forceer de koelventilator van de printkop om deze snelheid te hebben bij het " +"afdrukken van een brug of overhangende muur met een grote overhanggraad. Het " +"forceren van koeling voor overhang en brug kan een resulteren in een betere " +"kwaliteit voor dit onderdeel" msgid "Cooling overhang threshold" msgstr "Drempel voor overhang koeling" #, c-format msgid "" -"Force cooling fan to be specific speed when overhang degree of printed part exceeds this " -"value. Expressed as percentage which indicides how much width of the line without support " -"from lower layer. 0% means forcing cooling for all outer wall no matter how much overhang " -"degree" +"Force cooling fan to be specific speed when overhang degree of printed part " +"exceeds this value. Expressed as percentage which indicides how much width " +"of the line without support from lower layer. 0% means forcing cooling for " +"all outer wall no matter how much overhang degree" msgstr "" -"Dwingt de koelventilator tot een bepaalde snelheid wanneer de overhanggraad van het " -"geprinte deel deze waarde overschrijdt. Dit wordt uitgedrukt als een percentage dat " -"aangeeft hoe breed de lijn is zonder steun van de onderste laag. 0%% betekent koeling " -"afdwingen voor de hele buitenwand, ongeacht de overhanggraad." +"Dwingt de koelventilator tot een bepaalde snelheid wanneer de overhanggraad " +"van het geprinte deel deze waarde overschrijdt. Dit wordt uitgedrukt als een " +"percentage dat aangeeft hoe breed de lijn is zonder steun van de onderste " +"laag. 0%% betekent koeling afdwingen voor de hele buitenwand, ongeacht de " +"overhanggraad." msgid "Bridge infill direction" msgstr "Bruginvulling richting" msgid "" -"Bridging angle override. If left to zero, the bridging angle will be calculated " -"automatically. Otherwise the provided angle will be used for external bridges. Use 180°for " -"zero angle." +"Bridging angle override. If left to zero, the bridging angle will be " +"calculated automatically. Otherwise the provided angle will be used for " +"external bridges. Use 180°for zero angle." msgstr "" -"Overbrugingshoek overschrijven. 0 betekent dat de overbruggingshoek automatisch wordt " -"berekend. Anders wordt de opgegeven hoek gebruikt voor externe bruggen. Gebruik 180° voor " -"een hoek van nul." +"Overbrugingshoek overschrijven. 0 betekent dat de overbruggingshoek " +"automatisch wordt berekend. Anders wordt de opgegeven hoek gebruikt voor " +"externe bruggen. Gebruik 180° voor een hoek van nul." msgid "Bridge density" msgstr "Brugdichtheid" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "Dichtheid van externe bruggen. 100% betekent massieve brug. Standaard is 100%." +msgstr "" +"Dichtheid van externe bruggen. 100% betekent massieve brug. Standaard is " +"100%." msgid "Bridge flow ratio" msgstr "Brugflow" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, " -"to improve sag" +"Decrease this value slightly(for example 0.9) to reduce the amount of " +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Verlaag deze waarde iets (bijvoorbeeld 0,9) om de hoeveelheid materiaal voor bruggen te " -"verminderen, dit om doorzakken te voorkomen." msgid "Internal bridge flow ratio" msgstr "" msgid "" -"This value governs the thickness of the internal bridge layer. This is the first layer over " -"sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality " -"over sparse infill." +"This value governs the thickness of the internal bridge layer. This is the " +"first layer over sparse infill. Decrease this value slightly (for example " +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" msgstr "Flowratio bovenoppervlak" msgid "" -"This factor affects the amount of material for top solid infill. You can decrease it " -"slightly to have smooth surface finish" +"This factor affects the amount of material for top solid infill. You can " +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Deze factor beïnvloedt de hoeveelheid materiaal voor de bovenste vaste vulling. Je kunt het " -"iets verminderen om een glad oppervlak te krijgen." msgid "Bottom surface flow ratio" msgstr "" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Precise wall" msgstr "" msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves layer " -"consistency.\n" -"Note: This setting will only take effect if the wall sequence is configured to Inner-Outer" +"Improve shell precision by adjusting outer wall spacing. This also improves " +"layer consistency.\n" +"Note: This setting will only take effect if the wall sequence is configured " +"to Inner-Outer" msgstr "" msgid "Only one wall on top surfaces" msgstr "Slechts één wand op de bovenste oppervlakken" -msgid "Use only one wall on flat top surface, to give more space to the top infill pattern" +msgid "" +"Use only one wall on flat top surface, to give more space to the top infill " +"pattern" msgstr "" -"Gebruik slechts één wand op het vlakke bovenvlak, om meer ruimte te geven aan het bovenste " -"invulpatroon" +"Gebruik slechts één wand op het vlakke bovenvlak, om meer ruimte te geven " +"aan het bovenste invulpatroon" msgid "One wall threshold" msgstr "" #, no-c-format, no-boost-format msgid "" -"If a top surface has to be printed and it's partially covered by another layer, it won't be " -"considered at a top layer where its width is below this value. This can be useful to not " -"let the 'one perimeter on top' trigger on surface that should be covered only by " -"perimeters. This value can be a mm or a % of the perimeter extrusion width.\n" -"Warning: If enabled, artifacts can be created if you have some thin features on the next " -"layer, like letters. Set this setting to 0 to remove these artifacts." +"If a top surface has to be printed and it's partially covered by another " +"layer, it won't be considered at a top layer where its width is below this " +"value. This can be useful to not let the 'one perimeter on top' trigger on " +"surface that should be covered only by perimeters. This value can be a mm or " +"a % of the perimeter extrusion width.\n" +"Warning: If enabled, artifacts can be created if you have some thin features " +"on the next layer, like letters. Set this setting to 0 to remove these " +"artifacts." msgstr "" msgid "Only one wall on first layer" msgstr "Only one wall on first layer" -msgid "Use only one wall on first layer, to give more space to the bottom infill pattern" +msgid "" +"Use only one wall on first layer, to give more space to the bottom infill " +"pattern" msgstr "" msgid "Extra perimeters on overhangs" msgstr "" msgid "" -"Create additional perimeter paths over steep overhangs and areas where bridges cannot be " -"anchored. " +"Create additional perimeter paths over steep overhangs and areas where " +"bridges cannot be anchored. " msgstr "" msgid "Reverse on odd" @@ -9524,11 +9971,12 @@ msgid "Overhang reversal" msgstr "" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse direction on odd " -"layers. This alternating pattern can drastically improve steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse " +"direction on odd layers. This alternating pattern can drastically improve " +"steep overhangs.\n" "\n" -"This setting can also help reduce part warping due to the reduction of stresses in the part " -"walls." +"This setting can also help reduce part warping due to the reduction of " +"stresses in the part walls." msgstr "" msgid "Reverse only internal perimeters" @@ -9537,23 +9985,24 @@ msgstr "" msgid "" "Apply the reverse perimeters logic only on internal perimeters. \n" "\n" -"This setting greatly reduces part stresses as they are now distributed in alternating " -"directions. This should reduce part warping while also maintaining external wall quality. " -"This feature can be very useful for warp prone material, like ABS/ASA, and also for elastic " -"filaments, like TPU and Silk PLA. It can also help reduce warping on floating regions over " +"This setting greatly reduces part stresses as they are now distributed in " +"alternating directions. This should reduce part warping while also " +"maintaining external wall quality. This feature can be very useful for warp " +"prone material, like ABS/ASA, and also for elastic filaments, like TPU and " +"Silk PLA. It can also help reduce warping on floating regions over " "supports.\n" "\n" -"For this setting to be the most effective, it is recomended to set the Reverse Threshold to " -"0 so that all internal walls print in alternating directions on odd layers irrespective of " -"their overhang degree." +"For this setting to be the most effective, it is recomended to set the " +"Reverse Threshold to 0 so that all internal walls print in alternating " +"directions on odd layers irrespective of their overhang degree." msgstr "" msgid "Bridge counterbore holes" msgstr "" msgid "" -"This option creates bridges for counterbore holes, allowing them to be printed without " -"support. Available modes include:\n" +"This option creates bridges for counterbore holes, allowing them to be " +"printed without support. Available modes include:\n" "1. None: No bridge is created.\n" "2. Partially Bridged: Only a part of the unsupported area will be bridged.\n" "3. Sacrificial Layer: A full sacrificial bridge layer is created." @@ -9573,8 +10022,8 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Number of mm the overhang need to be for the reversal to be considered useful. Can be a % " -"of the perimeter width.\n" +"Number of mm the overhang need to be for the reversal to be considered " +"useful. Can be a % of the perimeter width.\n" "Value 0 enables reversal on every odd layers regardless." msgstr "" @@ -9589,15 +10038,31 @@ msgstr "Afremmen voor overhangende delen" msgid "Enable this option to slow printing down for different overhang degree" msgstr "" -"Schakel deze optie in om de snelheid omlaag te brengen voor verschillende overhangende " -"hoeken" +"Schakel deze optie in om de snelheid omlaag te brengen voor verschillende " +"overhangende hoeken" msgid "Slow down for curled perimeters" msgstr "" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled perimeters may " -"exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" msgid "mm/s or %" @@ -9606,8 +10071,14 @@ msgstr "mm/s of %" msgid "External" msgstr "" -msgid "Speed of bridge and completely overhang wall" -msgstr "Dit is de snelheid voor bruggen en 100% overhangende wanden." +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9616,8 +10087,8 @@ msgid "Internal" msgstr "" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will be calculated " -"based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" msgid "Brim width" @@ -9630,19 +10101,21 @@ msgid "Brim type" msgstr "Rand type" msgid "" -"This controls the generation of the brim at outer and/or inner side of models. Auto means " -"the brim width is analysed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analysed and calculated automatically." msgstr "" -"This controls the generation of the brim at outer and/or inner side of models. Auto means " -"the brim width is analyzed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analyzed and calculated automatically." msgid "Brim-object gap" msgstr "Ruimte tussen rand en object" -msgid "A gap between innermost brim line and object can make brim be removed more easily" +msgid "" +"A gap between innermost brim line and object can make brim be removed more " +"easily" msgstr "" -"Dit creëert ruimte tussen de binnenste brimlijn en het object en zorgt ervoor dat het " -"object eenvoudiger van het printbed kan worden verwijderd." +"Dit creëert ruimte tussen de binnenste brimlijn en het object en zorgt " +"ervoor dat het object eenvoudiger van het printbed kan worden verwijderd." msgid "Brim ears" msgstr "" @@ -9663,8 +10136,8 @@ msgid "Brim ear detection radius" msgstr "" msgid "" -"The geometry will be decimated before dectecting sharp angles. This parameter indicates the " -"minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This " +"parameter indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" @@ -9685,8 +10158,8 @@ msgstr "Conditie van -geschikte proces profielen" msgid "Print sequence, layer by layer or object by object" msgstr "" -"Hiermee wordt de afdrukvolgorde bepaald, zodat u kunt kiezen tussen laag voor laag of " -"object voor object printen." +"Hiermee wordt de afdrukvolgorde bepaald, zodat u kunt kiezen tussen laag " +"voor laag of object voor object printen." msgid "By layer" msgstr "Op basis van laag" @@ -9707,21 +10180,25 @@ msgid "Slow printing down for better layer cooling" msgstr "Printsnelheid omlaag brengen zodat de laag beter kan koelen" msgid "" -"Enable this option to slow printing speed down to make the final layer time not shorter " -"than the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled " -"for longer time. This can improve the cooling quality for needle and small details" +"Enable this option to slow printing speed down to make the final layer time " +"not shorter than the layer time threshold in \"Max fan speed threshold\", so " +"that layer can be cooled for longer time. This can improve the cooling " +"quality for needle and small details" msgstr "" -"Schakel deze optie in om de afdruksnelheid te verlagen om de laatste laag printtijd niet " -"korter te maken dan de laagtijddrempel in \"Maximale ventilatorsnelheidsdrempel\", zodat de " -"laag langer kan worden gekoeld. Dit kan de koelkwaliteit voor kleine details verbeteren" +"Schakel deze optie in om de afdruksnelheid te verlagen om de laatste laag " +"printtijd niet korter te maken dan de laagtijddrempel in \"Maximale " +"ventilatorsnelheidsdrempel\", zodat de laag langer kan worden gekoeld. Dit " +"kan de koelkwaliteit voor kleine details verbeteren" msgid "Normal printing" msgstr "Normaal printen" -msgid "The default acceleration of both normal printing and travel except initial layer" +msgid "" +"The default acceleration of both normal printing and travel except initial " +"layer" msgstr "" -"Dit is de standaard versnelling voor zowel normaal printen en verplaatsen behalve voor de " -"eerste laag" +"Dit is de standaard versnelling voor zowel normaal printen en verplaatsen " +"behalve voor de eerste laag" msgid "mm/s²" msgstr "mm/s²" @@ -9730,7 +10207,8 @@ msgid "Default filament profile" msgstr "Standaard filament profiel" msgid "Default filament profile when switch to this machine profile" -msgstr "Standaard filamentprofiel bij het overschakelen naar dit machineprofiel" +msgstr "" +"Standaard filamentprofiel bij het overschakelen naar dit machineprofiel" msgid "Default process profile" msgstr "Standaard proces profiel" @@ -9748,11 +10226,11 @@ msgid "Fan speed" msgstr "Ventilator snelheid" msgid "" -"Speed of exhaust fan during printing.This speed will overwrite the speed in filament custom " -"gcode" +"Speed of exhaust fan during printing.This speed will overwrite the speed in " +"filament custom gcode" msgstr "" -"Snelheid van de afzuigventilator tijdens het printen. Deze snelheid overschrijft de " -"snelheid in de aangepaste g-code van het filament." +"Snelheid van de afzuigventilator tijdens het printen. Deze snelheid " +"overschrijft de snelheid in de aangepaste g-code van het filament." msgid "Speed of exhaust fan after printing completes" msgstr "" @@ -9761,70 +10239,76 @@ msgid "No cooling for the first" msgstr "Geen koeling voor de eerste" msgid "" -"Close all cooling fan for the first certain layers. Cooling fan of the first layer used to " -"be closed to get better build plate adhesion" +"Close all cooling fan for the first certain layers. Cooling fan of the first " +"layer used to be closed to get better build plate adhesion" msgstr "" -"Schakel alle ventilatoren uit voor de eerste lagen. Het wordt geadviseerd om de koel " -"ventilator voor de eerste laag uit te schakelen om een betere hechting met het printbed te " -"krijgen" +"Schakel alle ventilatoren uit voor de eerste lagen. Het wordt geadviseerd om " +"de koel ventilator voor de eerste laag uit te schakelen om een betere " +"hechting met het printbed te krijgen" msgid "Don't support bridges" msgstr "Geen support bij bruggen toepassen" msgid "" -"Don't support the whole bridge area which make support very large. Bridge usually can be " -"printing directly without support if not very long" +"Don't support the whole bridge area which make support very large. Bridge " +"usually can be printing directly without support if not very long" msgstr "" -"Dit schakelt de ondersteuning (support) voor bruggebieden uit, waardoor de ondersteuning " -"(support) erg groot kan worden. Bruggen kunnen meestal direct zonder ondersteuning " -"(support) worden afgedrukt als ze niet erg lang zijn." +"Dit schakelt de ondersteuning (support) voor bruggebieden uit, waardoor de " +"ondersteuning (support) erg groot kan worden. Bruggen kunnen meestal direct " +"zonder ondersteuning (support) worden afgedrukt als ze niet erg lang zijn." msgid "Thick bridges" msgstr "Dikke bruggen" msgid "" -"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." +"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." msgstr "" -"Indien ingeschakeld, zijn bruggen betrouwbaarder en kunnen ze langere afstanden " -"overbruggen, maar ze kunnen er slechter uitzien. Indien uitgeschakeld, zien bruggen er " -"beter uit, maar zijn ze alleen betrouwbaar voor kortere afstanden." +"Indien ingeschakeld, zijn bruggen betrouwbaarder en kunnen ze langere " +"afstanden overbruggen, maar ze kunnen er slechter uitzien. Indien " +"uitgeschakeld, zien bruggen er beter uit, maar zijn ze alleen betrouwbaar " +"voor kortere afstanden." msgid "Thick internal bridges" msgstr "" msgid "" -"If enabled, thick internal bridges will be used. It's usually recommended to have this " -"feature turned on. However, consider turning it off if you are using large nozzles." +"If enabled, thick internal bridges will be used. It's usually recommended to " +"have this feature turned on. However, consider turning it off if you are " +"using large nozzles." msgstr "" msgid "Don't filter out small internal bridges (beta)" msgstr "" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted or curved " -"models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted " +"or curved models.\n" "\n" -"By default, small internal bridges are filtered out and the internal solid infill is " -"printed directly over the sparse infill. This works well in most cases, speeding up " -"printing without too much compromise on top surface quality. \n" +"By default, small internal bridges are filtered out and the internal solid " +"infill is printed directly over the sparse infill. This works well in most " +"cases, speeding up printing without too much compromise on top surface " +"quality. \n" "\n" -"However, in heavily slanted or curved models especially where too low sparse infill density " -"is used, this may result in curling of the unsupported solid infill, causing pillowing.\n" +"However, in heavily slanted or curved models especially where too low sparse " +"infill density is used, this may result in curling of the unsupported solid " +"infill, causing pillowing.\n" "\n" -"Enabling this option will print internal bridge layer over slightly unsupported internal " -"solid infill. The options below control the amount of filtering, i.e. the amount of " -"internal bridges created.\n" +"Enabling this option will print internal bridge layer over slightly " +"unsupported internal solid infill. The options below control the amount of " +"filtering, i.e. the amount of internal bridges created.\n" "\n" -"Disabled - Disables this option. This is the default behaviour and works well in most " -"cases.\n" +"Disabled - Disables this option. This is the default behaviour and works " +"well in most cases.\n" "\n" -"Limited filtering - Creates internal bridges on heavily slanted surfaces, while avoiding " -"creating uncessesary interal bridges. This works well for most difficult models.\n" +"Limited filtering - Creates internal bridges on heavily slanted surfaces, " +"while avoiding creating uncessesary interal bridges. This works well for " +"most difficult models.\n" "\n" -"No filtering - Creates internal bridges on every potential internal overhang. This option " -"is useful for heavily slanted top surface models. However, in most cases it creates too " -"many unecessary bridges." +"No filtering - Creates internal bridges on every potential internal " +"overhang. This option is useful for heavily slanted top surface models. " +"However, in most cases it creates too many unecessary bridges." msgstr "" msgid "Disabled" @@ -9840,12 +10324,13 @@ msgid "Max bridge length" msgstr "Maximale bruglengte" msgid "" -"Max length of bridges that don't need support. Set it to 0 if you want all bridges to be " -"supported, and set it to a very large value if you don't want any bridges to be supported." +"Max length of bridges that don't need support. Set it to 0 if you want all " +"bridges to be supported, and set it to a very large value if you don't want " +"any bridges to be supported." msgstr "" -"Maximale lengte van bruggen die geen ondersteuning nodig hebben. Stel het in op 0 als u " -"wilt dat alle bruggen worden ondersteund, en stel het in op een zeer grote waarde als u " -"niet wilt dat bruggen worden ondersteund." +"Maximale lengte van bruggen die geen ondersteuning nodig hebben. Stel het in " +"op 0 als u wilt dat alle bruggen worden ondersteund, en stel het in op een " +"zeer grote waarde als u niet wilt dat bruggen worden ondersteund." msgid "End G-code" msgstr "Einde G-code" @@ -9857,23 +10342,24 @@ msgid "Between Object Gcode" msgstr "Tussen object Gcode" msgid "" -"Insert Gcode between objects. This parameter will only come into effect when you print your " -"models object by object" +"Insert Gcode between objects. This parameter will only come into effect when " +"you print your models object by object" msgstr "" -"Gcode invoegen tussen objecten. Deze parameter wordt alleen actief wanneer u uw modellen " -"object voor object afdrukt." +"Gcode invoegen tussen objecten. Deze parameter wordt alleen actief wanneer u " +"uw modellen object voor object afdrukt." msgid "End G-code when finish the printing of this filament" -msgstr "Voeg een eind G-code toe bij het afronden van het printen van dit filament." +msgstr "" +"Voeg een eind G-code toe bij het afronden van het printen van dit filament." msgid "Ensure vertical shell thickness" msgstr "Zorg voor een verticale schaaldikte" msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell thickness " -"(top+bottom solid layers)\n" -"None: No solid infill will be added anywhere. Caution: Use this option carefully if your " -"model has sloped surfaces\n" +"Add solid infill near sloping surfaces to guarantee the vertical shell " +"thickness (top+bottom solid layers)\n" +"None: No solid infill will be added anywhere. Caution: Use this option " +"carefully if your model has sloped surfaces\n" "Critical Only: Avoid adding solid infill for walls\n" "Moderate: Add solid infill for heavily sloping surfaces only\n" "All: Add solid infill for all suitable sloping surfaces\n" @@ -9890,7 +10376,8 @@ msgid "Top surface pattern" msgstr "Patroon bovenvlak" msgid "Line pattern of top surface infill" -msgstr "Dit is het lijnenpatroon voor de vulling (infill) van het bovenoppervlak." +msgstr "" +"Dit is het lijnenpatroon voor de vulling (infill) van het bovenoppervlak." msgid "Concentric" msgstr "Concentrisch" @@ -9921,42 +10408,46 @@ msgstr "Bodem oppvlakte patroon" msgid "Line pattern of bottom surface infill, not bridge infill" msgstr "" -"Dit is het lijnenpatroon van de vulling (infill) van het bodemoppervlak, maar niet van de " -"vulling van de brug." +"Dit is het lijnenpatroon van de vulling (infill) van het bodemoppervlak, " +"maar niet van de vulling van de brug." msgid "Internal solid infill pattern" msgstr "Intern massief invulpatroon" msgid "" -"Line pattern of internal solid infill. if the detect narrow internal solid infill be " -"enabled, the concentric pattern will be used for the small area." +"Line pattern of internal solid infill. if the detect narrow internal solid " +"infill be enabled, the concentric pattern will be used for the small area." msgstr "" msgid "" -"Line width of outer wall. If expressed as a %, it will be computed over the nozzle diameter." +"Line width of outer wall. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower than inner wall " -"speed to get better quality." +"Speed of outer wall which is outermost and visible. It's used to be slower " +"than inner wall speed to get better quality." msgstr "" -"Dit is de snelheid voor de buitenste wand die zichtbaar is. Deze wordt langzamer geprint " -"dan de binnenste wanden om een betere kwaliteit te krijgen." +"Dit is de snelheid voor de buitenste wand die zichtbaar is. Deze wordt " +"langzamer geprint dan de binnenste wanden om een betere kwaliteit te krijgen." msgid "Small perimeters" msgstr "Kleine omtrek" msgid "" "This separate setting will affect the speed of perimeters having radius <= " -"small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it " -"will be calculated on the outer wall speed setting above. Set to zero for auto." +"small_perimeter_threshold (usually holes). If expressed as percentage (for " +"example: 80%) it will be calculated on the outer wall speed setting above. " +"Set to zero for auto." msgstr "" msgid "Small perimeters threshold" msgstr "" -msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" -msgstr "Dit stelt de drempel voor kleine omtreklengte in. De standaarddrempel is 0 mm" +msgid "" +"This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "" +"Dit stelt de drempel voor kleine omtreklengte in. De standaarddrempel is 0 mm" msgid "Walls printing order" msgstr "" @@ -9964,22 +10455,24 @@ msgstr "" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a " -"neighouring perimeter while printing. However, this option results in slightly reduced " -"surface quality as the external perimeter is deformed by being squashed to the internal " -"perimeter.\n" +"Use Inner/Outer for best overhangs. This is because the overhanging walls " +"can adhere to a neighouring perimeter while printing. However, this option " +"results in slightly reduced surface quality as the external perimeter is " +"deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the " -"external wall is printed undisturbed from an internal perimeter. However, overhang " -"performance will reduce as there is no internal perimeter to print the external wall " -"against. This option requires a minimum of 3 walls to be effective as it prints the " -"internal walls from the 3rd perimeter onwards first, then the external perimeter and, " -"finally, the first internal perimeter. This option is recomended against the Outer/Inner " -"option in most cases. \n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional " +"accuracy as the external wall is printed undisturbed from an internal " +"perimeter. However, overhang performance will reduce as there is no internal " +"perimeter to print the external wall against. This option requires a minimum " +"of 3 walls to be effective as it prints the internal walls from the 3rd " +"perimeter onwards first, then the external perimeter and, finally, the first " +"internal perimeter. This option is recomended against the Outer/Inner option " +"in most cases. \n" "\n" -"Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of " -"Inner/Outer/Inner option. However, the z seams will appear less consistent as the first " -"extrusion of a new layer starts on a visible surface.\n" +"Use Outer/Inner for the same external wall quality and dimensional accuracy " +"benefits of Inner/Outer/Inner option. However, the z seams will appear less " +"consistent as the first extrusion of a new layer starts on a visible " +"surface.\n" "\n" " " msgstr "" @@ -9997,24 +10490,26 @@ msgid "Print infill first" msgstr "Eerst infill afdrukken" msgid "" -"Order of wall/infill. When the tickbox is unchecked the walls are printed first, which " -"works best in most cases.\n" +"Order of wall/infill. When the tickbox is unchecked the walls are printed " +"first, which works best in most cases.\n" "\n" -"Printing infill first may help with extreme overhangs as the walls have the neighbouring " -"infill to adhere to. However, the infill will slighly push out the printed walls where it " -"is attached to them, resulting in a worse external surface finish. It can also cause the " -"infill to shine through the external surfaces of the part." +"Printing infill first may help with extreme overhangs as the walls have the " +"neighbouring infill to adhere to. However, the infill will slighly push out " +"the printed walls where it is attached to them, resulting in a worse " +"external surface finish. It can also cause the infill to shine through the " +"external surfaces of the part." msgstr "" msgid "Wall loop direction" msgstr "" msgid "" -"The direction which the wall loops are extruded when looking down from the top.\n" +"The direction which the wall loops are extruded when looking down from the " +"top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on odd is enabled. " -"Set this to any option other than Auto will force the wall direction regardless of the " -"Reverse on odd.\n" +"By default all walls are extruded in counter-clockwise, unless Reverse on " +"odd is enabled. Set this to any option other than Auto will force the wall " +"direction regardless of the Reverse on odd.\n" "\n" "This option will be disabled if sprial vase mode is enabled." msgstr "" @@ -10029,25 +10524,28 @@ msgid "Height to rod" msgstr "Hoogte tot geleider" msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object " -"printing." +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " +"by-object printing." msgstr "" -"Afstand van de punt van het mondstuk tot de onderste stang. Wordt gebruikt om botsingen te " -"voorkomen bij het afdrukken op basis van objecten." +"Afstand van de punt van het mondstuk tot de onderste stang. Wordt gebruikt " +"om botsingen te voorkomen bij het afdrukken op basis van objecten." msgid "Height to lid" msgstr "Hoogte tot deksel" msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" +"object printing." msgstr "" -"Afstand van de punt van het mondstuk tot het deksel. Wordt gebruikt om botsingen te " -"voorkomen bij het afdrukken op basis van objecten." +"Afstand van de punt van het mondstuk tot het deksel. Wordt gebruikt om " +"botsingen te voorkomen bij het afdrukken op basis van objecten." -msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." +msgid "" +"Clearance radius around extruder. Used for collision avoidance in by-object " +"printing." msgstr "" -"Afstandsradius rond de extruder: gebruikt om botsingen te vermijden bij het printen per " -"object." +"Afstandsradius rond de extruder: gebruikt om botsingen te vermijden bij het " +"printen per object." msgid "Nozzle height" msgstr "Hoogte van het mondstuk" @@ -10059,42 +10557,44 @@ msgid "Bed mesh min" msgstr "" msgid "" -"This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, " -"most printers are unable to probe the entire bed. To ensure the probe point does not go " -"outside the bed area, the minimum and maximum points of the bed mesh should be set " -"appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values " -"do not exceed these min/max points. This information can usually be obtained from your " -"printer manufacturer. The default setting is (-99999, -99999), which means there are no " -"limits, thus allowing probing across the entire bed." +"This option sets the min point for the allowed bed mesh area. Due to the " +"probe's XY offset, most printers are unable to probe the entire bed. To " +"ensure the probe point does not go outside the bed area, the minimum and " +"maximum points of the bed mesh should be set appropriately. OrcaSlicer " +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (-99999, -99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" msgid "Bed mesh max" msgstr "" msgid "" -"This option sets the max point for the allowed bed mesh area. Due to the probe's XY offset, " -"most printers are unable to probe the entire bed. To ensure the probe point does not go " -"outside the bed area, the minimum and maximum points of the bed mesh should be set " -"appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values " -"do not exceed these min/max points. This information can usually be obtained from your " -"printer manufacturer. The default setting is (99999, 99999), which means there are no " -"limits, thus allowing probing across the entire bed." +"This option sets the max point for the allowed bed mesh area. Due to the " +"probe's XY offset, most printers are unable to probe the entire bed. To " +"ensure the probe point does not go outside the bed area, the minimum and " +"maximum points of the bed mesh should be set appropriately. OrcaSlicer " +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (99999, 99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" msgid "Probe point distance" msgstr "" msgid "" -"This option sets the preferred distance between probe points (grid size) for the X and Y " -"directions, with the default being 50mm for both X and Y." +"This option sets the preferred distance between probe points (grid size) for " +"the X and Y directions, with the default being 50mm for both X and Y." msgstr "" msgid "Mesh margin" msgstr "" msgid "" -"This option determines the additional distance by which the adaptive bed mesh area should " -"be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed " +"mesh area should be expanded in the XY directions." msgstr "" msgid "Extruder Color" @@ -10110,21 +10610,36 @@ msgid "Flow ratio" msgstr "Flow verhouding" msgid "" -"The material may have volumetric change after switching between molten state and " -"crystalline state. This setting changes all extrusion flow of this filament in gcode " -"proportionally. Recommended value range is between 0.95 and 1.05. Maybe you can tune this " -"value to get nice flat surface when there has slight overflow or underflow" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow" +msgstr "" +"Het materiaal kan een volumetrische verandering hebben na het wisselen " +"tussen gesmolten en gekristaliseerde toestand. Deze instelling verandert " +"alle extrusiestromen van dit filament in de G-code proportioneel. Het " +"aanbevolen waardebereik ligt tussen 0,95 en 1,05. U kunt deze waarde " +"mogelijk optimaliseren om een mooi vlak oppervlak te krijgen als er een " +"lichte over- of onderflow is." + +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." msgstr "" -"Het materiaal kan een volumetrische verandering hebben na het wisselen tussen gesmolten en " -"gekristaliseerde toestand. Deze instelling verandert alle extrusiestromen van dit filament " -"in de G-code proportioneel. Het aanbevolen waardebereik ligt tussen 0,95 en 1,05. U kunt " -"deze waarde mogelijk optimaliseren om een mooi vlak oppervlak te krijgen als er een lichte " -"over- of onderflow is." msgid "Enable pressure advance" msgstr "Pressure advance inschakelen" -msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." +msgid "" +"Enable pressure advance, auto calibration result will be overwriten once " +"enabled." msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" @@ -10135,20 +10650,23 @@ msgstr "" #, c-format, boost-format msgid "" -"With increasing print speeds (and hence increasing volumetric flow through the nozzle) and " -"increasing accelerations, it has been observed that the effective PA value typically " -"decreases. This means that a single PA value is not always 100% optimal for all features " -"and a compromise value is usually used that does not cause too much bulging on features " -"with lower flow speed and accelerations while also not causing gaps on faster features.\n" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of your printer's " -"extrusion system depending on the volumetric flow speed and acceleration it is printing at. " -"Internally, it generates a fitted model that can extrapolate the needed pressure advance " -"for any given volumetric flow speed and acceleration, which is then emmited to the printer " -"depending on the current print conditions.\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" "\n" -"When enabled, the pressure advance value above is overriden. However, a reasonable default " -"value above is strongly recomended to act as a fallback and for when tool changing.\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" "\n" msgstr "" @@ -10156,28 +10674,32 @@ msgid "Adaptive pressure advance measurements (beta)" msgstr "" msgid "" -"Add sets of pressure advance (PA) values, the volumetric flow speeds and accelerations they " -"were measured at, separated by a comma. One set of values per line. For example\n" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" "0.04,3.96,3000\n" "0.033,3.96,10000\n" "0.029,7.91,3000\n" "0.026,7.91,10000\n" "\n" "How to calibrate:\n" -"1. Run the pressure advance test for at least 3 speeds per acceleration value. It is " -"recommended that the test is run for at least the speed of the external perimeters, the " -"speed of the internal perimeters and the fastest feature print speed in your profile " -"(usually its the sparse or solid infill). Then run them for the same speeds for the slowest " -"and fastest print accelerations,and no faster than the recommended maximum acceleration as " +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " "given by the klipper input shaper.\n" -"2. Take note of the optimal PA value for each volumetric flow speed and acceleration. You " -"can find the flow number by selecting flow from the color scheme drop down and move the " -"horizontal slider over the PA pattern lines. The number should be visible at the bottom of " -"the page. The ideal PA value should be decreasing the higher the volumetric flow is. If it " -"is not, confirm that your extruder is functioning correctly.The slower and with less " -"acceleration you print, the larger the range of acceptable PA values. If no difference is " -"visible, use the PA value from the faster test.3. Enter the triplets of PA values, Flow and " -"Accelerations in the text box here and save your filament profile\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" "\n" msgstr "" @@ -10185,9 +10707,10 @@ msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "" msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the same feature. This " -"is an experimental option, as if the PA profile is not set accurately, it will cause " -"uniformity issues on the external surfaces before and after overhangs.\n" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" msgstr "" msgid "Pressure advance for bridges" @@ -10196,37 +10719,41 @@ msgstr "" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of slight under " -"extrusion immediately after bridges. This is caused by the pressure drop in the nozzle when " -"printing in the air and a lower PA helps counteract this." +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." msgstr "" msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." msgstr "" msgid "Keep fan always on" msgstr "Laat de ventilator aan staan" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run at least at " -"minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run " +"at least at minimum speed to reduce the frequency of starting and stoping" msgstr "" -"Als deze instelling is ingeschakeld, zal de printkop ventilator altijd aan staan op een " -"minimale snelheid om het aantal start en stop momenten te beperken" +"Als deze instelling is ingeschakeld, zal de printkop ventilator altijd aan " +"staan op een minimale snelheid om het aantal start en stop momenten te " +"beperken" msgid "Don't slow down outer walls" msgstr "" msgid "" -"If enabled, this setting will ensure external perimeters are not slowed down to meet the " -"minimum layer time. This is particularly helpful in the below scenarios:\n" +"If enabled, this setting will ensure external perimeters are not slowed down " +"to meet the minimum layer time. This is particularly helpful in the below " +"scenarios:\n" "\n" " 1. To avoid changes in shine when printing glossy filaments \n" -"2. To avoid changes in external wall speed which may create slight wall artefacts that " -"appear like z banding \n" -"3. To avoid printing at speeds which cause VFAs (fine artefacts) on the external walls\n" +"2. To avoid changes in external wall speed which may create slight wall " +"artefacts that appear like z banding \n" +"3. To avoid printing at speeds which cause VFAs (fine artefacts) on the " +"external walls\n" "\n" msgstr "" @@ -10234,13 +10761,14 @@ msgid "Layer time" msgstr "Laag tijd" msgid "" -"Part cooling fan will be enabled for layers of which estimated time is shorter than this " -"value. Fan speed is interpolated between the minimum and maximum fan speeds according to " -"layer printing time" +"Part cooling fan will be enabled for layers of which estimated time is " +"shorter than this value. Fan speed is interpolated between the minimum and " +"maximum fan speeds according to layer printing time" msgstr "" -"De printkop ventilator wordt ingeschakeld voor lagen waarvan de geschatte printtijd korter " -"is dan deze waarde. Ventilatorsnelheid wordt geïnterpoleerd tussen de minimale en maximale " -"ventilatorsnelheden volgens de printtijd van de laag" +"De printkop ventilator wordt ingeschakeld voor lagen waarvan de geschatte " +"printtijd korter is dan deze waarde. Ventilatorsnelheid wordt geïnterpoleerd " +"tussen de minimale en maximale ventilatorsnelheden volgens de printtijd van " +"de laag" msgid "Default color" msgstr "Standaardkleur" @@ -10258,20 +10786,21 @@ msgid "Required nozzle HRC" msgstr "Vereiste mondstuk HRC" msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's " -"HRC." +"Minimum HRC of nozzle required to print the filament. Zero means no checking " +"of nozzle's HRC." msgstr "" -"Minimale HRC van het mondstuk die nodig is om het filament te printen. Een waarde van 0 " -"betekent geen controle van de HRC van het mondstuk." +"Minimale HRC van het mondstuk die nodig is om het filament te printen. Een " +"waarde van 0 betekent geen controle van de HRC van het mondstuk." msgid "" -"This setting stands for how much volume of filament can be melted and extruded per second. " -"Printing speed is limited by max volumetric speed, in case of too high and unreasonable " -"speed setting. Can't be zero" +"This setting stands for how much volume of filament can be melted and " +"extruded per second. Printing speed is limited by max volumetric speed, in " +"case of too high and unreasonable speed setting. Can't be zero" msgstr "" -"Deze instelling is het volume filament dat per seconde kan worden gesmolten en " -"geëxtrudeerd. De afdruksnelheid wordt beperkt door de maximale volumetrische snelheid, in " -"geval van een te hoge en onredelijke snelheidsinstelling. Deze waarde kan niet nul zijn." +"Deze instelling is het volume filament dat per seconde kan worden gesmolten " +"en geëxtrudeerd. De afdruksnelheid wordt beperkt door de maximale " +"volumetrische snelheid, in geval van een te hoge en onredelijke " +"snelheidsinstelling. Deze waarde kan niet nul zijn." msgid "mm³/s" msgstr "mm³/s" @@ -10279,34 +10808,46 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Filament laadt tijd" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Tijd welke nodig is om nieuw filament te laden tijdens het wisselen. Enkel voor " -"statistieken." msgid "Filament unload time" msgstr "Tijd die nodig is om filament te ontladen" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" msgstr "" -"Tijd welke nodig is om oud filament te lossen tijdens het wisselen. Enkel voor statistieken." msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important and should be " -"accurate" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Filamentdiameter wordt gebruikt om de extrusie in de G-code te berekenen, het is dus " -"belangrijk dat deze nauwkeurig wordt ingegeven" + +msgid "" +"Filament diameter is used to calculate extrusion in gcode, so it's important " +"and should be accurate" +msgstr "" +"Filamentdiameter wordt gebruikt om de extrusie in de G-code te berekenen, " +"het is dus belangrijk dat deze nauwkeurig wordt ingegeven" msgid "Pellet flow coefficient" msgstr "" msgid "" -"Pellet flow coefficient is emperically derived and allows for volume calculation for pellet " -"printers.\n" +"Pellet flow coefficient is emperically derived and allows for volume " +"calculation for pellet printers.\n" "\n" -"Internally it is converted to filament_diameter. All other volume calculations remain the " -"same.\n" +"Internally it is converted to filament_diameter. All other volume " +"calculations remain the same.\n" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" @@ -10316,11 +10857,11 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling (94% if you measure " -"94mm instead of 100mm). The part will be scaled in xy to compensate. Only the filament used " -"for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done after the " -"checks." +"Enter the shrinkage percentage that the filament will get after cooling (94% " +"if you measure 94mm instead of 100mm). The part will be scaled in xy to " +"compensate. Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done " +"after the checks." msgstr "" msgid "Loading speed" @@ -10339,38 +10880,42 @@ msgid "Unloading speed" msgstr "Ontlaadsnelheid" msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect initial part of " -"unloading just after ramming)." +"Speed used for unloading the filament on the wipe tower (does not affect " +"initial part of unloading just after ramming)." msgstr "" -"Snelheid die gebruikt wordt voor het ontladen van het afveegblok (heeft geen effect op het " -"initiële onderdeel van het ontladen direct na de ramming)." +"Snelheid die gebruikt wordt voor het ontladen van het afveegblok (heeft geen " +"effect op het initiële onderdeel van het ontladen direct na de ramming)." msgid "Unloading speed at the start" msgstr "Ontlaadsnelheid in het begin" -msgid "Speed used for unloading the tip of the filament immediately after ramming." -msgstr "Snelheid die gebruikt wordt voor het ontladen van het filament direct na de ramming." +msgid "" +"Speed used for unloading the tip of the filament immediately after ramming." +msgstr "" +"Snelheid die gebruikt wordt voor het ontladen van het filament direct na de " +"ramming." msgid "Delay after unloading" msgstr "Vertraging na het ontladen" msgid "" -"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." +"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." msgstr "" -"Wachttijd voor het ontladen van het filament. Dit kan helpen om betrouwbare toolwisselingen " -"te krijgen met flexibele materialen die meer tijd nodig hebben om te krimpen naar de " -"originele afmetingen." +"Wachttijd voor het ontladen van het filament. Dit kan helpen om betrouwbare " +"toolwisselingen te krijgen met flexibele materialen die meer tijd nodig " +"hebben om te krimpen naar de originele afmetingen." msgid "Number of cooling moves" msgstr "Aantal koelbewegingen" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. Specify desired " -"number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. " +"Specify desired number of these moves." msgstr "" -"Het filament wordt gekoeld tijdens het terug en voorwaarts bewegen in de koelbuis. " -"Specificeer het benodigd aantal bewegingen." +"Het filament wordt gekoeld tijdens het terug en voorwaarts bewegen in de " +"koelbuis. Specificeer het benodigd aantal bewegingen." msgid "Stamping loading speed" msgstr "" @@ -10382,26 +10927,27 @@ msgid "Stamping distance measured from the center of the cooling tube" msgstr "" msgid "" -"If set to nonzero value, filament is moved toward the nozzle between the individual cooling " -"moves (\"stamping\"). This option configures how long this movement should be before the " -"filament is retracted again." +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." msgstr "" msgid "Speed of the first cooling move" msgstr "Snelheid voor de eerste koelbeweging" msgid "Cooling moves are gradually accelerating beginning at this speed." -msgstr "Koelbewegingen worden gelijkmatig versneld, beginnend vanaf deze snelheid." +msgstr "" +"Koelbewegingen worden gelijkmatig versneld, beginnend vanaf deze snelheid." msgid "Minimal purge on wipe tower" msgstr "Minimale filament reiniging op de wipe tower" msgid "" -"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, Orca Slicer will always prime this amount of " -"material into the wipe tower to produce successive infill or sacrificial object extrusions " -"reliably." +"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, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" msgid "Speed of the last cooling move" @@ -10410,38 +10956,24 @@ msgstr "Snelheid voor de laatste koelbeweging" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Koelbewegingen versnellen gelijkmatig tot aan deze snelheid." -msgid "" -"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." -msgstr "" -"Tijd voor de printerfirmware (of de MMU 2.0) om nieuw filament te laden tijdens een " -"toolwissel (tijdens het uitvoeren van de T-code). Deze tijd wordt toegevoegd aan de totale " -"printtijd in de tijdsschatting." - msgid "Ramming parameters" msgstr "Rammingparameters" -msgid "This string is edited by RammingDialog and contains ramming specific parameters." -msgstr "Deze frase is bewerkt door het Rammingdialoog en bevat parameters voor de ramming." - msgid "" -"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." +"This string is edited by RammingDialog and contains ramming specific " +"parameters." msgstr "" -"Tijd voor de printerfirmware (of de MMU 2.0) om filament te ontladen tijdens een toolwissel " -"(tijdens het uitvoeren van de T-code). Deze tijd wordt toegevoegd aan de totale printtijd " -"in de tijdsschatting." +"Deze frase is bewerkt door het Rammingdialoog en bevat parameters voor de " +"ramming." msgid "Enable ramming for multitool setups" msgstr "" msgid "" -"Perform ramming when using multitool printer (i.e. when the 'Single Extruder Multimaterial' " -"in Printer Settings is unchecked). When checked, a small amount of filament is rapidly " -"extruded on the wipe tower just before the toolchange. This option is only used when the " -"wipe tower is enabled." +"Perform ramming when using multitool printer (i.e. when the 'Single Extruder " +"Multimaterial' in Printer Settings is unchecked). When checked, a small " +"amount of filament is rapidly extruded on the wipe tower just before the " +"toolchange. This option is only used when the wipe tower is enabled." msgstr "" msgid "Multitool ramming volume" @@ -10471,28 +11003,32 @@ msgstr "Filament materiaal." msgid "Soluble material" msgstr "Oplosbaar materiaal" -msgid "Soluble material is commonly used to print support and support interface" +msgid "" +"Soluble material is commonly used to print support and support interface" msgstr "" -"Oplosbaar materiaal wordt doorgaans gebruikt om odnersteuning (support) en support " -"interface te printen " +"Oplosbaar materiaal wordt doorgaans gebruikt om odnersteuning (support) en " +"support interface te printen " msgid "Support material" msgstr "Support materiaal" -msgid "Support material is commonly used to print support and support interface" -msgstr "Support materiaal wordt vaak gebruikt om support en support interfaces af te drukken." +msgid "" +"Support material is commonly used to print support and support interface" +msgstr "" +"Support materiaal wordt vaak gebruikt om support en support interfaces af te " +"drukken." msgid "Softening temperature" msgstr "Verzachtingstemperatuur" msgid "" -"The material softens at this temperature, so when the bed temperature is equal to or " -"greater than it, it's highly recommended to open the front door and/or remove the upper " -"glass to avoid cloggings." +"The material softens at this temperature, so when the bed temperature is " +"equal to or greater than it, it's highly recommended to open the front door " +"and/or remove the upper glass to avoid cloggings." msgstr "" -"The material softens at this temperature, so when the bed temperature is equal to or " -"greater than this, it's highly recommended to open the front door and/or remove the upper " -"glass to avoid clogs." +"The material softens at this temperature, so when the bed temperature is " +"equal to or greater than this, it's highly recommended to open the front " +"door and/or remove the upper glass to avoid clogs." msgid "Price" msgstr "Prijs" @@ -10515,15 +11051,19 @@ msgstr "(niet gedefinieerd)" msgid "Sparse infill direction" msgstr "" -msgid "Angle for sparse infill pattern, which controls the start or main direction of line" +msgid "" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" msgstr "" -"Dit is de hoek voor een dun opvulpatroon, dat het begin of de hoofdrichting van de lijnen " -"bepaalt." +"Dit is de hoek voor een dun opvulpatroon, dat het begin of de hoofdrichting " +"van de lijnen bepaalt." msgid "Solid infill direction" msgstr "" -msgid "Angle for solid infill pattern, which controls the start or main direction of line" +msgid "" +"Angle for solid infill pattern, which controls the start or main direction " +"of line" msgstr "" msgid "Rotate solid infill direction" @@ -10537,8 +11077,8 @@ msgstr "Vulling percentage" #, no-c-format, no-boost-format msgid "" -"Density of internal sparse infill, 100% turns all sparse infill into solid infill and " -"internal solid infill pattern will be used" +"Density of internal sparse infill, 100% turns all sparse infill into solid " +"infill and internal solid infill pattern will be used" msgstr "" msgid "Sparse infill pattern" @@ -10584,14 +11124,16 @@ msgid "Sparse infill anchor length" msgstr "" msgid "" -"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. Orca Slicer 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. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a single infill " -"line." +"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. Orca Slicer 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. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." msgstr "" msgid "0 (no open anchors)" @@ -10604,14 +11146,16 @@ msgid "Maximum length of the infill anchor" msgstr "Maximale lengte van de vullingsbevestiging" msgid "" -"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. Orca Slicer 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. \n" -"If set to 0, the old algorithm for infill connection will be used, it should create the " -"same result as with 1000 & 0." +"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. Orca Slicer 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. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." msgstr "" msgid "0 (Simple connect)" @@ -10627,38 +11171,44 @@ msgid "Acceleration of travel moves" msgstr "" msgid "" -"Acceleration of top surface infill. Using a lower value may improve top surface quality" +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" msgstr "" -"Versnelling van de topoppervlakte-invulling. Gebruik van een lagere waarde kan de kwaliteit " -"van de bovenlaag verbeteren." +"Versnelling van de topoppervlakte-invulling. Gebruik van een lagere waarde " +"kan de kwaliteit van de bovenlaag verbeteren." msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "Versnelling van de buitenwand: een lagere waarde kan de kwaliteit verbeteren." +msgstr "" +"Versnelling van de buitenwand: een lagere waarde kan de kwaliteit verbeteren." msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be " -"calculated based on the outer wall acceleration." +"Acceleration of bridges. If the value is expressed as a percentage (e.g. " +"50%), it will be calculated based on the outer wall acceleration." msgstr "" msgid "mm/s² or %" msgstr "mm/s² or %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it " -"will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." msgstr "" -"Versnelling van de schaarse invulling. Als de waarde wordt uitgedrukt als een percentage " -"(bijvoorbeeld 100%), wordt deze berekend op basis van de standaardversnelling." +"Versnelling van de schaarse invulling. Als de waarde wordt uitgedrukt als " +"een percentage (bijvoorbeeld 100%), wordt deze berekend op basis van de " +"standaardversnelling." msgid "" -"Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. " -"100%), it will be calculated based on the default acceleration." +"Acceleration of internal solid infill. If the value is expressed as a " +"percentage (e.g. 100%), it will be calculated based on the default " +"acceleration." msgstr "" -msgid "Acceleration of initial layer. Using a lower value can improve build plate adhesive" +msgid "" +"Acceleration of initial layer. Using a lower value can improve build plate " +"adhesive" msgstr "" -"Dit is de afdrukversnelling voor de eerste laag. Een beperkte versnelling kan de hechting " -"van de bouwplaat verbeteren." +"Dit is de afdrukversnelling voor de eerste laag. Een beperkte versnelling " +"kan de hechting van de bouwplaat verbeteren." msgid "Enable accel_to_decel" msgstr "Accel_to_decel inschakelen" @@ -10670,7 +11220,8 @@ msgid "accel_to_decel" msgstr "accel_to_decel" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" msgid "Jerk of outer walls" @@ -10692,28 +11243,30 @@ msgid "Jerk for travel" msgstr "" msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over the nozzle " -"diameter." +"Line width of initial layer. If expressed as a %, it will be computed over " +"the nozzle diameter." msgstr "" msgid "Initial layer height" msgstr "Laaghoogte van de eerste laag" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly can improve build " -"plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhesion" msgstr "" -"Dit is de hoogte van de eerste laag. Door de hoogte van de eerste laag hoger te maken, kan " -"de hechting op het printbed worden verbeterd." +"Dit is de hoogte van de eerste laag. Door de hoogte van de eerste laag hoger " +"te maken, kan de hechting op het printbed worden verbeterd." msgid "Speed of initial layer except the solid infill part" -msgstr "Dit is de snelheid voor de eerste laag behalve solide vulling (infill) delen" +msgstr "" +"Dit is de snelheid voor de eerste laag behalve solide vulling (infill) delen" msgid "Initial layer infill" msgstr "Vulling (infill) van de eerste laag" msgid "Speed of solid infill part of initial layer" -msgstr "Dit is de snelheid voor de solide vulling (infill) delen van de eerste laag." +msgstr "" +"Dit is de snelheid voor de solide vulling (infill) delen van de eerste laag." msgid "Initial layer travel speed" msgstr "" @@ -10725,24 +11278,27 @@ msgid "Number of slow layers" msgstr "" msgid "" -"The first few layers are printed slower than normal. The speed is gradually increased in a " -"linear fashion over the specified number of layers." +"The first few layers are printed slower than normal. The speed is gradually " +"increased in a linear fashion over the specified number of layers." msgstr "" msgid "Initial layer nozzle temperature" msgstr "Mondstuk temperatuur voor de eerste laag" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "Mondstuk temperatuur om de eerste laag mee te printen bij gebruik van dit filament" +msgstr "" +"Mondstuk temperatuur om de eerste laag mee te printen bij gebruik van dit " +"filament" msgid "Full fan speed at layer" msgstr "Volledige snelheid op laag" msgid "" -"Fan speed will be ramped up linearly from zero at layer \"close_fan_the_first_x_layers\" to " -"maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if " -"lower than \"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"Fan speed will be ramped up linearly from zero at layer " +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -10752,18 +11308,19 @@ msgid "Support interface fan speed" msgstr "" msgid "" -"This fan speed is enforced during all support interfaces, to be able to weaken their " -"bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to " +"weaken their bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough look. This setting " -"controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough " +"look. This setting controls the fuzzy position" msgstr "" -"Deze instelling zorgt ervoor dat de toolhead willekeurig schudt tijdens het printen van " -"muren, zodat het oppervlak er ruw uitziet. Deze instelling regelt de \"fuzzy\" positie." +"Deze instelling zorgt ervoor dat de toolhead willekeurig schudt tijdens het " +"printen van muren, zodat het oppervlak er ruw uitziet. Deze instelling " +"regelt de \"fuzzy\" positie." msgid "Contour" msgstr "Contour" @@ -10777,18 +11334,22 @@ msgstr "Alle wanden" msgid "Fuzzy skin thickness" msgstr "Fuzzy skin dikte" -msgid "The width within which to jitter. It's adversed to be below outer wall line width" +msgid "" +"The width within which to jitter. It's adversed to be below outer wall line " +"width" msgstr "" -"De breedte van jittering: het is aan te raden deze lager te houden dan de lijndikte van de " -"buitenste wand." +"De breedte van jittering: het is aan te raden deze lager te houden dan de " +"lijndikte van de buitenste wand." msgid "Fuzzy skin point distance" msgstr "Fuzzy skin punt afstand" -msgid "The average diatance between the random points introducded on each line segment" +msgid "" +"The average diatance between the random points introducded on each line " +"segment" msgstr "" -"De gemiddelde afstand tussen de willekeurige punten die op ieder lijnsegment zijn " -"geïntroduceerd" +"De gemiddelde afstand tussen de willekeurige punten die op ieder lijnsegment " +"zijn geïntroduceerd" msgid "Apply fuzzy skin to first layer" msgstr "" @@ -10802,63 +11363,72 @@ msgstr "Kleine openingen wegfilteren" msgid "Layers and Perimeters" msgstr "Lagen en perimeters" -msgid "Filter out gaps smaller than the threshold specified" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" +"Speed of gap infill. Gap usually has irregular line width and should be " +"printed more slowly" msgstr "" -"Dit is de snelheid voor het opvullen van gaten. Tussenruimtes hebben meestal een " -"onregelmatige lijndikte en moeten daarom langzamer worden afgedrukt." +"Dit is de snelheid voor het opvullen van gaten. Tussenruimtes hebben meestal " +"een onregelmatige lijndikte en moeten daarom langzamer worden afgedrukt." msgid "Precise Z height" msgstr "Precise Z height" msgid "" -"Enable this to get precise z height of object after slicing. It will get the precise object " -"height by fine-tuning the layer heights of the last few layers. Note that this is an " -"experimental parameter." +"Enable this to get precise z height of object after slicing. It will get the " +"precise object height by fine-tuning the layer heights of the last few " +"layers. Note that this is an experimental parameter." msgstr "" -"Enable this to get precise z height of object after slicing. It will get the precise object " -"height by fine-tuning the layer heights of the last few layers. Note that this is an " -"experimental parameter." +"Enable this to get precise z height of object after slicing. It will get the " +"precise object height by fine-tuning the layer heights of the last few " +"layers. Note that this is an experimental parameter." msgid "Arc fitting" msgstr "Boog montage" msgid "" -"Enable this to get a G-code file which has G2 and G3 moves. The fitting tolerance is same " -"as the resolution. \n" +"Enable this to get a G-code file which has G2 and G3 moves. The fitting " +"tolerance is same as the resolution. \n" "\n" -"Note: For klipper machines, this option is recomended to be disabled. Klipper does not " -"benefit from arc commands as these are split again into line segments by the firmware. This " -"results in a reduction in surface quality as line segments are converted to arcs by the " -"slicer and then back to line segments by the firmware." +"Note: For klipper machines, this option is recomended to be disabled. " +"Klipper does not benefit from arc commands as these are split again into " +"line segments by the firmware. This results in a reduction in surface " +"quality as line segments are converted to arcs by the slicer and then back " +"to line segments by the firmware." msgstr "" msgid "Add line number" msgstr "Lijn hoogte toevoegen" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "Schakel dit in om regelnummer (Nx) toe te voegen aan het begin van elke G-coderegel." +msgstr "" +"Schakel dit in om regelnummer (Nx) toe te voegen aan het begin van elke G-" +"coderegel." msgid "Scan first layer" msgstr "Eerste laag scannen" -msgid "Enable this to enable the camera on printer to check the quality of first layer" +msgid "" +"Enable this to enable the camera on printer to check the quality of first " +"layer" msgstr "" -"Schakel dit in zodat de camera in de printer de kwaliteit van de eerste laag kan " -"controleren." +"Schakel dit in zodat de camera in de printer de kwaliteit van de eerste laag " +"kan controleren." msgid "Nozzle type" msgstr "Mondstuk type" msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of nozzle, and " -"what kind of filament can be printed" +"The metallic material of nozzle. This determines the abrasive resistance of " +"nozzle, and what kind of filament can be printed" msgstr "" -"Het type metaal van het mondstuk. Dit bepaalt de slijtvastheid van het mondstuk en wat voor " -"soort filament kan worden geprint" +"Het type metaal van het mondstuk. Dit bepaalt de slijtvastheid van het " +"mondstuk en wat voor soort filament kan worden geprint" msgid "Undefine" msgstr "Undefined" @@ -10875,10 +11445,12 @@ msgstr "Messing" msgid "Nozzle HRC" msgstr "Mondstuk HRC" -msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." +msgid "" +"The nozzle's hardness. Zero means no checking for nozzle's hardness during " +"slicing." msgstr "" -"De hardheid van het mondstuk. Nul betekent geen controle op de hardheid van het mondstuk " -"tijdens het slicen." +"De hardheid van het mondstuk. Nul betekent geen controle op de hardheid van " +"het mondstuk tijdens het slicen." msgid "HRC" msgstr "HRC" @@ -10906,20 +11478,23 @@ msgstr "Beste objectpositie" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "" -"Beste automatisch schikkende positie in het bereik [0,1] met betrekking tot de bedvorm." +"Beste automatisch schikkende positie in het bereik [0,1] met betrekking tot " +"de bedvorm." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code command: M106 P2 " -"S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code " +"command: M106 P2 S(0-255)." msgstr "" msgid "" -"Start the fan this number of seconds earlier than its target start time (you can use " -"fractional seconds). It assumes infinite acceleration for this time estimation, and will " -"only take into account G1 and G0 moves (arc fitting is unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start gcode' is " -"activated.\n" +"Start the fan this number of seconds earlier than its target start time (you " +"can use fractional seconds). It assumes infinite acceleration for this time " +"estimation, and will only take into account G1 and G0 moves (arc fitting is " +"unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of " +"'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start " +"gcode' is activated.\n" "Use 0 to deactivate." msgstr "" @@ -10933,10 +11508,10 @@ msgid "Fan kick-start time" msgstr "" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to target speed to " -"kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the fan started " -"spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to " +"target speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the " +"fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" @@ -10990,10 +11565,10 @@ msgid "Label objects" msgstr "Label objecten" msgid "" -"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." +"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." msgstr "" msgid "Exclude objects" @@ -11006,30 +11581,31 @@ msgid "Verbose G-code" msgstr "Opmerkingen in G-code" msgid "" -"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." +"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." msgstr "" -"Sta dit toe om een G-code met opmerkingen te genereren. Bij elk blok commando's wordt een " -"opmerking geplaatst. Als u print vanaf een SD-kaart, kan de extra grootte van het bestand " -"de firmware vertragen." +"Sta dit toe om een G-code met opmerkingen te genereren. Bij elk blok " +"commando's wordt een opmerking geplaatst. Als u print vanaf een SD-kaart, " +"kan de extra grootte van het bestand de firmware vertragen." msgid "Infill combination" msgstr "Vulling (infill) combinatie" msgid "" -"Automatically Combine sparse infill of several layers to print together to reduce time. " -"Wall is still printed with original layer height." +"Automatically Combine sparse infill of several layers to print together to " +"reduce time. Wall is still printed with original layer height." msgstr "" -"Combineer het printen van meerdere lagen vulling om te printtijd te verlagen. De wanden " -"worden geprint in de originele laaghoogte." +"Combineer het printen van meerdere lagen vulling om te printtijd te " +"verlagen. De wanden worden geprint in de originele laaghoogte." msgid "Filament to print internal sparse infill." -msgstr "Dit is het filament voor het printen van interne dunne vulling (infill)" +msgstr "" +"Dit is het filament voor het printen van interne dunne vulling (infill)" msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" msgid "Infill/Wall overlap" @@ -11037,9 +11613,10 @@ msgstr "Vulling (infill)/wand overlap" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. The percentage " -"value is relative to line width of sparse infill. Set this value to ~10-15% to minimize " -"potential over extrusion and accumulation of material resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill. Set this " +"value to ~10-15% to minimize potential over extrusion and accumulation of " +"material resulting in rough top surfaces." msgstr "" msgid "Top/Bottom solid infill/wall overlap" @@ -11047,10 +11624,11 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"Top solid infill area is enlarged slightly to overlap with wall for better bonding and to " -"minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% " -"is a good starting point, minimising the appearance of pinholes. The percentage value is " -"relative to line width of sparse infill" +"Top solid infill area is enlarged slightly to overlap with wall for better " +"bonding and to minimize the appearance of pinholes where the top infill " +"meets the walls. A value of 25-30% is a good starting point, minimising the " +"appearance of pinholes. The percentage value is relative to line width of " +"sparse infill" msgstr "" msgid "Speed of internal sparse infill" @@ -11060,17 +11638,20 @@ msgid "Interface shells" msgstr "Interface shells" msgid "" -"Force the generation of solid shells between adjacent materials/volumes. Useful for multi-" -"extruder prints with translucent materials or manual soluble support material" +"Force the generation of solid shells between adjacent materials/volumes. " +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" msgstr "" -"Force the generation of solid shells between adjacent materials/volumes. Useful for multi-" -"extruder prints with translucent materials or manual soluble support material" +"Force the generation of solid shells between adjacent materials/volumes. " +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" msgid "Maximum width of a segmented region" msgstr "Maximale breedte van een gesegmenteerd gebied" msgid "Maximum width of a segmented region. Zero disables this feature." -msgstr "Maximum width of a segmented region. A value of 0 disables this feature." +msgstr "" +"Maximum width of a segmented region. A value of 0 disables this feature." msgid "Interlocking depth of a segmented region" msgstr "Insluitdiepte van een gesegmenteerde regio" @@ -11086,8 +11667,9 @@ msgid "Use beam interlocking" msgstr "" msgid "" -"Generate interlocking beam structure at the locations where different filaments touch. This " -"improves the adhesion between filaments, especially models printed in different materials." +"Generate interlocking beam structure at the locations where different " +"filaments touch. This improves the adhesion between filaments, especially " +"models printed in different materials." msgstr "" msgid "Interlocking beam width" @@ -11106,36 +11688,36 @@ msgid "Interlocking beam layers" msgstr "" msgid "" -"The height of the beams of the interlocking structure, measured in number of layers. Less " -"layers is stronger, but more prone to defects." +"The height of the beams of the interlocking structure, measured in number of " +"layers. Less layers is stronger, but more prone to defects." msgstr "" msgid "Interlocking depth" msgstr "" msgid "" -"The distance from the boundary between filaments to generate interlocking structure, " -"measured in cells. Too few cells will result in poor adhesion." +"The distance from the boundary between filaments to generate interlocking " +"structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" msgid "Interlocking boundary avoidance" msgstr "" msgid "" -"The distance from the outside of a model where interlocking structures will not be " -"generated, measured in cells." +"The distance from the outside of a model where interlocking structures will " +"not be generated, measured in cells." msgstr "" msgid "Ironing Type" msgstr "Strijk type" msgid "" -"Ironing is using small flow to print on same height of surface again to make flat surface " -"more smooth. This setting controls which layer being ironed" +"Ironing is using small flow to print on same height of surface again to make " +"flat surface more smooth. This setting controls which layer being ironed" msgstr "" -"Strijken gebruikt een lage flow om op dezelfde hoogte van een oppervlak te printen om " -"platte oppervlakken gladder te maken. Deze instelling bepaalt op welke lagen het strijken " -"wordt toegepast." +"Strijken gebruikt een lage flow om op dezelfde hoogte van een oppervlak te " +"printen om platte oppervlakken gladder te maken. Deze instelling bepaalt op " +"welke lagen het strijken wordt toegepast." msgid "No ironing" msgstr "Niet strijken" @@ -11159,18 +11741,19 @@ msgid "Ironing flow" msgstr "Flow tijdens strijken" msgid "" -"The amount of material to extrude during ironing. Relative to flow of normal layer height. " -"Too high value results in overextrusion on the surface" +"The amount of material to extrude during ironing. Relative to flow of normal " +"layer height. Too high value results in overextrusion on the surface" msgstr "" -"Dit is de hoeveelheid materiaal die dient te worden geëxtrudeerd tijdens het strijken. Het " -"is relatief ten opzichte van de flow van normale laaghoogte. Een te hoge waarde zal " -"resulteren in overextrusie op het oppervlak." +"Dit is de hoeveelheid materiaal die dient te worden geëxtrudeerd tijdens het " +"strijken. Het is relatief ten opzichte van de flow van normale laaghoogte. " +"Een te hoge waarde zal resulteren in overextrusie op het oppervlak." msgid "Ironing line spacing" msgstr "Afstand tussen de strijklijnen" msgid "The distance between the lines of ironing" -msgstr "Dit is de afstand voor de lijnen die gebruikt worden voor het strijken." +msgstr "" +"Dit is de afstand voor de lijnen die gebruikt worden voor het strijken." msgid "Ironing speed" msgstr "Snelheid tijdens het strijken" @@ -11182,21 +11765,23 @@ msgid "Ironing angle" msgstr "" msgid "" -"The angle ironing is done at. A negative number disables this function and uses the default " -"method." +"The angle ironing is done at. A negative number disables this function and " +"uses the default method." msgstr "" msgid "This gcode part is inserted at every layer change after lift z" -msgstr "De G-code wordt bij iedere laagwisseling toegevoegd na het optillen van Z" +msgstr "" +"De G-code wordt bij iedere laagwisseling toegevoegd na het optillen van Z" msgid "Supports silent mode" msgstr "Stille modus" msgid "" -"Whether the machine supports silent mode in which machine use lower acceleration to print" +"Whether the machine supports silent mode in which machine use lower " +"acceleration to print" msgstr "" -"Dit geeft aan of de machine de stille modus ondersteunt waarin de machine een lagere " -"versnelling gebruikt om te printen" +"Dit geeft aan of de machine de stille modus ondersteunt waarin de machine " +"een lagere versnelling gebruikt om te printen" msgid "Emit limits to G-code" msgstr "" @@ -11210,11 +11795,11 @@ msgid "" msgstr "" msgid "" -"This G-code will be used as a code for the pause print. User can insert pause G-code in " -"gcode viewer" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" msgstr "" -"Deze G-code wordt gebruikt als code voor de pauze. Gebruikers kunnen een pauze-G-code " -"invoegen in de G-code-viewer." +"Deze G-code wordt gebruikt als code voor de pauze. Gebruikers kunnen een " +"pauze-G-code invoegen in de G-code-viewer." msgid "This G-code will be used as a custom code" msgstr "Deze G-code wordt gebruikt als een aangepaste code" @@ -11229,9 +11814,10 @@ msgid "Flow Compensation Model" msgstr "" msgid "" -"Flow Compensation Model, used to adjust the flow for small infill areas. The model is " -"expressed as a comma separated pair of values for extrusion length and flow correction " -"factors, one per line, in the following format: \"1.234,5.678\"" +"Flow Compensation Model, used to adjust the flow for small infill areas. The " +"model is expressed as a comma separated pair of values for extrusion length " +"and flow correction factors, one per line, in the following format: " +"\"1.234,5.678\"" msgstr "" msgid "Maximum speed X" @@ -11337,46 +11923,49 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum " -"speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" msgstr "" -"De snelheid van de ventilator op de printkop kan verhoogd worden als automatisch koelen is " -"ingeschakeld. Dit is de maximale snelheidslimiet van de printkop ventilator" +"De snelheid van de ventilator op de printkop kan verhoogd worden als " +"automatisch koelen is ingeschakeld. Dit is de maximale snelheidslimiet van " +"de printkop ventilator" msgid "Max" msgstr "Maximum" msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum layer hight " -"when enable adaptive layer height" +"The largest printable layer height for extruder. Used tp limits the maximum " +"layer hight when enable adaptive layer height" msgstr "" -"De hoogste printbare laaghoogte voor de extruder: dit wordt gebruikt om de maximale " -"laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." +"De hoogste printbare laaghoogte voor de extruder: dit wordt gebruikt om de " +"maximale laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." msgid "Extrusion rate smoothing" msgstr "" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when the printer " -"transitions from printing a high flow (high speed/larger width) extrusion to a lower flow " -"(lower speed/smaller width) extrusion and vice versa.\n" +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " +"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " +"versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm3/sec can change " -"over time. Higher values mean higher extrusion rate changes are allowed, resulting in " -"faster speed transitions.\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " +"can change over time. Higher values mean higher extrusion rate changes are " +"allowed, resulting in faster speed transitions.\n" "\n" "A value of 0 disables the feature. \n" "\n" -"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) this value " -"is usually not needed. However it can provide some marginal benefit in certain cases where " -"feature speeds vary greatly. For example, when there are aggressive slowdowns due to " -"overhangs. In these cases a high value of around 300-350mm3/s2 is recommended as this " -"allows for just enough smoothing to assist pressure advance achieve a smoother flow " +"For a high speed, high flow direct drive printer (like the Bambu lab or " +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " "transition.\n" "\n" -"For slower printers without pressure advance, the value should be set much lower. A value " -"of 10-15mm3/s2 is a good starting point for direct drive extruders and 5-10mm3/s2 for " -"Bowden style. \n" +"For slower printers without pressure advance, the value should be set much " +"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " +"extruders and 5-10mm3/s2 for Bowden style. \n" "\n" "This feature is known as Pressure Equalizer in Prusa slicer.\n" "\n" @@ -11390,11 +11979,12 @@ msgid "Smoothing segment length" msgstr "" msgid "" -"A lower value results in smoother extrusion rate transitions. However, this results in a " -"significantly larger gcode file and more instructions for the printer to process. \n" +"A lower value results in smoother extrusion rate transitions. However, this " +"results in a significantly larger gcode file and more instructions for the " +"printer to process. \n" "\n" -"Default value of 3 works well for most cases. If your printer is stuttering, increase this " -"value to reduce the number of adjustments made\n" +"Default value of 3 works well for most cases. If your printer is stuttering, " +"increase this value to reduce the number of adjustments made\n" "\n" "Allowed values: 1-5" msgstr "" @@ -11403,28 +11993,30 @@ msgid "Minimum speed for part cooling fan" msgstr "Minimale snelheid voor de printkop ventilator" msgid "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing " -"except the first several layers which is defined by no cooling layers.\n" -"Please enable auxiliary_fan in printer settings to use this feature. G-code command: M106 " -"P2 S(0-255)" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " +"during printing except the first several layers which is defined by no " +"cooling layers.\n" +"Please enable auxiliary_fan in printer settings to use this feature. G-code " +"command: M106 P2 S(0-255)" msgstr "" msgid "Min" msgstr "Minimaal" msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum layer hight when " -"enable adaptive layer height" +"The lowest printable layer height for extruder. Used tp limits the minimum " +"layer hight when enable adaptive layer height" msgstr "" -"De laagste printbare laaghoogte voor de extruder: dit wordt gebruikt om de minimale " -"laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." +"De laagste printbare laaghoogte voor de extruder: dit wordt gebruikt om de " +"minimale laaghoogte te beperken wanneer adaptieve laaghoogte is ingeschakeld." msgid "Min print speed" msgstr "Minimale print snelheid" msgid "" -"The minimum printing speed that the printer will slow down to to attempt to maintain the " -"minimum layer time above, when slow down for better layer cooling is enabled." +"The minimum printing speed that the printer will slow down to to attempt to " +"maintain the minimum layer time above, when slow down for better layer " +"cooling is enabled." msgstr "" msgid "Diameter of nozzle" @@ -11434,25 +12026,29 @@ msgid "Configuration notes" msgstr "Configuratie-opmerkingen" msgid "" -"You can put here your personal notes. This text will be added to the G-code header comments." +"You can put here your personal notes. This text will be added to the G-code " +"header comments." msgstr "" -"Hier kunt u eigen opmerkingen plaatsen. Deze tekst wordt bovenin de G-code toegevoegd." +"Hier kunt u eigen opmerkingen plaatsen. Deze tekst wordt bovenin de G-code " +"toegevoegd." msgid "Host Type" msgstr "Hosttype" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must contain the kind of " -"the host." +"Orca Slicer can upload G-code files to a printer host. This field must " +"contain the kind of the host." msgstr "" -"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet het type host " -"bevatten." +"Orca Slicer kan G-codebestanden uploaden naar een printerhost. Dit veld moet " +"het type host bevatten." msgid "Nozzle volume" msgstr "Mondstuk volume" msgid "Volume of nozzle between the cutter and the end of nozzle" -msgstr "Volume van het mondstuk tussen de filamentsnijder en het uiteinde van het mondstuk" +msgstr "" +"Volume van het mondstuk tussen de filamentsnijder en het uiteinde van het " +"mondstuk" msgid "Cooling tube position" msgstr "Koelbuispositie" @@ -11464,70 +12060,79 @@ msgid "Cooling tube length" msgstr "Koelbuislengte" msgid "Length of the cooling tube to limit space for cooling moves inside it." -msgstr "Lengte van de koelbuis om de ruimte voor koelbewegingen daarin te beperken." +msgstr "" +"Lengte van de koelbuis om de ruimte voor koelbewegingen daarin te beperken." msgid "High extruder current on filament swap" msgstr "Hoge stroomsterkte bij extruder voor filamentwissel" msgid "" -"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." +"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." msgstr "" -"Het kan nuttig zijn om de stroomsterkte van de extrudermotor te verhogen tijdens het " -"uitvoeren van de filamentwisseling om snelle ramming mogelijk te maken en om weerstand te " -"overwinnen tijdens het laden van filament met een misvormde kop." +"Het kan nuttig zijn om de stroomsterkte van de extrudermotor te verhogen " +"tijdens het uitvoeren van de filamentwisseling om snelle ramming mogelijk te " +"maken en om weerstand te overwinnen tijdens het laden van filament met een " +"misvormde kop." msgid "Filament parking position" msgstr "Filament parkeerpositie" msgid "" -"Distance of the extruder tip from the position where the filament is parked when unloaded. " -"This should match the value in printer firmware." +"Distance of the extruder tip from the position where the filament is parked " +"when unloaded. This should match the value in printer firmware." msgstr "" -"Afstand van de punt van het mondstuk tot de positie waar het filament wordt geparkeerd " -"wanneer dat niet geladen is. Deze moet overeenkomen met de waarde in de firmware." +"Afstand van de punt van het mondstuk tot de positie waar het filament wordt " +"geparkeerd wanneer dat niet geladen is. Deze moet overeenkomen met de waarde " +"in de firmware." msgid "Extra loading distance" msgstr "Extra laadafstand" msgid "" -"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." +"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." msgstr "" -"Als dit ingesteld is op 0, zal de afstand die het filament tijdens het laden uit de " -"parkeerpositie even groot zijn als wanneer het filament teruggetrokken wordt. Als de waarde " -"positief is, zal het verder geladen worden. Als het negatief is, is de laadafstand dus " -"korter." +"Als dit ingesteld is op 0, zal de afstand die het filament tijdens het laden " +"uit de parkeerpositie even groot zijn als wanneer het filament " +"teruggetrokken wordt. Als de waarde positief is, zal het verder geladen " +"worden. Als het negatief is, is de laadafstand dus korter." msgid "Start end points" msgstr "Start end points" msgid "The start and end points which is from cutter area to garbage can." -msgstr "Het begin- en eindpunt dat zich van het snijoppervlak naar de afvoer chute bevindt." +msgstr "" +"Het begin- en eindpunt dat zich van het snijoppervlak naar de afvoer chute " +"bevindt." msgid "Reduce infill retraction" msgstr "Reduceer terugtrekken (retraction) bij vulling (infill)" msgid "" -"Don't retract when the travel is in infill area absolutely. That means the oozing can't " -"been seen. This can reduce times of retraction for complex model and save printing time, " -"but make slicing and G-code generating slower" +"Don't retract when the travel is in infill area absolutely. That means the " +"oozing can't been seen. This can reduce times of retraction for complex " +"model and save printing time, but make slicing and G-code generating slower" msgstr "" -"Trek niet terug als de beweging zich volledig in een opvulgebied bevindt. Dat betekent dat " -"het sijpelen niet zichtbaar is. Dit kan de retraction times voor complexe modellen " -"verkorten en printtijd besparen, maar het segmenteren en het genereren van G-codes " -"langzamer maken." +"Trek niet terug als de beweging zich volledig in een opvulgebied bevindt. " +"Dat betekent dat het sijpelen niet zichtbaar is. Dit kan de retraction times " +"voor complexe modellen verkorten en printtijd besparen, maar het segmenteren " +"en het genereren van G-codes langzamer maken." -msgid "This option will drop the temperature of the inactive extruders to prevent oozing." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." msgstr "" msgid "Filename format" msgstr "Bestandsnaam formaat" msgid "User can self-define the project file name when export" -msgstr "Gebruikers kunnen zelf de project bestandsnaam kiezen tijdens het exporteren" +msgstr "" +"Gebruikers kunnen zelf de project bestandsnaam kiezen tijdens het exporteren" msgid "Make overhangs printable" msgstr "" @@ -11539,17 +12144,17 @@ msgid "Make overhangs printable - Maximum angle" msgstr "" msgid "" -"Maximum angle of overhangs to allow after making more steep overhangs printable.90° will " -"not change the model at all and allow any overhang, while 0 will replace all overhangs with " -"conical material." +"Maximum angle of overhangs to allow after making more steep overhangs " +"printable.90° will not change the model at all and allow any overhang, while " +"0 will replace all overhangs with conical material." msgstr "" msgid "Make overhangs printable - Hole area" msgstr "" msgid "" -"Maximum area of a hole in the base of the model before it's filled by conical material.A " -"value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by " +"conical material.A value of 0 will fill all the holes in the model base." msgstr "" msgid "mm²" @@ -11560,18 +12165,19 @@ msgstr "Overhange wand detecteren" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different speed to print. For " -"100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." msgstr "" -"Dit maakt het mogelijk om het overhangpercentage ten opzichte van de lijnbreedte te " -"detecteren en gebruikt verschillende snelheden om af te drukken. Voor 100%% overhang wordt " -"de brugsnelheid gebruikt." +"Dit maakt het mogelijk om het overhangpercentage ten opzichte van de " +"lijnbreedte te detecteren en gebruikt verschillende snelheden om af te " +"drukken. Voor 100%% overhang wordt de brugsnelheid gebruikt." msgid "Filament to print walls" msgstr "" msgid "" -"Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter." +"Line width of inner wall. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" msgid "Speed of inner wall" @@ -11584,21 +12190,22 @@ msgid "Alternate extra wall" msgstr "" msgid "" -"This setting adds an extra wall to every other layer. This way the infill gets wedged " -"vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill " +"gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option needs to be " -"disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option " +"needs to be disabled. \n" "\n" -"Using lightning infill together with this option is not recommended as there is limited " -"infill to anchor the extra perimeters to." +"Using lightning infill together with this option is not recommended as there " +"is limited infill to anchor the extra perimeters to." msgstr "" msgid "" -"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 Orca Slicer config " -"settings by reading environment variables." +"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 Orca Slicer config settings by reading " +"environment variables." msgstr "" msgid "Printer type" @@ -11621,8 +12228,8 @@ msgstr "Vlot (raft) contact Z afstand:" msgid "Z gap between object and raft. Ignored for soluble interface" msgstr "" -"Dit is de Z-afstand tussen een object en een raft. Het wordt genegeerd voor oplosbare " -"materialen." +"Dit is de Z-afstand tussen een object en een raft. Het wordt genegeerd voor " +"oplosbare materialen." msgid "Raft expansion" msgstr "Vlot (raft) expansie" @@ -11641,111 +12248,123 @@ msgstr "Vergroten van de eerste laag" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" -"Dit zet de eerste raft- of steun (support) laag uit om de hechting van het bed te " -"verbeteren." +"Dit zet de eerste raft- of steun (support) laag uit om de hechting van het " +"bed te verbeteren." msgid "Raft layers" msgstr "Vlot (raft) lagen" msgid "" -"Object will be raised by this number of support layers. Use this function to avoid wrapping " -"when print ABS" +"Object will be raised by this number of support layers. Use this function to " +"avoid wrapping when print ABS" msgstr "" -"Het object wordt verhoogd met dit aantal support lagen. Gebruik deze functie om kromtrekken " -"te voorkomen bij het afdrukken met ABS." +"Het object wordt verhoogd met dit aantal support lagen. Gebruik deze functie " +"om kromtrekken te voorkomen bij het afdrukken met ABS." msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too much points " -"and gcode lines in gcode file. Smaller value means higher resolution and more time to slice" +"G-code path is genereated after simplifing the contour of model to avoid too " +"much points and gcode lines in gcode file. Smaller value means higher " +"resolution and more time to slice" msgstr "" -"Het G-codepad wordt gegenereerd na het vereenvoudigen van de contouren van modellen om " -"teveel punten en G-codelijnen te vermijden. Kleinere waarden betekenen een hogere resolutie " -"en meer tijd die nodig is om het ontwerpen te slicen." +"Het G-codepad wordt gegenereerd na het vereenvoudigen van de contouren van " +"modellen om teveel punten en G-codelijnen te vermijden. Kleinere waarden " +"betekenen een hogere resolutie en meer tijd die nodig is om het ontwerpen te " +"slicen." msgid "Travel distance threshold" msgstr "Drempel voor verplaatsingsafstand" -msgid "Only trigger retraction when the travel distance is longer than this threshold" +msgid "" +"Only trigger retraction when the travel distance is longer than this " +"threshold" msgstr "" -"Activeer het terugtrekken (retraction) alleen als de verplaatsingsafstand groter is dan " -"deze drempel." +"Activeer het terugtrekken (retraction) alleen als de verplaatsingsafstand " +"groter is dan deze drempel." msgid "Retract amount before wipe" msgstr "Terugtrek (retract) hoeveelheid voor schoonvegen" -msgid "The length of fast retraction before wipe, relative to retraction length" +msgid "" +"The length of fast retraction before wipe, relative to retraction length" msgstr "" -"Dit is de lengte van snel intrekken (retraction) vóór een wipe, in verhouding tot de " -"retraction lengte." +"Dit is de lengte van snel intrekken (retraction) vóór een wipe, in " +"verhouding tot de retraction lengte." msgid "Retract when change layer" msgstr "Terugtrekken (retract) bij wisselen van laag" msgid "Force a retraction when changes layer" -msgstr "Dit forceert retraction (terugtrekken van filament) als er gewisseld wordt van laag" +msgstr "" +"Dit forceert retraction (terugtrekken van filament) als er gewisseld wordt " +"van laag" msgid "Retraction Length" msgstr "Terugtrek (retraction) lengte" msgid "" -"Some amount of material in extruder is pulled back to avoid ooze during long travel. Set " -"zero to disable retraction" +"Some amount of material in extruder is pulled back to avoid ooze during long " +"travel. Set zero to disable retraction" msgstr "" -"Een deel van het materiaal in de extruder wordt teruggetrokken om sijpelen tijdens " -"verplaatsingen over lange afstand te voorkomen. Stel in op 0 om terugtrekken (retraction) " -"uit te schakelen." +"Een deel van het materiaal in de extruder wordt teruggetrokken om sijpelen " +"tijdens verplaatsingen over lange afstand te voorkomen. Stel in op 0 om " +"terugtrekken (retraction) uit te schakelen." msgid "Long retraction when cut(experimental)" msgstr "Long retraction when cut (experimental)" msgid "" -"Experimental feature.Retracting and cutting off the filament at a longer distance during " -"changes to minimize purge.While this reduces flush significantly, it may also raise the " -"risk of nozzle clogs or other printing problems." +"Experimental feature.Retracting and cutting off the filament at a longer " +"distance during changes to minimize purge.While this reduces flush " +"significantly, it may also raise the risk of nozzle clogs or other printing " +"problems." msgstr "" -"Experimentele functie: Het filament wordt tijdens het wisselen over een grotere afstand " -"teruggetrokken en afgesneden om de spoeling tot een minimum te beperken. Dit vermindert de " -"spoeling aanzienlijk, maar vergroot mogelijk ook het risico op verstoppingen in het " -"mondstuk of andere printproblemen." +"Experimentele functie: Het filament wordt tijdens het wisselen over een " +"grotere afstand teruggetrokken en afgesneden om de spoeling tot een minimum " +"te beperken. Dit vermindert de spoeling aanzienlijk, maar vergroot mogelijk " +"ook het risico op verstoppingen in het mondstuk of andere printproblemen." msgid "Retraction distance when cut" msgstr "Retraction distance when cut" -msgid "Experimental feature.Retraction length before cutting off during filament change" -msgstr "Experimental feature. Retraction length before cutting off during filament change" +msgid "" +"Experimental feature.Retraction length before cutting off during filament " +"change" +msgstr "" +"Experimental feature. Retraction length before cutting off during filament " +"change" msgid "Z hop when retract" msgstr "Z hop tijdens terugtrekken (retraction)" msgid "" -"Whenever the retraction is done, the nozzle is lifted a little to create clearance between " -"nozzle and the print. It prevents nozzle from hitting the print when travel move. Using " -"spiral line to lift z can prevent stringing" +"Whenever the retraction is done, the nozzle is lifted a little to create " +"clearance between nozzle and the print. It prevents nozzle from hitting the " +"print when travel move. Using spiral line to lift z can prevent stringing" msgstr "" -"Wanneer er een terugtrekking (retraction) is, wordt het mondstuk een beetje opgetild om " -"ruimte te creëren tussen het mondstuk en de print. Dit voorkomt dat het mondstuk de print " -"raakt bij verplaatsen. Het gebruik van spiraallijnen om Z op te tillen kan stringing " -"voorkomen." +"Wanneer er een terugtrekking (retraction) is, wordt het mondstuk een beetje " +"opgetild om ruimte te creëren tussen het mondstuk en de print. Dit voorkomt " +"dat het mondstuk de print raakt bij verplaatsen. Het gebruik van " +"spiraallijnen om Z op te tillen kan stringing voorkomen." msgid "Z hop lower boundary" msgstr "Z hop ondergrens" msgid "" -"Z hop will only come into effect when Z is above this value and is below the parameter: \"Z " -"hop upper boundary\"" +"Z hop will only come into effect when Z is above this value and is below the " +"parameter: \"Z hop upper boundary\"" msgstr "" -"Z hop treedt alleen in werking wanneer Z boven deze waarde ligt en onder de parameter: \"Z " -"hop bovengrens\"." +"Z hop treedt alleen in werking wanneer Z boven deze waarde ligt en onder de " +"parameter: \"Z hop bovengrens\"." msgid "Z hop upper boundary" msgstr "Z hop bovengrens" msgid "" -"If this value is positive, Z hop will only come into effect when Z is above the parameter: " -"\"Z hop lower boundary\" and is below this value" +"If this value is positive, Z hop will only come into effect when Z is above " +"the parameter: \"Z hop lower boundary\" and is below this value" msgstr "" -"Als deze waarde positief is, treedt Z hop alleen in werking als Z boven de parameter ligt: " -"\"Z hop ondergrens\" en onder deze waarde ligt" +"Als deze waarde positief is, treedt Z hop alleen in werking als Z boven de " +"parameter ligt: \"Z hop ondergrens\" en onder deze waarde ligt" msgid "Z hop type" msgstr "" @@ -11760,31 +12379,32 @@ msgid "Traveling angle" msgstr "" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " +"in Normal Lift" msgstr "" msgid "Only lift Z above" msgstr "Beweeg Z alleen omhoog boven" msgid "" -"If you set this to a positive value, Z lift will only take place above the specified " -"absolute Z." +"If you set this to a positive value, Z lift will only take place above the " +"specified absolute Z." msgstr "" msgid "Only lift Z below" msgstr "Beweeg Z alleen omhoog onder" msgid "" -"If you set this to a positive value, Z lift will only take place below the specified " -"absolute Z." +"If you set this to a positive value, Z lift will only take place below the " +"specified absolute Z." msgstr "" msgid "On surfaces" msgstr "" msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift Z above/" -"below)." +"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " +"lift Z above/below)." msgstr "" msgid "All Surfaces" @@ -11803,18 +12423,18 @@ msgid "Extra length on restart" msgstr "Extra lengte bij herstart" msgid "" -"When the retraction is compensated after the travel move, the extruder will push this " -"additional amount of filament. This setting is rarely needed." +"When the retraction is compensated after the travel move, the extruder will " +"push this additional amount of filament. This setting is rarely needed." msgstr "" -"Als retracten wordt gecompenseerd na een beweging, wordt deze extra hoeveelheid filament " -"geëxtrudeerd. Deze instelling is zelden van toepassing." +"Als retracten wordt gecompenseerd na een beweging, wordt deze extra " +"hoeveelheid filament geëxtrudeerd. Deze instelling is zelden van toepassing." msgid "" -"When the retraction is compensated after changing tool, the extruder will push this " -"additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." msgstr "" -"Als retracten wordt gecompenseerd na een toolwisseling, wordt deze extra hoeveelheid " -"filament geëxtrudeerd." +"Als retracten wordt gecompenseerd na een toolwisseling, wordt deze extra " +"hoeveelheid filament geëxtrudeerd." msgid "Retraction Speed" msgstr "Terugtrek (retraction) snelheid" @@ -11825,18 +12445,20 @@ msgstr "Dit is de snelheid voor terugtrekken (retraction)" msgid "Deretraction Speed" msgstr "Snelheid van terugtrekken (deretraction)" -msgid "Speed for reloading filament into extruder. Zero means same speed with retraction" +msgid "" +"Speed for reloading filament into extruder. Zero means same speed with " +"retraction" msgstr "" -"De snelheid voor het herladen van filament in de extruder na een terugtrekking " -"(retraction); als u dit op 0 zet, betekent dit dat het dezelfde snelheid heeft als het " -"intrekken (retraction)." +"De snelheid voor het herladen van filament in de extruder na een " +"terugtrekking (retraction); als u dit op 0 zet, betekent dit dat het " +"dezelfde snelheid heeft als het intrekken (retraction)." msgid "Use firmware retraction" msgstr "Gebruik firmware retractie" msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware handle the " -"retraction. This is only supported in recent Marlin." +"This experimental setting uses G10 and G11 commands to have the firmware " +"handle the retraction. This is only supported in recent Marlin." msgstr "" msgid "Show auto-calibration marks" @@ -11845,7 +12467,8 @@ msgstr "" msgid "Disable set remaining print time" msgstr "" -msgid "Disable generating of the M73: Set remaining print time in the final gcode" +msgid "" +"Disable generating of the M73: Set remaining print time in the final gcode" msgstr "" msgid "Seam position" @@ -11870,43 +12493,46 @@ msgid "Staggered inner seams" msgstr "" msgid "" -"This option causes the inner seams to be shifted backwards based on their depth, forming a " -"zigzag pattern." +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." msgstr "" msgid "Seam gap" msgstr "Naadopening" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, the loop is " -"interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the current extruder " -"diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, " +"the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the " +"current extruder diameter. The default value for this parameter is 10%." msgstr "" msgid "Scarf joint seam (beta)" msgstr "" msgid "Use scarf joint to minimize seam visibility and increase seam strength." -msgstr "Use scarf joint to minimize seam visibility and increase seam strength." +msgstr "" +"Use scarf joint to minimize seam visibility and increase seam strength." msgid "Conditional scarf joint" msgstr "Conditional scarf joint" msgid "" -"Apply scarf joints only to smooth perimeters where traditional seams do not conceal the " -"seams at sharp corners effectively." +"Apply scarf joints only to smooth perimeters where traditional seams do not " +"conceal the seams at sharp corners effectively." msgstr "" -"Apply scarf joints only to smooth perimeters where traditional seams do not conceal the " -"seams at sharp corners effectively." +"Apply scarf joints only to smooth perimeters where traditional seams do not " +"conceal the seams at sharp corners effectively." msgid "Conditional angle threshold" msgstr "Conditional angle threshold" msgid "" -"This option sets the threshold angle for applying a conditional scarf joint seam.\n" -"If the maximum angle within the perimeter loop exceeds this value (indicating the absence " -"of sharp corners), a scarf joint seam will be used. The default value is 155°." +"This option sets the threshold angle for applying a conditional scarf joint " +"seam.\n" +"If the maximum angle within the perimeter loop exceeds this value " +"(indicating the absence of sharp corners), a scarf joint seam will be used. " +"The default value is 155°." msgstr "" msgid "Conditional overhang threshold" @@ -11914,23 +12540,25 @@ msgstr "" #, no-c-format, no-boost-format msgid "" -"This option determines the overhang threshold for the application of scarf joint seams. If " -"the unsupported portion of the perimeter is less than this threshold, scarf joint seams " -"will be applied. The default threshold is set at 40% of the external wall's width. Due to " -"performance considerations, the degree of overhang is estimated." +"This option determines the overhang threshold for the application of scarf " +"joint seams. If the unsupported portion of the perimeter is less than this " +"threshold, scarf joint seams will be applied. The default threshold is set " +"at 40% of the external wall's width. Due to performance considerations, the " +"degree of overhang is estimated." msgstr "" msgid "Scarf joint speed" msgstr "" msgid "" -"This option sets the printing speed for scarf joints. It is recommended to print scarf " -"joints at a slow speed (less than 100 mm/s). It's also advisable to enable 'Extrusion rate " -"smoothing' if the set speed varies significantly from the speed of the outer or inner " -"walls. If the speed specified here is higher than the speed of the outer or inner walls, " -"the printer will default to the slower of the two speeds. When specified as a percentage (e." -"g., 80%), the speed is calculated based on the respective outer or inner wall speed. The " -"default value is set to 100%." +"This option sets the printing speed for scarf joints. It is recommended to " +"print scarf joints at a slow speed (less than 100 mm/s). It's also " +"advisable to enable 'Extrusion rate smoothing' if the set speed varies " +"significantly from the speed of the outer or inner walls. If the speed " +"specified here is higher than the speed of the outer or inner walls, the " +"printer will default to the slower of the two speeds. When specified as a " +"percentage (e.g., 80%), the speed is calculated based on the respective " +"outer or inner wall speed. The default value is set to 100%." msgstr "" msgid "Scarf joint flow ratio" @@ -11944,12 +12572,12 @@ msgstr "Scarf start height" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the current layer height. " -"The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the " +"current layer height. The default value for this parameter is 0." msgstr "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the current layer height. " -"The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the " +"current layer height. The default value for this parameter is 0." msgid "Scarf around entire wall" msgstr "Scarf around entire wall" @@ -11960,8 +12588,12 @@ msgstr "The scarf extends to the entire length of the wall." msgid "Scarf length" msgstr "Scarf length" -msgid "Length of the scarf. Setting this parameter to zero effectively disables the scarf." -msgstr "Length of the scarf. Setting this parameter to zero effectively disables the scarf." +msgid "" +"Length of the scarf. Setting this parameter to zero effectively disables the " +"scarf." +msgstr "" +"Length of the scarf. Setting this parameter to zero effectively disables the " +"scarf." msgid "Scarf steps" msgstr "Scarf steps" @@ -11979,45 +12611,47 @@ msgid "Role base wipe speed" msgstr "" msgid "" -"The wipe speed is determined by the speed of the current extrusion role.e.g. if a wipe " -"action is executed immediately following an outer wall extrusion, the speed of the outer " -"wall extrusion will be utilized for the wipe action." +"The wipe speed is determined by the speed of the current extrusion role.e.g. " +"if a wipe action is executed immediately following an outer wall extrusion, " +"the speed of the outer wall extrusion will be utilized for the wipe action." msgstr "" msgid "Wipe on loops" msgstr "" msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small inward movement " -"is executed before the extruder leaves the loop." +"To minimize the visibility of the seam in a closed loop extrusion, a small " +"inward movement is executed before the extruder leaves the loop." msgstr "" msgid "Wipe before external loop" msgstr "" msgid "" -"To minimise visibility of potential overextrusion at the start of an external perimeter " -"when printing with Outer/Inner or Inner/Outer/Inner wall print order, the deretraction is " -"performed slightly on the inside from the start of the external perimeter. That way any " -"potential over extrusion is hidden from the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order as in " -"these modes it is more likely an external perimeter is printed immediately after a " -"deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." msgstr "" msgid "Wipe speed" msgstr "Veegsnelheid" msgid "" -"The wipe speed is determined by the speed setting specified in this configuration.If the " -"value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel " -"speed setting above.The default value for this parameter is 80%" +"The wipe speed is determined by the speed setting specified in this " +"configuration.If the value is expressed as a percentage (e.g. 80%), it will " +"be calculated based on the travel speed setting above.The default value for " +"this parameter is 80%" msgstr "" -"De veegsnelheid wordt bepaald door de snelheidsinstelling die in deze configuratie is " -"opgegeven.Als de waarde wordt uitgedrukt als percentage (bijv. 80%), wordt deze berekend op " -"basis van de bovenstaande instelling van de rijsnelheid.De standaardwaarde voor deze " -"parameter is 80%." +"De veegsnelheid wordt bepaald door de snelheidsinstelling die in deze " +"configuratie is opgegeven.Als de waarde wordt uitgedrukt als percentage " +"(bijv. 80%), wordt deze berekend op basis van de bovenstaande instelling van " +"de rijsnelheid.De standaardwaarde voor deze parameter is 80%." msgid "Skirt distance" msgstr "Rand (skirt) afstand" @@ -12035,17 +12669,17 @@ msgid "Draft shield" msgstr "Tochtscherm" msgid "" -"A draft shield is useful to protect an ABS or ASA print from warping and detaching from " -"print bed due to wind draft. It is usually needed only with open frame printers, i.e. " -"without an enclosure. \n" +"A draft shield is useful to protect an ABS or ASA print from warping and " +"detaching from print bed due to wind draft. It is usually needed only with " +"open frame printers, i.e. without an enclosure. \n" "\n" "Options:\n" "Enabled = skirt is as tall as the highest printed object.\n" "Limited = skirt is as tall as specified by skirt height.\n" "\n" -"Note: With the draft shield active, the skirt will be printed at skirt distance from the " -"object. Therefore, if brims are active it may intersect with them. To avoid this, increase " -"the skirt distance value.\n" +"Note: With the draft shield active, the skirt will be printed at skirt " +"distance from the object. Therefore, if brims are active it may intersect " +"with them. To avoid this, increase the skirt distance value.\n" msgstr "" msgid "Limited" @@ -12058,7 +12692,9 @@ msgid "Skirt loops" msgstr "Rand (skirt) lussen" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "Dit is het aantal lussen voor de skirt. 0 betekent dat de skirt is uitgeschakeld." +msgstr "" +"Dit is het aantal lussen voor de skirt. 0 betekent dat de skirt is " +"uitgeschakeld." msgid "Skirt speed" msgstr "" @@ -12070,28 +12706,30 @@ msgid "Skirt minimum extrusion length" msgstr "" msgid "" -"Minimum filament extrusion length in mm when printing the skirt. Zero means this feature is " -"disabled.\n" +"Minimum filament extrusion length in mm when printing the skirt. Zero means " +"this feature is disabled.\n" "\n" -"Using a non zero value is useful if the printer is set up to print without a prime line." +"Using a non zero value is useful if the printer is set up to print without a " +"prime line." msgstr "" msgid "" -"The printing speed in exported gcode will be slowed down, when the estimated layer time is " -"shorter than this value, to get better cooling for these layers" +"The printing speed in exported gcode will be slowed down, when the estimated " +"layer time is shorter than this value, to get better cooling for these layers" msgstr "" -"De printnelheid in geëxporteerde G-code wordt vertraagd wanneer de geschatte laagtijd " -"korter is dan deze waarde om een betere koeling voor deze lagen te krijgen." +"De printnelheid in geëxporteerde G-code wordt vertraagd wanneer de geschatte " +"laagtijd korter is dan deze waarde om een betere koeling voor deze lagen te " +"krijgen." msgid "Minimum sparse infill threshold" msgstr "Minimale drempel voor dunne opvulling (infill)" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by internal solid " -"infill" +"Sparse infill area which is smaller than threshold value is replaced by " +"internal solid infill" msgstr "" -"Dunne opvullingen (infill) die kleiner zijn dan deze drempelwaarde worden vervangen door " -"solide interne vulling (infill)." +"Dunne opvullingen (infill) die kleiner zijn dan deze drempelwaarde worden " +"vervangen door solide interne vulling (infill)." msgid "Solid infill" msgstr "" @@ -12100,59 +12738,64 @@ msgid "Filament to print solid infill" msgstr "" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be computed over the " -"nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "" -"Dit is de snelheid voor de interne solide vulling (infill), bodem en bovenste oppervlakte " -"zijn hiervan uitgezonderd" +"Dit is de snelheid voor de interne solide vulling (infill), bodem en " +"bovenste oppervlakte zijn hiervan uitgezonderd" msgid "" -"Spiralize smooths out the z moves of the outer contour. And turns a solid model into a " -"single walled print with solid bottom layers. The final generated model has no seam" +"Spiralize smooths out the z moves of the outer contour. And turns a solid " +"model into a single walled print with solid bottom layers. The final " +"generated model has no seam" msgstr "" -"Dit maakt spiralen mogelijk, waardoor de Z-bewegingen van de buitencontour worden afgevlakt " -"en een solide model wordt omgezet in een enkelwandige print met solide onderlagen. Het " -"uiteindelijke gegenereerde model heeft geen naad." +"Dit maakt spiralen mogelijk, waardoor de Z-bewegingen van de buitencontour " +"worden afgevlakt en een solide model wordt omgezet in een enkelwandige print " +"met solide onderlagen. Het uiteindelijke gegenereerde model heeft geen naad." msgid "Smooth Spiral" msgstr "Smooth Spiral" msgid "" -"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam at all, even " -"in the XY directions on walls that are not vertical" +"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " +"at all, even in the XY directions on walls that are not vertical" msgstr "" -"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam at all, even " -"in the XY directions on walls that are not vertical" +"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " +"at all, even in the XY directions on walls that are not vertical" msgid "Max XY Smoothing" msgstr "Max XY Smoothing" msgid "" -"Maximum distance to move points in XY to try to achieve a smooth spiralIf expressed as a %, " -"it will be computed over nozzle diameter" +"Maximum distance to move points in XY to try to achieve a smooth spiralIf " +"expressed as a %, it will be computed over nozzle diameter" msgstr "" -"Maximale afstand om punten in XY te verplaatsen om te proberen een gladde spiraal te " -"bereiken. Als het wordt uitgedrukt als een %, wordt het berekend over de diameter van het " -"mondstuk" +"Maximale afstand om punten in XY te verplaatsen om te proberen een gladde " +"spiraal te bereiken. Als het wordt uitgedrukt als een %, wordt het berekend " +"over de diameter van het mondstuk" msgid "" -"If smooth or traditional mode is selected, a timelapse video will be generated for each " -"print. After each layer is printed, a snapshot is taken with the chamber camera. All of " -"these snapshots are composed into a timelapse video when printing completes. If smooth mode " -"is selected, the toolhead will move to the excess chute after each layer is printed and " -"then take a snapshot. Since the melt filament may leak from the nozzle during the process " -"of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." +"If smooth or traditional mode is selected, a timelapse video will be " +"generated for each print. After each layer is printed, a snapshot is taken " +"with the chamber camera. All of these snapshots are composed into a " +"timelapse video when printing completes. If smooth mode is selected, the " +"toolhead will move to the excess chute after each layer is printed and then " +"take a snapshot. Since the melt filament may leak from the nozzle during the " +"process of taking a snapshot, prime tower is required for smooth mode to " +"wipe nozzle." msgstr "" -"Als de vloeiende of traditionele modus is geselecteerd, wordt voor elke print een timelapse-" -"video gegenereerd. Nadat elke laag is geprint, wordt een momentopname gemaakt met de " -"kamercamera. Al deze momentopnamen worden samengevoegd tot een timelapse-video wanneer het " -"afdrukken is voltooid. Als de vloeiende modus is geselecteerd, beweegt de gereedschapskop " -"naar de afvoer chute nadat iedere laag is afgedrukt en maakt vervolgens een momentopname. " -"Aangezien het gesmolten filament uit het mondstuk kan lekken tijdens het maken van een " -"momentopname, is voor de soepele modus een primetoren nodig om het mondstuk schoon te vegen." +"Als de vloeiende of traditionele modus is geselecteerd, wordt voor elke " +"print een timelapse-video gegenereerd. Nadat elke laag is geprint, wordt een " +"momentopname gemaakt met de kamercamera. Al deze momentopnamen worden " +"samengevoegd tot een timelapse-video wanneer het afdrukken is voltooid. Als " +"de vloeiende modus is geselecteerd, beweegt de gereedschapskop naar de " +"afvoer chute nadat iedere laag is afgedrukt en maakt vervolgens een " +"momentopname. Aangezien het gesmolten filament uit het mondstuk kan lekken " +"tijdens het maken van een momentopname, is voor de soepele modus een " +"primetoren nodig om het mondstuk schoon te vegen." msgid "Traditional" msgstr "Traditioneel" @@ -12162,25 +12805,27 @@ msgstr "Temperatuur variatie" #. TRN PrintSettings : "Ooze prevention" > "Temperature variation" msgid "" -"Temperature difference to be applied when an extruder is not active. The value is not used " -"when 'idle_temperature' in filament settings is set to non zero value." +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." msgstr "" msgid "Preheat time" msgstr "" msgid "" -"To reduce the waiting time after tool change, Orca can preheat the next tool while the " -"current tool is still in use. This setting specifies the time in seconds to preheat the " -"next tool. Orca will insert a M104 command to preheat the tool in advance." +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." msgstr "" msgid "Preheat steps" msgstr "" msgid "" -"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For other " -"printers, please set it to 1." +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." msgstr "" msgid "Start G-code" @@ -12202,10 +12847,11 @@ msgid "Manual Filament Change" msgstr "" msgid "" -"Enable this option to omit the custom Change filament G-code only at the beginning of the " -"print. The tool change command (e.g., T0) will be skipped throughout the entire print. This " -"is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual " -"filament change action." +"Enable this option to omit the custom Change filament G-code only at the " +"beginning of the print. The tool change command (e.g., T0) will be skipped " +"throughout the entire print. This is useful for manual multi-material " +"printing, where we use M600/PAUSE to trigger the manual filament change " +"action." msgstr "" msgid "Purge in prime tower" @@ -12221,45 +12867,48 @@ msgid "No sparse layers (beta)" msgstr "" msgid "" -"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." +"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." msgstr "" -"Het afveegblok wordt niet geprint bij lagen zonder toolwisselingen als dit is ingeschakeld. " -"Op lagen met een toolwissel zal de extruder neerwaarts bewegen naar het afveegblok. De " -"gebruiker is verantwoordelijk voor eventuele botsingen met de print." +"Het afveegblok wordt niet geprint bij lagen zonder toolwisselingen als dit " +"is ingeschakeld. Op lagen met een toolwissel zal de extruder neerwaarts " +"bewegen naar het afveegblok. De gebruiker is verantwoordelijk voor eventuele " +"botsingen met de print." msgid "Prime all printing extruders" msgstr "Veeg alle printextruders af" msgid "" -"If enabled, all printing extruders will be primed at the front edge of the print bed at the " -"start of the print." +"If enabled, all printing extruders will be primed at the front edge of the " +"print bed at the start of the print." msgstr "" -"Alle extruders worden afgeveegd aan de voorzijde van het printbed aan het begin van de " -"print als dit is ingeschakeld." +"Alle extruders worden afgeveegd aan de voorzijde van het printbed aan het " +"begin van de print als dit is ingeschakeld." msgid "Slice gap closing radius" msgstr "Sluitingsradius van de gap" msgid "" -"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." +"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." msgstr "" -"Scheuren kleiner dan 2x de sluitradius van de spleet worden opgevuld tijdens het snijden " -"van driehoekig mesh. Het sluiten van openingen kan de uiteindelijke afdrukresolutie " -"verminderen, daarom is het raadzaam om de waarde redelijk laag te houden." +"Scheuren kleiner dan 2x de sluitradius van de spleet worden opgevuld tijdens " +"het snijden van driehoekig mesh. Het sluiten van openingen kan de " +"uiteindelijke afdrukresolutie verminderen, daarom is het raadzaam om de " +"waarde redelijk laag te houden." msgid "Slicing Mode" msgstr "Slicing-modus" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in " -"the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." msgstr "" -"Gebruik „Even-Oneven” voor 3DLabPrint-vliegtuigmodellen. Gebruik „Gaten sluiten” om alle " -"gaten in het model te sluiten." +"Gebruik „Even-Oneven” voor 3DLabPrint-vliegtuigmodellen. Gebruik „Gaten " +"sluiten” om alle gaten in het model te sluiten." msgid "Regular" msgstr "Standaard" @@ -12274,15 +12923,16 @@ msgid "Z offset" msgstr "Z-hoogte" msgid "" -"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)." +"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)." msgstr "" -"Deze waarde wordt toegevoegd (of afgetrokken) van alle Z-coördinaten in de uitvoer-G-code. " -"Het wordt gebruikt om een ​​slechte Z-eindstoppositie te compenseren. Bijvoorbeeld, als de " -"eindstopnul eigenlijk 0,3 mm overlaat tussen het mondstuk en het printbed, stelt u dit in " -"op -0,3 (of maak uw eindstop goed vast)." +"Deze waarde wordt toegevoegd (of afgetrokken) van alle Z-coördinaten in de " +"uitvoer-G-code. Het wordt gebruikt om een ​​slechte Z-eindstoppositie te " +"compenseren. Bijvoorbeeld, als de eindstopnul eigenlijk 0,3 mm overlaat " +"tussen het mondstuk en het printbed, stelt u dit in op -0,3 (of maak uw " +"eindstop goed vast)." msgid "Enable support" msgstr "Support inschakelen" @@ -12291,12 +12941,13 @@ msgid "Enable support generation." msgstr "Dit maakt het genereren van support mogelijk." msgid "" -"normal(auto) and tree(auto) is used to generate support automatically. If normal(manual) or " -"tree(manual) is selected, only support enforcers are generated" +"normal(auto) and tree(auto) is used to generate support automatically. If " +"normal(manual) or tree(manual) is selected, only support enforcers are " +"generated" msgstr "" -"normal(auto) en tree(auto) worden gebruikt om automatisch steun te genereren. Als " -"normaal(handmatig) of tree(handmatig) is geselecteerd, worden alleen ondersteuningen " -"handhavers gegenereerd." +"normal(auto) en tree(auto) worden gebruikt om automatisch steun te " +"genereren. Als normaal(handmatig) of tree(handmatig) is geselecteerd, worden " +"alleen ondersteuningen handhavers gegenereerd." msgid "normal(auto)" msgstr "Normaal (automatisch)" @@ -12320,7 +12971,9 @@ msgid "Pattern angle" msgstr "Patroon hoek" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "Gebruik deze instelling om het support patroon op het horizontale vlak te roteren." +msgstr "" +"Gebruik deze instelling om het support patroon op het horizontale vlak te " +"roteren." msgid "On build plate only" msgstr "Alleen op het printbed" @@ -12331,9 +12984,12 @@ msgstr "Deze instelling genereert alleen support die begint op het printbed." msgid "Support critical regions only" msgstr "Alleen kritische regio's ondersteunen" -msgid "Only create support for critical regions including sharp tail, cantilever, etc." +msgid "" +"Only create support for critical regions including sharp tail, cantilever, " +"etc." msgstr "" -"Creëer alleen ondersteuning voor kritieke gebieden, waaronder sharp tail, cantilever, etc." +"Creëer alleen ondersteuning voor kritieke gebieden, waaronder sharp tail, " +"cantilever, etc." msgid "Remove small overhangs" msgstr "Kleine uitsteeksels verwijderen" @@ -12345,7 +13001,8 @@ msgid "Top Z distance" msgstr "Top Z afstand" msgid "The z gap between the top support interface and object" -msgstr "Dit bepaald de Z-afstand tussen de bovenste support interfaces en het object." +msgstr "" +"Dit bepaald de Z-afstand tussen de bovenste support interfaces en het object." msgid "Bottom Z distance" msgstr "Onderste Z-afstand" @@ -12357,39 +13014,46 @@ msgid "Support/raft base" msgstr "Support/raft base" msgid "" -"Filament to print support base and raft. \"Default\" means no specific filament for support " -"and current filament is used" +"Filament to print support base and raft. \"Default\" means no specific " +"filament for support and current filament is used" msgstr "" -"Filament voor het printen van ondersteuning (support) en raft. \"Standaard\" betekent geen " -"specifiek filament voor ondersteuning (support) en het huidige filament wordt gebruikt." +"Filament voor het printen van ondersteuning (support) en raft. \"Standaard\" " +"betekent geen specifiek filament voor ondersteuning (support) en het " +"huidige filament wordt gebruikt." msgid "Avoid interface filament for base" msgstr "Vermijd interfacedraad voor basis" -msgid "Avoid using support interface filament to print support base if possible." +msgid "" +"Avoid using support interface filament to print support base if possible." msgstr "" -"Gebruik indien mogelijk geen filament voor de steuninterface om de steunbasis te printen." +"Gebruik indien mogelijk geen filament voor de steuninterface om de " +"steunbasis te printen." msgid "" -"Line width of support. If expressed as a %, it will be computed over the nozzle diameter." +"Line width of support. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" msgid "Interface use loop pattern" msgstr "Luspatroon interface" -msgid "Cover the top contact layer of the supports with loops. Disabled by default." +msgid "" +"Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -"Dit bedekt de bovenste laag van de support met lussen. Het is standaard uitgeschakeld." +"Dit bedekt de bovenste laag van de support met lussen. Het is standaard " +"uitgeschakeld." msgid "Support/raft interface" msgstr "Support/raft interface" msgid "" -"Filament to print support interface. \"Default\" means no specific filament for support " -"interface and current filament is used" +"Filament to print support interface. \"Default\" means no specific filament " +"for support interface and current filament is used" msgstr "" -"Filament om ondersteuning (support) te printen. \"Standaard\" betekent geen specifiek " -"filament voor ondersteuning (support), en het huidige filament wordt gebruikt." +"Filament om ondersteuning (support) te printen. \"Standaard\" betekent geen " +"specifiek filament voor ondersteuning (support), en het huidige filament " +"wordt gebruikt." msgid "Top interface layers" msgstr "Bovenste interface lagen" @@ -12410,13 +13074,16 @@ msgid "Top interface spacing" msgstr "Bovenste interface-afstand" msgid "Spacing of interface lines. Zero means solid interface" -msgstr "Dit is de afstand tussen de interfacelijnen. 0 betekent solide interface." +msgstr "" +"Dit is de afstand tussen de interfacelijnen. 0 betekent solide interface." msgid "Bottom interface spacing" msgstr "Onderste interface-afstand" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "Dit is de afstand tussen de onderste interfacelijnen. 0 betekent solide interface." +msgstr "" +"Dit is de afstand tussen de onderste interfacelijnen. 0 betekent solide " +"interface." msgid "Speed of support interface" msgstr "Dit is de snelheid voor het printen van de support interfaces." @@ -12437,12 +13104,13 @@ msgid "Interface pattern" msgstr "Interfacepatroon" msgid "" -"Line pattern of support interface. Default pattern for non-soluble support interface is " -"Rectilinear, while default pattern for soluble support interface is Concentric" +"Line pattern of support interface. Default pattern for non-soluble support " +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" msgstr "" -"Dit is het lijnpatroon voor support interfaces. Het standaardpatroon voor niet-oplosbare " -"support interfaces is Rechtlijnig, terwijl het standaardpatroon voor oplosbare support " -"interfaces Concentrisch is." +"Dit is het lijnpatroon voor support interfaces. Het standaardpatroon voor " +"niet-oplosbare support interfaces is Rechtlijnig, terwijl het " +"standaardpatroon voor oplosbare support interfaces Concentrisch is." msgid "Rectilinear Interlaced" msgstr "Rectilinear Interlaced" @@ -12457,18 +13125,21 @@ msgid "Normal Support expansion" msgstr "Normale uitbreiding van de ondersteuning" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "Vergroot (+) of verklein (-) het horizontale bereik van de normale ondersteuning" +msgstr "" +"Vergroot (+) of verklein (-) het horizontale bereik van de normale " +"ondersteuning" msgid "Speed of support" msgstr "Dit is de snelheid voor het printen van support." msgid "" -"Style and shape of the support. For normal support, projecting the supports into a regular " -"grid will create more stable supports (default), while snug support towers will save " -"material and reduce object scarring.\n" -"For tree support, slim and organic style will merge branches more aggressively and save a " -"lot of material (default organic), while hybrid style will create similar structure to " -"normal support under large flat overhangs." +"Style and shape of the support. For normal support, projecting the supports " +"into a regular grid will create more stable supports (default), while snug " +"support towers will save material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more " +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" msgid "Snug" @@ -12490,75 +13161,81 @@ msgid "Independent support layer height" msgstr "Onafhankelijke support laaghoogte" msgid "" -"Support layer uses layer height independent with object layer. This is to support " -"customizing z-gap and save print time.This option will be invalid when the prime tower is " -"enabled." +"Support layer uses layer height independent with object layer. This is to " +"support customizing z-gap and save print time.This option will be invalid " +"when the prime tower is enabled." msgstr "" -"Support layer uses layer height independent with object layer. This is to support " -"customizing z-gap and save print time.This option will be invalid when the prime tower is " -"enabled." +"Support layer uses layer height independent with object layer. This is to " +"support customizing z-gap and save print time.This option will be invalid " +"when the prime tower is enabled." msgid "Threshold angle" msgstr "Drempel hoek" -msgid "Support will be generated for overhangs whose slope angle is below the threshold." +msgid "" +"Support will be generated for overhangs whose slope angle is below the " +"threshold." msgstr "" -"Er zal ondersteuning support gegenereerd worden voor overhangende hoeken waarvan de " -"hellingshoek lager is dan deze drempel." +"Er zal ondersteuning support gegenereerd worden voor overhangende hoeken " +"waarvan de hellingshoek lager is dan deze drempel." msgid "Tree support branch angle" msgstr "Tree support vertakkingshoek" msgid "" -"This setting determines the maximum overhang angle that t he branches of tree support " -"allowed to make.If the angle is increased, the branches can be printed more horizontally, " -"allowing them to reach farther." +"This setting determines the maximum overhang angle that t he branches of " +"tree support allowed to make.If the angle is increased, the branches can be " +"printed more horizontally, allowing them to reach farther." msgstr "" -"Deze instelling bepaalt de maximale overhanghoek die de uitloop van de tree support mogen " -"maken. Als de hoek wordt vergroot, kunnen de uitlopen meer horizontaal worden geprint, " -"waardoor ze verder kunnen reiken." +"Deze instelling bepaalt de maximale overhanghoek die de uitloop van de tree " +"support mogen maken. Als de hoek wordt vergroot, kunnen de uitlopen meer " +"horizontaal worden geprint, waardoor ze verder kunnen reiken." msgid "Preferred Branch Angle" msgstr "" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" msgid "" -"The preferred angle of the branches, when they do not have to avoid the model. Use a lower " -"angle to make them more vertical and more stable. Use a higher angle for branches to merge " -"faster." +"The preferred angle of the branches, when they do not have to avoid the " +"model. Use a lower angle to make them more vertical and more stable. Use a " +"higher angle for branches to merge faster." msgstr "" msgid "Tree support branch distance" msgstr "Tree support tak-afstand" -msgid "This setting determines the distance between neighboring tree support nodes." -msgstr "Deze instelling bepaald de afstand tussen naastliggende tree support knooppunten." +msgid "" +"This setting determines the distance between neighboring tree support nodes." +msgstr "" +"Deze instelling bepaald de afstand tussen naastliggende tree support " +"knooppunten." msgid "Branch Density" msgstr "" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of the branches. A " -"higher value results in better overhangs but the supports are harder to remove, thus it is " -"recommended to enable top support interfaces instead of a high branch density value if " -"dense interfaces are needed." +"Adjusts the density of the support structure used to generate the tips of " +"the branches. A higher value results in better overhangs but the supports " +"are harder to remove, thus it is recommended to enable top support " +"interfaces instead of a high branch density value if dense interfaces are " +"needed." msgstr "" msgid "Adaptive layer height" msgstr "Adaptieve laaghoogte" msgid "" -"Enabling this option means the height of tree support layer except the first will be " -"automatically calculated " +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " msgstr "" msgid "Auto brim width" msgstr "" msgid "" -"Enabling this option means the width of the brim for tree support will be automatically " -"calculated" +"Enabling this option means the width of the brim for tree support will be " +"automatically calculated" msgstr "" msgid "Tree support brim width" @@ -12586,9 +13263,10 @@ msgstr "" #. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" msgid "" -"The angle of the branches' diameter as they gradually become thicker towards the bottom. An " -"angle of 0 will cause the branches to have uniform thickness over their length. A bit of an " -"angle can increase stability of the organic support." +"The angle of the branches' diameter as they gradually become thicker towards " +"the bottom. An angle of 0 will cause the branches to have uniform thickness " +"over their length. A bit of an angle can increase stability of the organic " +"support." msgstr "" msgid "Branch Diameter with double walls" @@ -12596,8 +13274,9 @@ msgstr "" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" -"Branches with area larger than the area of a circle of this diameter will be printed with " -"double walls for stability. Set this value to zero for no double walls." +"Branches with area larger than the area of a circle of this diameter will be " +"printed with double walls for stability. Set this value to zero for no " +"double walls." msgstr "" msgid "Support wall loops" @@ -12609,35 +13288,51 @@ msgstr "Deze instelling specificeert het aantal muren rond de ondersteuning" msgid "Tree support with infill" msgstr "Tree support met vulling" -msgid "This setting specifies whether to add infill inside large hollows of tree support" +msgid "" +"This setting specifies whether to add infill inside large hollows of tree " +"support" msgstr "" -"Deze instelling geeft aan of er opvulling moet worden toegevoegd in grote holtes van de " -"tree support." +"Deze instelling geeft aan of er opvulling moet worden toegevoegd in grote " +"holtes van de tree support." msgid "Activate temperature control" msgstr "Temperatuurregeling activeren" msgid "" -"Enable this option for chamber temperature control. An M191 command will be added before " +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " "\"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" msgid "Chamber temperature" msgstr "Kamertemperatuur" msgid "" -"Higher chamber temperature can help suppress or reduce warping and potentially lead to " -"higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and " -"so on.At the same time, the air filtration of ABS and ASA will get worse.While for PLA, " -"PETG, TPU, PVA and other low temperature materials,the actual chamber temperature should " -"not be high to avoid cloggings, so 0 which stands for turning off is highly recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Higher chamber temperature can help suppress or reduce warping and potentially lead to " -"higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and " -"so on. At the same time, the air filtration of ABS and ASA will get worse.While for PLA, " -"PETG, TPU, PVA and other low temperature materials, the actual chamber temperature should " -"not be high to avoid clogs, so 0 (turned off) is highly recommended." msgid "Nozzle temperature for layers after the initial one" msgstr "Mondstuk temperatuur voor de lagen na de eerste laag" @@ -12646,41 +13341,43 @@ msgid "Detect thin wall" msgstr "Detecteer dunne wanden" msgid "" -"Detect thin wall which can't contain two line width. And use single line to print. Maybe " -"printed not very well, because it's not closed loop" +"Detect thin wall which can't contain two line width. And use single line to " +"print. Maybe printed not very well, because it's not closed loop" msgstr "" -"Dit detecteert dunne wanden die geen twee lijnen kunnen bevatten en gebruikt een enkele " -"lijn tijdens het printen. Het kan zijn dat de kwaliteit minder goed is, omdat er geen " -"gesloten lus is" +"Dit detecteert dunne wanden die geen twee lijnen kunnen bevatten en gebruikt " +"een enkele lijn tijdens het printen. Het kan zijn dat de kwaliteit minder " +"goed is, omdat er geen gesloten lus is" msgid "" -"This gcode is inserted when change filament, including T command to trigger tool change" +"This gcode is inserted when change filament, including T command to trigger " +"tool change" msgstr "" -"Deze G-code wordt ingevoegd wanneer filament wordt vervangen, inclusief T-commando's om " -"gereedschapswissel te activeren." +"Deze G-code wordt ingevoegd wanneer filament wordt vervangen, inclusief T-" +"commando's om gereedschapswissel te activeren." msgid "This gcode is inserted when the extrusion role is changed" msgstr "" msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over the nozzle " -"diameter." +"Line width for top surfaces. If expressed as a %, it will be computed over " +"the nozzle diameter." msgstr "" msgid "Speed of top surface infill which is solid" -msgstr "Dit is de snelheid voor de solide vulling (infill) van de bovenste laag" +msgstr "" +"Dit is de snelheid voor de solide vulling (infill) van de bovenste laag" msgid "Top shell layers" msgstr "Aantal lagen bovenkant" msgid "" -"This is the number of solid layers of top shell, including the top surface layer. When the " -"thickness calculated by this value is thinner than top shell thickness, the top shell " -"layers will be increased" +"This is the number of solid layers of top shell, including the top surface " +"layer. When the thickness calculated by this value is thinner than top shell " +"thickness, the top shell layers will be increased" msgstr "" -"Dit is het aantal solide lagen van de bovenkant, inclusief de bovenste oppervlaktelaag. " -"Wanneer de door deze waarde berekende dikte dunner is dan de dikte van de bovenste laag, " -"worden de bovenste lagen vergroot" +"Dit is het aantal solide lagen van de bovenkant, inclusief de bovenste " +"oppervlaktelaag. Wanneer de door deze waarde berekende dikte dunner is dan " +"de dikte van de bovenste laag, worden de bovenste lagen vergroot" msgid "Top solid layers" msgstr "Aantal bovenste solide lagen" @@ -12689,15 +13386,17 @@ msgid "Top shell thickness" msgstr "Dikte bovenkant" msgid "" -"The number of top solid layers is increased when slicing if the thickness calculated by top " -"shell layers is thinner than this value. This can avoid having too thin shell when layer " -"height is small. 0 means that this setting is disabled and thickness of top shell is " -"absolutely determained by top shell layers" +"The number of top solid layers is increased when slicing if the thickness " +"calculated by top shell layers is thinner than this value. This can avoid " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of top shell is absolutely determained by top " +"shell layers" msgstr "" -"Het aantal bovenste solide lagen wordt verhoogd tijdens het slicen als de totale dikte van " -"de bovenste lagen lager is dan deze waarde. Dit zorgt ervoor dat de schaal niet te dun is " -"bij een lage laaghoogte. 0 betekend dat deze instelling niet actief is en dat de dikte van " -"de bovenkant bepaald wordt door het aantal bodem lagen." +"Het aantal bovenste solide lagen wordt verhoogd tijdens het slicen als de " +"totale dikte van de bovenste lagen lager is dan deze waarde. Dit zorgt " +"ervoor dat de schaal niet te dun is bij een lage laaghoogte. 0 betekend dat " +"deze instelling niet actief is en dat de dikte van de bovenkant bepaald " +"wordt door het aantal bodem lagen." msgid "Speed of travel which is faster and without extrusion" msgstr "Dit is de snelheid waarmee verplaatsingen zullen worden gedaan." @@ -12706,34 +13405,37 @@ msgid "Wipe while retracting" msgstr "Vegen tijdens intrekken (retracting)" msgid "" -"Move nozzle along the last extrusion path when retracting to clean leaked material on " -"nozzle. This can minimize blob when print new part after travel" +"Move nozzle along the last extrusion path when retracting to clean leaked " +"material on nozzle. This can minimize blob when print new part after travel" msgstr "" -"Dit beweegt het mondstuk langs het laatste extrusiepad bij het terugtrekken (retraction) om " -"eventueel gelekt materiaal op het mondstuk te reinigen. Dit kan \"blobs\" minimaliseren bij " -"het printen van een nieuw onderdeel na het verplaatsen" +"Dit beweegt het mondstuk langs het laatste extrusiepad bij het terugtrekken " +"(retraction) om eventueel gelekt materiaal op het mondstuk te reinigen. Dit " +"kan \"blobs\" minimaliseren bij het printen van een nieuw onderdeel na het " +"verplaatsen" msgid "Wipe Distance" msgstr "Veeg afstand" msgid "" -"Discribe how long the nozzle will move along the last path when retracting. \n" +"Discribe how long the nozzle will move along the last path when " +"retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the extruder/filament " -"retraction settings are, a retraction move may be needed to retract the remaining " -"filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the " +"extruder/filament retraction settings are, a retraction move may be needed " +"to retract the remaining filament. \n" "\n" -"Setting a value in the retract amount before wipe setting below will perform any excess " -"retraction before the wipe, else it will be performed after." +"Setting a value in the retract amount before wipe setting below will perform " +"any excess retraction before the wipe, else it will be performed after." msgstr "" msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and stabilize the " -"chamber pressure inside the nozzle, in order to avoid appearance defects when printing " -"objects." +"The wiping tower can be used to clean up the residue on the nozzle and " +"stabilize the chamber pressure inside the nozzle, in order to avoid " +"appearance defects when printing objects." msgstr "" -"De veegtoren kan worden gebruikt om resten op het mondstuk te verwijderen en de druk in het " -"mondstuk te stabiliseren om uiterlijke gebreken bij het printen van objecten te voorkomen." +"De veegtoren kan worden gebruikt om resten op het mondstuk te verwijderen en " +"de druk in het mondstuk te stabiliseren om uiterlijke gebreken bij het " +"printen van objecten te voorkomen." msgid "Purging volumes" msgstr "Volumes opschonen" @@ -12742,8 +13444,8 @@ msgid "Flush multiplier" msgstr "Flush-vermenigvuldiger" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by the flushing " -"volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by " +"the flushing volumes in the table." msgstr "" "De werkelijke flushvolumes zijn gelijk aan de flush vermenigvuldigingswaarde " "vermenigvuldigd met de flushvolumes in de tabel." @@ -12752,7 +13454,9 @@ msgid "Prime volume" msgstr "Prime-volume" msgid "The volume of material to prime extruder on tower." -msgstr "Dit is het volume van het materiaal dat de extruder op de prime toren uitwerpt." +msgstr "" +"Dit is het volume van het materiaal dat de extruder op de prime toren " +"uitwerpt." msgid "Width of prime tower" msgstr "Dit is de breedte van de prime toren." @@ -12767,73 +13471,80 @@ msgid "Stabilization cone apex angle" msgstr "" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means " -"wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. " +"Larger angle means wider base." msgstr "" msgid "Maximum wipe tower print speed" msgstr "" msgid "" -"The maximum print speed when purging in the wipe tower and printing the wipe tower sparse " -"layers. When purging, if the sparse infill speed or calculated speed from the filament max " -"volumetric speed is lower, the lowest will be used instead.\n" +"The maximum print speed when purging in the wipe tower and printing the wipe " +"tower sparse layers. When purging, if the sparse infill speed or calculated " +"speed from the filament max volumetric speed is lower, the lowest will be " +"used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or calculated speed from " -"the filament max volumetric speed is lower, the lowest will be used instead.\n" +"When printing the sparse layers, if the internal perimeter speed or " +"calculated speed from the filament max volumetric speed is lower, the lowest " +"will be used instead.\n" "\n" -"Increasing this speed may affect the tower's stability as well as increase the force with " -"which the nozzle collides with any blobs that may have formed on the wipe tower.\n" +"Increasing this speed may affect the tower's stability as well as increase " +"the force with which the nozzle collides with any blobs that may have formed " +"on the wipe tower.\n" "\n" -"Before increasing this parameter beyond the default of 90mm/sec, make sure your printer can " -"reliably bridge at the increased speeds and that ooze when tool changing is well " -"controlled.\n" +"Before increasing this parameter beyond the default of 90mm/sec, make sure " +"your printer can reliably bridge at the increased speeds and that ooze when " +"tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used regardless of " -"this setting." +"For the wipe tower external perimeters the internal perimeter speed is used " +"regardless of this setting." msgstr "" msgid "" -"The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that " -"is available (non-soluble would be preferred)." +"The extruder to use when printing perimeter of the wipe tower. Set to 0 to " +"use the one that is available (non-soluble would be preferred)." msgstr "" msgid "Purging volumes - load/unload volumes" msgstr "" msgid "" -"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." +"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." msgstr "" msgid "" -"Purging after filament change will be done inside objects' infills. This may lower the " -"amount of waste and decrease the print time. If the walls are printed with transparent " -"filament, the mixed color infill will be seen outside. It will not take effect, unless the " -"prime tower is enabled." +"Purging after filament change will be done inside objects' infills. This may " +"lower the amount of waste and decrease the print time. If the walls are " +"printed with transparent filament, the mixed color infill will be seen " +"outside. It will not take effect, unless the prime tower is enabled." msgstr "" -"Het purgen na het verwisselen van het filament vindt plaats in de vullingen van objecten. " -"Dit kan de hoeveelheid afval verminderen en de printtijd verkorten. Als de wanden zijn " -"geprint met transparant filament, is de infill in gemengde kleuren zichtbaar. Het wordt " -"niet van kracht tenzij de prime tower is ingeschakeld." +"Het purgen na het verwisselen van het filament vindt plaats in de vullingen " +"van objecten. Dit kan de hoeveelheid afval verminderen en de printtijd " +"verkorten. Als de wanden zijn geprint met transparant filament, is de infill " +"in gemengde kleuren zichtbaar. Het wordt niet van kracht tenzij de prime " +"tower is ingeschakeld." msgid "" -"Purging after filament change will be done inside objects' support. This may lower the " -"amount of waste and decrease the print time. It will not take effect, unless the prime " -"tower is enabled." -msgstr "" -"Het purgen na het verwisselen van het filament vindt plaats in de ondersteuning van de " -"objecten. Dit kan de hoeveelheid afval verminderen en de printtijd verkorten. Het wordt " -"niet van kracht tenzij een prime tower is ingeschakeld." - -msgid "" -"This object will be used to purge the nozzle after a filament change to save filament and " -"decrease the print time. Colours of the objects will be mixed as a result. It will not take " +"Purging after filament change will be done inside objects' support. This may " +"lower the amount of waste and decrease the print time. It will not take " "effect, unless the prime tower is enabled." msgstr "" -"Dit object wordt gebruikt om het mondstuk te reinigen nadat het filament is vervangen om " -"filament te besparen en de printtijd te verkorten. Als resultaat worden de kleuren van de " -"objecten gemengd. Het wordt niet van kracht tenzij de prime toren is ingeschakeld." +"Het purgen na het verwisselen van het filament vindt plaats in de " +"ondersteuning van de objecten. Dit kan de hoeveelheid afval verminderen en " +"de printtijd verkorten. Het wordt niet van kracht tenzij een prime tower is " +"ingeschakeld." + +msgid "" +"This object will be used to purge the nozzle after a filament change to save " +"filament and decrease the print time. Colours of the objects will be mixed " +"as a result. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Dit object wordt gebruikt om het mondstuk te reinigen nadat het filament is " +"vervangen om filament te besparen en de printtijd te verkorten. Als " +"resultaat worden de kleuren van de objecten gemengd. Het wordt niet van " +"kracht tenzij de prime toren is ingeschakeld." msgid "Maximal bridging distance" msgstr "Maximale brugafstand" @@ -12851,50 +13562,54 @@ msgid "Extra flow for purging" msgstr "" msgid "" -"Extra flow used for the purging lines on the wipe tower. This makes the purging lines " -"thicker or narrower than they normally would be. The spacing is adjusted automatically." +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." msgstr "" msgid "Idle temperature" msgstr "" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool setups.This is only " -"used when 'Ooze prevention' is active in Print Settings. Set to 0 to disable." +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." msgstr "" msgid "X-Y hole compensation" msgstr "X-Y-gaten compensatie" msgid "" -"Holes of object will be grown or shrunk in XY plane by the configured value. Positive value " -"makes holes bigger. Negative value makes holes smaller. This function is used to adjust " -"size slightly when the object has assembling issue" +"Holes of object will be grown or shrunk in XY plane by the configured value. " +"Positive value makes holes bigger. Negative value makes holes smaller. This " +"function is used to adjust size slightly when the object has assembling issue" msgstr "" -"Gaten in objecten worden met de ingestelde waarde groter of kleiner in het XY-vlak. " -"Positieve waarden maken de gaten groter en negatieve waarden maken de gaten kleiner. Deze " -"functie wordt gebruikt om de grootte enigszins aan te passen wanneer objecten " -"montageproblemen hebben." +"Gaten in objecten worden met de ingestelde waarde groter of kleiner in het " +"XY-vlak. Positieve waarden maken de gaten groter en negatieve waarden maken " +"de gaten kleiner. Deze functie wordt gebruikt om de grootte enigszins aan te " +"passen wanneer objecten montageproblemen hebben." msgid "X-Y contour compensation" msgstr "X-Y contourcompensatie" msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured value. Positive " -"value makes contour bigger. Negative value makes contour smaller. This function is used to " -"adjust size slightly when the object has assembling issue" +"Contour of object will be grown or shrunk in XY plane by the configured " +"value. Positive value makes contour bigger. Negative value makes contour " +"smaller. This function is used to adjust size slightly when the object has " +"assembling issue" msgstr "" -"De contouren van objecten worden met de ingestelde waarde in het XY-vlak groter of kleiner " -"gemaakt. Positieve waarden maken contouren groter en negatieve waarden maken contouren " -"kleiner. Deze functie wordt gebruikt om de afmetingen enigszins aan te passen wanneer " -"objecten montageproblemen hebben." +"De contouren van objecten worden met de ingestelde waarde in het XY-vlak " +"groter of kleiner gemaakt. Positieve waarden maken contouren groter en " +"negatieve waarden maken contouren kleiner. Deze functie wordt gebruikt om de " +"afmetingen enigszins aan te passen wanneer objecten montageproblemen hebben." msgid "Convert holes to polyholes" msgstr "" msgid "" -"Search for almost-circular holes that span more than one layer and convert the geometry to " -"polyholes. Use the nozzle size and the (biggest) diameter to compute the polyhole.\n" +"Search for almost-circular holes that span more than one layer and convert " +"the geometry to polyholes. Use the nozzle size and the (biggest) diameter to " +"compute the polyhole.\n" "See http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgstr "" @@ -12904,8 +13619,9 @@ msgstr "" #, no-c-format, no-boost-format msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" -"As cylinders are often exported as triangles of varying size, points may not be on the " -"circle circumference. This setting allows you some leway to broaden the detection.\n" +"As cylinders are often exported as triangles of varying size, points may not " +"be on the circle circumference. This setting allows you some leway to " +"broaden the detection.\n" "In mm or in % of the radius." msgstr "" @@ -12919,40 +13635,43 @@ msgid "G-code thumbnails" msgstr "G-code miniaturen" msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: " -"\"XxY, XxY, ...\"" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " +"following format: \"XxY, XxY, ...\"" msgstr "" msgid "Format of G-code thumbnails" msgstr "Bestandstype van G-code-voorbeelden" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for low " -"memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " +"QOI for low memory firmware" msgstr "" -"Bestandstype van G-code-voorbeelden: PNG voor de beste kwaliteit, JPG voor kleinste " -"bestand, QOI voor firmware met weinig geheugen" +"Bestandstype van G-code-voorbeelden: PNG voor de beste kwaliteit, JPG voor " +"kleinste bestand, QOI voor firmware met weinig geheugen" msgid "Use relative E distances" msgstr "Relatieve E-afstanden gebruiken" msgid "" -"Relative extrusion is recommended when using \"label_objects\" option.Some extruders work " -"better with this option unckecked (absolute extrusion mode). Wipe tower is only compatible " -"with relative mode. It is recommended on most printers. Default is checked" +"Relative extrusion is recommended when using \"label_objects\" option.Some " +"extruders work better with this option unckecked (absolute extrusion mode). " +"Wipe tower is only compatible with relative mode. It is recommended on most " +"printers. Default is checked" msgstr "" -"Relatieve extrusie wordt aanbevolen bij gebruik van de optie \"label_objects\". Sommige " -"extruders werken beter als deze optie niet is aangevinkt (absolute extrusiemodus). Wipe " -"tower is alleen compatibel met relatieve modus. Het wordt aanbevolen op de meeste printers. " -"Standaard is aangevinkt" +"Relatieve extrusie wordt aanbevolen bij gebruik van de optie " +"\"label_objects\". Sommige extruders werken beter als deze optie niet is " +"aangevinkt (absolute extrusiemodus). Wipe tower is alleen compatibel met " +"relatieve modus. Het wordt aanbevolen op de meeste printers. Standaard is " +"aangevinkt" msgid "" -"Classic wall generator produces walls with constant extrusion width and for very thin areas " -"is used gap-fill. Arachne engine produces walls with variable extrusion width" +"Classic wall generator produces walls with constant extrusion width and for " +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" msgstr "" -"De klassieke wandgenerator produceert wanden met constante extrusiebreedte en voor zeer " -"dunne gebieden wordt gap-fill gebruikt. De Arachne generator produceert wanden met " -"variabele extrusiebreedte." +"De klassieke wandgenerator produceert wanden met constante extrusiebreedte " +"en voor zeer dunne gebieden wordt gap-fill gebruikt. De Arachne generator " +"produceert wanden met variabele extrusiebreedte." msgid "Classic" msgstr "Klassiek" @@ -12964,130 +13683,140 @@ msgid "Wall transition length" msgstr "Lengte wandovergang" msgid "" -"When transitioning between different numbers of walls as the part becomes thinner, a " -"certain amount of space is allotted to split or join the wall segments. It's expressed as a " -"percentage over nozzle diameter" +"When transitioning between different numbers of walls as the part becomes " +"thinner, a certain amount of space is allotted to split or join the wall " +"segments. It's expressed as a percentage over nozzle diameter" msgstr "" -"Bij de overgang tussen verschillende aantallen muren naarmate het onderdeel dunner wordt, " -"wordt een bepaalde hoeveelheid ruimte toegewezen om de wandsegmenten te splitsen of samen " -"te voegen. Dit wordt uitgedrukt als een percentage ten opzichte van de diameter van het " -"mondstuk." +"Bij de overgang tussen verschillende aantallen muren naarmate het onderdeel " +"dunner wordt, wordt een bepaalde hoeveelheid ruimte toegewezen om de " +"wandsegmenten te splitsen of samen te voegen. Dit wordt uitgedrukt als een " +"percentage ten opzichte van de diameter van het mondstuk." msgid "Wall transitioning filter margin" msgstr "Marge van het filter voor wandovergang" msgid "" -"Prevent transitioning back and forth between one extra wall and one less. This margin " -"extends the range of extrusion widths which follow to [Minimum wall width - margin, 2 * " -"Minimum wall 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. It's expressed as a " +"Prevent transitioning back and forth between one extra wall and one less. " +"This margin extends the range of extrusion widths which follow to [Minimum " +"wall width - margin, 2 * Minimum wall 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. It's expressed as a " "percentage over nozzle diameter" msgstr "" -"Voorkom heen en weer schakelen tussen een extra wand en een wand minder. Deze marge breidt " -"het bereik van extrusiebreedten uit dat volgt op [Minimum wandbreedte - marge, 2 * Minimale " -"wandbreedte + marge]. Door deze marge te vergroten, wordt het aantal overgangen verminderd, " -"waardoor het aantal extrusie-starts/-stops en travel tijd wordt verminderd. Grote variaties " -"in de extrusiebreedte kunnen echter leiden tot onder- of overextrusieproblemen. Het wordt " -"uitgedrukt als een percentage over de diameter van het mondstuk" +"Voorkom heen en weer schakelen tussen een extra wand en een wand minder. " +"Deze marge breidt het bereik van extrusiebreedten uit dat volgt op [Minimum " +"wandbreedte - marge, 2 * Minimale wandbreedte + marge]. Door deze marge te " +"vergroten, wordt het aantal overgangen verminderd, waardoor het aantal " +"extrusie-starts/-stops en travel tijd wordt verminderd. Grote variaties in " +"de extrusiebreedte kunnen echter leiden tot onder- of overextrusieproblemen. " +"Het wordt uitgedrukt als een percentage over de diameter van het mondstuk" msgid "Wall transitioning threshold angle" msgstr "Drempelhoek voor wandovergang" msgid "" -"When to create transitions between even and odd numbers of walls. A wedge shape with an " -"angle greater than this setting will not have transitions and no walls will be printed in " -"the center to fill the remaining space. Reducing this setting reduces the number and length " -"of these center walls, but may leave gaps or overextrude" +"When to create transitions between even and odd numbers of walls. A wedge " +"shape with an angle greater than this setting will not have transitions and " +"no walls will be printed in the center to fill the remaining space. Reducing " +"this setting reduces the number and length of these center walls, but may " +"leave gaps or overextrude" msgstr "" -"Wanneer moet u overgangen maken tussen even en oneven aantallen muren? Een wigvorm met een " -"hoek groter dan deze instelling heeft geen overgangen en er worden in het midden geen muren " -"afgedrukt om de resterende ruimte te vullen. Als u deze instelling verlaagt, worden het " -"aantal en de lengte van deze middenwanden beperkt, maar kunnen er openingen ontstaan of " -"overextruderen" +"Wanneer moet u overgangen maken tussen even en oneven aantallen muren? Een " +"wigvorm met een hoek groter dan deze instelling heeft geen overgangen en er " +"worden in het midden geen muren afgedrukt om de resterende ruimte te vullen. " +"Als u deze instelling verlaagt, worden het aantal en de lengte van deze " +"middenwanden beperkt, maar kunnen er openingen ontstaan of overextruderen" msgid "Wall distribution count" msgstr "Aantal wandverdelingen" msgid "" -"The number of walls, counted from the center, over which the variation needs to be spread. " -"Lower values mean that the outer walls don't change in width" +"The number of walls, counted from the center, over which the variation needs " +"to be spread. Lower values mean that the outer walls don't change in width" msgstr "" -"Het aantal wanden, geteld vanuit het midden, waarover de variatie moet worden verdeeld. " -"Lagere waarden betekenen dat de buitenwanden niet in breedte veranderen." +"Het aantal wanden, geteld vanuit het midden, waarover de variatie moet " +"worden verdeeld. Lagere waarden betekenen dat de buitenwanden niet in " +"breedte veranderen." msgid "Minimum feature size" msgstr "Minimale kenmerkgrootte" msgid "" -"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 wall width. It's expressed as a percentage over nozzle diameter" +"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 wall width. It's expressed as a " +"percentage over nozzle diameter" msgstr "" -"Minimale dikte van dunne onderdelen. Modelkenmerken die dunner zijn dan deze waarde worden " -"niet afgedrukt, terwijl functies die dikker zijn dan de minimale afmeting van het object, " -"worden verbreed tot de minimale wandbreedte. Dit wordt uitgedrukt als een percentage ten " -"opzichte van de diameter van het mondstuk" +"Minimale dikte van dunne onderdelen. Modelkenmerken die dunner zijn dan deze " +"waarde worden niet afgedrukt, terwijl functies die dikker zijn dan de " +"minimale afmeting van het object, worden verbreed tot de minimale " +"wandbreedte. Dit wordt uitgedrukt als een percentage ten opzichte van de " +"diameter van het mondstuk" msgid "Minimum wall length" msgstr "Minimale wandlengte" msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which could increase " -"print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which " +"could increase print time. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on " -"the ouside of the model. Adjust 'One wall threshold' in the Advanced settings below to " -"adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only " -"visibile if this setting is set above the default value of 0.5, or if single-wall top " -"surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent " +"visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " +"Advanced settings below to adjust the sensitivity of what is considered a " +"top-surface. 'One wall threshold' is only visibile if this setting is set " +"above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Pas deze waarde aan om te voorkomen dat korte, niet-gesloten wanden worden geprint, wat de " -"printtijd kan verlengen. Hogere waarden verwijderen meer en langere wanden.\n" +"Pas deze waarde aan om te voorkomen dat korte, niet-gesloten wanden worden " +"geprint, wat de printtijd kan verlengen. Hogere waarden verwijderen meer en " +"langere wanden.\n" "\n" -"OPMERKING: Onder- en bovenoppervlakken worden niet beïnvloed door deze waarde om visuele " -"gaten aan de buitenkant van het model te voorkomen. Pas 'One wall threshold' aan in de " -"geavanceerde instellingen hieronder om de gevoeligheid van wat als een bovenoppervlak wordt " -"beschouwd aan te passen. 'One wall threshold' is alleen zichtbaar als deze instelling boven " -"de standaardwaarde van 0,5 is ingesteld of als enkelwandige bovenoppervlakken zijn " -"ingeschakeld." +"OPMERKING: Onder- en bovenoppervlakken worden niet beïnvloed door deze " +"waarde om visuele gaten aan de buitenkant van het model te voorkomen. Pas " +"'One wall threshold' aan in de geavanceerde instellingen hieronder om de " +"gevoeligheid van wat als een bovenoppervlak wordt beschouwd aan te passen. " +"'One wall threshold' is alleen zichtbaar als deze instelling boven de " +"standaardwaarde van 0,5 is ingesteld of als enkelwandige bovenoppervlakken " +"zijn ingeschakeld." msgid "First layer minimum wall width" msgstr "Eerste laag minimale wandbreedte" msgid "" -"The minimum wall width that should be used for the first layer is recommended to be set to " -"the same size as the nozzle. This adjustment is expected to enhance adhesion." +"The minimum wall width that should be used for the first layer is " +"recommended to be set to the same size as the nozzle. This adjustment is " +"expected to enhance adhesion." msgstr "" -"De minimale wandbreedte die voor de eerste laag moet worden gebruikt, wordt aanbevolen om " -"op dezelfde grootte als het mondstuk te worden ingesteld. Deze aanpassing zal naar " -"verwachting de hechting verbeteren." +"De minimale wandbreedte die voor de eerste laag moet worden gebruikt, wordt " +"aanbevolen om op dezelfde grootte als het mondstuk te worden ingesteld. Deze " +"aanpassing zal naar verwachting de hechting verbeteren." msgid "Minimum wall width" msgstr "Minimale wandbreedte" msgid "" -"Width of the wall that will replace thin features (according to the Minimum feature size) " -"of the model. If the Minimum wall width is thinner than the thickness of the feature, the " -"wall will become as thick as the feature itself. It's expressed as a percentage over nozzle " -"diameter" +"Width of the wall that will replace thin features (according to the Minimum " +"feature size) of the model. If the Minimum wall width is thinner than the " +"thickness of the feature, the wall will become as thick as the feature " +"itself. It's expressed as a percentage over nozzle diameter" msgstr "" -"Breedte van de muur die dunne delen (volgens de minimale functiegrootte) van het model zal " -"vervangen. Als de minimale wandbreedte dunner is dan de dikte van het element, wordt de " -"muur net zo dik als het object zelf. Dit wordt uitgedrukt als een percentage ten opzichte " -"van de diameter van het mondstuk" +"Breedte van de muur die dunne delen (volgens de minimale functiegrootte) van " +"het model zal vervangen. Als de minimale wandbreedte dunner is dan de dikte " +"van het element, wordt de muur net zo dik als het object zelf. Dit wordt " +"uitgedrukt als een percentage ten opzichte van de diameter van het mondstuk" msgid "Detect narrow internal solid infill" msgstr "Detecteer dichte interne solide vulling (infill)" msgid "" -"This option will auto detect narrow internal solid infill area. If enabled, concentric " -"pattern will be used for the area to speed printing up. Otherwise, rectilinear pattern is " -"used defaultly." +"This option will auto detect narrow internal solid infill area. If enabled, " +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used defaultly." msgstr "" -"Deze optie detecteert automatisch smalle interne solide opvul (infill) gebieden. Indien " -"ingeschakeld, wordt het concentrische patroon gebruikt voor het gebied om het afdrukken te " -"versnellen. Anders wordt standaard het rechtlijnige patroon gebruikt." +"Deze optie detecteert automatisch smalle interne solide opvul (infill) " +"gebieden. Indien ingeschakeld, wordt het concentrische patroon gebruikt voor " +"het gebied om het afdrukken te versnellen. Anders wordt standaard het " +"rechtlijnige patroon gebruikt." msgid "invalid value " msgstr "invalid value " @@ -13116,7 +13845,8 @@ msgstr "Do not run any validity checks, such as G-code path conflicts check." msgid "Ensure on bed" msgstr "Plaats op bed" -msgid "Lift the object above the bed when it is partially below. Disabled by default" +msgid "" +"Lift the object above the bed when it is partially below. Disabled by default" msgstr "" msgid "Orient Options" @@ -13138,11 +13868,13 @@ msgid "Data directory" msgstr "Bestandslocatie voor de data" msgid "" -"Load and store settings at the given directory. This is useful for maintaining different " -"profiles or including configurations from a network storage." +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." msgstr "" -"Laad fabrieksinstellingen en sla op. Dit is handig voor het onderhouden van verschillende " -"profielen of het opnemen van configuraties van een netwerkopslag." +"Laad fabrieksinstellingen en sla op. Dit is handig voor het onderhouden van " +"verschillende profielen of het opnemen van configuraties van een " +"netwerkopslag." msgid "Load custom gcode" msgstr "Laad aangepaste gcode" @@ -13157,15 +13889,15 @@ msgid "Contains z-hop present at the beginning of the custom G-code block." msgstr "" msgid "" -"Position of the extruder at the beginning of the custom G-code block. If the custom G-code " -"travels somewhere else, it should write to this variable so PrusaSlicer knows where it " -"travels from when it gets control back." +"Position of the extruder at the beginning of the custom G-code block. If the " +"custom G-code travels somewhere else, it should write to this variable so " +"PrusaSlicer knows where it travels from when it gets control back." msgstr "" msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom G-code moves " -"the extruder axis, it should write to this variable so PrusaSlicer deretracts correctly " -"when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom " +"G-code moves the extruder axis, it should write to this variable so " +"PrusaSlicer deretracts correctly when it gets control back." msgstr "" msgid "Extra deretraction" @@ -13177,7 +13909,9 @@ msgstr "" msgid "Absolute E position" msgstr "" -msgid "Current position of the extruder axis. Only used with absolute extruder addressing." +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." msgstr "" msgid "Current extruder" @@ -13189,7 +13923,9 @@ msgstr "" msgid "Current object index" msgstr "" -msgid "Specific for sequential printing. Zero-based index of currently printed object." +msgid "" +"Specific for sequential printing. Zero-based index of currently printed " +"object." msgstr "" msgid "Has wipe tower" @@ -13201,13 +13937,17 @@ msgstr "" msgid "Initial extruder" msgstr "" -msgid "Zero-based index of the first extruder used in the print. Same as initial_tool." +msgid "" +"Zero-based index of the first extruder used in the print. Same as " +"initial_tool." msgstr "" msgid "Initial tool" msgstr "" -msgid "Zero-based index of the first extruder used in the print. Same as initial_extruder." +msgid "" +"Zero-based index of the first extruder used in the print. Same as " +"initial_extruder." msgstr "" msgid "Is extruder used?" @@ -13244,15 +13984,16 @@ msgid "Weight per extruder" msgstr "" msgid "" -"Weight per extruder extruded during the entire print. Calculated from filament_density " -"value in Filament Settings." +"Weight per extruder extruded during the entire print. Calculated from " +"filament_density value in Filament Settings." msgstr "" msgid "Total weight" msgstr "" msgid "" -"Total weight of the print. Calculated from filament_density value in Filament Settings." +"Total weight of the print. Calculated from filament_density value in " +"Filament Settings." msgstr "" msgid "Total layer count" @@ -13277,8 +14018,9 @@ msgid "Scale per object" msgstr "" msgid "" -"Contains a string with the information about what scaling was applied to the individual " -"objects. Indexing of the objects is zero-based (first object has index 0).\n" +"Contains a string with the information about what scaling was applied to the " +"individual objects. Indexing of the objects is zero-based (first object has " +"index 0).\n" "Example: 'x:100% y:50% z:100'." msgstr "" @@ -13288,18 +14030,21 @@ msgstr "" msgid "Source filename of the first object, without extension." msgstr "" -msgid "The vector has two elements: x and y coordinate of the point. Values in mm." +msgid "" +"The vector has two elements: x and y coordinate of the point. Values in mm." msgstr "" -msgid "The vector has two elements: x and y dimension of the bounding box. Values in mm." +msgid "" +"The vector has two elements: x and y dimension of the bounding box. Values " +"in mm." msgstr "" msgid "First layer convex hull" msgstr "" msgid "" -"Vector of points of the first layer convex hull. Each element has the following format:'[x, " -"y]' (x and y are floating-point numbers in mm)." +"Vector of points of the first layer convex hull. Each element has the " +"following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" msgid "Bottom-left corner of first layer bounding box" @@ -13345,8 +14090,8 @@ msgid "Filament preset name" msgstr "" msgid "" -"Names of the filament presets used for slicing. The variable is a vector containing one " -"name for each extruder." +"Names of the filament presets used for slicing. The variable is a vector " +"containing one name for each extruder." msgstr "" msgid "Printer preset name" @@ -13364,7 +14109,9 @@ msgstr "" msgid "Number of extruders" msgstr "" -msgid "Total number of extruders, regardless of whether they are used in the current print." +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." msgstr "" msgid "Layer number" @@ -13376,7 +14123,9 @@ msgstr "" msgid "Layer z" msgstr "" -msgid "Height of the current layer above the print bed, measured to the top of the layer." +msgid "" +"Height of the current layer above the print bed, measured to the top of the " +"layer." msgstr "" msgid "Maximal layer z" @@ -13422,8 +14171,12 @@ msgid "large overhangs" msgstr "large overhangs" #, c-format, boost-format -msgid "It seems object %s has %s. Please re-orient the object or enable support generation." -msgstr "It seems object %s has %s. Please re-orient the object or enable support generation." +msgid "" +"It seems object %s has %s. Please re-orient the object or enable support " +"generation." +msgstr "" +"It seems object %s has %s. Please re-orient the object or enable support " +"generation." msgid "Optimizing toolpath" msgstr "Optimaliseren van het pad" @@ -13432,17 +14185,19 @@ msgid "Slicing mesh" msgstr "Slicing mesh" msgid "" -"No layers were detected. You might want to repair your STL file(s) or check their size or " -"thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check " +"their size or thickness and retry.\n" msgstr "" -"No layers were detected. You might want to repair your STL file(s) or check their size or " -"thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check " +"their size or thickness and retry.\n" msgid "" -"An object's XY size compensation will not be used because it is also color-painted.\n" +"An object's XY size compensation will not be used because it is also color-" +"painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"An object's XY size compensation will not be used because it is also color-painted.\n" +"An object's XY size compensation will not be used because it is also color-" +"painted.\n" "XY Size compensation can not be combined with color-painting." #, c-format, boost-format @@ -13476,8 +14231,11 @@ msgstr "Support: repareer gaten op laag %d" msgid "Support: propagate branches at layer %d" msgstr "Support: verspreid takken op laag %d" -msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Unknown file format: input file must have .stl, .obj, or .amf(.xml) " +"extension." msgid "Loading of a model file failed." msgstr "Loading of model file failed." @@ -13545,10 +14303,11 @@ msgstr "Klaar" msgid "How to use calibration result?" msgstr "Hoe kan ik kalibratieresultaten gebruiken?" -msgid "You could change the Flow Dynamics Calibration Factor in material editing" +msgid "" +"You could change the Flow Dynamics Calibration Factor in material editing" msgstr "" -"Je kunt de kalibratiefactor van de stromingsdynamica wijzigen bij het bewerken van " -"materialen" +"Je kunt de kalibratiefactor van de stromingsdynamica wijzigen bij het " +"bewerken van materialen" msgid "" "The current firmware version of the printer does not support calibration.\n" @@ -13597,7 +14356,8 @@ msgid "The selected preset: %s is not found." msgstr "De geselecteerde preset: %s is niet gevonden." msgid "The name cannot be the same as the system preset name." -msgstr "De naam mag niet hetzelfde zijn als de naam van de systeemvoorinstelling." +msgstr "" +"De naam mag niet hetzelfde zijn als de naam van de systeemvoorinstelling." msgid "The name is the same as another existing preset name" msgstr "De naam is hetzelfde als een andere bestaande presetnaam" @@ -13605,8 +14365,11 @@ msgstr "De naam is hetzelfde als een andere bestaande presetnaam" msgid "create new preset failed." msgstr "nieuwe voorinstelling maken mislukt." -msgid "Are you sure to cancel the current calibration and return to the home page?" -msgstr "Are you sure you want to cancel the current calibration and return to the home page?" +msgid "" +"Are you sure to cancel the current calibration and return to the home page?" +msgstr "" +"Are you sure you want to cancel the current calibration and return to the " +"home page?" msgid "No Printer Connected!" msgstr "Geen printer aangesloten!" @@ -13621,15 +14384,16 @@ msgid "The input value size must be 3." msgstr "De grootte van de invoerwaarde moet 3 zijn." msgid "" -"This machine type can only hold 16 history results per nozzle. You can delete the existing " -"historical results and then start calibration. Or you can continue the calibration, but you " -"cannot create new calibration historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can " +"delete the existing historical results and then start calibration. Or you " +"can continue the calibration, but you cannot create new calibration " +"historical results. \n" "Do you still want to continue the calibration?" msgstr "" -"Dit type machine kan slechts 16 historische resultaten per mondstuk bevatten. U kunt de " -"bestaande historische resultaten verwijderen en vervolgens de kalibratie starten. Of u kunt " -"doorgaan met de kalibratie, maar u kunt geen nieuwe historische kalibratieresultaten " -"maken.\n" +"Dit type machine kan slechts 16 historische resultaten per mondstuk " +"bevatten. U kunt de bestaande historische resultaten verwijderen en " +"vervolgens de kalibratie starten. Of u kunt doorgaan met de kalibratie, maar " +"u kunt geen nieuwe historische kalibratieresultaten maken.\n" "Wilt u de kalibratie nog steeds voortzetten?" msgid "Connecting to printer..." @@ -13643,20 +14407,21 @@ msgstr "Flow Dynamics kalibratieresultaat is opgeslagen in de printer" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. Only one of the " -"results with the same name is saved. Are you sure you want to override the historical " -"result?" +"There is already a historical calibration result with the same name: %s. " +"Only one of the results with the same name is saved. Are you sure you want " +"to override the historical result?" msgstr "" -"Er is al een eerder kalibratieresultaat met dezelfde naam: %s. Er wordt maar één resultaat " -"met een naam opgeslagen. Weet je zeker dat je het vorige resultaat wilt overschrijven?" +"Er is al een eerder kalibratieresultaat met dezelfde naam: %s. Er wordt maar " +"één resultaat met een naam opgeslagen. Weet je zeker dat je het vorige " +"resultaat wilt overschrijven?" #, c-format, boost-format msgid "" -"This machine type can only hold %d history results per nozzle. This result will not be " -"saved." +"This machine type can only hold %d history results per nozzle. This result " +"will not be saved." msgstr "" -"Dit type machine kan slechts %d historische resultaten per mondstuk bevatten. Dit resultaat " -"wordt niet opgeslagen." +"Dit type machine kan slechts %d historische resultaten per mondstuk " +"bevatten. Dit resultaat wordt niet opgeslagen." msgid "Internal Error" msgstr "Interne fout" @@ -13665,32 +14430,37 @@ msgid "Please select at least one filament for calibration" msgstr "Selecteer ten minste één filament voor kalibratie" msgid "Flow rate calibration result has been saved to preset" -msgstr "Het resultaat van de debietkalibratie is opgeslagen in een voorkeursinstelling." +msgstr "" +"Het resultaat van de debietkalibratie is opgeslagen in een " +"voorkeursinstelling." msgid "Max volumetric speed calibration result has been saved to preset" msgstr "" -"Het kalibratieresultaat van de maximale volumetrische snelheid is opgeslagen in de vooraf " -"ingestelde waarde" +"Het kalibratieresultaat van de maximale volumetrische snelheid is opgeslagen " +"in de vooraf ingestelde waarde" msgid "When do you need Flow Dynamics Calibration" msgstr "Wanneer heb je een Flow Dynamics-kalibratie nodig?" msgid "" -"We now have added the auto-calibration for different filaments, which is fully automated " -"and the result will be saved into the printer for future use. You only need to do the " -"calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is " +"fully automated and the result will be saved into the printer for future " +"use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the " +"filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the filament setting." +"3. If the max volumetric speed or print temperature is changed in the " +"filament setting." msgstr "" -"We hebben nu de automatische kalibratie voor verschillende filamenten toegevoegd. Deze is " -"volledig geautomatiseerd en het resultaat wordt opgeslagen in de printer voor toekomstig " -"gebruik. Je hoeft de kalibratie alleen uit te voeren in de volgende beperkte gevallen:\n" -"1. Als je een nieuw filament van een ander merk/model introduceert of als het filament " -"vochtig is;\n" +"We hebben nu de automatische kalibratie voor verschillende filamenten " +"toegevoegd. Deze is volledig geautomatiseerd en het resultaat wordt " +"opgeslagen in de printer voor toekomstig gebruik. Je hoeft de kalibratie " +"alleen uit te voeren in de volgende beperkte gevallen:\n" +"1. Als je een nieuw filament van een ander merk/model introduceert of als " +"het filament vochtig is;\n" "2. Als het mondstuk versleten is of vervangen is door een nieuwe;\n" -"3. Als de maximale volumetrische snelheid of printtemperatuur is gewijzigd in de " -"filamentinstelling." +"3. Als de maximale volumetrische snelheid of printtemperatuur is gewijzigd " +"in de filamentinstelling." msgid "About this calibration" msgstr "Over deze kalibratie" @@ -13698,97 +14468,106 @@ msgstr "Over deze kalibratie" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/material print, with " -"the \"flow dynamics calibration\" option checked in the print start menu, the printer will " -"follow the old way, calibrate the filament before the print; When you start a multi color/" -"material print, the printer will use the default compensation parameter for the filament " -"during every filament switch which will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/" +"material print, with the \"flow dynamics calibration\" option checked in the " +"print start menu, the printer will follow the old way, calibrate the " +"filament before the print; When you start a multi color/material print, the " +"printer will use the default compensation parameter for the filament during " +"every filament switch which will have a good result in most cases.\n" "\n" -"Please note that there are a few cases that can make the calibration results unreliable, " -"such as insufficient adhesion on the build plate. Improving adhesion can be achieved by " -"washing the build plate or applying glue. For more information on this topic, please refer " -"to our Wiki.\n" +"Please note that there are a few cases that can make the calibration results " +"unreliable, such as insufficient adhesion on the build plate. Improving " +"adhesion can be achieved by washing the build plate or applying glue. For " +"more information on this topic, please refer to our Wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may cause the " -"result not exactly the same in each calibration. We are still investigating the root cause " -"to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may " +"cause the result not exactly the same in each calibration. We are still " +"investigating the root cause to do improvements with new updates." msgstr "" msgid "When to use Flow Rate Calibration" msgstr "Wanneer moet u Flow Rate kalibratie gebruiken" msgid "" -"After using Flow Dynamics Calibration, there might still be some extrusion issues, such " -"as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the " -"layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the " -"model, even when printing slowly.\n" +"After using Flow Dynamics Calibration, there might still be some extrusion " +"issues, such as:\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or " +"zits, or the layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " +"top layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " +"they should be." msgstr "" -"After using Flow Dynamics Calibration, there might still be some extrusion issues, such " -"as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the " -"layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the " -"model, even when printing slowly.\n" +"After using Flow Dynamics Calibration, there might still be some extrusion " +"issues, such as:\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or " +"zits, or the layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " +"top layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " +"they should be." msgid "" -"In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC " -"planes. These materials expand greatly when heated, and calibration provides a useful " -"reference flow rate." +"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" +"PLA used in RC planes. These materials expand greatly when heated, and " +"calibration provides a useful reference flow rate." msgstr "" -"Bovendien is Flow Rate kalibratie cruciaal voor schuimmaterialen zoals LW-PLA die worden " -"gebruikt in RC-vliegtuigen. Deze materialen zetten sterk uit bij verhitting, en kalibratie " -"levert een bruikbare referentiestroom op." +"Bovendien is Flow Rate kalibratie cruciaal voor schuimmaterialen zoals LW-" +"PLA die worden gebruikt in RC-vliegtuigen. Deze materialen zetten sterk uit " +"bij verhitting, en kalibratie levert een bruikbare referentiestroom op." msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. The " -"default setting works well in Bambu Lab printers and official filaments as they were pre-" -"calibrated and fine-tuned. For a regular filament, you usually won't need to perform a Flow " -"Rate Calibration unless you still see the listed defects after you have done other " -"calibrations. For more details, please check out the wiki article." +"Flow Rate Calibration measures the ratio of expected to actual extrusion " +"volumes. The default setting works well in Bambu Lab printers and official " +"filaments as they were pre-calibrated and fine-tuned. For a regular " +"filament, you usually won't need to perform a Flow Rate Calibration unless " +"you still see the listed defects after you have done other calibrations. For " +"more details, please check out the wiki article." msgstr "" -"Flow Rate Calibration meet de verhouding tussen verwachte en werkelijke extrusievolumes. De " -"standaardinstelling werkt goed in Bambu Lab printers en officiële filamenten, omdat deze " -"vooraf zijn gekalibreerd en afgestemd. Voor een normaal filament is het meestal niet nodig " -"om een kalibratie van de stroomsnelheid uit te voeren, tenzij je nog steeds de genoemde " -"defecten ziet nadat je andere kalibraties hebt uitgevoerd. Kijk voor meer informatie in het " -"wiki-artikel." +"Flow Rate Calibration meet de verhouding tussen verwachte en werkelijke " +"extrusievolumes. De standaardinstelling werkt goed in Bambu Lab printers en " +"officiële filamenten, omdat deze vooraf zijn gekalibreerd en afgestemd. Voor " +"een normaal filament is het meestal niet nodig om een kalibratie van de " +"stroomsnelheid uit te voeren, tenzij je nog steeds de genoemde defecten ziet " +"nadat je andere kalibraties hebt uitgevoerd. Kijk voor meer informatie in " +"het wiki-artikel." msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring " -"the calibration patterns. However, please be advised that the efficacy and accuracy of this " -"method may be compromised with specific types of materials. Particularly, filaments that " -"are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish " -"may not be suitable for this calibration and can produce less-than-desirable results.\n" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " +"directly measuring the calibration patterns. However, please be advised that " +"the efficacy and accuracy of this method may be compromised with specific " +"types of materials. Particularly, filaments that are transparent or semi-" +"transparent, sparkling-particled, or have a high-reflective finish may not " +"be suitable for this calibration and can produce less-than-desirable " +"results.\n" "\n" -"The calibration results may vary between each calibration or filament. We are still " -"improving the accuracy and compatibility of this calibration through firmware updates over " -"time.\n" +"The calibration results may vary between each calibration or filament. We " +"are still improving the accuracy and compatibility of this calibration " +"through firmware updates over time.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who " -"fully understand its purpose and implications. Incorrect usage can lead to sub-par prints " -"or printer damage. Please make sure to carefully read and understand the process before " -"doing it." +"Caution: Flow Rate Calibration is an advanced process, to be attempted only " +"by those who fully understand its purpose and implications. Incorrect usage " +"can lead to sub-par prints or printer damage. Please make sure to carefully " +"read and understand the process before doing it." msgstr "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring " -"the calibration patterns. However, please be advised that the efficacy and accuracy of this " -"method may be compromised with specific types of materials. Particularly, filaments that " -"are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish " -"may not be suitable for this calibration and can produce less-than-desirable results.\n" +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " +"directly measuring the calibration patterns. However, please be advised that " +"the efficacy and accuracy of this method may be compromised with specific " +"types of materials. Particularly, filaments that are transparent or semi-" +"transparent, sparkling-particled, or have a high-reflective finish may not " +"be suitable for this calibration and can produce less-than-desirable " +"results.\n" "\n" -"The calibration results may vary between each calibration or filament. We are still " -"improving the accuracy and compatibility of this calibration through firmware updates over " -"time.\n" +"The calibration results may vary between each calibration or filament. We " +"are still improving the accuracy and compatibility of this calibration " +"through firmware updates over time.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who " -"fully understand its purpose and implications. Incorrect usage can lead to sub-par prints " -"or printer damage. Please make sure to carefully read and understand the process before " -"performing it." +"Caution: Flow Rate Calibration is an advanced process, to be attempted only " +"by those who fully understand its purpose and implications. Incorrect usage " +"can lead to sub-par prints or printer damage. Please make sure to carefully " +"read and understand the process before performing it." msgid "When you need Max Volumetric Speed Calibration" msgstr "Wanneer u maximale volumetrische snelheidskalibratie nodig hebt" @@ -13798,7 +14577,8 @@ msgstr "Over-extrusie of onderextrusie" msgid "Max Volumetric Speed calibration is recommended when you print with:" msgstr "" -"Kalibratie van de maximale volumetrische snelheid wordt aanbevolen wanneer je afdrukt met:" +"Kalibratie van de maximale volumetrische snelheid wordt aanbevolen wanneer " +"je afdrukt met:" msgid "material with significant thermal shrinkage/expansion, such as..." msgstr "materiaal met aanzienlijke thermische krimp/uitzetting, zoals..." @@ -13810,16 +14590,18 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "We hebben de beste Flow Dynamics kalibratiefactor gevonden" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The failed test result " -"would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." msgstr "" -"Een deel van de kalibratie is mislukt! U kunt de plaat schoonmaken en het opnieuw proberen. " -"Het mislukte testresultaat komt te vervallen." +"Een deel van de kalibratie is mislukt! U kunt de plaat schoonmaken en het " +"opnieuw proberen. Het mislukte testresultaat komt te vervallen." -msgid "*We recommend you to add brand, materia, type, and even humidity level in the Name" +msgid "" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" msgstr "" -"*We raden je aan om merk, materiaal, type en zelfs vochtigheidsgraad toe te voegen in de " -"Naam." +"*We raden je aan om merk, materiaal, type en zelfs vochtigheidsgraad toe te " +"voegen in de Naam." msgid "Failed" msgstr "Mislukt" @@ -13831,11 +14613,11 @@ msgid "The name cannot exceed 40 characters." msgstr "De naam mag niet langer zijn dan 40 tekens." msgid "" -"Only one of the results with the same name will be saved. Are you sure you want to override " -"the other results?" +"Only one of the results with the same name will be saved. Are you sure you " +"want to override the other results?" msgstr "" -"Slechts één van de resultaten met dezelfde naam wordt opgeslagen. Weet je zeker dat je de " -"andere resultaten wilt overschrijven?" +"Slechts één van de resultaten met dezelfde naam wordt opgeslagen. Weet je " +"zeker dat je de andere resultaten wilt overschrijven?" msgid "Please find the best line on your plate" msgstr "Zoek de beste regel op je bord" @@ -13893,7 +14675,8 @@ msgid "Please choose a block with smoothest top surface." msgstr "Kies een blok met de gladste bovenkant." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" -msgstr "Voer een geldige waarde in (0 <= maximale volumetrische snelheid <= 60)" +msgstr "" +"Voer een geldige waarde in (0 <= maximale volumetrische snelheid <= 60)" msgid "Calibration Type" msgstr "Kalibratietype" @@ -13908,11 +14691,11 @@ msgid "Title" msgstr "Titel" msgid "" -"A test model will be printed. Please clear the build plate and place it back to the hot bed " -"before calibration." +"A test model will be printed. Please clear the build plate and place it back " +"to the hot bed before calibration." msgstr "" -"Er wordt een testmodel geprint. Maak de bouwplaat vrij en plaats deze terug op het hotbed " -"voordat je gaat kalibreren." +"Er wordt een testmodel geprint. Maak de bouwplaat vrij en plaats deze terug " +"op het hotbed voordat je gaat kalibreren." msgid "Printing Parameters" msgstr "Afdrukparameters" @@ -13936,7 +14719,8 @@ msgid "" msgstr "" "Tips voor kalibratiemateriaal: \n" "- Materialen die dezelfde warmbedtemperatuur kunnen delen\n" -"- Verschillende filamentmerken en -families (Merk = Bambu, Familie = Basis, Mat)" +"- Verschillende filamentmerken en -families (Merk = Bambu, Familie = Basis, " +"Mat)" msgid "Pattern" msgstr "Patroon" @@ -13964,7 +14748,8 @@ msgid "Step value" msgstr "Stap waarde" msgid "The nozzle diameter has been synchronized from the printer Settings" -msgstr "De diameter van het mondstuk is gesynchroniseerd met de printerinstellingen." +msgstr "" +"De diameter van het mondstuk is gesynchroniseerd met de printerinstellingen." msgid "From Volumetric Speed" msgstr "Van Volumetric Speed" @@ -13992,7 +14777,8 @@ msgstr "Actie" #, c-format, boost-format msgid "This machine type can only hold %d history results per nozzle." -msgstr "Dit type machine kan slechts %d historische resultaten per mondstuk bevatten." +msgstr "" +"Dit type machine kan slechts %d historische resultaten per mondstuk bevatten." msgid "Edit Flow Dynamics Calibration" msgstr "Flow Dynamics-kalibratie bewerken" @@ -14176,7 +14962,8 @@ msgid "Upload to Printer Host with the following filename:" msgstr "Uploaden naar Printer Host met de volgende bestandsnaam:" msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "Gebruik indien nodig schuine strepen (/) als scheidingsteken voor mappen." +msgstr "" +"Gebruik indien nodig schuine strepen (/) als scheidingsteken voor mappen." msgid "Upload to storage" msgstr "Uploaden naar opslag" @@ -14357,10 +15144,11 @@ msgstr "Vendor is not selected; please reselect vendor." msgid "Custom vendor is not input, please input custom vendor." msgstr "Custom vendor missing; please input custom vendor." -msgid "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgid "" +"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." msgstr "" -"\"Bambu\" of \"Generic\" kan niet worden gebruikt als leverancier voor aangepaste " -"filamenten." +"\"Bambu\" of \"Generic\" kan niet worden gebruikt als leverancier voor " +"aangepaste filamenten." msgid "Filament type is not selected, please reselect type." msgstr "Het type draad is niet geselecteerd, selecteer het type opnieuw." @@ -14369,30 +15157,34 @@ msgid "Filament serial is not inputed, please input serial." msgstr "Filament serial missing; please input serial." msgid "" -"There may be escape characters in the vendor or serial input of filament. Please delete and " -"re-enter." +"There may be escape characters in the vendor or serial input of filament. " +"Please delete and re-enter." msgstr "" -"There may be disallowed characters in the vendor or serial input of the filament. Please " -"delete and re-enter." +"There may be disallowed characters in the vendor or serial input of the " +"filament. Please delete and re-enter." msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." -msgstr "Alle ingangen in de aangepaste verkoper of serie zijn spaties. Voer opnieuw in." +msgstr "" +"Alle ingangen in de aangepaste verkoper of serie zijn spaties. Voer opnieuw " +"in." msgid "The vendor can not be a number. Please re-enter." msgstr "The vendor can not be a number; please re-enter." -msgid "You have not selected a printer or preset yet. Please select at least one." -msgstr "Je hebt nog geen printer of preset geselecteerd. Selecteer er ten minste één." +msgid "" +"You have not selected a printer or preset yet. Please select at least one." +msgstr "" +"Je hebt nog geen printer of preset geselecteerd. Selecteer er ten minste één." #, c-format, boost-format msgid "" "The Filament name %s you created already exists. \n" -"If you continue creating, the preset created will be displayed with its full name. Do you " -"want to continue?" +"If you continue creating, the preset created will be displayed with its full " +"name. Do you want to continue?" msgstr "" "De filamentnaam %s die je hebt gemaakt, bestaat al. \n" -"Als u doorgaat, wordt de gemaakte voorinstelling weergegeven met de volledige naam. Wilt u " -"doorgaan?" +"Als u doorgaat, wordt de gemaakte voorinstelling weergegeven met de " +"volledige naam. Wilt u doorgaan?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Sommige bestaande presets zijn niet aangemaakt, als volgt:\n" @@ -14405,7 +15197,8 @@ msgstr "" "Wil je het herschrijven?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -14501,35 +15294,37 @@ msgid "Back Page 1" msgstr "Terug Pagina 1" msgid "" -"You have not yet chosen which printer preset to create based on. Please choose the vendor " -"and model of the printer" +"You have not yet chosen which printer preset to create based on. Please " +"choose the vendor and model of the printer" msgstr "" -"Je hebt nog niet gekozen op basis van welke preset je de printer wilt maken. Kies de " -"leverancier en het model van de printer" +"Je hebt nog niet gekozen op basis van welke preset je de printer wilt maken. " +"Kies de leverancier en het model van de printer" msgid "" -"You have entered an illegal input in the printable area section on the first page. Please " -"check before creating it." +"You have entered an illegal input in the printable area section on the first " +"page. Please check before creating it." msgstr "" -"U hebt een niet toegestaan teken ingevoerd in het gedeelte van het afdrukbare gebied op de " -"eerste pagina. Gebruik alleen cijfers." +"U hebt een niet toegestaan teken ingevoerd in het gedeelte van het " +"afdrukbare gebied op de eerste pagina. Gebruik alleen cijfers." msgid "The custom printer or model is not inputed, place input." msgstr "The custom printer or model missing; please input." msgid "" -"The printer preset you created already has a preset with the same name. Do you want to " -"overwrite it?\n" -"\tYes: Overwrite the printer preset with the same name, and filament and process presets " -"with the same preset name will be recreated \n" -"and filament and process presets without the same preset name will be reserve.\n" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" -"The printer preset you created already has a preset with the same name. Do you want to " -"overwrite it?\n" -"\tYes: Overwrite the printer preset with the same name, and filament and process presets " -"with the same preset name will be recreated \n" -"and filament and process presets without the same preset name will be reserved.\n" +"The printer preset you created already has a preset with the same name. Do " +"you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and " +"process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be " +"reserved.\n" "\tCancel: Do not create a preset; return to the creation interface." msgid "You need to select at least one filament preset." @@ -14550,30 +15345,34 @@ msgstr "Leverancier is niet gevonden; selecteer opnieuw." msgid "Current vendor has no models, please reselect." msgstr "De huidige leverancier heeft geen modellen. Selecteer opnieuw." -msgid "You have not selected the vendor and model or inputed the custom vendor and model." +msgid "" +"You have not selected the vendor and model or inputed the custom vendor and " +"model." msgstr "" -"U hebt de verkoper en het model niet geselecteerd of de aangepaste verkoper en het " -"aangepaste model niet ingevoerd." +"U hebt de verkoper en het model niet geselecteerd of de aangepaste verkoper " +"en het aangepaste model niet ingevoerd." msgid "" -"There may be escape characters in the custom printer vendor or model. Please delete and re-" -"enter." +"There may be escape characters in the custom printer vendor or model. Please " +"delete and re-enter." msgstr "" -"Er kunnen escape-tekens staan in de aangepaste printerverkoper of het aangepaste " -"printermodel. Verwijder ze en voer ze opnieuw in." +"Er kunnen escape-tekens staan in de aangepaste printerverkoper of het " +"aangepaste printermodel. Verwijder ze en voer ze opnieuw in." -msgid "All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgid "" +"All inputs in the custom printer vendor or model are spaces. Please re-enter." msgstr "" -"Alle invoer in de aangepaste printerverkoper of het aangepaste printermodel zijn spaties. " -"Voer opnieuw in." +"Alle invoer in de aangepaste printerverkoper of het aangepaste printermodel " +"zijn spaties. Voer opnieuw in." msgid "Please check bed printable shape and origin input." msgstr "Controleer de bedrukbare vorm en oorsprongsinvoer." -msgid "You have not yet selected the printer to replace the nozzle, please choose." +msgid "" +"You have not yet selected the printer to replace the nozzle, please choose." msgstr "" -"Je hebt de printer waarvoor je het mondstuk wilt vervangen nog niet geselecteerd; kies een " -"printer." +"Je hebt de printer waarvoor je het mondstuk wilt vervangen nog niet " +"geselecteerd; kies een printer." msgid "Create Printer Successful" msgstr "Printer succesvol gemaakt" @@ -14592,27 +15391,31 @@ msgstr "Aangemaakt filament" msgid "" "Please go to filament setting to edit your presets if you need.\n" -"Please note that nozzle temperature, hot bed temperature, and maximum volumetric speed has " -"a significant impact on printing quality. Please set them carefully." +"Please note that nozzle temperature, hot bed temperature, and maximum " +"volumetric speed has a significant impact on printing quality. Please set " +"them carefully." msgstr "" -"Ga naar filamentinstellingen om uw voorinstellingen te bewerken als dat nodig is.\n" -"Houd er rekening mee dat de spuitmondtemperatuur, warmbedtemperatuur en maximale " -"volumetrische snelheid elk een aanzienlijke invloed hebben op de printkwaliteit. Stel ze " -"daarom zorgvuldig in." +"Ga naar filamentinstellingen om uw voorinstellingen te bewerken als dat " +"nodig is.\n" +"Houd er rekening mee dat de spuitmondtemperatuur, warmbedtemperatuur en " +"maximale volumetrische snelheid elk een aanzienlijke invloed hebben op de " +"printkwaliteit. Stel ze daarom zorgvuldig in." msgid "" "\n" "\n" -"Orca has detected that your user presets synchronization function is not enabled, which may " -"result in unsuccessful Filament settings on the Device page. \n" +"Orca has detected that your user presets synchronization function is not " +"enabled, which may result in unsuccessful Filament settings on the Device " +"page. \n" "Click \"Sync user presets\" to enable the synchronization function." msgstr "" "\n" "\n" -"Orca heeft gedetecteerd dat de synchronisatiefunctie voor uw gebruikersinstellingen niet is " -"ingeschakeld, wat kan resulteren in mislukte Filament-instellingen op de pagina Apparaat.\n" -"Klik op \"Gebruikersinstellingen synchroniseren\" om de synchronisatiefunctie in te " -"schakelen." +"Orca heeft gedetecteerd dat de synchronisatiefunctie voor uw " +"gebruikersinstellingen niet is ingeschakeld, wat kan resulteren in mislukte " +"Filament-instellingen op de pagina Apparaat.\n" +"Klik op \"Gebruikersinstellingen synchroniseren\" om de " +"synchronisatiefunctie in te schakelen." msgid "Printer Setting" msgstr "Printerinstelling" @@ -14652,13 +15455,15 @@ msgstr "Exporteren is gelukt" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to clear it and " -"rebuild it.\n" -"If not, a time suffix will be added, and you can modify the name after creation." +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." msgstr "" -"The '%s' folder already exists in the current directory. Do you want to clear it and " -"rebuild it?\n" -"If not, a time suffix will be added, and you can modify the name after creation." +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it?\n" +"If not, a time suffix will be added, and you can modify the name after " +"creation." msgid "" "Printer and all the filament&&process presets that belongs to the printer. \n" @@ -14672,35 +15477,40 @@ msgstr "" "Ingestelde preset vullingsset van de gebruiker.\n" "Kan worden gedeeld met anderen." -msgid "Only display printer names with changes to printer, filament, and process presets." +msgid "" +"Only display printer names with changes to printer, filament, and process " +"presets." msgstr "" -"Alleen printers met wijzigingen in printer-, filament- en proces presets worden weergegeven." +"Alleen printers met wijzigingen in printer-, filament- en proces presets " +"worden weergegeven." msgid "Only display the filament names with changes to filament presets." msgstr "Geef alleen de filamentnamen weer met wijzigingen in filament presets." msgid "" -"Only printer names with user printer presets will be displayed, and each preset you choose " -"will be exported as a zip." +"Only printer names with user printer presets will be displayed, and each " +"preset you choose will be exported as a zip." msgstr "" -"Alleen printernamen met gebruikersprinter presets worden weergegeven en elke preset die je " -"kiest, wordt als zip geëxporteerd." +"Alleen printernamen met gebruikersprinter presets worden weergegeven en elke " +"preset die je kiest, wordt als zip geëxporteerd." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be exported as a zip." +"and all user filament presets in each filament name you select will be " +"exported as a zip." msgstr "" "Alleen de filamentnamen met gebruikers presets worden weergegeven, \n" -"en alle gebruikers presets in elke filamentnaam die u selecteert, worden geëxporteerd als " -"zip-bestand." +"en alle gebruikers presets in elke filamentnaam die u selecteert, worden " +"geëxporteerd als zip-bestand." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported as a zip." +"and all user process presets in each printer name you select will be " +"exported as a zip." msgstr "" "Alleen printernamen met gewijzigde proces presets worden weergegeven, \n" -"en alle gebruikersproces presets in elke printernaam die u selecteert, worden als zip " -"geëxporteerd." +"en alle gebruikersproces presets in elke printernaam die u selecteert, " +"worden als zip geëxporteerd." msgid "Please select at least one printer or filament." msgstr "Selecteer ten minste één printer of filament." @@ -14718,14 +15528,15 @@ msgid "Filament presets under this filament" msgstr "Voorinstellingen voor filament onder dit filament" msgid "" -"Note: If the only preset under this filament is deleted, the filament will be deleted after " -"exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." msgstr "" -"Opmerking: Als de enige preset onder deze gloeidraad wordt verwijderd, wordt de gloeidraad " -"verwijderd na het verlaten van het dialoogvenster." +"Opmerking: Als de enige preset onder deze gloeidraad wordt verwijderd, wordt " +"de gloeidraad verwijderd na het verlaten van het dialoogvenster." msgid "Presets inherited by other presets can not be deleted" -msgstr "Presets die door andere presets worden geërfd, kunnen niet worden verwijderd" +msgstr "" +"Presets die door andere presets worden geërfd, kunnen niet worden verwijderd" msgid "The following presets inherits this preset." msgid_plural "The following preset inherits this preset." @@ -14749,11 +15560,13 @@ msgstr "Draad verwijderen" msgid "" "All the filament presets belong to this filament would be deleted. \n" -"If you are using this filament on your printer, please reset the filament information for " -"that slot." +"If you are using this filament on your printer, please reset the filament " +"information for that slot." msgstr "" -"Alle presets van het filament die bij dit filament horen, worden verwijderd. \n" -"Als u dit filament gebruikt in uw printer, reset dan de filamentinformatie voor die sleuf." +"Alle presets van het filament die bij dit filament horen, worden " +"verwijderd. \n" +"Als u dit filament gebruikt in uw printer, reset dan de filamentinformatie " +"voor die sleuf." msgid "Delete filament" msgstr "Draad verwijderen" @@ -14790,15 +15603,17 @@ msgid "nozzle memorized: %.1f %s" msgstr "mondstuk onthouden: %.1f %s" msgid "" -"Your nozzle diameter in preset is not consistent with memorized nozzle diameter. Did you " -"change your nozzle lately?" +"Your nozzle diameter in preset is not consistent with memorized nozzle " +"diameter. Did you change your nozzle lately?" msgstr "" -"Uw mondstuk diameter in preset komt niet overeen met de opgeslagen mondstuk diameter. Heeft " -"u uw mondstuk veranderd?" +"Uw mondstuk diameter in preset komt niet overeen met de opgeslagen mondstuk " +"diameter. Heeft u uw mondstuk veranderd?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" -msgstr "*Het afdrukken van %s materiaal met %s kan schade aan het mondstuk veroorzaken" +msgstr "" +"*Het afdrukken van %s materiaal met %s kan schade aan het mondstuk " +"veroorzaken" msgid "Need select printer" msgstr "Printer selecteren" @@ -14807,11 +15622,11 @@ msgid "The start, end or step is not valid value." msgstr "Het begin, einde of stap is geen geldige waarde." msgid "" -"Unable to calibrate: maybe because the set calibration value range is too large, or the " -"step is too small" +"Unable to calibrate: maybe because the set calibration value range is too " +"large, or the step is too small" msgstr "" -"Kan niet kalibreren: misschien omdat het bereik van de ingestelde kalibratiewaarde te groot " -"is, of omdat de stap te klein is" +"Kan niet kalibreren: misschien omdat het bereik van de ingestelde " +"kalibratiewaarde te groot is, of omdat de stap te klein is" msgid "Physical Printer" msgstr "Fysieke printer" @@ -14838,11 +15653,11 @@ msgid "Replace the BambuLab's device tab with print host webui" msgstr "Vervang het apparaattabblad van BambuLab door de printhost webui" msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed " -"certificate." +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." msgstr "" -"HTTPS CA-bestand is optioneel. Het is alleen nodig als je HTTPS gebruikt met een " -"zelfondertekend certificaat." +"HTTPS CA-bestand is optioneel. Het is alleen nodig als je HTTPS gebruikt met " +"een zelfondertekend certificaat." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "Certificaatbestanden (*.crt, *.pem)|*.crt;*.pem|Alle bestanden|*.*" @@ -14852,15 +15667,18 @@ msgstr "Open CA-certificaatbestand" #, c-format, boost-format msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." msgstr "" -"Op dit systeem gebruikt %s HTTPS-certificaten uit de systeemcertificaatopslag of de " -"sleutelhanger." +"Op dit systeem gebruikt %s HTTPS-certificaten uit de " +"systeemcertificaatopslag of de sleutelhanger." -msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." -msgstr "" -"Om een aangepast CA-bestand te gebruiken, importeert u uw CA-bestand in Certificate Store / " +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " "Keychain." +msgstr "" +"Om een aangepast CA-bestand te gebruiken, importeert u uw CA-bestand in " +"Certificate Store / Keychain." msgid "Login/Test" msgstr "Inloggen/Test" @@ -14906,10 +15724,11 @@ msgid "Could not connect to FlashAir" msgstr "Kan geen verbinding maken met FlashAir" msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " +"is required." msgstr "" -"Opmerking: FlashAir met firmware 2.00.02 of nieuwer en geactiveerde uploadfunctie is " -"vereist." +"Opmerking: FlashAir met firmware 2.00.02 of nieuwer en geactiveerde " +"uploadfunctie is vereist." msgid "Connection to MKS works correctly." msgstr "Connection to MKS is working correctly." @@ -15000,232 +15819,258 @@ msgstr "" "Fout: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines and high printing " -"quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines " +"and high printing quality. It is suitable for most general printing cases." msgstr "" -"Het heeft een kleine laaghoogte en resulteert in bijna verwaarloosbare laaglijnen en een " -"hoge afdrukkwaliteit. Het is geschikt voor de meeste algemene afdrukgevallen." +"Het heeft een kleine laaghoogte en resulteert in bijna verwaarloosbare " +"laaglijnen en een hoge afdrukkwaliteit. Het is geschikt voor de meeste " +"algemene afdrukgevallen." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and acceleration, " -"and the sparse infill pattern is Gyroid. So, it results in much higher printing quality, " -"but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " +"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " +"much higher printing quality, but a much longer printing time." msgstr "" -"Vergeleken met het standaardprofiel van een 0,2 mm mondstuk, heeft het lagere snelheden en " -"acceleratie, en het spaarzame infill patroon is Gyroid. Dit resulteert in een veel hogere " -"printkwaliteit maar ook een veel langere printtijd." +"Vergeleken met het standaardprofiel van een 0,2 mm mondstuk, heeft het " +"lagere snelheden en acceleratie, en het spaarzame infill patroon is Gyroid. " +"Dit resulteert in een veel hogere printkwaliteit maar ook een veel langere " +"printtijd." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer " -"height, and results in almost negligible layer lines, and slightly shorter printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " +"bigger layer height, and results in almost negligible layer lines, and " +"slightly shorter printing time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer " -"height. This results in almost negligible layer lines and slightly longer print time." +"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " +"bigger layer height. This results in almost negligible layer lines and " +"slightly longer print time." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height, and " -"results in slightly visible layer lines, but shorter printing time." -msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height. This " -"results in slightly visible layer lines but shorter print time." - -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height, and " -"results in almost invisible layer lines and higher printing quality, but shorter printing " +"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " +"height, and results in slightly visible layer lines, but shorter printing " "time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height. This " -"results in almost invisible layer lines and higher print quality but longer print time." +"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " +"height. This results in slightly visible layer lines but shorter print time." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower " -"speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in almost " -"invisible layer lines and much higher printing quality, but much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"height, and results in almost invisible layer lines and higher printing " +"quality, but shorter printing time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower " -"speeds and acceleration, and the sparse infill pattern is Gyroid. This results in almost " -"invisible layer lines and much higher print quality but much longer print time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"height. This results in almost invisible layer lines and higher print " +"quality but longer print time." msgid "" -"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height, and " -"results in minimal layer lines and higher printing quality, but shorter printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"lines, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in almost invisible layer lines and much higher " +"printing quality, but much longer printing time." msgstr "" -"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height. This " -"results in minimal layer lines and higher print quality but longer print time." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"lines, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. This results in almost invisible layer lines and much higher print " +"quality but much longer print time." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower " -"speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in minimal " -"layer lines and much higher printing quality, but much longer printing time." +"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer " +"height, and results in minimal layer lines and higher printing quality, but " +"shorter printing time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower " -"speeds and acceleration, and the sparse infill pattern is Gyroid. This results in minimal " -"layer lines and much higher print quality but much longer print time." +"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer " +"height. This results in minimal layer lines and higher print quality but " +"longer print time." msgid "" -"It has a general layer height, and results in general layer lines and printing quality. It " -"is suitable for most general printing cases." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"lines, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in minimal layer lines and much higher printing " +"quality, but much longer printing time." msgstr "" -"Het heeft een normale laaghoogte en resulteert in gemiddelde laaglijnen en afdrukkwaliteit. " -"Het is geschikt voor de meeste afdrukgevallen." +"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " +"lines, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. This results in minimal layer lines and much higher print quality " +"but much longer print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops and a higher " -"sparse infill density. So, it results in higher strength of the prints, but more filament " -"consumption and longer printing time." +"It has a general layer height, and results in general layer lines and " +"printing quality. It is suitable for most general printing cases." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops and a higher " -"sparse infill density. This results in higher print strength but more filament consumption " -"and longer print time." +"Het heeft een normale laaghoogte en resulteert in gemiddelde laaglijnen en " +"afdrukkwaliteit. Het is geschikt voor de meeste afdrukgevallen." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and " -"results in more apparent layer lines and lower printing quality, but slightly shorter " -"printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops " +"and a higher sparse infill density. So, it results in higher strength of the " +"prints, but more filament consumption and longer printing time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height. This " -"results in more apparent layer lines and lower print quality but slightly shorter print " -"time." +"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops " +"and a higher sparse infill density. This results in higher print strength " +"but more filament consumption and longer print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and " -"results in more apparent layer lines and lower printing quality, but shorter printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " +"height, and results in more apparent layer lines and lower printing quality, " +"but slightly shorter printing time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height. This " -"results in more apparent layer lines and lower print quality but shorter print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " +"height. This results in more apparent layer lines and lower print quality " +"but slightly shorter print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and " -"results in less apparent layer lines and higher printing quality, but longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " +"height, and results in more apparent layer lines and lower printing quality, " +"but shorter printing time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height. This " -"results in less apparent layer lines and higher print quality but longer print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " +"height. This results in more apparent layer lines and lower print quality " +"but shorter print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower " -"speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in less " -"apparent layer lines and much higher printing quality, but much longer printing time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower " -"speeds and acceleration, and the sparse infill pattern is Gyroid. This results in less " -"apparent layer lines and much higher print quality but much longer print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height. This results in less apparent layer lines and higher print quality " +"but longer print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and " -"results in almost negligible layer lines and higher printing quality, but longer printing " +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in less apparent layer lines and much higher printing " +"quality, but much longer printing time." +msgstr "" +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. This results in less apparent layer lines and much higher print " +"quality but much longer print time." + +msgid "" +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, and results in almost negligible layer lines and higher printing " +"quality, but longer printing time." +msgstr "" +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height. This results in almost negligible layer lines and higher print " +"quality but longer print time." + +msgid "" +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. So, it results in almost negligible layer lines and much higher " +"printing quality, but much longer printing time." +msgstr "" +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, lower speeds and acceleration, and the sparse infill pattern is " +"Gyroid. This results in almost negligible layer lines and much higher print " +"quality but much longer print time." + +msgid "" +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height, and results in almost negligible layer lines and longer printing " "time." msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height. This " -"results in almost negligible layer lines and higher print quality but longer print time." +"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " +"height. This results in almost negligible layer lines and longer print time." msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower " -"speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in almost " -"negligible layer lines and much higher printing quality, but much longer printing time." -msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower " -"speeds and acceleration, and the sparse infill pattern is Gyroid. This results in almost " -"negligible layer lines and much higher print quality but much longer print time." - -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and " -"results in almost negligible layer lines and longer printing time." -msgstr "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height. This " -"results in almost negligible layer lines and longer print time." - -msgid "" -"It has a big layer height, and results in apparent layer lines and ordinary printing " -"quality and printing time." +"It has a big layer height, and results in apparent layer lines and ordinary " +"printing quality and printing time." msgstr "" "De laagdikte is groot, wat resulteert in zichtbare laaglijnen en een normale " "afdrukkwaliteit en afdruktijd." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops and a higher " -"sparse infill density. So, it results in higher strength of the prints, but more filament " -"consumption and longer printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops " +"and a higher sparse infill density. So, it results in higher strength of the " +"prints, but more filament consumption and longer printing time." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops and a higher " -"sparse infill density. This results in higher print strength but more filament consumption " -"and longer print time." +"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops " +"and a higher sparse infill density. This results in higher print strength " +"but more filament consumption and longer print time." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and " -"results in more apparent layer lines and lower printing quality, but shorter printing time " -"in some printing cases." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " +"height, and results in more apparent layer lines and lower printing quality, " +"but shorter printing time in some printing cases." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height. This " -"results in more apparent layer lines and lower print quality but shorter print time in some " -"cases." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " +"height. This results in more apparent layer lines and lower print quality " +"but shorter print time in some cases." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and " -"results in much more apparent layer lines and much lower printing quality, but shorter " -"printing time in some printing cases." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " +"height, and results in much more apparent layer lines and much lower " +"printing quality, but shorter printing time in some printing cases." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height. This " -"results in much more apparent layer lines and much lower print quality, but shorter print " -"time in some cases." +"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " +"height. This results in much more apparent layer lines and much lower print " +"quality, but shorter print time in some cases." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and " -"results in less apparent layer lines and slight higher printing quality, but longer " -"printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " +"height, and results in less apparent layer lines and slight higher printing " +"quality, but longer printing time." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height. This " -"results in less apparent layer lines and slightly higher print quality but longer print " -"time." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " +"height. This results in less apparent layer lines and slightly higher print " +"quality but longer print time." msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and " -"results in less apparent layer lines and higher printing quality, but longer printing time." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height. This " -"results in less apparent layer lines and higher print quality but longer print time." +"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " +"height. This results in less apparent layer lines and higher print quality " +"but longer print time." msgid "" -"It has a very big layer height, and results in very apparent layer lines, low printing " -"quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, " +"low printing quality and general printing time." msgstr "" -"De laagdikte is erg groot, wat resulteert in duidelijke lijnen, een lage afdrukkwaliteit en " -"een kortere afdruktijd." +"De laagdikte is erg groot, wat resulteert in duidelijke lijnen, een lage " +"afdrukkwaliteit en een kortere afdruktijd." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and " -"results in very apparent layer lines and much lower printing quality, but shorter printing " -"time in some printing cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " +"height, and results in very apparent layer lines and much lower printing " +"quality, but shorter printing time in some printing cases." msgstr "" -"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height. This " -"results in very apparent layer lines and much lower print quality but shorter print time in " -"some cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " +"height. This results in very apparent layer lines and much lower print " +"quality but shorter print time in some cases." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer height, " -"and results in extremely apparent layer lines and much lower printing quality, but much " -"shorter printing time in some printing cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " +"layer height, and results in extremely apparent layer lines and much lower " +"printing quality, but much shorter printing time in some printing cases." msgstr "" -"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer height. " -"This results in extremely apparent layer lines and much lower print quality but much " -"shorter print time in some cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " +"layer height. This results in extremely apparent layer lines and much lower " +"print quality but much shorter print time in some cases." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer " -"height, and results in slightly less but still apparent layer lines and slightly higher " -"printing quality, but longer printing time in some printing cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a slightly " +"smaller layer height, and results in slightly less but still apparent layer " +"lines and slightly higher printing quality, but longer printing time in some " +"printing cases." msgstr "" -"Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer " -"height. This results in slightly less but still apparent layer lines and slightly higher " -"print quality, but longer print time in some cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a slightly " +"smaller layer height. This results in slightly less but still apparent layer " +"lines and slightly higher print quality, but longer print time in some cases." msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and " -"results in less but still apparent layer lines and slightly higher printing quality, but " -"longer printing time in some printing cases." +"Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " +"height, and results in less but still apparent layer lines and slightly " +"higher printing quality, but longer printing time in some printing cases." msgstr "" -"Vergeleken met het standaardprofiel van een 0,8 mm mondstuk, heeft het een kleinere " -"laaghoogte. Dit resulteert in minder maar nog steeds zichtbare laaglijnen en een iets " -"hogere printkwaliteit, maar in sommige gevallen een langere printtijd." +"Vergeleken met het standaardprofiel van een 0,8 mm mondstuk, heeft het een " +"kleinere laaghoogte. Dit resulteert in minder maar nog steeds zichtbare " +"laaglijnen en een iets hogere printkwaliteit, maar in sommige gevallen een " +"langere printtijd." msgid "Connected to Obico successfully!" msgstr "" @@ -15269,21 +16114,24 @@ msgstr "Gebruiker geannuleerd." #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" -"Did you know that turning on precise wall can improve precision and layer consistency?" +"Did you know that turning on precise wall can improve precision and layer " +"consistency?" msgstr "" "Precieze muur\n" -"Wist u dat het inschakelen van de precieze muur de precisie en consistentie van de laag kan " -"verbeteren?" +"Wist u dat het inschakelen van de precieze muur de precisie en consistentie " +"van de laag kan verbeteren?" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" "Sandwich mode\n" -"Did you know that you can use sandwich mode (inner-outer-inner) to improve precision and " -"layer consistency if your model doesn't have very steep overhangs?" +"Did you know that you can use sandwich mode (inner-outer-inner) to improve " +"precision and layer consistency if your model doesn't have very steep " +"overhangs?" msgstr "" "Sandwichmodus\n" -"Wist u dat u de sandwichmodus (binnen-buiten-binnen) kunt gebruiken om de precisie en " -"consistentie van de laag te verbeteren als uw model geen erg steile overhangen heeft?" +"Wist u dat u de sandwichmodus (binnen-buiten-binnen) kunt gebruiken om de " +"precisie en consistentie van de laag te verbeteren als uw model geen erg " +"steile overhangen heeft?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -15296,12 +16144,12 @@ msgstr "" #: resources/data/hints.ini: [hint:Calibration] msgid "" "Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our beloved " -"calibration solution in OrcaSlicer." +"Did you know that calibrating your printer can do wonders? Check out our " +"beloved calibration solution in OrcaSlicer." msgstr "" "Kalibratie\n" -"Wist u dat het kalibreren van uw printer wonderen kan doen? Bekijk onze geliefde " -"kalibratieoplossing in OrcaSlicer." +"Wist u dat het kalibreren van uw printer wonderen kan doen? Bekijk onze " +"geliefde kalibratieoplossing in OrcaSlicer." #: resources/data/hints.ini: [hint:Auxiliary fan] msgid "" @@ -15325,54 +16173,58 @@ msgid "" "You can turn on/off the G-code window by pressing the C key." msgstr "" "G-codevenster\n" -"U kunt het G-codevenster in- of uitschakelen door op de C-toets te drukken." +"U kunt het G-codevenster in- of uitschakelen door op de C-toets te " +"drukken." #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can switch between Prepare and Preview workspaces by pressing the Tab key." +"You can switch between Prepare and Preview workspaces by " +"pressing the Tab key." msgstr "" "Werkruimten wisselen\n" -"U kunt schakelen tussen de werkruimten Voorbereiden en Voorvertoning door op " -"de Tab-toets te drukken." +"U kunt schakelen tussen de werkruimten Voorbereiden en " +"Voorvertoning door op de Tab-toets te drukken." #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene " -"operations." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " +"3D scene operations." msgstr "" "Hoe sneltoetsen te gebruiken\n" -"Wist u dat Orca Slicer een breed scala aan sneltoetsen en 3D-scènebewerkingen biedt." +"Wist u dat Orca Slicer een breed scala aan sneltoetsen en 3D-" +"scènebewerkingen biedt." #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve the surface " -"quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" msgstr "" "Achteruit op oneven\n" -"Wist u dat de functie Achteruit op oneven de oppervlaktekwaliteit van uw overhangen " -"aanzienlijk kan verbeteren?" +"Wist u dat de functie Achteruit op oneven de oppervlaktekwaliteit van " +"uw overhangen aanzienlijk kan verbeteren?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the cutting tool?" +"Did you know that you can cut a model at any angle and position with the " +"cutting tool?" msgstr "" "Snijgereedschap\n" -"Wist u dat u een model in elke hoek en positie kunt snijden met het snijgereedschap?" +"Wist u dat u een model in elke hoek en positie kunt snijden met het " +"snijgereedschap?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" "Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on " -"the Windows system?" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " +"problems on the Windows system?" msgstr "" "Model repareren\n" -"Wist je dat je een beschadigd 3D-model kunt repareren om veel snijproblemen op het Windows-" -"systeem te voorkomen?" +"Wist je dat je een beschadigd 3D-model kunt repareren om veel snijproblemen " +"op het Windows-systeem te voorkomen?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -15393,189 +16245,204 @@ msgstr "" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for printing by a simple " -"click?" +"Did you know that you can rotate objects to an optimal orientation for " +"printing by a simple click?" msgstr "" "Automatische oriëntatie\n" -"Wist je dat je met een simpele klik objecten kunt roteren naar een optimale oriëntatie voor " -"afdrukken?" +"Wist je dat je met een simpele klik objecten kunt roteren naar een optimale " +"oriëntatie voor afdrukken?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces sits on the print " -"bed? Select the \"Place on face\" function or press the F key." +"Did you know that you can quickly orient a model so that one of its faces " +"sits on the print bed? Select the \"Place on face\" function or press the " +"F key." msgstr "" "Op gekozen selectie leggen\n" -"Wist u dat u een model snel zo kunt oriënteren dat een van de gezichten op het printbed " -"ligt? Selecteer de functie \"Op selectie leggen\" of druk op de F toets." +"Wist u dat u een model snel zo kunt oriënteren dat een van de gezichten op " +"het printbed ligt? Selecteer de functie \"Op selectie leggen\" of druk op de " +"F toets." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change settings for each " -"object/part?" +"Did you know that you can view all objects/parts in a list and change " +"settings for each object/part?" msgstr "" "Objectenlijst\n" -"Wist u dat u alle objecten/onderdelen in een lijst kunt bekijken en de instellingen voor " -"ieder object/onderdeel kunt wijzigen?" +"Wist u dat u alle objecten/onderdelen in een lijst kunt bekijken en de " +"instellingen voor ieder object/onderdeel kunt wijzigen?" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" "Search Functionality\n" -"Did you know that you use the Search tool to quickly find a specific Orca Slicer setting?" +"Did you know that you use the Search tool to quickly find a specific Orca " +"Slicer setting?" msgstr "" "Zoekfunctionaliteit\n" -"Wist u dat u de zoekfunctie gebruikt om snel een specifieke Orca Slicer-instelling te " -"vinden?" +"Wist u dat u de zoekfunctie gebruikt om snel een specifieke Orca Slicer-" +"instelling te vinden?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh " -"feature? Right-click the model and select Simplify model." +"Did you know that you can reduce the number of triangles in a mesh using the " +"Simplify mesh feature? Right-click the model and select Simplify model." msgstr "" "Model vereenvoudigen\n" -"Wist u dat u het aantal driehoeken in een mesh kunt verminderen met de mesh functie " -"Vereenvoudigen? Klik met de rechtermuisknop op het model en selecteer Model vereenvoudigen." +"Wist u dat u het aantal driehoeken in een mesh kunt verminderen met de mesh " +"functie Vereenvoudigen? Klik met de rechtermuisknop op het model en " +"selecteer Model vereenvoudigen." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change settings for each " -"object/part?" +"Did you know that you can view all objects/parts on a table and change " +"settings for each object/part?" msgstr "" "Tabel met slicing parameters\n" -"Wist je dat je alle objecten/onderdelen op een tabel kunt bekijken en instellingen voor " -"ieder object/onderdeel kunt wijzigen?" +"Wist je dat je alle objecten/onderdelen op een tabel kunt bekijken en " +"instellingen voor ieder object/onderdeel kunt wijzigen?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy colorizing or " -"printing?" +"Did you know that you can split a big object into small ones for easy " +"colorizing or printing?" msgstr "" "Splitsen naar objecten/delen\n" -"Wist u dat u een groot object kunt splitsen in kleine delen, zodat u het gemakkelijk kunt " -"inkleuren of afdrukken?" +"Wist u dat u een groot object kunt splitsen in kleine delen, zodat u het " +"gemakkelijk kunt inkleuren of afdrukken?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative part modifier? " -"That way you can, for example, create easily resizable holes directly in Orca Slicer." +"Did you know that you can subtract one mesh from another using the Negative " +"part modifier? That way you can, for example, create easily resizable holes " +"directly in Orca Slicer." msgstr "" "Een deel aftrekken\n" -"Wist u dat u een mesh van een andere kunt aftrekken met de Negatief deel aanpasser? Zo kunt " -"u bijvoorbeeld gemakkelijk aanpasbare gaten rechtstreeks in Orca Slicer maken." +"Wist u dat u een mesh van een andere kunt aftrekken met de Negatief deel " +"aanpasser? Zo kunt u bijvoorbeeld gemakkelijk aanpasbare gaten rechtstreeks " +"in Orca Slicer maken." #: resources/data/hints.ini: [hint:STEP] msgid "" "STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file instead of an " -"STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a lower resolution " -"STL. Give it a try!" +"Did you know that you can improve your print quality by slicing a STEP file " +"instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a " +"lower resolution STL. Give it a try!" msgstr "" "STEP\n" -"Wist u dat u uw afdrukkwaliteit kunt verbeteren door een STEP-bestand te slicen in plaats " -"van een STL?\n" -"Orca Slicer ondersteunt het slicen van STEP-bestanden, wat vloeiendere resultaten oplevert " -"dan een STL met een lagere resolutie. Probeer het eens!" +"Wist u dat u uw afdrukkwaliteit kunt verbeteren door een STEP-bestand te " +"slicen in plaats van een STL?\n" +"Orca Slicer ondersteunt het slicen van STEP-bestanden, wat vloeiendere " +"resultaten oplevert dan een STL met een lagere resolutie. Probeer het eens!" #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even paint it on your " -"print, to have it in a less visible location? This improves the overall look of your model. " -"Check it out!" +"Did you know that you can customize the location of the Z seam, and even " +"paint it on your print, to have it in a less visible location? This improves " +"the overall look of your model. Check it out!" msgstr "" "Plaats van de Z-naad\n" -"Wist je dat je de plaats van de Z-naad kunt aanpassen, en zelfs op je afdruk kunt " -"schilderen, zodat hij minder zichtbaar is? Dit verbetert de algemene look van je model. " -"Kijk maar!" +"Wist je dat je de plaats van de Z-naad kunt aanpassen, en zelfs op je afdruk " +"kunt schilderen, zodat hij minder zichtbaar is? Dit verbetert de algemene " +"look van je model. Kijk maar!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking prints? Depending on " -"the material, you can improve the overall finish of the printed model by doing some fine-" -"tuning." +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." msgstr "" "Nauwkeurige afstelling van flow rate\n" -"Wist u dat de flow rate nauwkeurig kan worden ingesteld voor nog mooiere afdrukken? " -"Afhankelijk van het materiaal kunt u de algehele afwerking van het geprinte model " -"verbeteren door wat fijnafstelling uit te voeren." +"Wist u dat de flow rate nauwkeurig kan worden ingesteld voor nog mooiere " +"afdrukken? Afhankelijk van het materiaal kunt u de algehele afwerking van " +"het geprinte model verbeteren door wat fijnafstelling uit te voeren." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into individual plates " -"ready to print? This will simplify the process of keeping track of all the parts." +"Did you know that you can split a model that has a lot of parts into " +"individual plates ready to print? This will simplify the process of keeping " +"track of all the parts." msgstr "" "Uw afdrukken opsplitsen in platen\n" -"Wist u dat u een model met veel onderdelen kunt splitsen in afzonderlijke platen die klaar " -"zijn om te printen? Dit vereenvoudigt het proces van het bijhouden van alle onderdelen." +"Wist u dat u een model met veel onderdelen kunt splitsen in afzonderlijke " +"platen die klaar zijn om te printen? Dit vereenvoudigt het proces van het " +"bijhouden van alle onderdelen." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive Layer Height " -"option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive " +"Layer Height option? Check it out!" msgstr "" "Versnel uw afdrukken met Adaptieve Laag Hoogte\n" -"Wist u dat u een model nog sneller kunt afdrukken door de optie Adaptieve Laag Hoogte te " -"gebruiken? Bekijk het eens!" +"Wist u dat u een model nog sneller kunt afdrukken door de optie Adaptieve " +"Laag Hoogte te gebruiken? Bekijk het eens!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature makes it easy " -"to place the support material only on the sections of the model that actually need it." +"Did you know that you can paint the location of your supports? This feature " +"makes it easy to place the support material only on the sections of the " +"model that actually need it." msgstr "" "Ondersteuning schilderen\n" -"Wist je dat je de locatie van je ondersteuning kunt schilderen? Deze functie maakt het " -"eenvoudig om het ondersteuningsmateriaal alleen op de delen van het model te plaatsen die " -"het echt nodig hebben." +"Wist je dat je de locatie van je ondersteuning kunt schilderen? Deze functie " +"maakt het eenvoudig om het ondersteuningsmateriaal alleen op de delen van " +"het model te plaatsen die het echt nodig hebben." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree supports work great " -"for organic models, while saving filament and improving print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree " +"supports work great for organic models, while saving filament and improving " +"print speed. Check them out!" msgstr "" "Verschillende soorten ondersteuningen\n" -"Wist je dat je kunt kiezen uit meerdere soorten ondersteuningen? Tree Support werkt " -"uitstekend voor organische modellen, bespaart filament en verbetert de printsnelheid. " -"Bekijk ze eens!" +"Wist je dat je kunt kiezen uit meerdere soorten ondersteuningen? Tree " +"Support werkt uitstekend voor organische modellen, bespaart filament en " +"verbetert de printsnelheid. Bekijk ze eens!" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it successfully? " -"Higher temperature and lower speed are always recommended for the best results." +"Did you know that Silk filament needs special consideration to print it " +"successfully? Higher temperature and lower speed are always recommended for " +"the best results." msgstr "" "Silk Filament printen \n" -"Wist u dat Silk filament speciale aandacht nodig heeft om succesvol te printen? Voor het " -"beste resultaat wordt altijd een hogere temperatuur en een lagere snelheid aanbevolen." +"Wist u dat Silk filament speciale aandacht nodig heeft om succesvol te " +"printen? Voor het beste resultaat wordt altijd een hogere temperatuur en een " +"lagere snelheid aanbevolen." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with the printing " -"surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with " +"the printing surface, it's recommended to use a brim?" msgstr "" "Brim voor betere hechting\n" -"Wist u dat wanneer gedrukte modellen een kleine contactinterface met het printoppervlak " -"hebben, het aanbevolen is om een brim te gebruiken?" +"Wist u dat wanneer gedrukte modellen een kleine contactinterface met het " +"printoppervlak hebben, het aanbevolen is om een brim te gebruiken?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at one time?" +"Did you know that you can set slicing parameters for all selected objects at " +"one time?" msgstr "" "Parameters instellen voor meerdere objecten\n" -"Wist u dat u slicing parameters kunt instellen voor alle geselecteerde objecten tegelijk?" +"Wist u dat u slicing parameters kunt instellen voor alle geselecteerde " +"objecten tegelijk?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" @@ -15588,108 +16455,129 @@ msgstr "" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into support/objects/" -"infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into " +"support/objects/infill during filament change?" msgstr "" "Flush in support/voorwerpen/infill\n" -"Wist u dat u minder filament verspilt door het tijdens het verwisselen van filament in " -"support/objecten/infill te spoelen?" +"Wist u dat u minder filament verspilt door het tijdens het verwisselen van " +"filament in support/objecten/infill te spoelen?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill density to improve " -"the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill " +"density to improve the strength of the model?" msgstr "" "Stekte verbeteren\n" -"Wist je dat je meer wandlussen en een hogere dunne invuldichtheid kunt gebruiken om de " -"sterkte van het model te verbeteren?" +"Wist je dat je meer wandlussen en een hogere dunne invuldichtheid kunt " +"gebruiken om de sterkte van het model te verbeteren?" -#: resources/data/hints.ini: [hint:When need to print with the printer door opened] +#: resources/data/hints.ini: [hint:When need to print with the printer door +#: opened] msgid "" "When need to print with the printer door opened\n" -"Did you know that opening the printer door can reduce the probability of extruder/hotend " -"clogging when printing lower temperature filament with a higher enclosure temperature. More " -"info about this in the Wiki." +"Did you know that opening the printer door can reduce the probability of " +"extruder/hotend clogging when printing lower temperature filament with a " +"higher enclosure temperature. More info about this in the Wiki." msgstr "" "Wanneer moet u printen met de printerdeur open?\n" -"Wist je dat het openen van de printerdeur de kans op verstopping van de extruder/hotend kan " -"verminderen bij het printen van filament met een lagere temperatuur en een hogere " -"omgevingstemperatuur? Er staat meer informatie hierover in de Wiki." +"Wist je dat het openen van de printerdeur de kans op verstopping van de " +"extruder/hotend kan verminderen bij het printen van filament met een lagere " +"temperatuur en een hogere omgevingstemperatuur? Er staat meer informatie " +"hierover in de Wiki." #: resources/data/hints.ini: [hint:Avoid warping] msgid "" "Avoid warping\n" -"Did you know that when printing materials that are prone to warping such as ABS, " -"appropriately increasing the heatbed temperature can reduce the probability of warping." +"Did you know that when printing materials that are prone to warping such as " +"ABS, appropriately increasing the heatbed temperature can reduce the " +"probability of warping." msgstr "" "Kromtrekken voorkomen\n" -"Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, " -"een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan " -"verkleinen?" - -#~ msgid "up to" -#~ msgstr "tot" - -#~ msgid "above" -#~ msgstr "Boven" - -#~ msgid "from" -#~ msgstr "Van" - -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "" -#~ "De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn aangepast." - -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" - -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" - -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+willekeurige pijl" - -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Linker muisknop" - -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Linker muisknop" - -#~ msgid "Ctrl+Any arrow" -#~ msgstr "CTRL+willekeurige pijl" - -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Linker muisknop" - -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Linker muisknop" - -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+muiswiel" - -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Muiswiel" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "CTRL+muiswiel" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+muiswiel" +"Wist je dat bij het printen van materialen die gevoelig zijn voor " +"kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het " +"warmtebed de kans op kromtrekken kan verkleinen?" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not allowed when prime " -#~ "tower is enabled." +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" #~ msgstr "" -#~ "Verschillende mondstukdiameters en verschillende filamentdiameters zijn niet toegestaan " -#~ "als de prime-toren is ingeschakeld." +#~ "Verlaag deze waarde iets (bijvoorbeeld 0,9) om de hoeveelheid materiaal " +#~ "voor bruggen te verminderen, dit om doorzakken te voorkomen." -#~ msgid "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" #~ msgstr "" -#~ "Ooze-preventie wordt momenteel niet ondersteund als de prime tower is ingeschakeld." +#~ "Deze factor beïnvloedt de hoeveelheid materiaal voor de bovenste vaste " +#~ "vulling. Je kunt het iets verminderen om een glad oppervlak te krijgen." -#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." -#~ msgstr "Insluitdiepte van een gesegmenteerd gebied. Nul schakelt deze functie uit." +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Dit is de snelheid voor bruggen en 100% overhangende wanden." + +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Tijd welke nodig is om nieuw filament te laden tijdens het wisselen. " +#~ "Enkel voor statistieken." + +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Tijd welke nodig is om oud filament te lossen tijdens het wisselen. Enkel " +#~ "voor statistieken." + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Tijd voor de printerfirmware (of de MMU 2.0) om nieuw filament te laden " +#~ "tijdens een toolwissel (tijdens het uitvoeren van de T-code). Deze tijd " +#~ "wordt toegevoegd aan de totale printtijd in de tijdsschatting." + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Tijd voor de printerfirmware (of de MMU 2.0) om filament te ontladen " +#~ "tijdens een toolwissel (tijdens het uitvoeren van de T-code). Deze tijd " +#~ "wordt toegevoegd aan de totale printtijd in de tijdsschatting." + +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on. At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials, the actual chamber " +#~ "temperature should not be high to avoid clogs, so 0 (turned off) is " +#~ "highly recommended." + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Verschillende mondstukdiameters en verschillende filamentdiameters zijn " +#~ "niet toegestaan als de prime-toren is ingeschakeld." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze-preventie wordt momenteel niet ondersteund als de prime tower is " +#~ "ingeschakeld." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Insluitdiepte van een gesegmenteerd gebied. Nul schakelt deze functie uit." #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Voer een geldige waarde in (K in 0~0.3)" @@ -15703,55 +16591,60 @@ msgstr "" #~ msgid "" #~ "Please find the details of Flow Dynamics Calibration from our wiki.\n" #~ "\n" -#~ "Usually the calibration is unnecessary. When you start a single color/material print, " -#~ "with the \"flow dynamics calibration\" option checked in the print start menu, the " -#~ "printer will follow the old way, calibrate the filament before the print; When you start " -#~ "a multi color/material print, the printer will use the default compensation parameter " -#~ "for the filament during every filament switch which will have a good result in most " +#~ "Usually the calibration is unnecessary. When you start a single color/" +#~ "material print, with the \"flow dynamics calibration\" option checked in " +#~ "the print start menu, the printer will follow the old way, calibrate the " +#~ "filament before the print; When you start a multi color/material print, " +#~ "the printer will use the default compensation parameter for the filament " +#~ "during every filament switch which will have a good result in most " #~ "cases.\n" #~ "\n" -#~ "Please note there are a few cases that will make the calibration result not reliable: " -#~ "using a texture plate to do the calibration; the build plate does not have good adhesion " -#~ "(please wash the build plate or apply gluestick!) ...You can find more from our wiki.\n" +#~ "Please note there are a few cases that will make the calibration result " +#~ "not reliable: using a texture plate to do the calibration; the build " +#~ "plate does not have good adhesion (please wash the build plate or apply " +#~ "gluestick!) ...You can find more from our wiki.\n" #~ "\n" -#~ "The calibration results have about 10 percent jitter in our test, which may cause the " -#~ "result not exactly the same in each calibration. We are still investigating the root " -#~ "cause to do improvements with new updates." +#~ "The calibration results have about 10 percent jitter in our test, which " +#~ "may cause the result not exactly the same in each calibration. We are " +#~ "still investigating the root cause to do improvements with new updates." #~ msgstr "" #~ "De details van Flow Dynamics Calibration vindt u op onze wiki.\n" #~ "\n" -#~ "Meestal is kalibratie niet nodig. Als je een print met één kleur/materiaal start en de " -#~ "optie \"kalibratie van de stroomdynamica\" is aangevinkt in het startmenu van de " -#~ "printer, dan zal de printer de oude manier volgen en het filament kalibreren voor het " -#~ "printen; als je een print met meerdere kleuren/materialen start, dan zal de printer de " -#~ "standaard compensatieparameter voor het filament gebruiken tijdens elke filamentwissel, " -#~ "wat in de meeste gevallen een goed resultaat zal opleveren.\n" +#~ "Meestal is kalibratie niet nodig. Als je een print met één kleur/" +#~ "materiaal start en de optie \"kalibratie van de stroomdynamica\" is " +#~ "aangevinkt in het startmenu van de printer, dan zal de printer de oude " +#~ "manier volgen en het filament kalibreren voor het printen; als je een " +#~ "print met meerdere kleuren/materialen start, dan zal de printer de " +#~ "standaard compensatieparameter voor het filament gebruiken tijdens elke " +#~ "filamentwissel, wat in de meeste gevallen een goed resultaat zal " +#~ "opleveren.\n" #~ "\n" -#~ "Let op: er zijn een paar gevallen waardoor het kalibratieresultaat niet betrouwbaar is: " -#~ "als je een textuurplaat gebruikt om de kalibratie uit te voeren; als de bouwplaat geen " -#~ "goede hechting heeft (was de bouwplaat of breng lijm aan!) ...Je kunt meer informatie " -#~ "vinden op onze wiki.\n" +#~ "Let op: er zijn een paar gevallen waardoor het kalibratieresultaat niet " +#~ "betrouwbaar is: als je een textuurplaat gebruikt om de kalibratie uit te " +#~ "voeren; als de bouwplaat geen goede hechting heeft (was de bouwplaat of " +#~ "breng lijm aan!) ...Je kunt meer informatie vinden op onze wiki.\n" #~ "\n" -#~ "De kalibratieresultaten hebben ongeveer 10 procent jitter in onze test, waardoor het " -#~ "resultaat niet bij elke kalibratie precies hetzelfde is. We onderzoeken nog steeds de " -#~ "oorzaak om verbeteringen aan te brengen met nieuwe updates." +#~ "De kalibratieresultaten hebben ongeveer 10 procent jitter in onze test, " +#~ "waardoor het resultaat niet bij elke kalibratie precies hetzelfde is. We " +#~ "onderzoeken nog steeds de oorzaak om verbeteringen aan te brengen met " +#~ "nieuwe updates." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure you want to " -#~ "overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure " +#~ "you want to overrides the other results?" #~ msgstr "" -#~ "Slechts één van de resultaten met dezelfde naam wordt opgeslagen. Weet je zeker dat je " -#~ "de andere resultaten wilt vervangen?" +#~ "Slechts één van de resultaten met dezelfde naam wordt opgeslagen. Weet je " +#~ "zeker dat je de andere resultaten wilt vervangen?" #, c-format, boost-format #~ msgid "" -#~ "There is already a historical calibration result with the same name: %s. Only one of the " -#~ "results with the same name is saved. Are you sure you want to overrides the historical " -#~ "result?" +#~ "There is already a historical calibration result with the same name: %s. " +#~ "Only one of the results with the same name is saved. Are you sure you " +#~ "want to overrides the historical result?" #~ msgstr "" -#~ "Er is al een eerder kalibratieresultaat met dezelfde naam: %s. Slechts één van de " -#~ "resultaten met dezelfde naam wordt opgeslagen. Weet je zeker dat je het vorige resultaat " -#~ "wilt vervangen?" +#~ "Er is al een eerder kalibratieresultaat met dezelfde naam: %s. Slechts " +#~ "één van de resultaten met dezelfde naam wordt opgeslagen. Weet je zeker " +#~ "dat je het vorige resultaat wilt vervangen?" #~ msgid "Please find the cornor with perfect degree of extrusion" #~ msgstr "Zoek de hoek met de perfecte extrusiegraad" @@ -15766,29 +16659,29 @@ msgstr "" #~ msgstr "Vulling (infill) richting" #~ msgid "" -#~ "Enable this to get a G-code file which has G2 and G3 moves. And the fitting tolerance is " -#~ "same with resolution" +#~ "Enable this to get a G-code file which has G2 and G3 moves. And the " +#~ "fitting tolerance is same with resolution" #~ msgstr "" -#~ "Schakel dit in om een G-codebestand te krijgen met G2- en G3-bewegingen. De " -#~ "pastolerantie is gelijk aan de resolutie." +#~ "Schakel dit in om een G-codebestand te krijgen met G2- en G3-bewegingen. " +#~ "De pastolerantie is gelijk aan de resolutie." #~ msgid "" -#~ "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage " -#~ "value is relative to line width of sparse infill" +#~ "Infill area is enlarged slightly to overlap with wall for better bonding. " +#~ "The percentage value is relative to line width of sparse infill" #~ msgstr "" -#~ "Hierdoor kan het opvulgebied (infill) iets worden vergroot om de wanden te overlappen " -#~ "voor een betere hechting. De procentuele waarde is relatief ten opzichte van de " -#~ "lijndikte van de opvulling." +#~ "Hierdoor kan het opvulgebied (infill) iets worden vergroot om de wanden " +#~ "te overlappen voor een betere hechting. De procentuele waarde is relatief " +#~ "ten opzichte van de lijndikte van de opvulling." #~ msgid "Unload Filament" #~ msgstr "Lossen" #~ msgid "" -#~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or " -#~ "unload filiament." +#~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " +#~ "automatically load or unload filiament." #~ msgstr "" -#~ "Kies een AMS sleuf en druk op de \"Laden\" of \"Verwijderen\" knop om het filament " -#~ "automatisch te laden of te verwijderen." +#~ "Kies een AMS sleuf en druk op de \"Laden\" of \"Verwijderen\" knop om het " +#~ "filament automatisch te laden of te verwijderen." #~ msgid "MC" #~ msgstr "MC" @@ -15815,39 +16708,42 @@ msgstr "" #~ msgstr "Vochtigheid in de cabine" #~ msgid "" -#~ "Green means that AMS humidity is normal, orange represent humidity is high, red " -#~ "represent humidity is too high.(Hygrometer: lower the better.)" +#~ "Green means that AMS humidity is normal, orange represent humidity is " +#~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Groen betekent dat de AMS-luchtvochtigheid normaal is, oranje betekent dat de " -#~ "luchtvochtigheid hoog is en rood betekent dat de luchtvochtigheid te hoog is. " -#~ "(Hygrometer: hoe lager, hoe beter.)" +#~ "Groen betekent dat de AMS-luchtvochtigheid normaal is, oranje betekent " +#~ "dat de luchtvochtigheid hoog is en rood betekent dat de luchtvochtigheid " +#~ "te hoog is. (Hygrometer: hoe lager, hoe beter.)" #~ msgid "Desiccant status" #~ msgstr "Status van het droogmiddel" #~ msgid "" -#~ "A desiccant status lower than two bars indicates that desiccant may be inactive. Please " -#~ "change the desiccant.(The bars: higher the better.)" +#~ "A desiccant status lower than two bars indicates that desiccant may be " +#~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" -#~ "Een droogmiddelstatus lager dan twee streepjes geeft aan dat het droogmiddel mogelijk " -#~ "inactief is. Vervang het droogmiddel. (Hoe hoger, hoe beter.)" +#~ "Een droogmiddelstatus lager dan twee streepjes geeft aan dat het " +#~ "droogmiddel mogelijk inactief is. Vervang het droogmiddel. (Hoe hoger, " +#~ "hoe beter.)" #~ msgid "" -#~ "Note: When the lid is open or the desiccant pack is changed, it can take hours or a " -#~ "night to absorb the moisture. Low temperatures also slow down the process. During this " -#~ "time, the indicator may not represent the chamber accurately." +#~ "Note: When the lid is open or the desiccant pack is changed, it can take " +#~ "hours or a night to absorb the moisture. Low temperatures also slow down " +#~ "the process. During this time, the indicator may not represent the " +#~ "chamber accurately." #~ msgstr "" -#~ "Opmerking: Als het deksel open is of de verpakking van het droogmiddel is vervangen, kan " -#~ "het enkele uren of een nacht duren voordat het vocht is opgenomen. Lage temperaturen " -#~ "vertragen ook het proces. Gedurende deze tijd geeft de indicator de vochtigheid mogelijk " -#~ "niet nauwkeurig weer." +#~ "Opmerking: Als het deksel open is of de verpakking van het droogmiddel is " +#~ "vervangen, kan het enkele uren of een nacht duren voordat het vocht is " +#~ "opgenomen. Lage temperaturen vertragen ook het proces. Gedurende deze " +#~ "tijd geeft de indicator de vochtigheid mogelijk niet nauwkeurig weer." #~ msgid "" -#~ "Note: if new filament is inserted during printing, the AMS will not automatically read " -#~ "any information until printing is completed." +#~ "Note: if new filament is inserted during printing, the AMS will not " +#~ "automatically read any information until printing is completed." #~ msgstr "" -#~ "Opmerking: als er tijdens het afdrukken nieuw filament wordt geplaatst, zal de AMS niet " -#~ "automatisch informatie lezen totdat het afdrukken is voltooid." +#~ "Opmerking: als er tijdens het afdrukken nieuw filament wordt geplaatst, " +#~ "zal de AMS niet automatisch informatie lezen totdat het afdrukken is " +#~ "voltooid." #, boost-format #~ msgid "Succeed to export G-code to %1%" @@ -15859,8 +16755,10 @@ msgstr "" #~ msgid "Initialize failed (No Camera Device)!" #~ msgstr "Initialisatie is mislukt (geen camera-apparaat)!" -#~ msgid "Printer is busy downloading, Please wait for the downloading to finish." -#~ msgstr "De printer is bezig met downloaden. Wacht tot het downloaden is voltooid." +#~ msgid "" +#~ "Printer is busy downloading, Please wait for the downloading to finish." +#~ msgstr "" +#~ "De printer is bezig met downloaden. Wacht tot het downloaden is voltooid." #~ msgid "Initialize failed (Not accessible in LAN-only mode)!" #~ msgstr "Initialisatie mislukt (niet toegankelijk in alleen LAN-modus)!" @@ -15891,33 +16789,37 @@ msgstr "" #~ msgstr "Failed to parse model infomation" #~ msgid "" -#~ "Unable to perform boolean operation on model meshes. Only positive parts will be " -#~ "exported." +#~ "Unable to perform boolean operation on model meshes. Only positive parts " +#~ "will be exported." #~ msgstr "" -#~ "Unable to perform boolean operation on model meshes. Only positive parts will be " -#~ "exported." +#~ "Unable to perform boolean operation on model meshes. Only positive parts " +#~ "will be exported." #, boost-format #~ msgid "" #~ "You have changed some settings of preset \"%1%\". \n" -#~ "Would you like to keep these changed settings (new value) after switching preset?" +#~ "Would you like to keep these changed settings (new value) after switching " +#~ "preset?" #~ msgstr "" #~ "U heeft enkele instellingen van voorinstelling \"%1%\" gewijzigd.\n" -#~ "Wilt u deze gewijzigde instellingen (nieuwe waarde) behouden na het wisselen van preset?" +#~ "Wilt u deze gewijzigde instellingen (nieuwe waarde) behouden na het " +#~ "wisselen van preset?" #~ msgid "" #~ "You have changed some preset settings. \n" -#~ "Would you like to keep these changed settings (new value) after switching preset?" +#~ "Would you like to keep these changed settings (new value) after switching " +#~ "preset?" #~ msgstr "" #~ "Je hebt een aantal vooraf ingestelde instellingen gewijzigd. \n" -#~ "Wilt u deze gewijzigde instellingen (nieuwe waarde) behouden na het wisselen van presets?" +#~ "Wilt u deze gewijzigde instellingen (nieuwe waarde) behouden na het " +#~ "wisselen van presets?" #~ msgid "" -#~ "Add solid infill near sloping surfaces to guarantee the vertical shell thickness " -#~ "(top+bottom solid layers)" +#~ "Add solid infill near sloping surfaces to guarantee the vertical shell " +#~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Voeg dichte vulling toe in de buurt van hellende oppervlakken om de verticale " -#~ "schaaldikte te garanderen (boven+onder vaste lagen)." +#~ "Voeg dichte vulling toe in de buurt van hellende oppervlakken om de " +#~ "verticale schaaldikte te garanderen (boven+onder vaste lagen)." #~ msgid "Configuration package updated to " #~ msgstr "Het configuratiebestand is bijgewerkt naar " @@ -15993,21 +16895,22 @@ msgstr "" #~ msgid "Quick" #~ msgstr "Quick" -#~ msgid "Discribe how long the nozzle will move along the last path when retracting" +#~ msgid "" +#~ "Discribe how long the nozzle will move along the last path when retracting" #~ msgstr "" -#~ "Dit beschrijft hoe lang de nozzle langs het laatste pad zal bewegen tijdens het " -#~ "terugtrekken (rectracting)." +#~ "Dit beschrijft hoe lang de nozzle langs het laatste pad zal bewegen " +#~ "tijdens het terugtrekken (rectracting)." #~ msgid "" #~ "Simplify Model\n" -#~ "Did you know that you can reduce the number of triangles in a mesh using the Simplify " -#~ "mesh feature? Right-click the model and select Simplify model. Read more in the " -#~ "documentation." +#~ "Did you know that you can reduce the number of triangles in a mesh using " +#~ "the Simplify mesh feature? Right-click the model and select Simplify " +#~ "model. Read more in the documentation." #~ msgstr "" #~ "Vereenvoudig het model\n" -#~ "Wist u dat u het aantal driehoeken in een mesh kunt verminderen met de functie Simplify " -#~ "mesh? Klik met de rechtermuisknop op het model en selecteer Model vereenvoudigen. Lees " -#~ "meer in de documentatie." +#~ "Wist u dat u het aantal driehoeken in een mesh kunt verminderen met de " +#~ "functie Simplify mesh? Klik met de rechtermuisknop op het model en " +#~ "selecteer Model vereenvoudigen. Lees meer in de documentatie." #~ msgid "Filling bed " #~ msgstr "Filling bed" @@ -16023,22 +16926,25 @@ msgstr "" #~ msgstr "" #~ "Overschakelen naar rechtlijnig patroon?\n" #~ "Ja - Automatisch overschakelen naar rechtlijnig patroon\n" -#~ "Nee - Zet de dichtheid automatisch terug naar de standaard niet 100% waarde" +#~ "Nee - Zet de dichtheid automatisch terug naar de standaard niet 100% " +#~ "waarde" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." -#~ msgstr "Verwarm de nozzle tot meer dan 170 graden voordat je het filament laadt." +#~ msgstr "" +#~ "Verwarm de nozzle tot meer dan 170 graden voordat je het filament laadt." #, c-format #~ msgid "Density of internal sparse infill, 100% means solid throughout" #~ msgstr "" -#~ "Dit is de dichtheid van de interne vulling. 100%% betekent dat het object geheel solide " -#~ "zal zijn." +#~ "Dit is de dichtheid van de interne vulling. 100%% betekent dat het object " +#~ "geheel solide zal zijn." #~ msgid "Tree support wall loops" #~ msgstr "Tree support wand lussen" #~ msgid "This setting specify the count of walls around tree support" -#~ msgstr "Deze instelling specificeert het aantal wanden rond de tree support." +#~ msgstr "" +#~ "Deze instelling specificeert het aantal wanden rond de tree support." #, c-format, boost-format #~ msgid " doesn't work at 100%% density " @@ -16066,7 +16972,9 @@ msgstr "" #~ msgstr "Exporteer alle objecten als STL" #~ msgid "The 3mf is not compatible, load geometry data only!" -#~ msgstr "Het 3mf bestand is niet compatibel, enkel de geometrische data wordt geladen!" +#~ msgstr "" +#~ "Het 3mf bestand is niet compatibel, enkel de geometrische data wordt " +#~ "geladen!" #~ msgid "Incompatible 3mf" #~ msgstr "Onbruikbaar 3mf bestand" @@ -16088,7 +16996,9 @@ msgstr "" #~ msgstr "Volgorde binnenwand/buitenwand/opvulling (infill)" #~ msgid "Print sequence of inner wall, outer wall and infill. " -#~ msgstr "Dit is de afdrukvolgorde van binnenwanden, buitenwanden en vulling (infill)." +#~ msgstr "" +#~ "Dit is de afdrukvolgorde van binnenwanden, buitenwanden en vulling " +#~ "(infill)." #~ msgid "inner/outer/infill" #~ msgstr "binnenste/buitenste/vulling (infill)" @@ -16127,7 +17037,8 @@ msgstr "" #~ msgstr "Slice" #~ msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" -#~ msgstr "Slice de printbedden: 0-alle printbedden, i-printbed i, andere-onjuist" +#~ msgstr "" +#~ "Slice de printbedden: 0-alle printbedden, i-printbed i, andere-onjuist" #~ msgid "Show command help." #~ msgstr "Dit toont de command hulp." @@ -16216,36 +17127,41 @@ msgstr "" #~ msgid "Debug level" #~ msgstr "Debuggen level" -#~ msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" +#~ msgid "" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Sets debug logging level. 0:fataal, 1:error, 2:waarschuwing, 3:info, 4:debug, 5:trace\n" +#~ "Sets debug logging level. 0:fataal, 1:error, 2:waarschuwing, 3:info, 4:" +#~ "debug, 5:trace\n" #~ msgid "" #~ "3D Scene Operations\n" -#~ "Did you know how to control view and object/part selection with mouse and touchpanel in " -#~ "the 3D scene?" +#~ "Did you know how to control view and object/part selection with mouse and " +#~ "touchpanel in the 3D scene?" #~ msgstr "" #~ "3D-scènebewerkingen\n" -#~ "Weet u hoe u de weergave en selectie van objecten/onderdelen met de muis en het " -#~ "aanraakscherm in de 3D-scène kunt bedienen?" +#~ "Weet u hoe u de weergave en selectie van objecten/onderdelen met de muis " +#~ "en het aanraakscherm in de 3D-scène kunt bedienen?" #~ msgid "" #~ "Fix Model\n" -#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems?" #~ msgstr "" #~ "Model repareren\n" -#~ "Wist u dat u een beschadigd 3D-model kunt repareren om veel snijproblemen te voorkomen?" +#~ "Wist u dat u een beschadigd 3D-model kunt repareren om veel snijproblemen " +#~ "te voorkomen?" # Source and destination string both English but don't match! #~ msgid "Embeded" #~ msgstr "Embedded" #~ msgid "" -#~ "OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please " -#~ "delete the file and try again." +#~ "OrcaSlicer configuration file may be corrupted and is not abled to be " +#~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer configuratiebestand is mogelijks corrupt, en kan niet verwerkt worden." -#~ "Verwijder het configuratiebestand en probeer het opnieuw." +#~ "OrcaSlicer configuratiebestand is mogelijks corrupt, en kan niet verwerkt " +#~ "worden.Verwijder het configuratiebestand en probeer het opnieuw." #~ msgid "Online Models" #~ msgstr "Online Models" @@ -16257,37 +17173,41 @@ msgstr "" #~ msgstr "De minimale printsnelheid indien er afgeremd wordt om af te koelen" #~ msgid "" -#~ "The bed temperature exceeds filament's vitrification temperature. Please open the front " -#~ "door of printer before printing to avoid nozzle clog." +#~ "The bed temperature exceeds filament's vitrification temperature. Please " +#~ "open the front door of printer before printing to avoid nozzle clog." #~ msgstr "" -#~ "De bedtemperatuur overschrijdt de vitrificatietemperatuur van het filament. Open de " -#~ "voorkdeur van de printer voor het printen om verstopping van de nozzles te voorkomen." +#~ "De bedtemperatuur overschrijdt de vitrificatietemperatuur van het " +#~ "filament. Open de voorkdeur van de printer voor het printen om " +#~ "verstopping van de nozzles te voorkomen." #~ msgid "Temperature of vitrificaiton" #~ msgstr "Temperatuur van verglazing" #~ msgid "" -#~ "Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this " -#~ "tempature" +#~ "Material becomes soft at this temperature. Thus the heatbed cannot be " +#~ "hotter than this tempature" #~ msgstr "" -#~ "Op deze temperatuur zal het materiaal zacht worden. Daarom kan de temperatuur van het " -#~ "printbed niet hoger dan deze waarde." +#~ "Op deze temperatuur zal het materiaal zacht worden. Daarom kan de " +#~ "temperatuur van het printbed niet hoger dan deze waarde." #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "Schakel deze optie in als de machine een ventilator voor de enclosure heeft" +#~ msgstr "" +#~ "Schakel deze optie in als de machine een ventilator voor de enclosure " +#~ "heeft" #~ msgid "" -#~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during " -#~ "printing except the first several layers which is defined by no cooling layers" +#~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " +#~ "during printing except the first several layers which is defined by no " +#~ "cooling layers" #~ msgstr "" -#~ "Snelheid van de auxiliary part ventilator. De auxiliary ventilator draait op deze " -#~ "snelheid tijdens het afdrukken, behalve de eerste paar lagen, die worden gedefinieerd " -#~ "door geen koellagen" +#~ "Snelheid van de auxiliary part ventilator. De auxiliary ventilator draait " +#~ "op deze snelheid tijdens het afdrukken, behalve de eerste paar lagen, die " +#~ "worden gedefinieerd door geen koellagen" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." #~ msgstr "" -#~ "Lege lagen in de buurt van de bodem worden vervangen door de dichtsbijzijnde normale " -#~ "lagen." +#~ "Lege lagen in de buurt van de bodem worden vervangen door de " +#~ "dichtsbijzijnde normale lagen." #~ msgid "The model has too many empty layers." #~ msgstr "Het model heeft te veel lege lagen." @@ -16303,24 +17223,26 @@ msgstr "" #, c-format, boost-format #~ msgid "" -#~ "Bed temperature of other layer is lower than bed temperature of initial layer for more " -#~ "than %d degree centigrade.\n" +#~ "Bed temperature of other layer is lower than bed temperature of initial " +#~ "layer for more than %d degree centigrade.\n" #~ "This may cause model broken free from build plate during printing" #~ msgstr "" -#~ "De printbed temperatuur voor de overige lagen is %d graden celcius lager dan de " -#~ "temperatuur voor de eerste laag.\n" +#~ "De printbed temperatuur voor de overige lagen is %d graden celcius lager " +#~ "dan de temperatuur voor de eerste laag.\n" #~ "Hierdoor kan de print loskomen van het printbed gedurende de printtaak" #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this " +#~ "filament.\n" #~ "This may cause nozzle blocked and printing failure\n" -#~ "Please keep the printer open during the printing process to ensure air circulation or " -#~ "reduce the temperature of the hot bed" +#~ "Please keep the printer open during the printing process to ensure air " +#~ "circulation or reduce the temperature of the hot bed" #~ msgstr "" -#~ "De bedtemperatuur is hoger dan de vitrificatietemperatuur van dit filament.\n" +#~ "De bedtemperatuur is hoger dan de vitrificatietemperatuur van dit " +#~ "filament.\n" #~ "Dit kan leiden tot verstopping van de nozzle en tot print fouten.\n" -#~ "Houd de printer open tijdens het printproces om te zorgen voor luchtcirculatie, of om de " -#~ "temperatuur van het warmwaterbed te verlagen." +#~ "Houd de printer open tijdens het printproces om te zorgen voor " +#~ "luchtcirculatie, of om de temperatuur van het warmwaterbed te verlagen." #~ msgid "Total Time Estimation" #~ msgstr "Total Time Estimation" @@ -16350,41 +17272,44 @@ msgstr "" #~ msgstr "High Temp Plate (hoge temperatuur printbed)" #~ msgid "" -#~ "Bed temperature when high temperature plate is installed. Value 0 means the filament " -#~ "does not support to print on the High Temp Plate" +#~ "Bed temperature when high temperature plate is installed. Value 0 means " +#~ "the filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Dit is de bedtemperatuur wanneer de hogetemperatuurplaat is geïnstalleerd. Een waarde " -#~ "van 0 betekent dat het filament printen op de High Temp Plate niet ondersteunt." +#~ "Dit is de bedtemperatuur wanneer de hogetemperatuurplaat is " +#~ "geïnstalleerd. Een waarde van 0 betekent dat het filament printen op de " +#~ "High Temp Plate niet ondersteunt." #~ msgid "Internal bridge support thickness" #~ msgstr "Dikte interne brugondersteuning" #~ msgid "" -#~ "Style and shape of the support. For normal support, projecting the supports into a " -#~ "regular grid will create more stable supports (default), while snug support towers will " -#~ "save material and reduce object scarring.\n" -#~ "For tree support, slim style will merge branches more aggressively and save a lot of " -#~ "material (default), while hybrid style will create similar structure to normal support " -#~ "under large flat overhangs." +#~ "Style and shape of the support. For normal support, projecting the " +#~ "supports into a regular grid will create more stable supports (default), " +#~ "while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and " +#~ "save a lot of material (default), while hybrid style will create similar " +#~ "structure to normal support under large flat overhangs." #~ msgstr "" -#~ "Stijl en vorm van de ondersteuning. Voor normale ondersteuning zal grit stabielere " -#~ "steunen creëren (standaard), terwijl snug materiaal bespaart en littekens op het object " -#~ "zal verminderen.\n" -#~ "Voor tree ondersteuning zal de slanke stijl takken agressiever samenvoegen en veel " -#~ "materiaal besparen (standaard), terwijl de hybride stijl een soortgelijke structuur " -#~ "creëert als de normale ondersteuning onder grote platte overhangen." +#~ "Stijl en vorm van de ondersteuning. Voor normale ondersteuning zal grit " +#~ "stabielere steunen creëren (standaard), terwijl snug materiaal bespaart " +#~ "en littekens op het object zal verminderen.\n" +#~ "Voor tree ondersteuning zal de slanke stijl takken agressiever " +#~ "samenvoegen en veel materiaal besparen (standaard), terwijl de hybride " +#~ "stijl een soortgelijke structuur creëert als de normale ondersteuning " +#~ "onder grote platte overhangen." #~ msgid "Bed temperature difference" #~ msgstr "Printbed temperatuurverschil" #~ msgid "" -#~ "Do not recommend bed temperature of other layer to be lower than initial layer for more " -#~ "than this threshold. Too low bed temperature of other layer may cause the model broken " -#~ "free from build plate" +#~ "Do not recommend bed temperature of other layer to be lower than initial " +#~ "layer for more than this threshold. Too low bed temperature of other " +#~ "layer may cause the model broken free from build plate" #~ msgstr "" -#~ "Het wordt niet aanbevolen om de bedtemperatuur van andere lagen meer dan deze " -#~ "drempelwaarde te verlagen dan de eerste laag. Een te lage bedtemperatuur van een andere " -#~ "laag kan ertoe leiden dat het model loskomt van de bouwplaat." +#~ "Het wordt niet aanbevolen om de bedtemperatuur van andere lagen meer dan " +#~ "deze drempelwaarde te verlagen dan de eerste laag. Een te lage " +#~ "bedtemperatuur van een andere laag kan ertoe leiden dat het model loskomt " +#~ "van de bouwplaat." #~ msgid "Orient the model" #~ msgstr "Oriënteer het model" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 0c821ac093..01cdea0bf8 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga \n" "Language-Team: \n" @@ -75,6 +75,9 @@ msgstr "Kąt inteligentnego wypełniania" msgid "On overhangs only" msgstr "Tylko na nawisach" +msgid "Auto support threshold angle: " +msgstr "Automatyczny kąt progowy podpory: " + msgid "Circle" msgstr "Koło" @@ -94,9 +97,6 @@ msgstr "Pozwala malować tylko na wybranych powierzchniach za pomocą: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Podświetl ściany zgodnie z kątem nawisu." -msgid "Auto support threshold angle: " -msgstr "Automatyczny kąt progowy podpory: " - msgid "No auto support" msgstr "Brak automatycznej podpory" @@ -1982,6 +1982,9 @@ msgstr "Uprość model" msgid "Center" msgstr "Wyśrodkuj" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Edytuj ustawienia procesu" @@ -4163,6 +4166,15 @@ msgstr "Czas całkowity" msgid "Total cost" msgstr "Koszt całkowity" +msgid "up to" +msgstr "do" + +msgid "above" +msgstr "powyżej" + +msgid "from" +msgstr "od" + msgid "Color Scheme" msgstr "Schemat kolorów" @@ -4226,12 +4238,12 @@ msgstr "Liczba zmian filamentu" msgid "Cost" msgstr "Koszt" -msgid "Print" -msgstr "Drukuj" - msgid "Color change" msgstr "Zmiana koloru" +msgid "Print" +msgstr "Drukuj" + msgid "Printer" msgstr "Drukarka" @@ -4415,7 +4427,7 @@ msgstr "Objętość:" msgid "Size:" msgstr "Rozmiar:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4857,6 +4869,18 @@ msgstr "Procedura 2" msgid "Flow rate test - Pass 2" msgstr "Test natężenia przepływu - Procedura 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Natężenie przepływu" @@ -6159,16 +6183,6 @@ msgstr "Wykryto obiekt składający się z wielu części" msgid "The file does not contain any geometry data." msgstr "Plik nie zawiera żadnych danych geometrycznych." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" -"Twój obiekt wydaje się być zbyt duży. Zostanie on automatycznie zmniejszony, " -"aby pasował do powierzchni roboczej." - -msgid "Object too large" -msgstr "Obiekt jest zbyt duży" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6176,6 +6190,9 @@ msgstr "" "Importowany model przekracza wymiary przestrzeni roboczej. Czy chcesz go " "przeskalowanć do odpowiednich rozmiarów?" +msgid "Object too large" +msgstr "Obiekt jest zbyt duży" + msgid "Export STL file:" msgstr "Eksportuj plik STL:" @@ -6553,6 +6570,11 @@ msgstr "Czy chcesz kontynuować?" msgid "Language selection" msgstr "Wybór języka" +msgid "Switching application language while some presets are modified." +msgstr "" +"Zmiana języka aplikacji przy jednoczesnym istniejących zmodyfikowanych " +"ustawieniach." + msgid "Changing application language" msgstr "Zmiana języka aplikacji" @@ -8571,8 +8593,11 @@ msgstr "Lista obiektów" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import danych geometrycznych z plików STL/STEP/3MF/OBJ/AMF" -msgid "Shift+G" -msgstr "Shift+G" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Wklej z schowka" @@ -8622,18 +8647,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Zwiń/Rozwiń pasek boczny" -msgid "Any arrow" -msgstr "Dowolna strzałka" +msgid "⌘+Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Ruch w przestrzeni kamery" +msgid "⌥+Left mouse button" +msgstr "⌥+Lewy przycisk myszy" + msgid "Select a part" msgstr "Wybierz część" +msgid "⌘+Left mouse button" +msgstr "⌘+Lewy przycisk myszy" + msgid "Select multiple objects" msgstr "Wybierz wiele obiektów" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Dowolna strzałka" + +msgid "Alt+Left mouse button" +msgstr "Alt+Lewy przycisk myszy" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Lewy przycisk myszy" + msgid "Shift+Left mouse button" msgstr "Shift+Lewy przycisk myszy" @@ -8736,12 +8776,24 @@ msgstr "Płyta" msgid "Move: press to snap by 1mm" msgstr "Przesuń: naciśnij, aby przyciągnąć co 1 mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+Kółko myszy" + msgid "Support/Color Painting: adjust pen radius" msgstr "Podpory/Kolorowanie: dostosuj promień pędzla" +msgid "⌥+Mouse wheel" +msgstr "⌥+Kółko myszy" + msgid "Support/Color Painting: adjust section position" msgstr "Podpory/Kolorowanie: dostosuj pozycję sekcji" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Kółko myszy" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Kółko myszy" + msgid "Gizmo" msgstr "Uchwyt" @@ -9823,25 +9875,32 @@ msgid "Apply gap fill" msgstr "Zastosuj wypełnienie szczelin" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"Umożliwia wypełnienie szpar/szczelin dla wybranych powierzchni. Minimalną " -"długość szczeliny, która zostanie wypełniona, można kontrolować poprzez " -"opcję 'filtruj wąskie szczeliny' znajdującej się poniżej.\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Opcje:\n" -"1. Wszędzie: Stosuje wypełnienie na górnych, dolnych i wewnętrznych " -"powierzchniach stałych\n" -"2. Powierzchnie górne i dolne: Stosuje wypełnienie tylko na górnych i " -"dolnych powierzchniach\n" -"3. Nigdzie: Wyłącza wypełnienie\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "Wszędzie" @@ -9916,10 +9975,11 @@ msgstr "Współczynnik przepływu przy mostach" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Zmniejsz tę wartość minimalnie (na przykład do 0.9), aby zmniejszyć ilość " -"filamentu dla mostu, co zmniejszy jego wygięcie" msgid "Internal bridge flow ratio" msgstr "Współczynnik przepływu dla wewnętrznych mostów" @@ -9927,29 +9987,33 @@ msgstr "Współczynnik przepływu dla wewnętrznych mostów" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Ta wartość określa grubość wewnętrznej warstwy mostu. Jest to pierwsza " -"warstwa nad rzadkim wypełnieniem. Aby poprawić jakość powierzchni nad tym " -"wypełnieniem, możesz zmniejszyć trochę tą wartość (na przykład do 0.9)" msgid "Top surface flow ratio" msgstr "Współczynnik przepływu górnej powierzchni" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Czynnik ten wpływa na ilość filamentu na górne pełne wypełnienie. Możesz go " -"nieco zmniejszyć, aby uzyskać gładkie wykończenie powierzchni" msgid "Bottom surface flow ratio" msgstr "Współczynnik przepływu dolnej powierzchni" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Ten współczynnik wpływa na ilość materiału w dolnej warstwie pełnego " -"wypełnienia" msgid "Precise wall" msgstr "Ściany o wysokiej precyzji" @@ -10127,12 +10191,26 @@ msgstr "Włącz tę opcję, aby zwolnić drukowanie dla różnych stopni nawisu" msgid "Slow down for curled perimeters" msgstr "Zwalnienie na łukach" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Włącz tę opcję, aby zwolnić drukowanie w obszarach, gdzie istnieje " -"potencjalne zagrożenie odkształceniem obwodów" msgid "mm/s or %" msgstr "mm/s lub %" @@ -10140,8 +10218,14 @@ msgstr "mm/s lub %" msgid "External" msgstr "Zewn." -msgid "Speed of bridge and completely overhang wall" -msgstr "Prędkość mostu i całkowicie nawisającej ściany" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -10150,11 +10234,9 @@ msgid "Internal" msgstr "Wewn." msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Prędkość wewnętrznego mostu. Jeśli wartość jest wyrażona w procentach, " -"będzie obliczana na podstawie prędkości mostu. Domyślna wartość to 150%." msgid "Brim width" msgstr "Szerokość Brimu" @@ -10810,6 +10892,17 @@ msgstr "" "między 0,95 a 1,05. Być może możesz dostroić tę wartość, aby uzyskać gładką " "powierzchnię, gdy występuje lekkie przelewanie lub niedomiar" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Włącz wzrost ciśnienia (PA)" @@ -11049,18 +11142,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Czas ładowania filamentu" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Czas ładowania nowego filamentu podczas zmiany filamentu. Tylko do celów " -"statystycznych" msgid "Filament unload time" msgstr "Czas rozładowania filamentu" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Czas rozładunku poprzedniego filamentu podczas zmiany filamentu. Tylko do " -"celów statystycznych" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11208,15 +11312,6 @@ msgstr "Prędkość ostatniego ruchu chłodzącego" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Ruchy chłodzące stopniowo przyspieszają do tej prędkości." -msgid "" -"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." -msgstr "" -"Czas, który drukarka (lub dodatek Multi Material 2.0) poświęca na ładowanie " -"nowego filamentu podczas zmiany narzędzia (przy wykonywaniu kodu T). Ten " -"czas jest dodawany do szacowanego czasu druku." - msgid "Ramming parameters" msgstr "Parametry wyciskania" @@ -11227,15 +11322,6 @@ msgstr "" "Ten ciąg jest edytowany przez RammingDialog i zawiera parametry właściwe dla " "wyciskania." -msgid "" -"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." -msgstr "" -"Czas, który drukarka (lub dodatek Multi Material 2.0) poświęca na " -"rozładowanie nowego filamentu podczas zmiany narzędzia (przy wykonywaniu " -"kodu T). Ten czas jest dodawany do szacowanego czasu druku." - msgid "Enable ramming for multitool setups" msgstr "Włącz wyciskanie przy multi-tool" @@ -11682,8 +11768,11 @@ msgstr "Filtruj wąskie szczeliny" msgid "Layers and Perimeters" msgstr "Warstwy i obwody" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Filtruj szczeliny mniejsze niż podany próg" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13870,32 +13959,40 @@ msgid "Activate temperature control" msgstr "Aktywuj kontrolę temperatury" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Włącz tę opcję dla kontroli temperatury komory. Komenda M191 zostanie dodana " -"przed \"początkowy G-code drukarki\"\n" -"Komendy G-code: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Temperatura komory" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Wyższa temperatura komory może pomóc w redukcji wypaczania i potencjalnie " -"prowadzić do większej siły wiązania międzywarstwowego w przypadku materiałów " -"wysokotemperaturowych, takich jak ABS, ASA, PC, PA itp. Dla filametów PLA, " -"PETG, TPU, PVA i innych materiałów niskotemperaturowych temperatura komory " -"nie powinna być wysoka. Aby uniknąć zatykania sie dyszy zaleca się " -"ustawienia na wartość 0 (wyłączone)." msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura dyszy dla warstw po początkowej" @@ -17216,52 +17313,143 @@ msgstr "" "takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może " "zmniejszyć prawdopodobieństwo odkształceń." -#~ msgid "up to" -#~ msgstr "do" - -#~ msgid "above" -#~ msgstr "powyżej" - -#~ msgid "from" -#~ msgstr "od" - -#~ msgid "Switching application language while some presets are modified." +#~ msgid "" +#~ "Your object appears to be too large. It will be scaled down to fit the " +#~ "heat bed automatically." #~ msgstr "" -#~ "Zmiana języka aplikacji przy jednoczesnym istniejących zmodyfikowanych " -#~ "ustawieniach." +#~ "Twój obiekt wydaje się być zbyt duży. Zostanie on automatycznie " +#~ "zmniejszony, aby pasował do powierzchni roboczej." -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "Shift+G" +#~ msgstr "Shift+G" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "Any arrow" +#~ msgstr "Dowolna strzałka" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Lewy przycisk myszy" +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "Umożliwia wypełnienie szpar/szczelin dla wybranych powierzchni. Minimalną " +#~ "długość szczeliny, która zostanie wypełniona, można kontrolować poprzez " +#~ "opcję 'filtruj wąskie szczeliny' znajdującej się poniżej.\n" +#~ "\n" +#~ "Opcje:\n" +#~ "1. Wszędzie: Stosuje wypełnienie na górnych, dolnych i wewnętrznych " +#~ "powierzchniach stałych\n" +#~ "2. Powierzchnie górne i dolne: Stosuje wypełnienie tylko na górnych i " +#~ "dolnych powierzchniach\n" +#~ "3. Nigdzie: Wyłącza wypełnienie\n" -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Lewy przycisk myszy" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Zmniejsz tę wartość minimalnie (na przykład do 0.9), aby zmniejszyć ilość " +#~ "filamentu dla mostu, co zmniejszy jego wygięcie" -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+Dowolna strzałka" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Ta wartość określa grubość wewnętrznej warstwy mostu. Jest to pierwsza " +#~ "warstwa nad rzadkim wypełnieniem. Aby poprawić jakość powierzchni nad tym " +#~ "wypełnieniem, możesz zmniejszyć trochę tą wartość (na przykład do 0.9)" -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Lewy przycisk myszy" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Czynnik ten wpływa na ilość filamentu na górne pełne wypełnienie. Możesz " +#~ "go nieco zmniejszyć, aby uzyskać gładkie wykończenie powierzchni" -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Lewy przycisk myszy" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Ten współczynnik wpływa na ilość materiału w dolnej warstwie pełnego " +#~ "wypełnienia" -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Kółko myszy" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Włącz tę opcję, aby zwolnić drukowanie w obszarach, gdzie istnieje " +#~ "potencjalne zagrożenie odkształceniem obwodów" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Kółko myszy" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Prędkość mostu i całkowicie nawisającej ściany" -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Kółko myszy" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Prędkość wewnętrznego mostu. Jeśli wartość jest wyrażona w procentach, " +#~ "będzie obliczana na podstawie prędkości mostu. Domyślna wartość to 150%." -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Kółko myszy" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Czas ładowania nowego filamentu podczas zmiany filamentu. Tylko do celów " +#~ "statystycznych" + +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Czas rozładunku poprzedniego filamentu podczas zmiany filamentu. Tylko do " +#~ "celów statystycznych" + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Czas, który drukarka (lub dodatek Multi Material 2.0) poświęca na " +#~ "ładowanie nowego filamentu podczas zmiany narzędzia (przy wykonywaniu " +#~ "kodu T). Ten czas jest dodawany do szacowanego czasu druku." + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Czas, który drukarka (lub dodatek Multi Material 2.0) poświęca na " +#~ "rozładowanie nowego filamentu podczas zmiany narzędzia (przy wykonywaniu " +#~ "kodu T). Ten czas jest dodawany do szacowanego czasu druku." + +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Filtruj szczeliny mniejsze niż podany próg" + +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Włącz tę opcję dla kontroli temperatury komory. Komenda M191 zostanie " +#~ "dodana przed \"początkowy G-code drukarki\"\n" +#~ "Komendy G-code: M141/M191 S(0-255)" + +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Wyższa temperatura komory może pomóc w redukcji wypaczania i potencjalnie " +#~ "prowadzić do większej siły wiązania międzywarstwowego w przypadku " +#~ "materiałów wysokotemperaturowych, takich jak ABS, ASA, PC, PA itp. Dla " +#~ "filametów PLA, PETG, TPU, PVA i innych materiałów niskotemperaturowych " +#~ "temperatura komory nie powinna być wysoka. Aby uniknąć zatykania sie " +#~ "dyszy zaleca się ustawienia na wartość 0 (wyłączone)." #~ msgid "" #~ "Interlocking depth of a segmented region. Zero disables this feature." diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 42ecd5c780..76f37e4280 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2024-06-01 21:51-0300\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" @@ -80,6 +80,9 @@ msgstr "" msgid "On overhangs only" msgstr "Apenas em 'overhangs'" +msgid "Auto support threshold angle: " +msgstr "Ângulo max. do suporte automático: " + msgid "Circle" msgstr "Círculo" @@ -99,9 +102,6 @@ msgstr "Permite pintura apenas em facetas selecionadas por: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Realçar faces conforme a inclinação." -msgid "Auto support threshold angle: " -msgstr "Ângulo max. do suporte automático: " - msgid "No auto support" msgstr "Sem suporte automático" @@ -1989,6 +1989,9 @@ msgstr "Simplificar Modelo" msgid "Center" msgstr "Centralizar" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Editar Configurações de Processo" @@ -4163,6 +4166,15 @@ msgstr "Tempo total" msgid "Total cost" msgstr "Custo total" +msgid "up to" +msgstr "até" + +msgid "above" +msgstr "acima" + +msgid "from" +msgstr "de" + msgid "Color Scheme" msgstr "Esquema de Cores" @@ -4226,12 +4238,12 @@ msgstr "Quantidade de trocas de filamento" msgid "Cost" msgstr "Custo" -msgid "Print" -msgstr "Imprimir" - msgid "Color change" msgstr "Mudança de Cor" +msgid "Print" +msgstr "Imprimir" + msgid "Printer" msgstr "Impressora" @@ -4415,7 +4427,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Tamanho:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4856,6 +4868,18 @@ msgstr "Passo 2" msgid "Flow rate test - Pass 2" msgstr "Teste de fluxo - Passo 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Fluxo" @@ -6157,14 +6181,6 @@ msgstr "Objeto com múltiplas peças foi detectado" msgid "The file does not contain any geometry data." msgstr "O arquivo não contém dados de geometria." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Objeto muito grande" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6172,6 +6188,9 @@ msgstr "" "Seu objeto parece ser muito grande. Deseja dimensioná-lo para caber na mesa " "de aquecimento automaticamente?" +msgid "Object too large" +msgstr "Objeto muito grande" + msgid "Export STL file:" msgstr "Exportar arquivo STL:" @@ -6550,6 +6569,10 @@ msgstr "Você deseja continuar?" msgid "Language selection" msgstr "Seleção de Idioma" +msgid "Switching application language while some presets are modified." +msgstr "" +"A mudança do idioma do aplicativo enquanto alguns presets estão modificados." + msgid "Changing application language" msgstr "Alterando o idioma do aplicativo" @@ -7680,8 +7703,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Ao gravar um timelapse sem o hotend aparecer, é recomendável adicionar uma " "\"Torre Prime para Timelapse\" \n" @@ -8546,8 +8569,11 @@ msgstr "Lista de objetos" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importar dados de geometria de arquivos STL/STEP/3MF/OBJ/AMF" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Colar da área de transferência" @@ -8597,18 +8623,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Recolher/Expandir a barra lateral" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+Qualquer seta" msgid "Movement in camera space" msgstr "Movimento no espaço da câmera" +msgid "⌥+Left mouse button" +msgstr "Botão esquerdo do mouse ⌥+" + msgid "Select a part" msgstr "Selecionar uma peça" +msgid "⌘+Left mouse button" +msgstr "Botão esquerdo do mouse ⌘+" + msgid "Select multiple objects" msgstr "Selecionar vários objetos" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Qualquer seta" + +msgid "Alt+Left mouse button" +msgstr "Botão esquerdo do mouse Alt+" + +msgid "Ctrl+Left mouse button" +msgstr "Botão esquerdo do mouse Ctrl+" + msgid "Shift+Left mouse button" msgstr "Botão esquerdo do mouse Shift+" @@ -8711,12 +8752,24 @@ msgstr "Mesa" msgid "Move: press to snap by 1mm" msgstr "Mover: pressione para ajustar em 1mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+Roda do mouse" + msgid "Support/Color Painting: adjust pen radius" msgstr "Suporte/Pintura em cores: ajustar o raio da caneta" +msgid "⌥+Mouse wheel" +msgstr "⌥+Roda do mouse" + msgid "Support/Color Painting: adjust section position" msgstr "Suporte/Pintura em cores: ajustar a posição da seção" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Roda do mouse" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Roda do mouse" + msgid "Gizmo" msgstr "Gizmo" @@ -9781,25 +9834,32 @@ msgid "Apply gap fill" msgstr "Preenchimento de vão" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"Ativa o preenchimento de vão para as superfícies selecionadas. O comprimento " -"mínimo do vão que será preenchida pode ser controlado a partir da opção de " -"filtrar pequenas s abaixo.\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Opções:\n" -"1. Em todos os lugares: Aplica preenchimento de s às superfícies sólidas " -"superior, inferior e interna\n" -"2. Superfícies superior e inferior: Aplica preenchimento de s apenas às " -"superfícies superior e inferior\n" -"3. Em nenhum lugar: Desativa o preenchimento de s\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "Sempre" @@ -9873,10 +9933,11 @@ msgstr "Fluxo em ponte" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Diminua ligeiramente este valor (por exemplo, 0.9) para reduzir a quantidade " -"de material para ponte, para melhorar a flacidez" msgid "Internal bridge flow ratio" msgstr "Fluxo em ponte interna" @@ -9884,31 +9945,33 @@ msgstr "Fluxo em ponte interna" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Este valor governa a espessura da camada interna da ponte. Esta é a primeira " -"camada sobre o preenchimento. Diminua ligeiramente este valor (por exemplo, " -"0.9) para melhorar a qualidade da superfície sobre o preenchimento " -"esparsamente." msgid "Top surface flow ratio" msgstr "Fluxo em superfície superior" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Este fator afeta a quantidade de material para o preenchimento sólido " -"superior. Você pode diminuí-lo ligeiramente para ter um acabamento de " -"superfície suave" msgid "Bottom surface flow ratio" msgstr "Fluxo em superfície inferior" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Este fator afeta a quantidade de material para o preenchimento sólido " -"inferior" msgid "Precise wall" msgstr "Parede precisa" @@ -10085,12 +10148,26 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "Reduzir vel. para perímetros encurvados" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Ative esta opção para diminuir a velocidade de impressão em áreas onde podem " -"existir potenciais perímetros curvados (warping)" msgid "mm/s or %" msgstr "mm/s ou %" @@ -10098,8 +10175,14 @@ msgstr "mm/s ou %" msgid "External" msgstr "Externo" -msgid "Speed of bridge and completely overhang wall" -msgstr "Velocidade de ponte e paredes compostas completamente de overhangs" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -10108,11 +10191,9 @@ msgid "Internal" msgstr "Interno" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Velocidade da ponte interna. Se o valor for expresso como porcentagem, será " -"calculado com base na velocidade da ponte. O valor padrão é 150%." msgid "Brim width" msgstr "Largura da borda" @@ -10764,6 +10845,17 @@ msgstr "" "está entre 0.95 e 1.05. Talvez você possa ajustar esse valor para obter uma " "superfície plana agradável quando houver um leve transbordamento ou subfluxo" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Habilitar Pressure advance" @@ -10943,18 +11035,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Tempo de carga do filamento" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Tempo para carregar novo filamento ao trocar de filamento. Apenas para " -"estatísticas" msgid "Filament unload time" msgstr "Tempo de descarga do filamento" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Tempo para descarregar o filamento antigo ao trocar de filamento. Apenas " -"para estatísticas" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11095,16 +11198,6 @@ msgstr "" "Os movimentos de resfriamento estão gradualmente acelerando em direção a " "esta velocidade." -msgid "" -"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." -msgstr "" -"Tempo para o firmware da impressora (ou a Unidade de Material Multi 2.0) " -"carregar um novo filamento durante uma troca de ferramenta (ao executar o " -"código T). Este tempo é adicionado ao tempo total de impressão pelo " -"estimador de tempo do G-code." - msgid "Ramming parameters" msgstr "Parâmetros de moldeamento" @@ -11115,16 +11208,6 @@ msgstr "" "Esta frase é editada pelo RammingDialog e contém parâmetros específicos de " "moldeamento." -msgid "" -"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." -msgstr "" -"Tempo para o firmware da impressora (ou a Unidade de Material Multi 2.0) " -"descarregar um filamento durante uma troca de ferramenta (ao executar o " -"código T). Este tempo é adicionado ao tempo total de impressão pelo " -"estimador de tempo do G-code." - msgid "Enable ramming for multitool setups" msgstr "Habilitar moldeamento para configurações de multi-extrusora" @@ -11494,10 +11577,10 @@ msgstr "Velocidade total do ventilador na camada" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "A velocidade do ventilador aumentará linearmente de zero na camada " "\"close_fan_the_first_x_layers\" para o máximo na camada " @@ -11573,8 +11656,11 @@ msgstr "Filtrar vazios pequenos" msgid "Layers and Perimeters" msgstr "Camadas e Perímetros" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Filtrar vazios menores que o limite especificado" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13718,33 +13804,40 @@ msgid "Activate temperature control" msgstr "Ativar controle de temperatura" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Ative esta opção para controle de temperatura da câmara. Um comando M191 " -"será adicionado antes de \"machine_start_gcode\"\n" -"Comandos G-code: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Temperatura da câmara" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Uma temperatura mais alta na câmara pode ajudar a suprimir ou reduzir o " -"empenamento e potencialmente levar a uma maior resistência de ligação entre " -"camadas para materiais de alta temperatura como ABS, ASA, PC, PA e assim por " -"diante. Ao mesmo tempo, a filtragem de ar de ABS e ASA ficará pior. Para " -"PLA, PETG, TPU, PVA e outros materiais de baixa temperatura, a temperatura " -"real da câmara não deve ser alta para evitar obstruções, portanto, é " -"altamente recomendável usar 0, que significa desligado" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura do bico para camadas após a inicial" @@ -15701,8 +15794,8 @@ msgstr "" "Você deseja reescrevê-lo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Renomearíamos os presets como \"Fornecedor Tipo Serial @ impressora que você " @@ -17029,55 +17122,135 @@ msgstr "" "aumentar adequadamente a temperatura da mesa aquecida pode reduzir a " "probabilidade de empenamento?" -#~ msgid "up to" -#~ msgstr "até" - -#~ msgid "above" -#~ msgstr "acima" - -#~ msgid "from" -#~ msgstr "de" - -#~ msgid "Switching application language while some presets are modified." +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" #~ msgstr "" -#~ "A mudança do idioma do aplicativo enquanto alguns presets estão " -#~ "modificados." +#~ "Ativa o preenchimento de vão para as superfícies selecionadas. O " +#~ "comprimento mínimo do vão que será preenchida pode ser controlado a " +#~ "partir da opção de filtrar pequenas s abaixo.\n" +#~ "\n" +#~ "Opções:\n" +#~ "1. Em todos os lugares: Aplica preenchimento de s às superfícies sólidas " +#~ "superior, inferior e interna\n" +#~ "2. Superfícies superior e inferior: Aplica preenchimento de s apenas às " +#~ "superfícies superior e inferior\n" +#~ "3. Em nenhum lugar: Desativa o preenchimento de s\n" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Diminua ligeiramente este valor (por exemplo, 0.9) para reduzir a " +#~ "quantidade de material para ponte, para melhorar a flacidez" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Este valor governa a espessura da camada interna da ponte. Esta é a " +#~ "primeira camada sobre o preenchimento. Diminua ligeiramente este valor " +#~ "(por exemplo, 0.9) para melhorar a qualidade da superfície sobre o " +#~ "preenchimento esparsamente." -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+Qualquer seta" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Este fator afeta a quantidade de material para o preenchimento sólido " +#~ "superior. Você pode diminuí-lo ligeiramente para ter um acabamento de " +#~ "superfície suave" -#~ msgid "⌥+Left mouse button" -#~ msgstr "Botão esquerdo do mouse ⌥+" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Este fator afeta a quantidade de material para o preenchimento sólido " +#~ "inferior" -#~ msgid "⌘+Left mouse button" -#~ msgstr "Botão esquerdo do mouse ⌘+" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Ative esta opção para diminuir a velocidade de impressão em áreas onde " +#~ "podem existir potenciais perímetros curvados (warping)" -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+Qualquer seta" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Velocidade de ponte e paredes compostas completamente de overhangs" -#~ msgid "Alt+Left mouse button" -#~ msgstr "Botão esquerdo do mouse Alt+" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Velocidade da ponte interna. Se o valor for expresso como porcentagem, " +#~ "será calculado com base na velocidade da ponte. O valor padrão é 150%." -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Botão esquerdo do mouse Ctrl+" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Tempo para carregar novo filamento ao trocar de filamento. Apenas para " +#~ "estatísticas" -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Roda do mouse" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Tempo para descarregar o filamento antigo ao trocar de filamento. Apenas " +#~ "para estatísticas" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Roda do mouse" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Tempo para o firmware da impressora (ou a Unidade de Material Multi 2.0) " +#~ "carregar um novo filamento durante uma troca de ferramenta (ao executar o " +#~ "código T). Este tempo é adicionado ao tempo total de impressão pelo " +#~ "estimador de tempo do G-code." -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Roda do mouse" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Tempo para o firmware da impressora (ou a Unidade de Material Multi 2.0) " +#~ "descarregar um filamento durante uma troca de ferramenta (ao executar o " +#~ "código T). Este tempo é adicionado ao tempo total de impressão pelo " +#~ "estimador de tempo do G-code." -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Roda do mouse" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Filtrar vazios menores que o limite especificado" + +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Ative esta opção para controle de temperatura da câmara. Um comando M191 " +#~ "será adicionado antes de \"machine_start_gcode\"\n" +#~ "Comandos G-code: M141/M191 S(0-255)" + +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Uma temperatura mais alta na câmara pode ajudar a suprimir ou reduzir o " +#~ "empenamento e potencialmente levar a uma maior resistência de ligação " +#~ "entre camadas para materiais de alta temperatura como ABS, ASA, PC, PA e " +#~ "assim por diante. Ao mesmo tempo, a filtragem de ar de ABS e ASA ficará " +#~ "pior. Para PLA, PETG, TPU, PVA e outros materiais de baixa temperatura, a " +#~ "temperatura real da câmara não deve ser alta para evitar obstruções, " +#~ "portanto, é altamente recomendável usar 0, que significa desligado" #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 04def26dcd..6f89ee3416 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.0.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2024-06-19 16:50+0700\n" "Last-Translator: \n" "Language-Team: andylg@yandex.ru\n" @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.4.2\n" msgid "Supports Painting" @@ -79,6 +79,9 @@ msgstr "Угол для умной заливки" msgid "On overhangs only" msgstr "Только на свесах" +msgid "Auto support threshold angle: " +msgstr "Пороговый угол автоподдержки: " + msgid "Circle" msgstr "Окружность" @@ -98,9 +101,6 @@ msgstr "Позволяет рисовать на выбранных гранях msgid "Highlight faces according to overhang angle." msgstr "Выделение граней по углу свеса." -msgid "Auto support threshold angle: " -msgstr "Пороговый угол автоподдержки: " - msgid "No auto support" msgstr "Откл. автоподдержку" @@ -1988,6 +1988,9 @@ msgstr "Упростить полигональную сетку" msgid "Center" msgstr "По центру" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Редактировать настройки процесса печати" @@ -4193,6 +4196,15 @@ msgstr "Общее время печати" msgid "Total cost" msgstr "Общая стоимость" +msgid "up to" +msgstr "до" + +msgid "above" +msgstr "после" + +msgid "from" +msgstr "с" + msgid "Color Scheme" msgstr "Цветовая схема" @@ -4256,12 +4268,12 @@ msgstr "Время смены прутка" msgid "Cost" msgstr "Стоимость" -msgid "Print" -msgstr "Печать" - msgid "Color change" msgstr "Смена цвета" +msgid "Print" +msgstr "Печать" + msgid "Printer" msgstr "Профиль принтера" @@ -4445,7 +4457,7 @@ msgstr "Объём:" msgid "Size:" msgstr "Размер:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4890,6 +4902,18 @@ msgstr "Проход 2" msgid "Flow rate test - Pass 2" msgstr "Тест скорости потока - 2-ой проход" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Скорость потока" @@ -6197,14 +6221,6 @@ msgstr "Обнаружена модель, состоящая из нескол msgid "The file does not contain any geometry data." msgstr "Файл не содержит никаких геометрических данных." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Модель слишком большая" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6213,6 +6229,9 @@ msgstr "" "Хотите автоматически уменьшить её масштаб, \n" "чтобы она уместилась на столе?" +msgid "Object too large" +msgstr "Модель слишком большая" + msgid "Export STL file:" msgstr "Экспорт в STL файл:" @@ -6586,6 +6605,9 @@ msgstr "Хотите продолжить?" msgid "Language selection" msgstr "Выбор языка" +msgid "Switching application language while some presets are modified." +msgstr "Смена языка приложения при изменении некоторых профилей." + msgid "Changing application language" msgstr "Изменение языка приложения" @@ -7534,8 +7556,8 @@ msgid "" "Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgstr "" "Перед использованием устройства Bambu Lab ознакомьтесь с правилами и " -"условиями. Нажимая на кнопку \"Согласие на использование устройства Bambu Lab" -"\", вы соглашаетесь соблюдать Политику конфиденциальности и Условия " +"условиями. Нажимая на кнопку \"Согласие на использование устройства Bambu " +"Lab\", вы соглашаетесь соблюдать Политику конфиденциальности и Условия " "использования (далее - \"Условия\"). Если вы не соблюдаете или не согласны с " "Политикой конфиденциальности Bambu Lab, пожалуйста, не пользуйтесь " "оборудованием и услугами Bambu Lab." @@ -7739,8 +7761,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "При записи таймлапса без видимости головы рекомендуется добавить «Черновая " "башня таймлапса». \n" @@ -8643,8 +8665,11 @@ msgstr "Список моделей" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Импорт геометрических данных из STL/STEP/3MF/OBJ/AMF файлов" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Вставить из буфера обмена" @@ -8694,18 +8719,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Свернуть/Развернуть боковую панель" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘ + Любая стрелка" msgid "Movement in camera space" msgstr "Перемещение выбранного по отношению к камере" +msgid "⌥+Left mouse button" +msgstr "⌥ + Левая кнопка мыши" + msgid "Select a part" msgstr "Выбор части модели" +msgid "⌘+Left mouse button" +msgstr "⌘ + Левая кнопка мыши" + msgid "Select multiple objects" msgstr "Выбор нескольких моделей" +msgid "Ctrl+Any arrow" +msgstr "Ctrl + Любая стрелка" + +msgid "Alt+Left mouse button" +msgstr "Alt + Левая кнопка мыши" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl + Левая кнопка мыши" + msgid "Shift+Left mouse button" msgstr "Shift + Левая кнопка мыши" @@ -8808,12 +8848,24 @@ msgstr "Печатная пластина" msgid "Move: press to snap by 1mm" msgstr "Перемещение: Фиксация перемещения на 1 мм" +msgid "⌘+Mouse wheel" +msgstr "⌘ + Колесо мыши" + msgid "Support/Color Painting: adjust pen radius" msgstr "Рисование поддержки/Шва/Покраски: регулировка радиуса кисти" +msgid "⌥+Mouse wheel" +msgstr "⌥ + Колесо мыши" + msgid "Support/Color Painting: adjust section position" msgstr "Рисование поддержки/Шва/Покраски: регулировка положения сечения" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl + Колесо мыши" + +msgid "Alt+Mouse wheel" +msgstr "Alt + Колесо мыши" + msgid "Gizmo" msgstr "Гизмо" @@ -9894,24 +9946,32 @@ msgid "Apply gap fill" msgstr "Заполнять пробелы" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" -"Включает заполнение пробелов для выбранных поверхностей. Минимальной длиной " -"пробела, который будет заполнен, можно управлять с помощью нижерасположенной " -"опции «Игнорировать небольшие пробелы».\n" -"Доступные режимы:\n" -"1. Везде (заполнение пробелов применяется на верхних, нижних и внутренних " -"сплошных поверхностях)\n" -"2. Верхняя и нижняя поверхности (заполнение пробелов применяется только к " -"верхней и нижней поверхностям)\n" -"3. Нигде (заполнение пробелов отключено)\n" msgid "Everywhere" msgstr "Везде" @@ -9984,12 +10044,11 @@ msgstr "Коэффициент подачи пластика при печати msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Параметр задаёт количество пластика, затрачиваемое для построения мостов. В " -"большинстве случаев настроек по умолчанию достаточно, тем не менее, при " -"печати некоторых моделей уменьшение параметра может сократить провисание " -"пластика при печати мостов." msgid "Internal bridge flow ratio" msgstr "Поток внутреннего моста" @@ -9997,31 +10056,33 @@ msgstr "Поток внутреннего моста" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Это значение определяет толщину слоя внутреннего моста, печатаемого поверх " -"разреженного заполнения. Немного уменьшите это значение (например 0,9), " -"чтобы улучшить качество поверхности печатаемой поверх разреженного " -"заполнения." msgid "Top surface flow ratio" msgstr "Коэффициент потока на верхней поверхности" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Этот параметр задаёт количество выдавливаемого материала для верхнего " -"сплошного слоя заполнения. Вы можете немного уменьшить его, чтобы получить " -"более гладкую поверхность." msgid "Bottom surface flow ratio" msgstr "Коэффициент потока на нижней поверхности" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Этот параметр задаёт количество выдавливаемого материала для нижнего " -"сплошного слоя заполнения." msgid "Precise wall" msgstr "Точные периметры" @@ -10198,12 +10259,26 @@ msgstr "Включение динамического управления ск msgid "Slow down for curled perimeters" msgstr "Замедляться на изогнутых периметрах" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Включите эту опцию для замедления печати в тех областях, где потенциально " -"могут возникать изогнутые периметры." msgid "mm/s or %" msgstr "мм/с или %" @@ -10211,8 +10286,14 @@ msgstr "мм/с или %" msgid "External" msgstr "Внешние" -msgid "Speed of bridge and completely overhang wall" -msgstr "Скорость печати мостов и периметров с полным нависанием." +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "мм/с" @@ -10221,12 +10302,9 @@ msgid "Internal" msgstr "Внутренние" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Скорость печати внутреннего моста. Если задано в процентах, то значение " -"вычисляться относительно скорости внешнего моста (bridge_speed). Значение по " -"умолчанию равно 150%." msgid "Brim width" msgstr "Ширина каймы" @@ -10876,6 +10954,17 @@ msgstr "" "При небольшом переливе или недоливе на поверхности, корректировка этого " "параметра поможет получить хорошую гладкую поверхность." +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Включить Pressure advance" @@ -11067,16 +11156,29 @@ msgstr "мм³/с" msgid "Filament load time" msgstr "Время загрузки прутка" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Время загрузки новой пластиковой нити при её смене. Только для статистики." msgid "Filament unload time" msgstr "Время выгрузки прутка" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Время выгрузки старой пластиковой нити при её смене. Только для статистики." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11212,16 +11314,6 @@ msgstr "Скорость последнего охлаждающего движ msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Охлаждающие движения постепенно ускоряют до этой скорости." -msgid "" -"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." -msgstr "" -"Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает " -"пруток во время смены инструмента (при выполнении кода Т). Это время " -"добавляется к общему времени печати с помощью алгоритма оценки времени " -"выполнения G-кода." - msgid "Ramming parameters" msgstr "Параметры рэмминга" @@ -11232,16 +11324,6 @@ msgstr "" "Эта строка редактируется диалоговым окном рэмминга и содержит его конкретные " "параметры." -msgid "" -"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." -msgstr "" -"Время за которое прошивка принтера (или Multi Material Unit 2.0) выгружает " -"пруток во время смены инструмента (при выполнении кода Т). Это время " -"добавляется к общему времени печати с помощью алгоритма оценки времени " -"выполнения G-кода." - msgid "Enable ramming for multitool setups" msgstr "Включить рэмминг для мультиинструментальных устройств" @@ -11460,8 +11542,8 @@ msgstr "" "две ближайшие линии заполнения с коротким отрезком периметра. Если не " "найдено такого отрезка периметра короче этого параметра, линия заполнения " "соединяется с отрезком периметра только с одной стороны, а длина отрезка " -"периметра ограничена значением «Длина привязок разреженного " -"заполнения» (infill_anchor), но не больше этого параметра.\n" +"периметра ограничена значением «Длина привязок разреженного заполнения» " +"(infill_anchor), но не больше этого параметра.\n" "Если установить 0, то будет использоваться старый алгоритм для соединения " "заполнения, который даёт такой же результат, как и при значениях 1000 и 0." @@ -11616,17 +11698,17 @@ msgstr "Полная скорость вентилятора на слое" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Скорость вентилятора будет нарастать линейно от нуля на слое " -"\"close_fan_the_first_x_layers\" до максимума на слое \"full_fan_speed_layer" -"\". Значение \"full_fan_speed_layer\" будет игнорироваться, если оно меньше " -"значения \"close_fan_the_first_x_layers\", в этом случае вентилятор будет " -"работать на максимально допустимой скорости на слое " -"\"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" до максимума на слое " +"\"full_fan_speed_layer\". Значение \"full_fan_speed_layer\" будет " +"игнорироваться, если оно меньше значения \"close_fan_the_first_x_layers\", в " +"этом случае вентилятор будет работать на максимально допустимой скорости на " +"слое \"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "слой" @@ -11694,8 +11776,11 @@ msgstr "Игнорировать небольшие пробелы" msgid "Layers and Perimeters" msgstr "Слои и периметры" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Небольшие промежутки меньше указанного порога не будут заполняться." +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13865,34 +13950,40 @@ msgid "Activate temperature control" msgstr "Вкл. контроль температуры" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Для контроля температуры в камере принтера включите эту опцию. Команда M191 " -"будет добавлена перед стартовый G-кодом принтера (machine_start_gcode).\n" -"G-код команда: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Температура термокамеры" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Более высокая температура в камере может помочь уменьшить или даже исключить " -"коробление материала. Так же это улучшает межслойное соединения у " -"высокотемпературных материалов, таких как ABS, ASA, PC, PA и т.д. (в то же " -"время фильтрация воздуха при печати ABS и ASA сделает её хуже). Для " -"низкотемпературных материалов, таких как PLA, PETG, TPU, PVA и т. д., " -"фактическая температура в камере не должна быть слишком высокой, чтобы " -"избежать засорения сопла, поэтому настоятельно рекомендуется установить " -"температуру в камере равной 0°C." msgid "Nozzle temperature for layers after the initial one" msgstr "Температура сопла при печати для слоёв после первого." @@ -15878,8 +15969,8 @@ msgstr "" "Хотите перезаписать его?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Мы переименуем профиль в \"Производитель Тип Серия @выбранный принтер\".\n" @@ -17198,53 +17289,138 @@ msgstr "" "ABS, повышение температуры подогреваемого стола может снизить эту " "вероятность?" -#~ msgid "up to" -#~ msgstr "до" +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "Включает заполнение пробелов для выбранных поверхностей. Минимальной " +#~ "длиной пробела, который будет заполнен, можно управлять с помощью " +#~ "нижерасположенной опции «Игнорировать небольшие пробелы».\n" +#~ "Доступные режимы:\n" +#~ "1. Везде (заполнение пробелов применяется на верхних, нижних и внутренних " +#~ "сплошных поверхностях)\n" +#~ "2. Верхняя и нижняя поверхности (заполнение пробелов применяется только к " +#~ "верхней и нижней поверхностям)\n" +#~ "3. Нигде (заполнение пробелов отключено)\n" -#~ msgid "above" -#~ msgstr "после" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Параметр задаёт количество пластика, затрачиваемое для построения мостов. " +#~ "В большинстве случаев настроек по умолчанию достаточно, тем не менее, при " +#~ "печати некоторых моделей уменьшение параметра может сократить провисание " +#~ "пластика при печати мостов." -#~ msgid "from" -#~ msgstr "с" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Это значение определяет толщину слоя внутреннего моста, печатаемого " +#~ "поверх разреженного заполнения. Немного уменьшите это значение (например " +#~ "0,9), чтобы улучшить качество поверхности печатаемой поверх разреженного " +#~ "заполнения." -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "Смена языка приложения при изменении некоторых профилей." +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Этот параметр задаёт количество выдавливаемого материала для верхнего " +#~ "сплошного слоя заполнения. Вы можете немного уменьшить его, чтобы " +#~ "получить более гладкую поверхность." -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Этот параметр задаёт количество выдавливаемого материала для нижнего " +#~ "сплошного слоя заполнения." -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Включите эту опцию для замедления печати в тех областях, где потенциально " +#~ "могут возникать изогнутые периметры." -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘ + Любая стрелка" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Скорость печати мостов и периметров с полным нависанием." -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥ + Левая кнопка мыши" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Скорость печати внутреннего моста. Если задано в процентах, то значение " +#~ "вычисляться относительно скорости внешнего моста (bridge_speed). Значение " +#~ "по умолчанию равно 150%." -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘ + Левая кнопка мыши" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Время загрузки новой пластиковой нити при её смене. Только для статистики." -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl + Любая стрелка" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Время выгрузки старой пластиковой нити при её смене. Только для " +#~ "статистики." -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt + Левая кнопка мыши" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Время за которое прошивка принтера (или Multi Material Unit 2.0) " +#~ "выгружает пруток во время смены инструмента (при выполнении кода Т). Это " +#~ "время добавляется к общему времени печати с помощью алгоритма оценки " +#~ "времени выполнения G-кода." -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl + Левая кнопка мыши" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Время за которое прошивка принтера (или Multi Material Unit 2.0) " +#~ "выгружает пруток во время смены инструмента (при выполнении кода Т). Это " +#~ "время добавляется к общему времени печати с помощью алгоритма оценки " +#~ "времени выполнения G-кода." -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘ + Колесо мыши" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Небольшие промежутки меньше указанного порога не будут заполняться." -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥ + Колесо мыши" +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Для контроля температуры в камере принтера включите эту опцию. Команда " +#~ "M191 будет добавлена перед стартовый G-кодом принтера " +#~ "(machine_start_gcode).\n" +#~ "G-код команда: M141/M191 S(0-255)" -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl + Колесо мыши" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt + Колесо мыши" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Более высокая температура в камере может помочь уменьшить или даже " +#~ "исключить коробление материала. Так же это улучшает межслойное соединения " +#~ "у высокотемпературных материалов, таких как ABS, ASA, PC, PA и т.д. (в то " +#~ "же время фильтрация воздуха при печати ABS и ASA сделает её хуже). Для " +#~ "низкотемпературных материалов, таких как PLA, PETG, TPU, PVA и т. д., " +#~ "фактическая температура в камере не должна быть слишком высокой, чтобы " +#~ "избежать засорения сопла, поэтому настоятельно рекомендуется установить " +#~ "температуру в камере равной 0°C." #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index ee52d153f3..4d30adcc06 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,6 +71,9 @@ msgstr "Smart fyllningsvinkel" msgid "On overhangs only" msgstr "Endast på överhäng" +msgid "Auto support threshold angle: " +msgstr "Automatisk support tröskelsvinkel: " + msgid "Circle" msgstr "Cirkel" @@ -90,9 +93,6 @@ msgstr "Tillåter målning endast på fasetter som valts av: ”%1%”" msgid "Highlight faces according to overhang angle." msgstr "Markera ytor enligt överhängs vinkeln." -msgid "Auto support threshold angle: " -msgstr "Automatisk support tröskelsvinkel: " - msgid "No auto support" msgstr "Ingen auto support" @@ -1924,6 +1924,9 @@ msgstr "Förenkla modellen" msgid "Center" msgstr "Center" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Redigera Process Inställningar" @@ -4053,6 +4056,15 @@ msgstr "Total tid" msgid "Total cost" msgstr "Total cost" +msgid "up to" +msgstr "upp till" + +msgid "above" +msgstr "över" + +msgid "from" +msgstr "från" + msgid "Color Scheme" msgstr "Färgschema" @@ -4116,12 +4128,12 @@ msgstr "Filament bytes tider" msgid "Cost" msgstr "Kostnad" -msgid "Print" -msgstr "Skriv ut" - msgid "Color change" msgstr "Färg byte" +msgid "Print" +msgstr "Skriv ut" + msgid "Printer" msgstr "Skrivare" @@ -4305,7 +4317,7 @@ msgstr "Volym:" msgid "Size:" msgstr "Storlek:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4744,6 +4756,18 @@ msgstr "Pass 2" msgid "Flow rate test - Pass 2" msgstr "Test av flödeshastighet - Godkänt 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Flödeshastighet" @@ -6002,14 +6026,6 @@ msgstr "Ett objekt med multipla delar har upptäckts" msgid "The file does not contain any geometry data." msgstr "Filen innehåller ingen geometrisk data." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Objektet är för stort" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6017,6 +6033,9 @@ msgstr "" "Objektet verkar vara för stort, vill du skala ner det så att det passar " "byggplattan automatiskt?" +msgid "Object too large" +msgstr "Objektet är för stort" + msgid "Export STL file:" msgstr "Exportera STL-fil:" @@ -6381,6 +6400,9 @@ msgstr "Fortsätta?" msgid "Language selection" msgstr "Språkval" +msgid "Switching application language while some presets are modified." +msgstr "Byter språk medans inställningarna ändras." + msgid "Changing application language" msgstr "Byter språk" @@ -7106,8 +7128,8 @@ msgstr "" msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Timelapse stöds inte eftersom utskrifts sekvensen är inställd på \"Per objekt" -"\"." +"Timelapse stöds inte eftersom utskrifts sekvensen är inställd på \"Per " +"objekt\"." msgid "Errors" msgstr "Fel" @@ -7479,8 +7501,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "När du spelar in timelapse utan verktygshuvud rekommenderas att du lägger " "till ett \"Timelapse Wipe Tower\".\n" @@ -8326,8 +8348,11 @@ msgstr "Objektlista" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importera geometri data från STL/STEP/3MF/OBJ/AMF filer" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Skift+G" msgid "Paste from clipboard" msgstr "Klistra in ifrån urklipp" @@ -8376,18 +8401,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Dölj/Visa meny" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+Valfri pil" msgid "Movement in camera space" msgstr "Rörelse i kamera område" +msgid "⌥+Left mouse button" +msgstr "⌥+Vänster musknapp" + msgid "Select a part" msgstr "Välj del" +msgid "⌘+Left mouse button" +msgstr "⌘+Vänster musknapp" + msgid "Select multiple objects" msgstr "Välj flera objekt" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Valfri pil" + +msgid "Alt+Left mouse button" +msgstr "Alt+Vänster musknapp" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+vänster musknapp" + msgid "Shift+Left mouse button" msgstr "Shift+Vänster musknapp" @@ -8490,12 +8530,24 @@ msgstr "Plätering/Förgyllning" msgid "Move: press to snap by 1mm" msgstr "Flytta: tryck för att låsa med 1mm" +msgid "⌘+Mouse wheel" +msgstr "⌘+Mushjul" + msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Färgläggning: justera penn radie" +msgid "⌥+Mouse wheel" +msgstr "⌥+Mushjul" + msgid "Support/Color Painting: adjust section position" msgstr "Support/Färgläggning:justera sektions positionen" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+mushjul" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Mushjul" + msgid "Gizmo" msgstr "Gizmo" @@ -9491,14 +9543,31 @@ msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9571,10 +9640,11 @@ msgstr "Bridge/Brygg flöde" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Minska detta värde något (tex 0.9) för att minska material åtgång för " -"bridges/bryggor, detta för att förbättra kvaliteten" msgid "Internal bridge flow ratio" msgstr "" @@ -9582,7 +9652,11 @@ msgstr "" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" @@ -9590,15 +9664,20 @@ msgstr "Flödesförhållande för övre ytan" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Denna faktor påverkar mängden material för den övre solida fyllningen. Du " -"kan minska den något för att få en jämn ytfinish." msgid "Bottom surface flow ratio" msgstr "" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" msgid "Precise wall" @@ -9731,9 +9810,25 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" msgid "mm/s or %" @@ -9742,8 +9837,14 @@ msgstr "mm/s eller %." msgid "External" msgstr "" -msgid "Speed of bridge and completely overhang wall" -msgstr "Hastighet för bridges/bryggor och hela överhängs väggar" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9752,8 +9853,8 @@ msgid "Internal" msgstr "" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" msgid "Brim width" @@ -9849,9 +9950,9 @@ msgid "" "quality for needle and small details" msgstr "" "Aktivera detta val för att sänka utskifts hastigheten för att göra den sista " -"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets tröskel" -"\", detta så att lager kan kylas under en längre tid. Detta kan förbättra " -"kylnings kvaliteten för små detaljer" +"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets " +"tröskel\", detta så att lager kan kylas under en längre tid. Detta kan " +"förbättra kylnings kvaliteten för små detaljer" msgid "Normal printing" msgstr "Normal utskrift" @@ -10279,6 +10380,17 @@ msgstr "" "värdet är mellan 0.95 och 1.05. Du kan finjustera detta värde för att få en " "fin flat yta när visst överflöde eller underflöde finns" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Aktivera pressure advance" @@ -10451,17 +10563,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Inmatningstid för filament" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Ladda nytt filament vid byte av filament, endast för statistiska ändamål" msgid "Filament unload time" msgstr "Utmatningstid för filament" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Ladda ur gammalt filament vid byte av filament, endast för statistiska " -"ändamål" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10577,12 +10701,6 @@ msgstr "" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "" -msgid "" -"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." -msgstr "" - msgid "Ramming parameters" msgstr "" @@ -10591,12 +10709,6 @@ msgid "" "parameters." msgstr "" -msgid "" -"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." -msgstr "" - msgid "Enable ramming for multitool setups" msgstr "" @@ -10921,10 +11033,10 @@ msgstr "Full fläkthastighet vid lager" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -10989,7 +11101,10 @@ msgstr "Filtrera bort små luckor" msgid "Layers and Perimeters" msgstr "Lager och perimetrar" -msgid "Filter out gaps smaller than the threshold specified" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " msgstr "" msgid "" @@ -12862,29 +12977,40 @@ msgid "Activate temperature control" msgstr "" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" msgid "Chamber temperature" msgstr "Kammarens temperatur" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on. At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials, the actual chamber temperature should not " -"be high to avoid clogs, so 0 (turned off) is highly recommended." msgid "Nozzle temperature for layers after the initial one" msgstr "Nozzel temperatur efter första lager" @@ -14707,8 +14833,8 @@ msgstr "" "Vill du skriva om det?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -15951,53 +16077,49 @@ msgstr "" "ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten " "för vridning." -#~ msgid "up to" -#~ msgstr "upp till" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Minska detta värde något (tex 0.9) för att minska material åtgång för " +#~ "bridges/bryggor, detta för att förbättra kvaliteten" -#~ msgid "above" -#~ msgstr "över" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Denna faktor påverkar mängden material för den övre solida fyllningen. Du " +#~ "kan minska den något för att få en jämn ytfinish." -#~ msgid "from" -#~ msgstr "från" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Hastighet för bridges/bryggor och hela överhängs väggar" -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "Byter språk medans inställningarna ändras." +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Ladda nytt filament vid byte av filament, endast för statistiska ändamål" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Ladda ur gammalt filament vid byte av filament, endast för statistiska " +#~ "ändamål" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Skift+G" - -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+Valfri pil" - -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Vänster musknapp" - -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Vänster musknapp" - -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+Valfri pil" - -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Vänster musknapp" - -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+vänster musknapp" - -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Mushjul" - -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Mushjul" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+mushjul" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Mushjul" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on. At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials, the actual chamber " +#~ "temperature should not be high to avoid clogs, so 0 (turned off) is " +#~ "highly recommended." #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index a01233b2fc..14d4a64384 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2024-08-04 11:24+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: \n" @@ -74,6 +74,9 @@ msgstr "Akıllı doldurma açısı" msgid "On overhangs only" msgstr "Yalnızca çıkıntılarda" +msgid "Auto support threshold angle: " +msgstr "Otomatik destek eşik açısı: " + msgid "Circle" msgstr "Daire" @@ -94,9 +97,6 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Yüzleri çıkıntı açısına göre vurgulayın." -msgid "Auto support threshold angle: " -msgstr "Otomatik destek eşik açısı: " - msgid "No auto support" msgstr "Otomatik destek yok" @@ -728,8 +728,8 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı tipi " -"seçmeyi deneyin." +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " +"tipi seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." @@ -1013,9 +1013,9 @@ msgid "" "Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " -"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz " -"gerekir." +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " +"uygulama seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini " +"belirtmeniz gerekir." msgid "No symbol" msgstr "Sembol yok" @@ -1467,8 +1467,8 @@ msgstr "Bilgi" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will not " -"be affected." +"Please note, application settings will be lost, but printer profiles will " +"not be affected." msgstr "" "OrcaSlicer konfigürasyon dosyası bozulmuş olabilir ve ayrıştırılamayabilir.\n" "OrcaSlicer, konfigürasyon dosyasını yeniden oluşturmayı denedi.\n" @@ -1974,6 +1974,9 @@ msgstr "Modeli basitleştir" msgid "Center" msgstr "Merkez" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "İşlem ayarlarını düzenle" @@ -2091,8 +2094,8 @@ msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate cut " -"infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut infornation first." msgstr "" "Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" "Bundan sonra model tutarlılığı garanti edilemez.\n" @@ -2155,7 +2158,8 @@ msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." msgid "" "If first selected item is a part, the second one should be part in the same " "object." -msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." +msgstr "" +"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." msgid "The type of the last solid object part is not to be changed." msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." @@ -2512,14 +2516,16 @@ msgstr "" msgid "Arranging done." msgstr "Hizalama tamamlandı." -msgid "Arrange failed. Found some exceptions when processing object geometries." +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." msgstr "" "Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " "bulundu." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single bed:\n" +"Arrangement ignored the following objects which can't fit into a single " +"bed:\n" "%s" msgstr "" "Hizalama tek tablaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" @@ -2619,7 +2625,8 @@ msgstr "" "deneyin." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." +msgstr "" +"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." msgid "" "Failed to upload print file to FTP. Please check the network status and try " @@ -2675,8 +2682,8 @@ msgid "Importing SLA archive" msgstr "SLA arşivi içe aktarılıyor" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA printer " -"preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." msgstr "" "SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " "önce bazı SLA yazıcı ön ayarlarını etkinleştirin." @@ -2688,8 +2695,8 @@ msgid "Importing done." msgstr "İçe aktarma tamamlandı." msgid "" -"The imported SLA archive did not contain any presets. The current SLA presets " -"were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." msgstr "" "İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " "ayarları geri dönüş olarak kullanıldı." @@ -2746,8 +2753,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " -"açık kaynaklı bileşenleri kullanır" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " +"olan açık kaynaklı bileşenleri kullanır" #, c-format, boost-format msgid "About %s" @@ -2761,7 +2768,8 @@ msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " +"almaktadır." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "" @@ -2840,7 +2848,8 @@ msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" +msgstr "" +"Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" msgid "Other Color" msgstr "Diğer renk" @@ -2852,9 +2861,9 @@ msgid "Dynamic flow calibration" msgstr "Dinamik akış kalibrasyonu" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration results. " -"Please fill in the same values as the actual printing. They can be auto-" -"filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration " +"results. Please fill in the same values as the actual printing. They can be " +"auto-filled by selecting a filament preset." msgstr "" "Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " "etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " @@ -2989,7 +2998,8 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " +"edecektir." msgid "Group" msgstr "Grup" @@ -3027,8 +3037,8 @@ msgid "Insertion update" msgstr "Ekleme güncellemesi" msgid "" -"The AMS will automatically read the filament information when inserting a new " -"Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." msgstr "" "AMS, yeni bir Bambu Lab filamenti takıldığında filament bilgilerini otomatik " "olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." @@ -3051,16 +3061,17 @@ msgid "Power on update" msgstr "Güncellemeyi aç" msgid "" -"The AMS will automatically read the information of inserted filament on start-" -"up. It will take about 1 minute.The reading process will roll filament spools." +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." msgstr "" "AMS, başlangıçta takılan filamentin bilgilerini otomatik olarak okuyacaktır. " "Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." msgid "" -"The AMS will not automatically read information from inserted filament during " -"startup and will continue to use the information recorded before the last " -"shutdown." +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." msgstr "" "AMS, başlatma sırasında takılan filamentden bilgileri otomatik olarak okumaz " "ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." @@ -3074,8 +3085,8 @@ msgid "" "automatically." msgstr "" "AMS, filament bilgisi güncellendikten sonra Bambu filamentin kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " -"güncellenecektir." +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " +"olarak güncellenecektir." msgid "AMS filament backup" msgstr "AMS filament yedeklemesi" @@ -3107,8 +3118,8 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " -"kontrol edin, kontrol edip yeniden deneyin." +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " +"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " @@ -3196,8 +3207,8 @@ msgid "" "device. The corrupted output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Hedef cihazda " -"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı " -"deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." +"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz " +"kullanmayı deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." #, boost-format msgid "" @@ -3430,8 +3441,8 @@ msgid "Send to" msgstr "Gönderildi" msgid "" -"printers at the same time.(It depends on how many devices can undergo heating " -"at the same time.)" +"printers at the same time.(It depends on how many devices can undergo " +"heating at the same time.)" msgstr "" "aynı anda kaç yazıcının ısıtma işleminden geçebileceği, aynı anda " "ısıtılabilecek cihaz sayısına bağlıdır." @@ -3538,8 +3549,8 @@ msgid "" "The recommended minimum temperature is less than 190 degree or the " "recommended maximum temperature is greater than 300 degree.\n" msgstr "" -"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum sıcaklık " -"300 dereceden yüksektir.\n" +"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum " +"sıcaklık 300 dereceden yüksektir.\n" msgid "" "The recommended minimum temperature cannot be higher than the recommended " @@ -3576,13 +3587,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature,it " -"may result in material softening and clogging.The maximum safe temperature " -"for the material is %d" +"Current chamber temperature is higher than the material's safe temperature," +"it may result in material softening and clogging.The maximum safe " +"temperature for the material is %d" msgstr "" -"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, malzemenin " -"yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum güvenli " -"sıcaklık %d'dir" +"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, " +"malzemenin yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum " +"güvenli sıcaklık %d'dir" msgid "" "Too small layer height.\n" @@ -3636,16 +3647,16 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness is " -"set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness " +"is set to All. " msgstr "" -"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından " -"emin olunduğunda iyi çalışmaz. " +"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak " +"ayarlandığından emin olunduğunda iyi çalışmaz. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable alternate " -"extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable " +"alternate extra wall\n" "No - Dont use alternate extra wall" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi? \n" @@ -3722,7 +3733,8 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " +"etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" msgid "Auto bed leveling" @@ -3855,9 +3867,9 @@ msgid "Update failed." msgstr "Güncelleme başarısız." msgid "" -"The current chamber temperature or the target chamber temperature exceeds 45℃." -"In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is " -"not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds " +"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" +"TPU) is not allowed to be loaded." msgstr "" "Mevcut hazne sıcaklığı veya hedef hazne sıcaklığı 45 ° C'yi aşıyor Ekstruder " "tıkanmasını önlemek için düşük sıcaklıkta filament (PLA / PETG / TPU) " @@ -3884,7 +3896,8 @@ msgstr "" msgid "Failed to start printing job" msgstr "Yazdırma işi başlatılamadı" -msgid "This calibration does not support the currently selected nozzle diameter" +msgid "" +"This calibration does not support the currently selected nozzle diameter" msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir" msgid "Current flowrate cali param is invalid" @@ -3909,12 +3922,12 @@ msgid "" "Damp PVA will become flexible and get stuck inside AMS,please take care to " "dry it before use." msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " -"kurutmaya dikkat edin." +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " +"önce kurutmaya dikkat edin." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " -"please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " +"AMS, please use with caution." msgstr "" "CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " "kolaydır, lütfen dikkatli kullanın." @@ -4109,6 +4122,15 @@ msgstr "Toplam süre" msgid "Total cost" msgstr "Toplam tutar" +msgid "up to" +msgstr "kadar" + +msgid "above" +msgstr "üstünde" + +msgid "from" +msgstr "itibaren" + msgid "Color Scheme" msgstr "Renk Şeması" @@ -4172,12 +4194,12 @@ msgstr "Filament değişim süreleri" msgid "Cost" msgstr "Maliyet" -msgid "Print" -msgstr "Yazdır" - msgid "Color change" msgstr "Renk değişimi" +msgid "Print" +msgstr "Yazdır" + msgid "Printer" msgstr "Yazıcı" @@ -4361,7 +4383,7 @@ msgstr "Hacim:" msgid "Size:" msgstr "Boyut:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4803,6 +4825,18 @@ msgstr "Geçiş 2" msgid "Flow rate test - Pass 2" msgstr "Akış hızı testi - Geçiş 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Akış hızı" @@ -4920,8 +4954,8 @@ msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing the " -"configs." +"Hint: Make sure you have added the corresponding printer before importing " +"the configs." msgstr "" "\n" "İpucu: Yapılandırmaları içe aktarmadan önce ilgili yazıcıyı eklediğinizden " @@ -4970,7 +5004,8 @@ msgid "Please confirm if the printer is connected." msgstr "Lütfen yazıcının bağlı olup olmadığını onaylayın." msgid "" -"The printer is currently busy downloading. Please try again after it finishes." +"The printer is currently busy downloading. Please try again after it " +"finishes." msgstr "" "Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." @@ -4981,7 +5016,8 @@ msgid "Problem occured. Please update the printer firmware and try again." msgstr "" "Sorun oluştu. Lütfen yazıcının ürün yazılımını güncelleyin ve tekrar deneyin." -msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "" +"LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" "Yalnızca LAN Canlı İzleme kapalı. Lütfen yazıcı ekranındaki canlı " "görüntülemeyi açın." @@ -4996,8 +5032,8 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Bağlantı Başarısız. Lütfen ağı kontrol edip tekrar deneyin" msgid "" -"Please check the network and try again, You can restart or update the printer " -"if the issue persists." +"Please check the network and try again, You can restart or update the " +"printer if the issue persists." msgstr "" "Lütfen ağı kontrol edip tekrar deneyin. Sorun devam ederse yazıcıyı yeniden " "başlatabilir veya güncelleyebilirsiniz." @@ -5140,7 +5176,8 @@ msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" "%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "" +"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" msgid "Delete files" msgstr "Dosyaları sil" @@ -5200,8 +5237,8 @@ msgid "" "Reconnecting the printer, the operation cannot be completed immediately, " "please try again later." msgstr "" -"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha sonra " -"tekrar deneyin." +"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha " +"sonra tekrar deneyin." msgid "File does not exist." msgstr "Dosya bulunmuyor." @@ -5284,8 +5321,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki derecelendirmenin " -"üzerine yazılacaktır)" +"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki " +"derecelendirmenin üzerine yazılacaktır)" msgid "Rate" msgstr "Derecelendir" @@ -5881,8 +5918,8 @@ msgstr "Peletler" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " -"bir yazıcı seçin." +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " +"sayfasında bir yazıcı seçin." msgid "Sync filaments with AMS" msgstr "Filamentleri AMS ile senkronize et" @@ -5895,7 +5932,8 @@ msgstr "" "ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync all?" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" msgstr "" "Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " "mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" @@ -5910,13 +5948,13 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." msgid "" -"There are some unknown filaments mapped to generic preset. Please update Orca " -"Slicer or restart Orca Slicer to check if there is an update to system " +"There are some unknown filaments mapped to generic preset. Please update " +"Orca Slicer or restart Orca Slicer to check if there is an update to system " "presets." msgstr "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " -"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " -"güncelleyin veya Orca Slicer'ı yeniden başlatın." +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " +"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " +"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5941,13 +5979,13 @@ msgid "Restore" msgstr "Geri Yükleme" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be clogged " -"when printing this filament in a closed enclosure. Please open the front door " -"and/or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be " +"clogged when printing this filament in a closed enclosure. Please open the " +"front door and/or remove the upper glass." msgstr "" -"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir muhafaza " -"içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/veya üst camı " -"çıkarın." +"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir " +"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/" +"veya üst camı çıkarın." msgid "" "The nozzle hardness required by the filament is higher than the default " @@ -6010,8 +6048,8 @@ msgstr "Lütfen bunları parametre sekmelerinde düzeltin" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-kodları " -"bulunmaktadır:" +"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-" +"kodları bulunmaktadır:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6088,16 +6126,6 @@ msgstr "Birden fazla parçaya sahip nesne algılandı" msgid "The file does not contain any geometry data." msgstr "Dosya herhangi bir geometri verisi içermiyor." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" -"Nesneniz çok büyük görünüyor. Plakaya otomatik olarak uyacak şekilde " -"küçültülecektir." - -msgid "Object too large" -msgstr "Nesne çok büyük" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6105,6 +6133,9 @@ msgstr "" "Nesneniz çok büyük görünüyor. Plakaya sığacak şekilde otomatik olarak " "küçültmek istiyor musunuz?" +msgid "Object too large" +msgstr "Nesne çok büyük" + msgid "Export STL file:" msgstr "STL dosyasını dışa aktar:" @@ -6252,8 +6283,8 @@ msgstr "" "dosyayı indirin ve manuel olarak içe aktarın." msgid "" -"Importing to Orca Slicer failed. Please download the file and manually import " -"it." +"Importing to Orca Slicer failed. Please download the file and manually " +"import it." msgstr "" "Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel " "olarak İçe aktarın." @@ -6341,15 +6372,15 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed on " -"the printer." +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." msgstr "" "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " "görüntülenebiliyor." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts will " -"be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts " +"will be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -6463,8 +6494,8 @@ msgstr "" #, c-format, boost-format msgid "" "Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature to " -"non zero." +"still want to do this printing, please set this filament's bed temperature " +"to non zero." msgstr "" "Plaka% d: %s'nin %s(%s) filamentinı yazdırmak için kullanılması önerilmez. " "Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamentin yatak " @@ -6479,6 +6510,9 @@ msgstr "Devam etmek istiyor musun?" msgid "Language selection" msgstr "Dil seçimi" +msgid "Switching application language while some presets are modified." +msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." + msgid "Changing application language" msgstr "Dil değiştiriliyor" @@ -6564,8 +6598,8 @@ msgstr "Yalnızca bir OrcaSlicer örneğine izin ver" msgid "" "On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. In " -"such case this settings will allow only one instance." +"it is allowed to run multiple instances of same app from the command line. " +"In such case this settings will allow only one instance." msgstr "" "OSX’te her zaman varsayılan olarak çalışan tek bir uygulama örneği vardır. " "Ancak aynı uygulamanın birden fazla örneğinin komut satırından " @@ -6573,8 +6607,9 @@ msgstr "" "örneğe izin verecektir." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the same " -"OrcaSlicer is already running, that instance will be reactivated instead." +"If this is enabled, when starting OrcaSlicer and another instance of the " +"same OrcaSlicer is already running, that instance will be reactivated " +"instead." msgstr "" "Bu etkinleştirilirse, OrcaSlicer başlatıldığında ve aynı OrcaSlicer’ın başka " "bir örneği zaten çalışıyorken, bunun yerine bu örnek yeniden " @@ -6666,11 +6701,12 @@ msgstr "" "hatırlayacak ve otomatik olarak değiştirecektir." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." +msgstr "" +"Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." msgid "" -"With this option enabled, you can send a task to multiple devices at the same " -"time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the " +"same time and manage multiple devices." msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." @@ -6750,8 +6786,8 @@ msgstr "Otomatik yedekleme" msgid "" "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " -"aralıklarla yedekleyin." +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " +"düzenli aralıklarla yedekleyin." msgid "every" msgstr "her" @@ -7108,7 +7144,8 @@ msgid "Error code" msgstr "Hata kodu" msgid "No login account, only printers in LAN mode are displayed" -msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" +msgstr "" +"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" msgid "Connecting to server" msgstr "Sunucuya baglanıyor" @@ -7176,7 +7213,8 @@ msgstr "" "desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS slot." +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." msgstr "" "Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " "destekler." @@ -7237,8 +7275,8 @@ msgstr "" msgid "" "There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to start " -"printing." +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." msgstr "" "AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " "filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " @@ -7270,7 +7308,8 @@ msgstr "" "hasarına neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." +msgstr "" +"Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -7421,11 +7460,11 @@ msgid "" "successes and failures of the vast number of prints by our users. We are " "training %s to be smarter by feeding them the real-world data. If you are " "willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will not " -"collect any Personal Data by which an individual can be identified directly " -"or indirectly, including without limitation names, addresses, payment " -"information, or phone numbers. By enabling this service, you agree to these " -"terms and the statement about Privacy Policy." +"logs, which may include information described in Privacy Policy. We will " +"not collect any Personal Data by which an individual can be identified " +"directly or indirectly, including without limitation names, addresses, " +"payment information, or phone numbers. By enabling this service, you agree " +"to these terms and the statement about Privacy Policy." msgstr "" "3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " "düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " @@ -7476,16 +7515,16 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the model " -"without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" msgstr "" "Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " "kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " "misiniz?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the model " -"without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Do you want to enable prime tower?" msgstr "" "Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " "olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " @@ -7514,11 +7553,11 @@ msgstr "" msgid "" "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or using " -"support materials on interface." +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " -"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " +"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " "malzemeleri kullanılması." msgid "" @@ -7557,8 +7596,8 @@ msgid "" "height limits ,this may cause printing quality issues." msgstr "" "Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği " -"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden " -"olabilir." +"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına " +"neden olabilir." msgid "Adjust to the set range automatically? \n" msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı? \n" @@ -7572,8 +7611,8 @@ msgstr "Atla" msgid "" "Experimental feature: Retracting and cutting off the filament at a greater " "distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other printing " -"complications." +"reduce flush, it may also elevate the risk of nozzle clogs or other " +"printing complications." msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek " "için filamanı daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli " @@ -7595,8 +7634,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive\"-" -">\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -7645,8 +7684,8 @@ msgid "" "the overhang degree range and wall speed is used" msgstr "" "Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " -"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " +"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" msgid "Bridge" msgstr "Köprü" @@ -7758,11 +7797,11 @@ msgid "Cool plate" msgstr "Soğuk plaka" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament does " -"not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " -"üzerine yazdırmayı desteklemediği anlamına gelir" +"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool " +"Plate üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Engineering plate" msgstr "Mühendislik plakası" @@ -7945,13 +7984,13 @@ msgstr "Yazıcının ekstruder sayısı." msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder nozzle " -"diameter value?" +"Do you want to change the diameter for all extruders to first extruder " +"nozzle diameter value?" msgstr "" "Tek Ekstruder Çoklu Malzeme seçilir, \n" "ve tüm ekstrüderlerin aynı çapa sahip olması gerekir.\n" -"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek ister " -"misiniz?" +"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek " +"ister misiniz?" msgid "Nozzle diameter" msgstr "Nozul çapı" @@ -8112,16 +8151,16 @@ msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyo #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it contains " -"the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it contains " -"the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" @@ -8155,8 +8194,8 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri yeni " -"projeye aktarmayı seçebilirsiniz." +"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri " +"yeni projeye aktarmayı seçebilirsiniz." msgid "Extruders count" msgstr "Ekstruder sayısı" @@ -8180,19 +8219,19 @@ msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close this " -"dialog." +"Note: New modified presets will be selected in settings tabs after close " +"this dialog." msgstr "" "Seçilen seçenekleri sol ön ayardan sağa aktarın.\n" -"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde değiştirilen " -"yeni ön ayarlar seçilecektir." +"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde " +"değiştirilen yeni ön ayarlar seçilecektir." msgid "Transfer values from left to right" msgstr "Değerleri soldan sağa aktarın" msgid "" -"If enabled, this dialog can be used for transfer selected values from left to " -"right preset." +"If enabled, this dialog can be used for transfer selected values from left " +"to right preset." msgstr "" "Etkinleştirilirse, bu iletişim kutusu seçilen değerleri soldan sağa ön ayara " "aktarmak için kullanılabilir." @@ -8333,11 +8372,11 @@ msgstr "Sıkıştırma özelleştirme" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the unloaded " -"filament so it does not prevent insertion of the new filament and can itself " -"be reinserted later. This phase is important and different materials can " -"require different extrusion speeds to get the good shape. For this reason, " -"the extrusion rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the " +"unloaded filament so it does not prevent insertion of the new filament and " +"can itself be reinserted later. This phase is important and different " +"materials can require different extrusion speeds to get the good shape. For " +"this reason, the extrusion rates during ramming are adjustable.\n" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." @@ -8422,15 +8461,15 @@ msgstr "" "‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes to " -"re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes " +"to re-register it. You will be promoted twice" msgstr "" "BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden " "kaydetmek için Evet’e basın." msgid "" -"Missing BambuSource component registered for media playing! Please re-install " -"BambuStutio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-" +"install BambuStutio or seek after-sales help." msgstr "" "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen BambuStutio’yu " "yeniden yükleyin veya satış sonrası yardım isteyin." @@ -8443,9 +8482,9 @@ msgstr "" "çalışmayabilir! Düzeltmek için Evet’e basın." msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to play " -"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav " -"packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to " +"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" +"libav packages, then restart Orca Slicer?)" msgstr "" "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec " "bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav " @@ -8475,8 +8514,11 @@ msgstr "Nesne listesi" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "STL/STEP/3MF/OBJ/AMF dosyalarından geometri verilerini içe aktarın" -msgid "Shift+G" -msgstr "Shift+G" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Panodan yapıştır" @@ -8526,18 +8568,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Kenar çubuğunu daralt/genişlet" -msgid "Any arrow" -msgstr "Herhangi bir ok" +msgid "⌘+Any arrow" +msgstr "⌘+Herhangi bir ok" msgid "Movement in camera space" msgstr "Kamera alanında hareket" +msgid "⌥+Left mouse button" +msgstr "⌥+Sol fare düğmesi" + msgid "Select a part" msgstr "Parça seçin" +msgid "⌘+Left mouse button" +msgstr "⌘+Sol fare düğmesi" + msgid "Select multiple objects" msgstr "Birden fazla nesne seç" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+Herhangi bir yön tuşu" + +msgid "Alt+Left mouse button" +msgstr "Alt+Sol fare düğmesi" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Sol fare düğmesi" + msgid "Shift+Left mouse button" msgstr "Shift+Sol fare düğmesi" @@ -8640,12 +8697,24 @@ msgstr "Plakacı" msgid "Move: press to snap by 1mm" msgstr "Hareket Ettir: 1 mm kadar yaslamak için basın" +msgid "⌘+Mouse wheel" +msgstr "⌘+Fare tekerleği" + msgid "Support/Color Painting: adjust pen radius" msgstr "Destek/Renkli Boyama: kalem yarıçapını ayarlayın" +msgid "⌥+Mouse wheel" +msgstr "⌥+Fare tekerleği" + msgid "Support/Color Painting: adjust section position" msgstr "Destek/Renkli Boyama: bölüm konumunu ayarlayın" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Fare tekerleği" + +msgid "Alt+Mouse wheel" +msgstr "Alt+Fare tekerleği" + msgid "Gizmo" msgstr "Gizmo" @@ -8710,8 +8779,8 @@ msgstr "Ağ eklentisi güncellemesi" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek için " -"Tamam'a tıklayın." +"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " +"için Tamam'a tıklayın." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -8768,7 +8837,8 @@ msgstr "Nozulu Onaylayın ve Güncelleyin" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN Bağlantısı Başarısız (Yazdırma dosyası gönderiliyor)" -msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgid "" +"Step 1, please confirm Orca Slicer and your printer are in the same LAN." msgstr "" "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu doğrulayın." @@ -8837,8 +8907,8 @@ msgid "Updating successful" msgstr "Güncelleme başarılı" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not turn " -"off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not " +"turn off the power while the printer is updating." msgstr "" "Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " "Yazıcı güncellenirken gücü kapatmayın." @@ -8857,9 +8927,10 @@ msgid "" "printing. Do you want to update now? You can also update later on printer or " "update next time starting Orca." msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " -"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " -"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " +"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " +"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " +"güncelleyebilirsiniz." msgid "Extension Board" msgstr "Uzatma Kartı" @@ -9017,8 +9088,8 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " -"extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height " +"and extrusion width" msgstr "" "Flow::with_spacing()'e sağlanan geçersiz boşluk, kat yüksekliğinizi ve " "ekstrüzyon genişliğinizi kontrol edin" @@ -9151,8 +9222,8 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged during " -"printing" +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" msgstr "" "Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " "takdirde baskı sırasında ekstruder ve nozul tıkanabilir veya hasar görebilir" @@ -9185,8 +9256,8 @@ msgstr "%1% nesnesi maksimum yapı hacmi yüksekliğini aşıyor." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds the " -"maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds " +"the maximum build volume height." msgstr "" "%1% nesnesinin kendisi yapı hacmine uysa da, son katmanı maksimum yapı hacmi " "yüksekliğini aşıyor." @@ -9202,9 +9273,9 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." msgid "" -"Different nozzle diameters and different filament diameters may not work well " -"when the prime tower is enabled. It's very experimental, so please proceed " -"with caution." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" "Farklı püskürtme ucu çapları ve farklı filaman çapları, ana kule " "etkinleştirildiğinde iyi çalışmayabilir. Oldukça deneysel olduğundan lütfen " @@ -9238,8 +9309,8 @@ msgid "" "The prime tower is not supported when adaptive layer height is on. It " "requires that all objects have the same layer height." msgstr "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " -"aynı katman yüksekliğine sahip olmasını gerektirir." +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " +"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" @@ -9247,11 +9318,12 @@ msgstr "" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " +"gerektirir" msgid "" -"The prime tower requires that all objects are printed over the same number of " -"raft layers" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" msgstr "" "Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " "gerektirir" @@ -9264,8 +9336,8 @@ msgstr "" "gerektirir." msgid "" -"The prime tower is only supported if all objects have the same variable layer " -"height" +"The prime tower is only supported if all objects have the same variable " +"layer height" msgstr "" "Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " "olması durumunda desteklenir" @@ -9279,7 +9351,8 @@ msgstr "Çok büyük çizgi genişliği" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " +"olmalıdır." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9292,8 +9365,8 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " -"daha küçük olamaz." +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " +"katından daha küçük olamaz." msgid "" "Organic support branch diameter must not be smaller than support tree tip " @@ -9310,20 +9383,20 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozul çapını aşamaz" msgid "" -"Relative extruder addressing requires resetting the extruder position at each " -"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"Relative extruder addressing requires resetting the extruder position at " +"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " -"her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " -"\"G92 E0\" ekleyin." +"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " +"için her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. " +"Layer_gcode'a \"G92 E0\" ekleyin." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " -"uyumsuzdu." +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " +"adreslemeyle uyumsuzdu." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " @@ -9362,8 +9435,8 @@ msgid "" "(machine_max_acceleration_extruding).\n" "Orca will automatically cap the acceleration speed to ensure it doesn't " "surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your printer's " -"configuration to get higher speeds." +"You can adjust the machine_max_acceleration_extruding value in your " +"printer's configuration to get higher speeds." msgstr "" "Hızlanma ayarı yazıcının maksimum hızlanmasını aşıyor " "(machine_max_acceleration_extruding).\n" @@ -9424,7 +9497,8 @@ msgid "Elephant foot compensation" msgstr "Fil ayağı telafi oranı" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot effect" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" msgstr "" "Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" @@ -9483,15 +9557,15 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the hostname, IP address or URL of the printer host instance. Print " "host behind HAProxy with basic auth enabled can be accessed by putting the " -"user name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"user name and password into the URL in the following format: https://" +"username:password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " -"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " -"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " -"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" -"octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " +"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " +"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " +"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" +"username:password@your-octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -9499,7 +9573,8 @@ msgstr "Cihaz kullanıcı arayüzü" msgid "" "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " +"belirtin" msgid "API Key / Password" msgstr "API Anahtarı / Şifre" @@ -9508,8 +9583,9 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " +"içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9519,8 +9595,8 @@ msgstr "HTTPS CA Dosyası" msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository is " -"used." +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." msgstr "" "HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " "dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " @@ -9571,10 +9647,10 @@ msgid "" "either as an absolute value or as percentage (for example 50%) of a direct " "travel path. Zero to disable" msgstr "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " -"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " -"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " -"Devre dışı bırakmak için sıfır" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " +"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " +"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " +"belirtilebilir. Devre dışı bırakmak için sıfır" msgid "mm or %" msgstr "mm veya %" @@ -9583,8 +9659,8 @@ msgid "Other layers" msgstr "Diğer katmanlar" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9593,22 +9669,22 @@ msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " "Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the filament " -"does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9690,11 +9766,11 @@ msgid "" "The number of bottom solid layers is increased when slicing if the thickness " "calculated by bottom shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by bottom " -"shell layers" +"is disabled and thickness of bottom shell is absolutely determained by " +"bottom shell layers" msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " -"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " +"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -9703,23 +9779,32 @@ msgid "Apply gap fill" msgstr "Boşluk doldurmayı uygula" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak minimum " -"boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden kontrol " -"edilebilir.\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Seçenekler:\n" -"1. Her Yerde: Üst, alt ve iç katı yüzeylere boşluk doldurma uygular\n" -"2. Üst ve Alt yüzeyler: Boşluk doldurmayı yalnızca üst ve alt yüzeylere " -"uygular\n" -"3. Hiçbir Yerde: Boşluk doldurmayı devre dışı bırakır\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "Her yerde" @@ -9734,19 +9819,19 @@ msgid "Force cooling for overhang and bridge" msgstr "Çıkıntı ve köprüler için soğutmayı zorla" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and bridge " -"to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and " +"bridge to get better cooling" msgstr "" -"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma fanı " -"hızını optimize etmek amacıyla bu seçeneği etkinleştirin" +"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma " +"fanı hızını optimize etmek amacıyla bu seçeneği etkinleştirin" msgid "Fan speed for overhang" msgstr "Çıkıntılar için fan hızı" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang wall " -"which has large overhang degree. Forcing cooling for overhang and bridge can " -"get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang " +"wall which has large overhang degree. Forcing cooling for overhang and " +"bridge can get better quality for these part" msgstr "" "Çıkıntı derecesi büyük olan köprü veya çıkıntılı duvara baskı yaparken parça " "soğutma fanını bu hızda olmaya zorlayın. Çıkıntı ve köprü için soğutmayı " @@ -9758,9 +9843,9 @@ msgstr "Çıkıntı soğutması" #, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width of " -"the line without support from lower layer. 0% means forcing cooling for all " -"outer wall no matter how much overhang degree" +"exceeds this value. Expressed as percentage which indicides how much width " +"of the line without support from lower layer. 0% means forcing cooling for " +"all outer wall no matter how much overhang degree" msgstr "" "Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " "belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " @@ -9792,10 +9877,11 @@ msgstr "Köprülerde akış oranı" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu değeri " -"biraz azaltın (örneğin 0,9)" msgid "Internal bridge flow ratio" msgstr "İç köprü akış oranı" @@ -9803,27 +9889,33 @@ msgstr "İç köprü akış oranı" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Bu değer iç köprü katmanının kalınlığını belirler. Bu, seyrek dolgunun " -"üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini iyileştirmek " -"için bu değeri biraz azaltın (örneğin 0,9)." msgid "Top surface flow ratio" msgstr "Üst katı dolgu akış oranı" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " -"elde etmek için biraz azaltabilirsiniz" msgid "Bottom surface flow ratio" msgstr "Alt katı dolgu akış oranı" -msgid "This factor affects the amount of material for bottom solid infill" -msgstr "Bu faktör alt katı dolgu için malzeme miktarını etkiler" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Precise wall" msgstr "Hassas duvar" @@ -9863,11 +9955,11 @@ msgid "" "on the next layer, like letters. Set this setting to 0 to remove these " "artifacts." msgstr "" -"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa " -"layer genişliği bu değerin altında olan bir üst katman olarak " +"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından " +"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak " "değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir " -"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya a " -"% çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" +"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya " +"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" "Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince " "özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları " "kaldırmak için bu ayarı 0 olarak ayarlayın." @@ -9899,9 +9991,9 @@ msgid "Overhang reversal" msgstr "Çıkıntıyı tersine çevir" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse direction " -"on odd layers. This alternating pattern can drastically improve steep " -"overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse " +"direction on odd layers. This alternating pattern can drastically improve " +"steep overhangs.\n" "\n" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." @@ -9923,7 +10015,8 @@ msgid "" "alternating directions. This should reduce part warping while also " "maintaining external wall quality. This feature can be very useful for warp " "prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over supports.\n" +"Silk PLA. It can also help reduce warping on floating regions over " +"supports.\n" "\n" "For this setting to be the most effective, it is recomended to set the " "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -9955,7 +10048,8 @@ msgstr "" "Bu seçenek, havşa delikleri için köprüler oluşturarak bunların desteksiz " "yazdırılmasına olanak tanır. Mevcut modlar şunları içerir:\n" "1. Yok: Köprü oluşturulmaz.\n" -"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı köprülenecek.\n" +"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı " +"köprülenecek.\n" "3. Feda Katman: Tam bir feda köprü katmanı oluşturulur." msgid "Partially bridged" @@ -9997,12 +10091,26 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "Kıvrılmış çevre çizgilerinde yavaşlat" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Potansiyel kıvrılmış çevrelerin bulunabileceği alanlarda yazdırmayı " -"yavaşlatmak için bu seçeneği etkinleştirin" msgid "mm/s or %" msgstr "mm/s veya %" @@ -10010,8 +10118,14 @@ msgstr "mm/s veya %" msgid "External" msgstr "Harici" -msgid "Speed of bridge and completely overhang wall" -msgstr "Köprü hızı ve tamamen sarkan duvar" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -10020,11 +10134,9 @@ msgid "Internal" msgstr "Dahili" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Dahili köprünün hızı. Değer yüzde olarak ifade edilirse köprü_hızına göre " -"hesaplanacaktır. Varsayılan değer %150'dir." msgid "Brim width" msgstr "Kenar genişliği" @@ -10075,8 +10187,8 @@ msgid "Brim ear detection radius" msgstr "Kenar kulak algılama yarıçapı" msgid "" -"The geometry will be decimated before dectecting sharp angles. This parameter " -"indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This " +"parameter indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" "Keskin açılar tespit edilmeden önce geometrinin büyük bir kısmı yok " @@ -10125,10 +10237,10 @@ msgid "" "that layer can be cooled for longer time. This can improve the cooling " "quality for needle and small details" msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " -"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu " -"seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne " -"ve küçük detaylar için soğutma kalitesini artırabilir" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " +"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " +"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " +"iğne ve küçük detaylar için soğutma kalitesini artırabilir" msgid "Normal printing" msgstr "Normal baskı" @@ -10137,7 +10249,8 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " +"ivmesi" msgid "mm/s²" msgstr "mm/s²" @@ -10181,8 +10294,8 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " -"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " +"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" msgid "Don't support bridges" msgstr "Köprülerde destek olmasın" @@ -10223,8 +10336,8 @@ msgid "Don't filter out small internal bridges (beta)" msgstr "Küçük iç köprüleri filtrelemeyin (deneysel)" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted or " -"curved models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted " +"or curved models.\n" "\n" "By default, small internal bridges are filtered out and the internal solid " "infill is printed directly over the sparse infill. This works well in most " @@ -10239,16 +10352,16 @@ msgid "" "unsupported internal solid infill. The options below control the amount of " "filtering, i.e. the amount of internal bridges created.\n" "\n" -"Disabled - Disables this option. This is the default behaviour and works well " -"in most cases.\n" +"Disabled - Disables this option. This is the default behaviour and works " +"well in most cases.\n" "\n" "Limited filtering - Creates internal bridges on heavily slanted surfaces, " -"while avoiding creating uncessesary interal bridges. This works well for most " -"difficult models.\n" +"while avoiding creating uncessesary interal bridges. This works well for " +"most difficult models.\n" "\n" -"No filtering - Creates internal bridges on every potential internal overhang. " -"This option is useful for heavily slanted top surface models. However, in " -"most cases it creates too many unecessary bridges." +"No filtering - Creates internal bridges on every potential internal " +"overhang. This option is useful for heavily slanted top surface models. " +"However, in most cases it creates too many unecessary bridges." msgstr "" "Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki " "yastıklamanın azaltılmasına yardımcı olabilir.\n" @@ -10400,8 +10513,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " -"iç duvar hızından daha yavaş olması kullanılır." +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " +"için iç duvar hızından daha yavaş olması kullanılır." msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" @@ -10430,8 +10543,8 @@ msgstr "Duvar baskı sırası" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls can " -"adhere to a neighouring perimeter while printing. However, this option " +"Use Inner/Outer for best overhangs. This is because the overhanging walls " +"can adhere to a neighouring perimeter while printing. However, this option " "results in slightly reduced surface quality as the external perimeter is " "deformed by being squashed to the internal perimeter.\n" "\n" @@ -10462,14 +10575,14 @@ msgstr "" "kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış " "duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı " "düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış " -"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için " -"en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı " -"önerilir. \n" +"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması " +"için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine " +"karşı önerilir. \n" "\n" "İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk " "avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir " -"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z dikişleri " -"daha az tutarlı görünecektir.\n" +"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z " +"dikişleri daha az tutarlı görünecektir.\n" "\n" " " @@ -10491,9 +10604,9 @@ msgid "" "\n" "Printing infill first may help with extreme overhangs as the walls have the " "neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse external " -"surface finish. It can also cause the infill to shine through the external " -"surfaces of the part." +"the printed walls where it is attached to them, resulting in a worse " +"external surface finish. It can also cause the infill to shine through the " +"external surfaces of the part." msgstr "" "Duvar/dolgu sırası. Onay kutusu işaretlenmediğinde duvarlar önce yazdırılır, " "bu çoğu durumda en iyi şekilde çalışır.\n" @@ -10511,8 +10624,8 @@ msgid "" "The direction which the wall loops are extruded when looking down from the " "top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on odd " -"is enabled. Set this to any option other than Auto will force the wall " +"By default all walls are extruded in counter-clockwise, unless Reverse on " +"odd is enabled. Set this to any option other than Auto will force the wall " "direction regardless of the Reverse on odd.\n" "\n" "This option will be disabled if sprial vase mode is enabled." @@ -10520,8 +10633,8 @@ msgstr "" "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı yön.\n" "\n" "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak tüm " -"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında herhangi " -"bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " +"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " +"herhangi bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " "zorlayacaktır.\n" "\n" "Spiral vazo modu etkinse bu seçenek devre dışı bırakılacaktır." @@ -10549,8 +10662,8 @@ msgid "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " -"için kullanılır." +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " +"önlemek için kullanılır." msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " @@ -10573,19 +10686,20 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " -"these min/max points. This information can usually be obtained from your " -"printer manufacturer. The default setting is (-99999, -99999), which means " -"there are no limits, thus allowing probing across the entire bed." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (-99999, -99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob XY " -"ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " -"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " -"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " -"(-99999, -99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına " -"gelir, dolayısıyla yatağın tamamında problamaya izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob " +"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve " +"maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " +"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " +"edinilebilir. Varsayılan ayar (-99999, -99999) şeklindedir; bu, herhangi bir " +"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " +"izin verilir." msgid "Bed mesh max" msgstr "Maksimum yatak ağı" @@ -10595,19 +10709,20 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " -"these min/max points. This information can usually be obtained from your " -"printer manufacturer. The default setting is (99999, 99999), which means " -"there are no limits, thus allowing probing across the entire bed." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " +"exceed these min/max points. This information can usually be obtained from " +"your printer manufacturer. The default setting is (99999, 99999), which " +"means there are no limits, thus allowing probing across the entire bed." msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. Probun " -"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " -"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " -"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " -"(99999, 99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına gelir, " -"dolayısıyla yatağın tamamında problamaya izin verilir." +"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. " +"Probun XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob " +"noktasının yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum " +"ve maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " +"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " +"edinilebilir. Varsayılan ayar (99999, 99999) şeklindedir; bu, herhangi bir " +"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " +"izin verilir." msgid "Probe point distance" msgstr "Prob noktası mesafesi" @@ -10624,8 +10739,8 @@ msgid "Mesh margin" msgstr "Yatak ağı boşluğu" msgid "" -"This option determines the additional distance by which the adaptive bed mesh " -"area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed " +"mesh area should be expanded in the XY directions." msgstr "" "Bu seçenek, uyarlanabilir yatak ağ alanının XY yönlerinde genişletilmesi " "gereken ek mesafeyi belirler." @@ -10645,9 +10760,9 @@ msgstr "Akış oranı" msgid "" "The material may have volumetric change after switching between molten state " "and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 and " -"1.05. Maybe you can tune this value to get nice flat surface when there has " -"slight overflow or underflow" +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow" msgstr "" "Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " "değişime sahip olabilir. Bu ayar, bu filamentin gcode'daki tüm ekstrüzyon " @@ -10655,6 +10770,17 @@ msgstr "" "arasındadır. Belki hafif taşma veya taşma olduğunda güzel düz bir yüzey elde " "etmek için bu değeri ayarlayabilirsiniz" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Basınç Avansı (PA)" @@ -10671,6 +10797,7 @@ msgstr "Basınç avansı (Klipper) Doğrusal ilerleme faktörü (Marlin)" msgid "Enable adaptive pressure advance (beta)" msgstr "Uyarlanabilir basınç ilerlemesini etkinleştir (beta)" +#, fuzzy, c-format, boost-format msgid "" "With increasing print speeds (and hence increasing volumetric flow through " "the nozzle) and increasing accelerations, it has been observed that the " @@ -10679,12 +10806,12 @@ msgid "" "used that does not cause too much bulging on features with lower flow speed " "and accelerations while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of your " -"printer's extrusion system depending on the volumetric flow speed and " +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " "acceleration it is printing at. Internally, it generates a fitted model that " "can extrapolate the needed pressure advance for any given volumetric flow " -"speed and acceleration, which is then emmited to the printer depending on the " -"current print conditions.\n" +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" "\n" "When enabled, the pressure advance value above is overriden. However, a " "reasonable default value above is strongly recomended to act as a fallback " @@ -10725,24 +10852,24 @@ msgid "" "1. Run the pressure advance test for at least 3 speeds per acceleration " "value. It is recommended that the test is run for at least the speed of the " "external perimeters, the speed of the internal perimeters and the fastest " -"feature print speed in your profile (usually its the sparse or solid infill). " -"Then run them for the same speeds for the slowest and fastest print " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " "accelerations,and no faster than the recommended maximum acceleration as " "given by the klipper input shaper.\n" "2. Take note of the optimal PA value for each volumetric flow speed and " "acceleration. You can find the flow number by selecting flow from the color " "scheme drop down and move the horizontal slider over the PA pattern lines. " "The number should be visible at the bottom of the page. The ideal PA value " -"should be decreasing the higher the volumetric flow is. If it is not, confirm " -"that your extruder is functioning correctly.The slower and with less " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " "acceleration you print, the larger the range of acceptable PA values. If no " "difference is visible, use the PA value from the faster test.3. Enter the " "triplets of PA values, Flow and Accelerations in the text box here and save " "your filament profile\n" "\n" msgstr "" -"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını ve " -"ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " +"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını " +"ve ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " "kümesi. Örneğin\n" "0.04,3.96,3000\n" "0,033,3,96,10000\n" @@ -10764,18 +10891,18 @@ msgstr "" "olursa o kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde " "çalıştığını doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, " "kabul edilebilir PA değerleri aralığı o kadar geniş olur. Hiçbir fark " -"görünmüyorsa, daha hızlı olan testteki PA değerini kullanın.3. Buradaki metin " -"kutusuna PA değerleri, Akış ve Hızlanma üçlüsünü girin ve filament " +"görünmüyorsa, daha hızlı olan testteki PA değerini kullanın.3. Buradaki " +"metin kutusuna PA değerleri, Akış ve Hızlanma üçlüsünü girin ve filament " "profilinizi kaydedin\n" msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "Çıkıntılar için uyarlanabilir basınç ilerlemesini etkinleştirin (beta)" msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the same " -"feature. This is an experimental option, as if the PA profile is not set " -"accurately, it will cause uniformity issues on the external surfaces before " -"and after overhangs.\n" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" msgstr "" "Aynı özellik içinde akış değiştiğinde ve çıkıntılar için uyarlanabilir PA’yı " "etkinleştirin. Bu deneysel bir seçenektir, sanki basınç profili doğru " @@ -10788,10 +10915,10 @@ msgstr "Köprüler için basınç ilerlemesi" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of slight " -"under extrusion immediately after bridges. This is caused by the pressure " -"drop in the nozzle when printing in the air and a lower PA helps counteract " -"this." +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." msgstr "" "Köprüler için basınç ilerleme değeri. Devre dışı bırakmak için 0’a " "ayarlayın. \n" @@ -10802,8 +10929,8 @@ msgstr "" "basınç, bunu önlemeye yardımcı olur." msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, it " -"will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, " +"it will be computed over the nozzle diameter." msgstr "" "Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " "olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır." @@ -10812,8 +10939,8 @@ msgid "Keep fan always on" msgstr "Fanı her zaman açık tut" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run at " -"least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run " +"at least at minimum speed to reduce the frequency of starting and stoping" msgstr "" "Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " "ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " @@ -10894,18 +11021,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Filament yükleme süresi" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Yalnızca " -"istatistikler için" msgid "Filament unload time" msgstr "Filament boşaltma süresi" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Filamenti değiştirdiğinizde eski filamenti boşaltma zamanı. Yalnızca " -"istatistikler için" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10945,11 +11083,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " -"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " +"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " "Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " -"bıraktığınızdan emin olun." +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " +"boşluk bıraktığınızdan emin olun." msgid "Loading speed" msgstr "Yükleme hızı" @@ -11000,8 +11138,8 @@ msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves." msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " -"sayısını belirtin." +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " +"Bu sayısını belirtin." msgid "Stamping loading speed" msgstr "Damgalama yükleme hızı" @@ -11014,8 +11152,8 @@ msgstr "Soğutma tüpünün merkezinden ölçülen damgalama mesafesi" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " -"individual cooling moves (\"stamping\"). This option configures how long this " -"movement should be before the filament is retracted again." +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." msgstr "" "Sıfırdan farklı bir değere ayarlanırsa filaman bireysel soğutma hareketleri " "arasında (“damgalama”) nüzule doğru hareket ettirilir. Bu seçenek, filamanın " @@ -11034,9 +11172,9 @@ msgstr "Silme kulesi üzerinde minimum boşaltım" msgid "" "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, " -"Orca Slicer will always prime this amount of material into the wipe tower to " -"produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial " +"object, Orca Slicer will always prime this amount of material into the wipe " +"tower to produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " @@ -11051,15 +11189,6 @@ msgstr "Son soğutma hareketi hızı" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Soğutma hareketleri bu hıza doğru giderek hızlanır." -msgid "" -"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." -msgstr "" -"Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " -"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme süresi. " -"Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine eklenir." - msgid "Ramming parameters" msgstr "Sıkıştırma parametreleri" @@ -11070,15 +11199,6 @@ msgstr "" "Bu dize RammingDialog tarafından düzenlenir ve ramming'e özgü parametreleri " "içerir." -msgid "" -"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." -msgstr "" -"Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " -"sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " -"süre tahmincisi tarafından toplam baskı süresine eklenir." - msgid "Enable ramming for multitool setups" msgstr "Çoklu araç kurulumları için sıkıştırmayı etkinleştirin" @@ -11121,7 +11241,8 @@ msgstr "Filament malzeme türü" msgid "Soluble material" msgstr "Çözünür malzeme" -msgid "Soluble material is commonly used to print support and support interface" +msgid "" +"Soluble material is commonly used to print support and support interface" msgstr "" "Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11129,7 +11250,8 @@ msgstr "" msgid "Support material" msgstr "Destek malzemesi" -msgid "Support material is commonly used to print support and support interface" +msgid "" +"Support material is commonly used to print support and support interface" msgstr "" "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11177,8 +11299,8 @@ msgid "Solid infill direction" msgstr "Katı dolgu yönü" msgid "" -"Angle for solid infill pattern, which controls the start or main direction of " -"line" +"Angle for solid infill pattern, which controls the start or main direction " +"of line" msgstr "" "Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" @@ -11196,8 +11318,8 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya dönüştürür " -"ve iç katı dolgu modeli kullanılacaktır" +"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya " +"dönüştürür ve iç katı dolgu modeli kullanılacaktır" msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -11245,22 +11367,23 @@ msgid "" "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. Orca Slicer 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. \n" +"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. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " -"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " -"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " -"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " +"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " +"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " +"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " "sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " -"parametreyi sıfıra ayarlayın." +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " +"bu parametreyi sıfıra ayarlayın." msgid "0 (no open anchors)" msgstr "0 (açık bağlantı yok)" @@ -11275,22 +11398,23 @@ msgid "" "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. Orca Slicer 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. \n" +"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. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " -"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " -"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " -"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır " -"ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " -"parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " -"0 ile aynı sonucu oluşturmalıdır." +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " +"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " +"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " +"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " +"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " +"ancak bu parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " +"ve 0 ile aynı sonucu oluşturmalıdır." msgid "0 (Simple connect)" msgstr "0 (Basit bağlantı)" @@ -11308,8 +11432,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " -"yüzey kalitesini iyileştirebilir" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " +"üst yüzey kalitesini iyileştirebilir" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" @@ -11319,8 +11443,8 @@ msgid "" "Acceleration of bridges. If the value is expressed as a percentage (e.g. " "50%), it will be calculated based on the outer wall acceleration." msgstr "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " -"duvar ivmesine göre hesaplanacaktır." +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " +"dış duvar ivmesine göre hesaplanacaktır." msgid "mm/s² or %" msgstr "mm/s² veya %" @@ -11357,7 +11481,8 @@ msgid "accel_to_decel" msgstr "Accel_to_decel" #, c-format, boost-format -msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgid "" +"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" "Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" @@ -11390,8 +11515,8 @@ msgid "Initial layer height" msgstr "Başlangıç katman yüksekliği" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly can " -"improve build plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhesion" msgstr "" "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " "plakasının yapışmasını iyileştirebilir" @@ -11439,9 +11564,10 @@ msgid "" msgstr "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " -"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden düşükse " -"göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers\" + 1 " -"katmanında izin verilen maksimum hızda çalışacaktır." +"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " +"düşükse göz ardı edilecektir; bu durumda fan, " +"\"close_fan_the_first_x_layers\" + 1 katmanında izin verilen maksimum hızda " +"çalışacaktır." msgid "layer" msgstr "katman" @@ -11507,8 +11633,11 @@ msgstr "Küçük boşlukları filtrele" msgid "Layers and Perimeters" msgstr "Katmanlar ve Çevreler" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Belirtilen eşikten daha küçük boşlukları filtrele" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -11537,11 +11666,11 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " "tolerance is same as the resolution. \n" "\n" -"Note: For klipper machines, this option is recomended to be disabled. Klipper " -"does not benefit from arc commands as these are split again into line " -"segments by the firmware. This results in a reduction in surface quality as " -"line segments are converted to arcs by the slicer and then back to line " -"segments by the firmware." +"Note: For klipper machines, this option is recomended to be disabled. " +"Klipper does not benefit from arc commands as these are split again into " +"line segments by the firmware. This results in a reduction in surface " +"quality as line segments are converted to arcs by the slicer and then back " +"to line segments by the firmware." msgstr "" "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " "etkinleştirin. Montaj toleransı çözünürlükle aynıdır. \n" @@ -11578,8 +11707,8 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " -"basılabileceğini belirler" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " +"filamentin basılabileceğini belirler" msgid "Undefine" msgstr "Tanımsız" @@ -11631,8 +11760,8 @@ msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "Yatak şekline göre [0,1] aralığında en iyi otomatik düzenleme konumu." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code command: " -"M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code " +"command: M106 P2 S(0-255)." msgstr "" "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin. G-code " "komut: M106 P2 S(0-255)." @@ -11675,8 +11804,8 @@ msgid "" msgstr "" "Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " "maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " -"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " +"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." msgid "Time cost" @@ -11722,7 +11851,8 @@ msgid "Pellet Modded Printer" msgstr "Pelet Modlu Yazıcı" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" +msgstr "" +"Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" msgid "Support multi bed types" msgstr "Çoklu tabla" @@ -11736,20 +11866,21 @@ msgstr "Nesneleri etiketle" msgid "" "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." +"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." msgstr "" "G-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " "yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " -"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu " -"ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." +"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " +"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." msgid "Exclude objects" msgstr "Nesneleri hariç tut" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" +msgstr "" +"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" msgid "Verbose G-code" msgstr "Ayrıntılı G kodu" @@ -11789,10 +11920,10 @@ msgstr "Dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. The " -"percentage value is relative to line width of sparse infill. Set this value " -"to ~10-15% to minimize potential over extrusion and accumulation of material " -"resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill. Set this " +"value to ~10-15% to minimize potential over extrusion and accumulation of " +"material resulting in rough top surfaces." msgstr "" "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe " "genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı " @@ -11805,8 +11936,8 @@ msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" "Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill meets " -"the walls. A value of 25-30% is a good starting point, minimising the " +"bonding and to minimize the appearance of pinholes where the top infill " +"meets the walls. A value of 25-30% is a good starting point, minimising the " "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" @@ -11824,12 +11955,12 @@ msgstr "Arayüz kabukları" msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual soluble " -"support material" +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" msgstr "" "Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " -"baskıları için kullanışlıdır" +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " +"ekstruder baskıları için kullanışlıdır" msgid "Maximum width of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği" @@ -11851,7 +11982,8 @@ msgstr "" "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. " "“mmu_segmented_region_max_width” sıfırsa veya " "“mmu_segmented_region_interlocking_length”, “mmu_segmented_region_max_width” " -"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı bırakır." +"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı " +"bırakır." msgid "Use beam interlocking" msgstr "Işın kilitlemeyi kullanın" @@ -11895,7 +12027,8 @@ msgid "" "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" "Hücrelerde ölçülen, birbirine kenetlenen yapıyı oluşturmak için filamentler " -"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden olur." +"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden " +"olur." msgid "Interlocking boundary avoidance" msgstr "Birbirine kenetlenen sınırdan kaçınma" @@ -11996,8 +12129,8 @@ msgstr "" "G kodu tadı Klipper olarak ayarlandığında bu seçenek göz ardı edilecektir." msgid "" -"This G-code will be used as a code for the pause print. User can insert pause " -"G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" msgstr "" "Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " "Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" @@ -12128,8 +12261,8 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Seyahat için maksimum ivme (M204 T), yalnızca Marlin 2 için geçerlidir" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This is " -"the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" msgstr "" "Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " "Bu, parça soğutma fanının maksimum hız sınırlamasıdır" @@ -12149,8 +12282,8 @@ msgid "Extrusion rate smoothing" msgstr "Ekstrüzyon hızını yumuşatma" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when the " -"printer transitions from printing a high flow (high speed/larger width) " +"This parameter smooths out sudden extrusion rate changes that happen when " +"the printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" @@ -12161,11 +12294,12 @@ msgid "" "A value of 0 disables the feature. \n" "\n" "For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some marginal " -"benefit in certain cases where feature speeds vary greatly. For example, when " -"there are aggressive slowdowns due to overhangs. In these cases a high value " -"of around 300-350mm3/s2 is recommended as this allows for just enough " -"smoothing to assist pressure advance achieve a smoother flow transition.\n" +"Voron) this value is usually not needed. However it can provide some " +"marginal benefit in certain cases where feature speeds vary greatly. For " +"example, when there are aggressive slowdowns due to overhangs. In these " +"cases a high value of around 300-350mm3/s2 is recommended as this allows for " +"just enough smoothing to assist pressure advance achieve a smoother flow " +"transition.\n" "\n" "For slower printers without pressure advance, the value should be set much " "lower. A value of 10-15mm3/s2 is a good starting point for direct drive " @@ -12187,13 +12321,13 @@ msgstr "" "\n" "0 değeri özelliği devre dışı bırakır. \n" "\n" -"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab veya " -"Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik hızlarının " -"büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda sağlayabilir. " -"Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. Bu durumlarda " -"300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, basınç " -"ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı olmak için " -"yeterli yumuşatmaya izin verir.\n" +"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab " +"veya Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik " +"hızlarının büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda " +"sağlayabilir. Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. " +"Bu durumlarda 300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, " +"basınç ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı " +"olmak için yeterli yumuşatmaya izin verir.\n" "\n" "Basınç avansı olmayan daha yavaş yazıcılar için değer çok daha düşük " "ayarlanmalıdır. Doğrudan tahrikli ekstruderler için 10-15mm3/s2 ve Bowden " @@ -12287,8 +12421,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field must " "contain the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " -"alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " +"Bu alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -12329,8 +12463,8 @@ msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." msgstr "" -"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " -"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." +"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan " +"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." msgid "Extra loading distance" msgstr "Ekstra yükleme mesafesi" @@ -12357,8 +12491,8 @@ msgstr "Dolguda geri çekmeyi azalt" msgid "" "Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex model " -"and save printing time, but make slicing and G-code generating slower" +"oozing can't been seen. This can reduce times of retraction for complex " +"model and save printing time, but make slicing and G-code generating slower" msgstr "" "Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " "görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " @@ -12402,11 +12536,11 @@ msgid "Make overhangs printable - Hole area" msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" msgid "" -"Maximum area of a hole in the base of the model before it's filled by conical " -"material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by " +"conical material.A value of 0 will fill all the holes in the model base." msgstr "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " -"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " +"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." msgid "mm²" msgstr "mm²" @@ -12416,11 +12550,11 @@ msgstr "Çıkıntılı duvarı algıla" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different speed " -"to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." msgstr "" -"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " -"hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." +"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için " +"farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." msgid "Filament to print walls" msgstr "Duvarları yazdırmak için filament" @@ -12445,8 +12579,8 @@ msgid "" "This setting adds an extra wall to every other layer. This way the infill " "gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option needs " -"to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option " +"needs to be disabled. \n" "\n" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." @@ -12467,10 +12601,11 @@ msgid "" "argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " -"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " -"Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " -"değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına erişebilirler." +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " +"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " +"ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " +"ve ortam değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına " +"erişebilirler." msgid "Printer type" msgstr "Yazıcı türü" @@ -12491,7 +12626,8 @@ msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" +msgstr "" +"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" msgid "Raft expansion" msgstr "Raft genişletme" @@ -12520,8 +12656,8 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " -"sarmayı önlemek için bu işlevi kullanın" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " +"yazdırırken sarmayı önlemek için bu işlevi kullanın" msgid "" "G-code path is genereated after simplifing the contour of model to avoid too " @@ -12536,7 +12672,8 @@ msgid "Travel distance threshold" msgstr "Seyahat mesafesi" msgid "" -"Only trigger retraction when the travel distance is longer than this threshold" +"Only trigger retraction when the travel distance is longer than this " +"threshold" msgstr "" "Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " "tetikleyin" @@ -12544,7 +12681,8 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Temizleme işlemi öncesi geri çekme miktarı" -msgid "The length of fast retraction before wipe, relative to retraction length" +msgid "" +"The length of fast retraction before wipe, relative to retraction length" msgstr "" "Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" @@ -12635,8 +12773,8 @@ msgid "Traveling angle" msgstr "Seyahat açısı" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in " -"Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " +"in Normal Lift" msgstr "" "Eğim ve Spiral Z atlama tipi için ilerleme açısı. 90°’ye ayarlamak normal " "kaldırmayla sonuçlanır" @@ -12771,13 +12909,13 @@ msgid "Seam gap" msgstr "Dikiş boşluğu" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, the " -"loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the current " -"extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, " +"the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the " +"current extruder diameter. The default value for this parameter is 10%." msgstr "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " -"uğrar ve belirli bir miktarda kısaltılır.\n" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " +"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" "Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " "belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." @@ -12786,8 +12924,8 @@ msgstr "Atkı birleşim dikişi (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için atkı " -"birleşimini kullanın." +"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için " +"atkı birleşimini kullanın." msgid "Conditional scarf joint" msgstr "Koşullu atkı birleşimi" @@ -12805,9 +12943,9 @@ msgstr "Koşullu açı eşiği" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " "seam.\n" -"If the maximum angle within the perimeter loop exceeds this value (indicating " -"the absence of sharp corners), a scarf joint seam will be used. The default " -"value is 155°." +"If the maximum angle within the perimeter loop exceeds this value " +"(indicating the absence of sharp corners), a scarf joint seam will be used. " +"The default value is 155°." msgstr "" "Bu seçenek, koşullu bir atkı eklem dikişi uygulamak için eşik açısını " "ayarlar.\n" @@ -12822,8 +12960,8 @@ msgstr "Koşullu çıkıntı eşiği" msgid "" "This option determines the overhang threshold for the application of scarf " "joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set at " -"40% of the external wall's width. Due to performance considerations, the " +"threshold, scarf joint seams will be applied. The default threshold is set " +"at 40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" "Bu seçenek, atkı bağlantı dikişlerinin uygulanması için sarkma eşiğini " @@ -12837,22 +12975,22 @@ msgstr "Atkı birleşim hızı" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also advisable " -"to enable 'Extrusion rate smoothing' if the set speed varies significantly " -"from the speed of the outer or inner walls. If the speed specified here is " -"higher than the speed of the outer or inner walls, the printer will default " -"to the slower of the two speeds. When specified as a percentage (e.g., 80%), " -"the speed is calculated based on the respective outer or inner wall speed. " -"The default value is set to 100%." +"print scarf joints at a slow speed (less than 100 mm/s). It's also " +"advisable to enable 'Extrusion rate smoothing' if the set speed varies " +"significantly from the speed of the outer or inner walls. If the speed " +"specified here is higher than the speed of the outer or inner walls, the " +"printer will default to the slower of the two speeds. When specified as a " +"percentage (e.g., 80%), the speed is calculated based on the respective " +"outer or inner wall speed. The default value is set to 100%." msgstr "" "Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı " "bağlantılarının yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye " "edilir. Ayarlanan hızın dış veya iç duvarların hızından önemli ölçüde farklı " -"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi de " -"tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından daha " -"yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı seçecektir. " -"Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç duvar hızına " -"göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." +"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi " +"de tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından " +"daha yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı " +"seçecektir. Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç " +"duvar hızına göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." msgid "Scarf joint flow ratio" msgstr "Atkı birleşimi akış oranı" @@ -12866,8 +13004,8 @@ msgstr "Atkı başlangıç ​​yüksekliği" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the current " -"layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the " +"current layer height. The default value for this parameter is 0." msgstr "" "Atkı başlangıç yüksekliği.\n" "Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi " @@ -12886,8 +13024,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan devre " -"dışı bırakır." +"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan " +"devre dışı bırakır." msgid "Scarf steps" msgstr "Atkı kademesi" @@ -12928,15 +13066,15 @@ msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" msgid "" -"To minimise visibility of potential overextrusion at the start of an external " -"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print " -"order, the deretraction is performed slightly on the inside from the start of " -"the external perimeter. That way any potential over extrusion is hidden from " -"the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an " +"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order, the deretraction is performed slightly on the inside from the " +"start of the external perimeter. That way any potential over extrusion is " +"hidden from the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " -"order as in these modes it is more likely an external perimeter is printed " -"immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " +"print order as in these modes it is more likely an external perimeter is " +"printed immediately after a deretraction move." msgstr "" "Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " "başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek için, " @@ -12945,8 +13083,8 @@ msgstr "" "yüzeyden gizlenir. \n" "\n" "Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " -"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen ardından " -"bir dış çevrenin yazdırılması daha olasıdır." +"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen " +"ardından bir dış çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" @@ -13012,7 +13150,8 @@ msgid "Skirt loops" msgstr "Etek sayısı" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" +msgstr "" +"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" msgid "Skirt speed" msgstr "Etek hızı" @@ -13063,8 +13202,8 @@ msgid "Filament to print solid infill" msgstr "Katı dolguyu yazdırmak için filament" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be computed " -"over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be " +"computed over the nozzle diameter." msgstr "" "İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -13078,8 +13217,8 @@ msgid "" "generated model has no seam" msgstr "" "Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " -"modelde dikiş yok." +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " +"son modelde dikiş yok." msgid "Smooth Spiral" msgstr "Pürüzsüz spiral" @@ -13104,11 +13243,12 @@ msgstr "" msgid "" "If smooth or traditional mode is selected, a timelapse video will be " "generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a timelapse " -"video when printing completes. If smooth mode is selected, the toolhead will " -"move to the excess chute after each layer is printed and then take a " -"snapshot. Since the melt filament may leak from the nozzle during the process " -"of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." +"with the chamber camera. All of these snapshots are composed into a " +"timelapse video when printing completes. If smooth mode is selected, the " +"toolhead will move to the excess chute after each layer is printed and then " +"take a snapshot. Since the melt filament may leak from the nozzle during the " +"process of taking a snapshot, prime tower is required for smooth mode to " +"wipe nozzle." msgstr "" "Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " "oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " @@ -13203,9 +13343,10 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" msgid "" -"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." +"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." msgstr "" "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " "yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini " @@ -13230,16 +13371,16 @@ msgid "" "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " -"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " +"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " "düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." msgid "Slicing Mode" msgstr "Dilimleme modu" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close " -"all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." msgstr "" "3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " "tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." @@ -13263,9 +13404,10 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" "Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya " -"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, " -"endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm uzakta " -"bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)." +"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: " +"örneğin, endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm " +"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu " +"düzeltin)." msgid "Enable support" msgstr "Desteği etkinleştir" @@ -13319,7 +13461,8 @@ msgid "" "Only create support for critical regions including sharp tail, cantilever, " "etc." msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " +"oluşturun." msgid "Remove small overhangs" msgstr "Küçük çıkıntıları kaldır" @@ -13356,7 +13499,8 @@ msgstr "Taban için arayüz filamentini azaltın" msgid "" "Avoid using support interface filament to print support base if possible." msgstr "" -"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan kaçının" +"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan " +"kaçının" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -13431,8 +13575,8 @@ msgstr "Arayüz deseni" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support interface " -"is Concentric" +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" msgstr "" "Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " "model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " @@ -13461,11 +13605,12 @@ msgid "" "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" "For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid style " -"will create similar structure to normal support under large flat overhangs." +"aggressively and save a lot of material (default organic), while hybrid " +"style will create similar structure to normal support under large flat " +"overhangs." msgstr "" -"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara içine " -"projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " +"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara " +"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " "zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki " "izleri azaltır.\n" "Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde " @@ -13514,8 +13659,8 @@ msgid "Tree support branch angle" msgstr "Ağaç desteği dal açısı" msgid "" -"This setting determines the maximum overhang angle that t he branches of tree " -"support allowed to make.If the angle is increased, the branches can be " +"This setting determines the maximum overhang angle that t he branches of " +"tree support allowed to make.If the angle is increased, the branches can be " "printed more horizontally, allowing them to reach farther." msgstr "" "Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " @@ -13547,10 +13692,11 @@ msgstr "Dal Yoğunluğu" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of the " -"branches. A higher value results in better overhangs but the supports are " -"harder to remove, thus it is recommended to enable top support interfaces " -"instead of a high branch density value if dense interfaces are needed." +"Adjusts the density of the support structure used to generate the tips of " +"the branches. A higher value results in better overhangs but the supports " +"are harder to remove, thus it is recommended to enable top support " +"interfaces instead of a high branch density value if dense interfaces are " +"needed." msgstr "" "Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " "ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " @@ -13562,8 +13708,8 @@ msgid "Adaptive layer height" msgstr "Uyarlanabilir katman yüksekliği" msgid "" -"Enabling this option means the height of tree support layer except the first " -"will be automatically calculated " +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " msgstr "" "Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " "yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " @@ -13618,8 +13764,8 @@ msgstr "Çift duvarlı dal çapı" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" "Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no double " -"walls." +"printed with double walls for stability. Set this value to zero for no " +"double walls." msgstr "" "Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " @@ -13645,33 +13791,40 @@ msgid "Activate temperature control" msgstr "Sıcaklık kontrolünü etkinleştirin" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 komutu " -"eklenecek \"machine_start_gcode\"\n" -"G-code komut: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Bölme sıcaklığı" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Daha yüksek hazne sıcaklığı, eğrilmeyi bastırmaya veya azaltmaya yardımcı " -"olabilir ve ABS, ASA, PC, PA ve benzeri gibi yüksek sıcaklıktaki malzemeler " -"için potansiyel olarak daha yüksek ara katman yapışmasına yol açabilir Aynı " -"zamanda, ABS ve ASA'nın hava filtrasyonu daha da kötüleşecektir. PLA, PETG, " -"TPU, PVA ve diğer düşük sıcaklıktaki malzemeler için, tıkanmaları önlemek " -"için gerçek hazne sıcaklığı yüksek olmamalıdır, bu nedenle kapatma anlamına " -"gelen 0 şiddetle tavsiye edilir" msgid "Nozzle temperature for layers after the initial one" msgstr "İlk katmandan sonraki katmanlar için nozul sıcaklığı" @@ -13728,11 +13881,11 @@ msgid "" "The number of top solid layers is increased when slicing if the thickness " "calculated by top shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top shell " -"layers" +"is disabled and thickness of top shell is absolutely determained by top " +"shell layers" msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " -"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " +"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -13755,11 +13908,12 @@ msgid "Wipe Distance" msgstr "Temizleme mesafesi" msgid "" -"Discribe how long the nozzle will move along the last path when retracting. \n" +"Discribe how long the nozzle will move along the last path when " +"retracting. \n" "\n" "Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed to " -"retract the remaining filament. \n" +"extruder/filament retraction settings are, a retraction move may be needed " +"to retract the remaining filament. \n" "\n" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." @@ -13767,9 +13921,9 @@ msgstr "" "Geri çekilirken nozulun son yol boyunca ne kadar süre hareket edeceğini " "açıklayın. \n" "\n" -"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme ayarlarının " -"ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı geri çekmek için " -"bir geri çekme hareketine ihtiyaç duyulabilir. \n" +"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme " +"ayarlarının ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı " +"geri çekmek için bir geri çekme hareketine ihtiyaç duyulabilir. \n" "\n" "Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, " "silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi " @@ -13819,8 +13973,8 @@ msgid "" "Angle at the apex of the cone that is used to stabilize the wipe tower. " "Larger angle means wider base." msgstr "" -"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " -"Daha büyük açı daha geniş taban anlamına gelir." +"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki " +"açı. Daha büyük açı daha geniş taban anlamına gelir." msgid "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" @@ -13882,8 +14036,8 @@ msgid "" "volumes below." msgstr "" "Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " -"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " -"oluşturulmasını basitleştirmek için kullanılır." +"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " +"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -13907,13 +14061,13 @@ msgstr "" msgid "" "This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed as " -"a result. It will not take effect, unless the prime tower is enabled." +"filament and decrease the print time. Colours of the objects will be mixed " +"as a result. It will not take effect, unless the prime tower is enabled." msgstr "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " -"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " -"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " -"etkili olmayacaktır." +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " +"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " +"etkinleştirilmediği sürece etkili olmayacaktır." msgid "Maximal bridging distance" msgstr "Maksimum köprüleme mesafesi" @@ -13922,8 +14076,8 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " "filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " -"sürece etkili olmayacaktır." +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " +"etkinleştirilmediği sürece etkili olmayacaktır." msgid "Wipe tower purge lines spacing" msgstr "Silme kulesi temizleme hatları aralığı" @@ -13936,8 +14090,8 @@ msgstr "Temizleme için ekstra akış" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " -"purging lines thicker or narrower than they normally would be. The spacing is " -"adjusted automatically." +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." msgstr "" "Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, " "temizleme hatlarının normalde olduğundan daha kalın veya daha dar olmasına " @@ -13978,8 +14132,8 @@ msgid "" "assembling issue" msgstr "" "Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " -"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " +"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " "kullanılır" msgid "Convert holes to polyholes" @@ -14003,14 +14157,14 @@ msgstr "Çokgen delik tespiti marjı" msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" "As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to broaden " -"the detection.\n" +"be on the circle circumference. This setting allows you some leway to " +"broaden the detection.\n" "In mm or in % of the radius." msgstr "" "Bir noktanın dairenin tahmini yarıçapına göre maksimum sapması.\n" "Silindirler genellikle farklı boyutlarda üçgenler olarak ihraç edildiğinden, " -"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz için " -"size biraz alan sağlar.\n" +"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz " +"için size biraz alan sağlar.\n" "inc mm cinsinden veya yarıçapın %'si cinsinden." msgid "Polyhole twist" @@ -14033,8 +14187,8 @@ msgid "Format of G-code thumbnails" msgstr "G kodu küçük resimlerinin formatı" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI " -"for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " +"QOI for low memory firmware" msgstr "" "G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut " "için JPG, düşük bellekli donanım yazılımı için QOI" @@ -14055,11 +14209,11 @@ msgstr "" msgid "" "Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with variable " -"extrusion width" +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " -"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " +"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " "ekstrüzyon genişliğine sahip duvarlar üretir" msgid "Classic" @@ -14086,19 +14240,20 @@ msgstr "Duvar geçiş filtresi oranı" msgid "" "Prevent transitioning back and forth between one extra wall and one less. " "This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall 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. It's expressed as a percentage over " -"nozzle diameter" +"wall width - margin, 2 * Minimum wall 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. It's expressed as a " +"percentage over nozzle diameter" msgstr "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " -"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " +"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " "genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " "aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " "ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " -"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon " -"sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade edilir" +"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " +"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " +"edilir" msgid "Wall transitioning threshold angle" msgstr "Duvar geçiş açısı" @@ -14110,11 +14265,11 @@ msgid "" "this setting reduces the number and length of these center walls, but may " "leave gaps or overextrude" msgstr "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " -"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " -"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " -"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " -"boşluklara veya aşırı çıkıntıya neden olabilir" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " +"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " +"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " +"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " +"ancak boşluklara veya aşırı çıkıntıya neden olabilir" msgid "Wall distribution count" msgstr "Duvar dağılım sayısı" @@ -14130,9 +14285,9 @@ msgid "Minimum feature size" msgstr "Minimum özellik boyutu" msgid "" -"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 wall width. It's expressed as a " +"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 wall width. It's expressed as a " "percentage over nozzle diameter" msgstr "" "İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " @@ -14149,27 +14304,28 @@ msgid "" "\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent " "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a top-" -"surface. 'One wall threshold' is only visibile if this setting is set above " -"the default value of 0.5, or if single-wall top surfaces is enabled." +"Advanced settings below to adjust the sensitivity of what is considered a " +"top-surface. 'One wall threshold' is only visibile if this setting is set " +"above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını " "önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha " "uzun duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu " -"değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini " -"ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. " -"'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine " -"ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " +"bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " +"hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " +"eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan " +"0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " +"etkinleştirildiğinde görünür." msgid "First layer minimum wall width" msgstr "İlk katman minimum duvar genişliği" msgid "" -"The minimum wall width that should be used for the first layer is recommended " -"to be set to the same size as the nozzle. This adjustment is expected to " -"enhance adhesion." +"The minimum wall width that should be used for the first layer is " +"recommended to be set to the same size as the nozzle. This adjustment is " +"expected to enhance adhesion." msgstr "" "İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " "aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " @@ -14194,8 +14350,8 @@ msgstr "Dar iç katı dolguyu tespit et" msgid "" "This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. Otherwise, " -"rectilinear pattern is used defaultly." +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used defaultly." msgstr "" "Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " "Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " @@ -14241,7 +14397,8 @@ msgstr "Yönlendirme Seçenekleri" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "" -"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-otomatik" +"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-" +"otomatik" msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafında derece cinsinden dönüş açısı." @@ -14286,13 +14443,13 @@ msgstr "" "ettiğini bilmesi için bu değişkene yazması gerekir." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom G-" -"code moves the extruder axis, it should write to this variable so PrusaSlicer " -"deretracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom " +"G-code moves the extruder axis, it should write to this variable so " +"PrusaSlicer deretracts correctly when it gets control back." msgstr "" "Özel G kodu bloğunun başlangıcındaki geri çekilme durumu. Özel G kodu " -"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında doğru " -"şekilde geri çekme yapması için bu değişkene yazması gerekir." +"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında " +"doğru şekilde geri çekme yapması için bu değişkene yazması gerekir." msgid "Extra deretraction" msgstr "Ekstra deretraksiyon" @@ -14393,18 +14550,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. Filament " -"Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." +"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. " +"Filament Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." msgid "Total weight" msgstr "Toplam ağırlık" msgid "" -"Total weight of the print. Calculated from filament_density value in Filament " -"Settings." +"Total weight of the print. Calculated from filament_density value in " +"Filament Settings." msgstr "" -"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu değerinden " -"hesaplanır." +"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu " +"değerinden hesaplanır." msgid "Total layer count" msgstr "Toplam katman sayısı" @@ -14453,8 +14610,8 @@ msgstr "" "cinsindendir." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values in " -"mm." +"The vector has two elements: x and y dimension of the bounding box. Values " +"in mm." msgstr "" "Vektörün iki öğesi vardır: sınırlayıcı kutunun x ve y boyutu. Değerler mm " "cinsindendir." @@ -14466,8 +14623,8 @@ msgid "" "Vector of points of the first layer convex hull. Each element has the " "following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" -"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu formata " -"sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." +"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu " +"formata sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." msgid "Bottom-left corner of first layer bounding box" msgstr "İlk katman sınırlayıcı kutusunun sol alt köşesi" @@ -14534,8 +14691,8 @@ msgid "Number of extruders" msgstr "Ekstruder sayısı" msgid "" -"Total number of extruders, regardless of whether they are used in the current " -"print." +"Total number of extruders, regardless of whether they are used in the " +"current print." msgstr "" "Geçerli baskıda kullanılıp kullanılmadığına bakılmaksızın ekstrüderlerin " "toplam sayısı." @@ -14673,7 +14830,8 @@ msgstr "Sağlanan dosya boş olduğundan okunamadı" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " +"olmalıdır." msgid "Canceled" msgstr "İptal edildi" @@ -14795,7 +14953,8 @@ msgstr "yeni ön ayar oluşturma başarısız oldu." msgid "" "Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " +"misiniz?" msgid "No Printer Connected!" msgstr "Yazıcı Bağlı Değil!" @@ -14810,16 +14969,16 @@ msgid "The input value size must be 3." msgstr "Giriş değeri boyutu 3 olmalıdır." msgid "" -"This machine type can only hold 16 history results per nozzle. You can delete " -"the existing historical results and then start calibration. Or you can " -"continue the calibration, but you cannot create new calibration historical " -"results. \n" +"This machine type can only hold 16 history results per nozzle. You can " +"delete the existing historical results and then start calibration. Or you " +"can continue the calibration, but you cannot create new calibration " +"historical results. \n" "Do you still want to continue the calibration?" msgstr "" "Bu makine tipi, püskürtme ucu başına yalnızca 16 geçmiş sonucu tutabilir. " -"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona başlayabilirsiniz. " -"Veya kalibrasyona devam edebilirsiniz ancak yeni kalibrasyon geçmişi " -"sonuçları oluşturamazsınız.\n" +"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona " +"başlayabilirsiniz. Veya kalibrasyona devam edebilirsiniz ancak yeni " +"kalibrasyon geçmişi sonuçları oluşturamazsınız.\n" "Hala kalibrasyona devam etmek istiyor musunuz?" msgid "Connecting to printer..." @@ -14833,9 +14992,9 @@ msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. Only " -"one of the results with the same name is saved. Are you sure you want to " -"override the historical result?" +"There is already a historical calibration result with the same name: %s. " +"Only one of the results with the same name is saved. Are you sure you want " +"to override the historical result?" msgstr "" "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " @@ -14846,8 +15005,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. Bu " -"sonuç kaydedilmeyecek." +"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. " +"Bu sonuç kaydedilmeyecek." msgid "Internal Error" msgstr "İç hata" @@ -14866,10 +15025,10 @@ msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" msgid "" "We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future use. " -"You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the filament " -"is damp;\n" +"fully automated and the result will be saved into the printer for future " +"use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the " +"filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" "3. If the max volumetric speed or print temperature is changed in the " "filament setting." @@ -14891,10 +15050,10 @@ msgid "" "\n" "Usually the calibration is unnecessary. When you start a single color/" "material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the filament " -"before the print; When you start a multi color/material print, the printer " -"will use the default compensation parameter for the filament during every " -"filament switch which will have a good result in most cases.\n" +"print start menu, the printer will follow the old way, calibrate the " +"filament before the print; When you start a multi color/material print, the " +"printer will use the default compensation parameter for the filament during " +"every filament switch which will have a good result in most cases.\n" "\n" "Please note that there are a few cases that can make the calibration results " "unreliable, such as insufficient adhesion on the build plate. Improving " @@ -14910,9 +15069,9 @@ msgstr "" "Genellikle kalibrasyon gereksizdir. Baskı başlatma menüsünde \"akış " "dinamikleri kalibrasyonu\" seçeneği işaretliyken tek renkli/malzemeli bir " "baskı başlattığınızda, yazıcı eski yolu izleyecek, baskıdan önce filamenti " -"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı her " -"filament değişimi sırasında filament için varsayılan telafi parametresini " -"kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" +"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı " +"her filament değişimi sırasında filament için varsayılan telafi " +"parametresini kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" "\n" "Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını " "güvenilmez hale getirebilecek birkaç durum olduğunu lütfen unutmayın. " @@ -14962,10 +15121,10 @@ msgstr "" msgid "" "Flow Rate Calibration measures the ratio of expected to actual extrusion " "volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular filament, " -"you usually won't need to perform a Flow Rate Calibration unless you still " -"see the listed defects after you have done other calibrations. For more " -"details, please check out the wiki article." +"filaments as they were pre-calibrated and fine-tuned. For a regular " +"filament, you usually won't need to perform a Flow Rate Calibration unless " +"you still see the listed defects after you have done other calibrations. For " +"more details, please check out the wiki article." msgstr "" "Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " "hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " @@ -14980,12 +15139,13 @@ msgid "" "directly measuring the calibration patterns. However, please be advised that " "the efficacy and accuracy of this method may be compromised with specific " "types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not be " -"suitable for this calibration and can produce less-than-desirable results.\n" +"transparent, sparkling-particled, or have a high-reflective finish may not " +"be suitable for this calibration and can produce less-than-desirable " +"results.\n" "\n" -"The calibration results may vary between each calibration or filament. We are " -"still improving the accuracy and compatibility of this calibration through " -"firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We " +"are still improving the accuracy and compatibility of this calibration " +"through firmware updates over time.\n" "\n" "Caution: Flow Rate Calibration is an advanced process, to be attempted only " "by those who fully understand its purpose and implications. Incorrect usage " @@ -14996,8 +15156,8 @@ msgstr "" "kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " "etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " "girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " -"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " +"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" "\n" "Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " "gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " @@ -15006,8 +15166,8 @@ msgstr "" "Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " "anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " "kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " -"emin olun." +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " +"anladığınızdan emin olun." msgid "When you need Max Volumetric Speed Calibration" msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" @@ -15029,15 +15189,15 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The failed " -"test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The " +"failed test result would be dropped." msgstr "" "Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " "deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in the " -"Name" +"*We recommend you to add brand, materia, type, and even humidity level in " +"the Name" msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" msgid "Failed" @@ -15626,8 +15786,8 @@ msgid "" "name. Do you want to continue?" msgstr "" "Oluşturduğunuz %s Filament adı zaten mevcut.\n" -"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla görüntülenecektir. " -"Devam etmek istiyor musun?" +"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla " +"görüntülenecektir. Devam etmek istiyor musun?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Aşağıdaki gibi bazı mevcut ön ayarlar oluşturulamadı:\n" @@ -15743,15 +15903,15 @@ msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" msgstr "" -"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen yazıcının " -"satıcısını ve modelini seçin" +"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen " +"yazıcının satıcısını ve modelini seçin" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. Lütfen " -"oluşturmadan önce kontrol edin." +"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. " +"Lütfen oluşturmadan önce kontrol edin." msgid "The custom printer or model is not inputed, place input." msgstr "Özel yazıcı veya model girilmedi lütfen giriş yapın." @@ -15768,7 +15928,8 @@ msgstr "" "Oluşturduğunuz yazıcı ön ayarının zaten aynı ada sahip bir ön ayarı var. " "Üzerine yazmak istiyor musunuz?\n" "\tEvet: Aynı adı taşıyan yazıcı ön ayarının üzerine yazın; aynı ön ayar adı " -"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön ayar \n" +"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön " +"ayar \n" "adı olmayan filament ve işlem ön ayarları rezerve edilecektir.\n" "\tİptal: Ön ayar oluşturmayın, oluşturma arayüzüne dönün." @@ -15814,7 +15975,8 @@ msgstr "" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." +msgstr "" +"Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." msgid "Create Printer Successful" msgstr "Yazıcı Oluşturma Başarılı" @@ -15897,8 +16059,8 @@ msgstr "Dışa aktarma başarılı" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to clear " -"it and rebuild it.\n" +"The '%s' folder already exists in the current directory. Do you want to " +"clear it and rebuild it.\n" "If not, a time suffix will be added, and you can modify the name after " "creation." msgstr "" @@ -15937,8 +16099,8 @@ msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve " -"seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." +"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek " +"ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" @@ -15946,13 +16108,13 @@ msgid "" "exported as a zip." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" -"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön " -"ayarları zip olarak dışa aktarılacaktır." +"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti " +"ön ayarları zip olarak dışa aktarılacaktır." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be exported " -"as a zip." +"and all user process presets in each printer name you select will be " +"exported as a zip." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak " @@ -15976,8 +16138,8 @@ msgid "Filament presets under this filament" msgstr "Bu filamentin altındaki filament ön ayarları" msgid "" -"Note: If the only preset under this filament is deleted, the filament will be " -"deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will " +"be deleted after exiting the dialog." msgstr "" "Not: Bu filamentin altındaki tek ön ayar silinirse, diyalogdan çıkıldıktan " "sonra filament silinecektir." @@ -16095,7 +16257,8 @@ msgstr "Aygıt sekmesinde yazdırma ana bilgisayarı web arayüzünü görüntü msgid "Replace the BambuLab's device tab with print host webui" msgstr "" -"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle değiştirin" +"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle " +"değiştirin" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -16115,8 +16278,8 @@ msgid "" "On this system, %s uses HTTPS certificates from the system Certificate Store " "or Keychain." msgstr "" -"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan HTTPS " -"sertifikalarını kullanıyor." +"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " +"HTTPS sertifikalarını kullanıyor." msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " @@ -16266,30 +16429,31 @@ msgstr "" "Hata: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines and " -"high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines " +"and high printing quality. It is suitable for most general printing cases." msgstr "" "Küçük bir katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir katman " "çizgileri ve yüksek baskı kalitesi sağlar. Çoğu genel yazdırma durumu için " "uygundur." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " -"acceleration, and the sparse infill pattern is Gyroid. So, it results in much " -"higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " +"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " +"much higher printing quality, but a much longer printing time." msgstr "" "0,2 mm’lik nozülün varsayılan profiliyle karşılaştırıldığında daha düşük hız " -"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha yüksek " -"baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." +"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha " +"yüksek baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde " +"edilir." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a slightly " "bigger layer height, and results in almost negligible layer lines, and " "slightly shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " -"daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir düzeyde " -"katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"biraz daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir " +"düzeyde katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " @@ -16327,8 +16491,8 @@ msgid "" "shorter printing time." msgstr "" "Varsayılan 0,2 mm püskürtme ucu profiliyle karşılaştırıldığında, daha küçük " -"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek baskı " -"kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." +"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek " +"baskı kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -16379,12 +16543,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing quality, " -"but longer printing time." +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " -"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " +"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16422,7 +16586,8 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing time." +"height, and results in almost negligible layer lines and longer printing " +"time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " "katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde " @@ -16457,8 +16622,8 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower printing " -"quality, but shorter printing time in some printing cases." +"height, and results in much more apparent layer lines and much lower " +"printing quality, but shorter printing time in some printing cases." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok daha belirgin katman çizgileri " @@ -16477,16 +16642,16 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing quality, " -"but longer printing time." +"height, and results in less apparent layer lines and higher printing " +"quality, but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " -"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " +"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" -"It has a very big layer height, and results in very apparent layer lines, low " -"printing quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, " +"low printing quality and general printing time." msgstr "" "Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman " "çizgilerine, düşük baskı kalitesine ve genel yazdırma süresine neden olur." @@ -16498,8 +16663,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve " -"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma durumlarında " -"daha kısa yazdırma süresi sağlar." +"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " +"durumlarında daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -16508,8 +16673,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, çok " "daha büyük bir katman yüksekliğine sahiptir ve son derece belirgin katman " -"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " -"durumlarında çok daha kısa yazdırma süresi sağlar." +"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı " +"yazdırma durumlarında çok daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -16517,10 +16682,10 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" -"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " -"daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine de " -"görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, ancak " -"bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." +"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " +"biraz daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine " +"de görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, " +"ancak bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " @@ -16592,7 +16757,8 @@ msgid "" msgstr "" "Sandviç modu\n" "Modelinizde çok dik çıkıntılar yoksa hassasiyeti ve katman tutarlılığını " -"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor muydunuz?" +"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor " +"muydunuz?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -16654,14 +16820,14 @@ msgid "" "3D scene operations." msgstr "" "Klavye kısayolları nasıl kullanılır?\n" -"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri sunduğunu " -"biliyor muydunuz?" +"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " +"sunduğunu biliyor muydunuz?" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve the " -"surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve " +"the surface quality of your overhangs?" msgstr "" "Tersine çevir\n" "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " @@ -16684,8 +16850,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " -"düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " +"modeli düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -16818,9 +16984,9 @@ msgstr "" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking prints? " -"Depending on the material, you can improve the overall finish of the printed " -"model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." msgstr "" "Akış hızı için ince ayar\n" "Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " @@ -16854,8 +17020,8 @@ msgstr "" msgid "" "Support painting\n" "Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the model " -"that actually need it." +"makes it easy to place the support material only on the sections of the " +"model that actually need it." msgstr "" "Destek boyama\n" "Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " @@ -16960,57 +17126,146 @@ msgstr "" "sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını " "azaltabileceğini biliyor muydunuz?" -#~ msgid "up to" -#~ msgstr "kadar" +#~ msgid "" +#~ "Your object appears to be too large. It will be scaled down to fit the " +#~ "heat bed automatically." +#~ msgstr "" +#~ "Nesneniz çok büyük görünüyor. Plakaya otomatik olarak uyacak şekilde " +#~ "küçültülecektir." -#~ msgid "above" -#~ msgstr "üstünde" +#~ msgid "Shift+G" +#~ msgstr "Shift+G" -#~ msgid "from" -#~ msgstr "itibaren" - -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." - -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" - -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" - -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+Herhangi bir ok" - -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Sol fare düğmesi" - -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Sol fare düğmesi" - -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+Herhangi bir yön tuşu" - -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Sol fare düğmesi" - -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Sol fare düğmesi" - -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Fare tekerleği" - -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Fare tekerleği" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Fare tekerleği" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+Fare tekerleği" +#~ msgid "Any arrow" +#~ msgstr "Herhangi bir ok" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not allowed " -#~ "when prime tower is enabled." +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak " +#~ "minimum boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden " +#~ "kontrol edilebilir.\n" +#~ "\n" +#~ "Seçenekler:\n" +#~ "1. Her Yerde: Üst, alt ve iç katı yüzeylere boşluk doldurma uygular\n" +#~ "2. Üst ve Alt yüzeyler: Boşluk doldurmayı yalnızca üst ve alt yüzeylere " +#~ "uygular\n" +#~ "3. Hiçbir Yerde: Boşluk doldurmayı devre dışı bırakır\n" + +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu " +#~ "değeri biraz azaltın (örneğin 0,9)" + +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Bu değer iç köprü katmanının kalınlığını belirler. Bu, seyrek dolgunun " +#~ "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini " +#~ "iyileştirmek için bu değeri biraz azaltın (örneğin 0,9)." + +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir " +#~ "yüzey elde etmek için biraz azaltabilirsiniz" + +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "Bu faktör alt katı dolgu için malzeme miktarını etkiler" + +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Potansiyel kıvrılmış çevrelerin bulunabileceği alanlarda yazdırmayı " +#~ "yavaşlatmak için bu seçeneği etkinleştirin" + +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Köprü hızı ve tamamen sarkan duvar" + +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Dahili köprünün hızı. Değer yüzde olarak ifade edilirse köprü_hızına göre " +#~ "hesaplanacaktır. Varsayılan değer %150'dir." + +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Yalnızca " +#~ "istatistikler için" + +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Filamenti değiştirdiğinizde eski filamenti boşaltma zamanı. Yalnızca " +#~ "istatistikler için" + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " +#~ "değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " +#~ "süresi. Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine " +#~ "eklenir." + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " +#~ "değişimi sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu " +#~ "süre, G kodu süre tahmincisi tarafından toplam baskı süresine eklenir." + +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Belirtilen eşikten daha küçük boşlukları filtrele" + +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 " +#~ "komutu eklenecek \"machine_start_gcode\"\n" +#~ "G-code komut: M141/M191 S(0-255)" + +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Daha yüksek hazne sıcaklığı, eğrilmeyi bastırmaya veya azaltmaya yardımcı " +#~ "olabilir ve ABS, ASA, PC, PA ve benzeri gibi yüksek sıcaklıktaki " +#~ "malzemeler için potansiyel olarak daha yüksek ara katman yapışmasına yol " +#~ "açabilir Aynı zamanda, ABS ve ASA'nın hava filtrasyonu daha da " +#~ "kötüleşecektir. PLA, PETG, TPU, PVA ve diğer düşük sıcaklıktaki " +#~ "malzemeler için, tıkanmaları önlemek için gerçek hazne sıcaklığı yüksek " +#~ "olmamalıdır, bu nedenle kapatma anlamına gelen 0 şiddetle tavsiye edilir" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." #~ msgstr "" #~ "Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " #~ "çaplarına izin verilmez." @@ -17023,10 +17278,11 @@ msgstr "" #~ "Height of initial layer. Making initial layer height to be thick slightly " #~ "can improve build plate adhension" #~ msgstr "" -#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " -#~ "plakasının yapışmasını iyileştirebilir" +#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, " +#~ "baskı plakasının yapışmasını iyileştirebilir" -#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." #~ msgstr "" #~ "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu " #~ "özelliği devre dışı bırakır." @@ -17104,11 +17360,12 @@ msgstr "" #~ "the print start menu, the printer will follow the old way, calibrate the " #~ "filament before the print; When you start a multi color/material print, " #~ "the printer will use the default compensation parameter for the filament " -#~ "during every filament switch which will have a good result in most cases.\n" +#~ "during every filament switch which will have a good result in most " +#~ "cases.\n" #~ "\n" #~ "Please note there are a few cases that will make the calibration result " -#~ "not reliable: using a texture plate to do the calibration; the build plate " -#~ "does not have good adhesion (please wash the build plate or apply " +#~ "not reliable: using a texture plate to do the calibration; the build " +#~ "plate does not have good adhesion (please wash the build plate or apply " #~ "gluestick!) ...You can find more from our wiki.\n" #~ "\n" #~ "The calibration results have about 10 percent jitter in our test, which " @@ -17119,11 +17376,12 @@ msgstr "" #~ "bulabilirsiniz.\n" #~ "\n" #~ "Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " -#~ "başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamenti " -#~ "kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı " -#~ "her filament değişiminde filament için varsayılan dengeleme parametresini " -#~ "kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" +#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme " +#~ "baskısını başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan " +#~ "önce filamenti kalibre edecektir; Çok renkli/malzeme baskısını " +#~ "başlattığınızda, yazıcı her filament değişiminde filament için varsayılan " +#~ "dengeleme parametresini kullanacaktır ve bu çoğu durumda iyi bir sonuç " +#~ "verecektir.\n" #~ "\n" #~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum " #~ "olduğunu lütfen unutmayın: kalibrasyonu yapmak için doku plakası " @@ -17131,14 +17389,14 @@ msgstr "" #~ "yıkayın veya yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden " #~ "bulabilirsiniz.\n" #~ "\n" -#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " -#~ "ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim " +#~ "var ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " #~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel " #~ "nedeni araştırıyoruz." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure you " -#~ "want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure " +#~ "you want to overrides the other results?" #~ msgstr "" #~ "Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " #~ "geçersiz kılmak istediğinizden emin misiniz?" @@ -17146,11 +17404,11 @@ msgstr "" #, c-format, boost-format #~ msgid "" #~ "There is already a historical calibration result with the same name: %s. " -#~ "Only one of the results with the same name is saved. Are you sure you want " -#~ "to overrides the historical result?" +#~ "Only one of the results with the same name is saved. Are you sure you " +#~ "want to overrides the historical result?" #~ msgstr "" -#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " -#~ "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada " +#~ "sahip sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " #~ "istediğinizden emin misiniz?" #~ msgid "Please find the cornor with perfect degree of extrusion" @@ -17173,11 +17431,11 @@ msgstr "" #~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " #~ "first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have the " -#~ "neighbouring infill to adhere to. However, the infill will slighly push " -#~ "out the printed walls where it is attached to them, resulting in a worse " -#~ "external surface finish. It can also cause the infill to shine through the " -#~ "external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have " +#~ "the neighbouring infill to adhere to. However, the infill will slighly " +#~ "push out the printed walls where it is attached to them, resulting in a " +#~ "worse external surface finish. It can also cause the infill to shine " +#~ "through the external surfaces of the part." #~ msgstr "" #~ "Duvar/dolgu sırası. Onay kutusunun işareti kaldırıldığında ilk olarak " #~ "duvarlar yazdırılır ve bu çoğu durumda en iyi sonucu verir.\n" @@ -17192,9 +17450,9 @@ msgstr "" #~ msgstr "V" #~ msgid "" -#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " -#~ "by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci " -#~ "and the RepRap community" +#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from " +#~ "PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro " +#~ "Ranellucci and the RepRap community" #~ msgstr "" #~ "Orca Slicer, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " #~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve " @@ -17265,15 +17523,16 @@ msgstr "" #~ "değer) korumak ister misiniz?" #~ msgid "" -#~ "You have previously modified your settings and are about to overwrite them " -#~ "with new ones." +#~ "You have previously modified your settings and are about to overwrite " +#~ "them with new ones." #~ msgstr "" -#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini yazmak " -#~ "üzeresiniz." +#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini " +#~ "yazmak üzeresiniz." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset settings?" +#~ "Do you want to keep your current modified settings, or use preset " +#~ "settings?" #~ msgstr "" #~ "\n" #~ "Geçerli değiştirilen ayarlarınızı korumak mı yoksa önceden ayarlanmış " @@ -17293,8 +17552,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " -#~ "ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." +#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası " +#~ "seçin ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." #~ msgid "MC" #~ msgstr "MC" @@ -17334,8 +17593,8 @@ msgstr "" #~ "The 3mf file version is in Beta and it is newer than the current Bambu " #~ "Studio version." #~ msgstr "" -#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden daha " -#~ "yenidir." +#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden " +#~ "daha yenidir." #~ msgid "If you would like to try Bambu Studio Beta, you may click to" #~ msgstr "Bambu Studio Beta’yı denemek isterseniz tıklayabilirsiniz." @@ -17362,9 +17621,9 @@ msgstr "" #~ "Green means that AMS humidity is normal, orange represent humidity is " #~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " -#~ "ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o " -#~ "kadar iyidir.)" +#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, " +#~ "kırmızı ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar " +#~ "düşükse o kadar iyidir.)" #~ msgid "Desiccant status" #~ msgstr "Kurutucu durumu" @@ -17374,14 +17633,14 @@ msgstr "" #~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" #~ "İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " -#~ "kadar iyidir.)" +#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa " +#~ "o kadar iyidir.)" #~ msgid "" #~ "Note: When the lid is open or the desiccant pack is changed, it can take " #~ "hours or a night to absorb the moisture. Low temperatures also slow down " -#~ "the process. During this time, the indicator may not represent the chamber " -#~ "accurately." +#~ "the process. During this time, the indicator may not represent the " +#~ "chamber accurately." #~ msgstr "" #~ "Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " #~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. " @@ -17479,14 +17738,14 @@ msgstr "" #~ msgid "" #~ "Please go to filament setting to edit your presets if you need.\n" #~ "Please note that nozzle temperature, hot bed temperature, and maximum " -#~ "volumetric speed have a significant impact on printing quality. Please set " -#~ "them carefully." +#~ "volumetric speed have a significant impact on printing quality. Please " +#~ "set them carefully." #~ msgstr "" -#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " -#~ "gidin.\n" +#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament " +#~ "ayarına gidin.\n" #~ "Lütfen püskürtme ucu sıcaklığının, sıcak yatak sıcaklığının ve maksimum " -#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip olduğunu " -#~ "unutmayın. Lütfen bunları dikkatlice ayarlayın." +#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip " +#~ "olduğunu unutmayın. Lütfen bunları dikkatlice ayarlayın." #~ msgid "Studio Version:" #~ msgstr "Stüdyo Sürümü:" @@ -17531,8 +17790,8 @@ msgstr "" #~ msgstr "Depolama Yüklemesini Test Etme" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/" -#~ "machine_max_speed_y).\n" +#~ "The speed setting exceeds the printer's maximum speed " +#~ "(machine_max_speed_x/machine_max_speed_y).\n" #~ "Orca will automatically cap the print speed to ensure it doesn't surpass " #~ "the printer's capabilities.\n" #~ "You can adjust the maximum speed setting in your printer's configuration " @@ -17540,8 +17799,8 @@ msgstr "" #~ msgstr "" #~ "Hız ayarı yazıcının maksimum hızını aşıyor (machine_max_speed_x/" #~ "machine_max_speed_y).\n" -#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma hızını " -#~ "otomatik olarak sınırlayacaktır.\n" +#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma " +#~ "hızını otomatik olarak sınırlayacaktır.\n" #~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki " #~ "maksimum hız ayarını yapabilirsiniz." @@ -17567,8 +17826,8 @@ msgstr "" #~ "Add solid infill near sloping surfaces to guarantee the vertical shell " #~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " -#~ "dolgu ekleyin (üst + alt katı katmanlar)" +#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına " +#~ "katı dolgu ekleyin (üst + alt katı katmanlar)" #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Duvarlardaki katı dolguyu daha da azaltın (deneysel)" @@ -17622,8 +17881,8 @@ msgstr "" #~ "are not specified explicitly." #~ msgstr "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma " -#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament " -#~ "için minimum yazdırma hızı." +#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde " +#~ "filament için minimum yazdırma hızı." #~ msgid "No sparse layers (EXPERIMENTAL)" #~ msgstr "Seyrek katman yok (DENEYSEL)" @@ -17649,8 +17908,8 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " -#~ "extruders work better with this option unckecked (absolute extrusion " +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unckecked (absolute extrusion " #~ "mode). Wipe tower is only compatible with relative mode. It is always " #~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" @@ -17780,8 +18039,8 @@ msgstr "" #~ "Bir Parçayı Çıkar\n" #~ "Negatif parça değiştiriciyi kullanarak bir ağı diğerinden " #~ "çıkarabileceğinizi biliyor muydunuz? Bu şekilde örneğin doğrudan Orca " -#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler oluşturabilirsiniz. " -#~ "Daha fazlasını belgelerde okuyun." +#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler " +#~ "oluşturabilirsiniz. Daha fazlasını belgelerde okuyun." #~ msgid "Filling bed " #~ msgstr "Yatak doldurma " @@ -17797,7 +18056,8 @@ msgstr "" #~ msgstr "" #~ "Doğrusal desene geçilsin mi?\n" #~ "Evet - otomatik olarak doğrusal desene geçin\n" -#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" +#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere " +#~ "sıfırlayın" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." #~ msgstr "" @@ -18038,8 +18298,8 @@ msgstr "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " -#~ "yükle" +#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/" +#~ "yazıcıayarlarını yükle" #~ msgid "Output directory" #~ msgstr "Çıkış dizini" @@ -18086,8 +18346,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " -#~ "olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." +#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması " +#~ "mümkün olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." #~ msgid "Online Models" #~ msgstr "Çevrimiçi Modeller" @@ -18101,8 +18361,8 @@ msgstr "" #~ msgid "" #~ "There are currently no identical spare consumables available, and " #~ "automatic replenishment is currently not possible. \n" -#~ "(Currently supporting automatic supply of consumables with the same brand, " -#~ "material type, and color)" +#~ "(Currently supporting automatic supply of consumables with the same " +#~ "brand, material type, and color)" #~ msgstr "" #~ "Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " #~ "anda mümkün değildir.\n" @@ -18134,7 +18394,8 @@ msgstr "" #~ "daha sıcak olamaz" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" +#~ msgstr "" +#~ "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" #~ msgid "" #~ "This option is enabled if machine support controlling chamber temperature" @@ -18162,7 +18423,8 @@ msgstr "" #~ "katmanları etkilemez" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." +#~ msgstr "" +#~ "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." #~ msgid "The model has too many empty layers." #~ msgstr "Modelde çok fazla boş katman var." @@ -18180,8 +18442,9 @@ msgstr "" #~ "Bed temperature when high temperature plate is installed. Value 0 means " #~ "the filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " -#~ "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " +#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " +#~ "gelir" #~ msgid "" #~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" @@ -18201,7 +18464,8 @@ msgstr "" #~ msgstr "" #~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " #~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " -#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " +#~ "azaltır.\n" #~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " #~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " #~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 1c0db33441..68eed7af73 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2024-06-30 23:05+0300\n" "Last-Translator: \n" "Language-Team: \n" @@ -16,8 +16,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.4.4\n" msgid "Supports Painting" @@ -80,6 +80,9 @@ msgstr "Розумний кут заповнення" msgid "On overhangs only" msgstr "Лише на звисах" +msgid "Auto support threshold angle: " +msgstr "Пороговий кут автоматичної підтримки: " + msgid "Circle" msgstr "Коло" @@ -99,9 +102,6 @@ msgstr "Малювання лише на вибраних гранях: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Виділити межі з відповідним кутом виступу." -msgid "Auto support threshold angle: " -msgstr "Пороговий кут автоматичної підтримки: " - msgid "No auto support" msgstr "Немає автоматичної підтримки" @@ -1981,6 +1981,9 @@ msgstr "Спростити модель" msgid "Center" msgstr "Центр" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "Редагувати налаштування процесу друку" @@ -4151,6 +4154,15 @@ msgstr "Загальний час" msgid "Total cost" msgstr "Загальна вартість" +msgid "up to" +msgstr "аж до" + +msgid "above" +msgstr "вище" + +msgid "from" +msgstr "від" + msgid "Color Scheme" msgstr "Колірна схема" @@ -4214,12 +4226,12 @@ msgstr "Час зміни філаменту" msgid "Cost" msgstr "Витрата" -msgid "Print" -msgstr "Друк" - msgid "Color change" msgstr "Зміна кольору" +msgid "Print" +msgstr "Друк" + msgid "Printer" msgstr "Принтер" @@ -4403,7 +4415,7 @@ msgstr "Об'єм:" msgid "Size:" msgstr "Розмір:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4844,6 +4856,18 @@ msgstr "Прохід 2" msgid "Flow rate test - Pass 2" msgstr "Тест витрати - Пройдено 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "Швидкість потоку" @@ -6151,14 +6175,6 @@ msgstr "Виявлено об'єкт, що складається з кільк msgid "The file does not contain any geometry data." msgstr "Файл не містить геометричних даних." -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "Об'єкт занадто великий" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6167,6 +6183,9 @@ msgstr "" "відповідав розміру?\n" "підігрів столу автоматично?" +msgid "Object too large" +msgstr "Об'єкт занадто великий" + msgid "Export STL file:" msgstr "Експорт файлу STL:" @@ -6543,6 +6562,9 @@ msgstr "Ви хочете продовжувати?" msgid "Language selection" msgstr "Вибір мови" +msgid "Switching application language while some presets are modified." +msgstr "Переключення мови програми при зміні деяких пресетів." + msgid "Changing application language" msgstr "Зміна мови програми" @@ -7669,8 +7691,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "При записі таймлапсу без інструментальної головки рекомендується додати " "“Timelapse Wipe Tower” \n" @@ -8554,8 +8576,11 @@ msgstr "Список об'єктів" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Імпорт геометричних даних із файлів STL/STEP/3MF/OBJ/AMF" -msgid "Shift+G" -msgstr "" +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Вставити з буфера обміну" @@ -8605,18 +8630,33 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Згорнути/розгорнути бічну панель" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+будь-яка стрілка" msgid "Movement in camera space" msgstr "Рух у просторі камери" +msgid "⌥+Left mouse button" +msgstr "⌥+Ліва кнопка миші" + msgid "Select a part" msgstr "Виберіть частину" +msgid "⌘+Left mouse button" +msgstr "⌘+Ліва кнопка миші" + msgid "Select multiple objects" msgstr "Вибрати кілька об'єктів" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+будь-яка стрілка" + +msgid "Alt+Left mouse button" +msgstr "Alt+Ліва кнопка миші" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Ліва кнопка миші" + msgid "Shift+Left mouse button" msgstr "Shift+Ліва кнопка миші" @@ -8719,12 +8759,24 @@ msgstr "Тарілка" msgid "Move: press to snap by 1mm" msgstr "Переміщення: натисніть для переміщення на 1 мм" +msgid "⌘+Mouse wheel" +msgstr "⌘+Колесо миші" + msgid "Support/Color Painting: adjust pen radius" msgstr "Підтримка/Колірне малювання: регулювання радіуса пера" +msgid "⌥+Mouse wheel" +msgstr "⌥+Колесо миші" + msgid "Support/Color Painting: adjust section position" msgstr "Підтримка/кольорове фарбування: регулювання положення секцій" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Колесо миші" + +msgid "Alt+Mouse wheel" +msgstr "Alt+колесо миші" + msgid "Gizmo" msgstr "Gizmo" @@ -9780,25 +9832,32 @@ msgid "Apply gap fill" msgstr "Заповнення проміжків" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" -msgstr "" -"Вмикає заповнення проміжків для вибраних поверхонь. Мінімальну довжину " -"проміжку, який буде заповнено, можна контролювати за допомогою опції " -"\"Відфільтрувати крихітні проміжки\" нижче.\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Параметри:\n" -"1. Скрізь: Застосовує заповнення проміжків до верхньої, нижньої та " -"внутрішніх суцільних поверхонь\n" -"2. Верхня та нижня поверхні: Застосовує заповнення лише до верхньої та " -"нижньої поверхонь\n" -"3. Ніде: Вимикає заповнення проміжків\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" +msgstr "" msgid "Everywhere" msgstr "Всюди" @@ -9873,10 +9932,11 @@ msgstr "Потік мосту" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Трохи зменшіть це значення (наприклад, 0.9), щоб зменшити кількість " -"матеріалу для мосту, щоб покращити провисання" msgid "Internal bridge flow ratio" msgstr "Коефіцієнт потоку для внутрішніх мостів" @@ -9884,30 +9944,33 @@ msgstr "Коефіцієнт потоку для внутрішніх мості msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" -"Це значення визначає товщину внутрішнього мостовидного шару. Це перший шар " -"над внутрішнім заповненням. Зменшіть це значення (наприклад, до 0,9), щоб " -"покращити якість поверхні над внутрішнім заповненням." msgid "Top surface flow ratio" msgstr "Коефіцієнт потоку верхньої поверхні" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Цей фактор впливає на кількість матеріалу для заповнення верхнього " -"твердоготіла. Можна трохи зменшити його, щоб отримати гладку " -"шорсткістьповерхні" msgid "Bottom surface flow ratio" msgstr "Коефіцієнт потоку нижньої поверхні" -msgid "This factor affects the amount of material for bottom solid infill" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Цей фактор впливає на кількість матеріалу для заповнення нижнього " -"твердоготіла" msgid "Precise wall" msgstr "Точна стінка" @@ -10081,12 +10144,26 @@ msgstr "" msgid "Slow down for curled perimeters" msgstr "Уповільнення для нависаючих периметрів" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." msgstr "" -"Увімкніть цей параметр, щоб сповільнити друк у зонах, де можуть існувати " -"потенційно нависаючі периметри" msgid "mm/s or %" msgstr "мм/с або %" @@ -10094,8 +10171,14 @@ msgstr "мм/с або %" msgid "External" msgstr "Зовнішні" -msgid "Speed of bridge and completely overhang wall" -msgstr "Швидкість мосту і периметр, що повністю звисає" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "мм/с" @@ -10104,11 +10187,9 @@ msgid "Internal" msgstr "Внутрішні" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Швидкість внутрішнього мосту. Якщо значення виражено у відсотках, воно буде " -"розраховано на основі bridge_speed. Значення за замовчуванням - 150%." msgid "Brim width" msgstr "Ширина кайми" @@ -10744,6 +10825,17 @@ msgstr "" "0,95 до 1,05. Можливо, ви можете налаштувати це значення, щоб отримати " "хорошу плоску поверхню, коли є невелике переповнення або недолив" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "Увімкнути випередження тиску PA" @@ -10923,18 +11015,29 @@ msgstr "мм³/с" msgid "Filament load time" msgstr "Час завантаження філаменту" -msgid "Time to load new filament when switch filament. For statistics only" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" msgstr "" -"Час завантаження нового філаменту при перемиканні філаменту. Тільки для " -"статистики" msgid "Filament unload time" msgstr "Час вивантаження філаменту" -msgid "Time to unload old filament when switch filament. For statistics only" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" msgstr "" -"Час вивантаження нового філаменту при перемиканні філаменту. Тільки для " -"статистики" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11073,15 +11176,6 @@ msgstr "Швидкість останнього охолоджуючого ру msgid "Cooling moves are gradually accelerating towards this speed." msgstr "Охолоджувальні рухи поступово прискорюються до цієї швидкості." -msgid "" -"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." -msgstr "" -"Час для прошивки принтера (або Multi Material Unit 2.0), щоб завести новий " -"філамент під час заміни інструменту (під час виконання коду Т). Цей час " -"додається до загального часу друку за допомогою оцінювача часу G-коду." - msgid "Ramming parameters" msgstr "Параметри раммінгу" @@ -11092,15 +11186,6 @@ msgstr "" "Цей рядок відредаговано у діалогу налаштувань раммінгу та містить певні " "параметри раммінгу." -msgid "" -"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." -msgstr "" -"Час для прошивки принтера (або Multi Material Unit 2.0), щоб вивести " -"філамент під час заміни інструменту (під час виконання коду Т). Цей час " -"додається до загального часу друку за допомогою оцінювача часу G-коду." - msgid "Enable ramming for multitool setups" msgstr "Увімкнути накат для багатоінструментальних установок" @@ -11463,10 +11548,10 @@ msgstr "Повна швидкість вентилятора на шарі" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Швидкість вентилятора лінійно збільшується від нуля на " "рівні«close_fan_the_first_x_layers» до максимуму на рівні " @@ -11540,8 +11625,11 @@ msgstr "Відфільтрувати крихітні зазори" msgid "Layers and Perimeters" msgstr "Шари та периметри" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "Відфільтруйте прогалини, менші за вказаний поріг" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13671,33 +13759,40 @@ msgid "Activate temperature control" msgstr "Увімкнути контроль температури" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"Увімкніть цю опцію для керування температурою в камері. Перед " -"\"machine_start_gcode\" буде додано команду M191\n" -"Команди G-коду: M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "Температура в камері" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"Вища температура камери може допомогти стримувати або зменшувати деформацію " -"та, можливо, підвищити міцність зв’язку між шарами для матеріалів високої " -"температури, таких як ABS, ASA, PC, PA тощо. У той же час, повітряна " -"фільтрація для ABS та ASA може стати гіршею. Однак для PLA, PETG, TPU, PVA " -"та інших матеріалів низької температури фактична температура камери не " -"повинна бути високою, щоб уникнути засмічення, тому рекомендується вимкнути " -"температуру камери (0)" msgid "Nozzle temperature for layers after the initial one" msgstr "Температура сопла для шарів після початкового" @@ -13798,9 +13893,9 @@ msgstr "" "Залежно від тривалості операції витирання, швидкості та тривалості " "втягування екструдера/нитки, може знадобитися рух накату для нитки. \n" "\n" -"Якщо встановити значення у параметрі \"Кількість втягування перед витиранням" -"\" нижче, надлишкове втягування буде виконано перед витиранням, інакше воно " -"буде виконано після нього." +"Якщо встановити значення у параметрі \"Кількість втягування перед " +"витиранням\" нижче, надлишкове втягування буде виконано перед витиранням, " +"інакше воно буде виконано після нього." msgid "" "The wiping tower can be used to clean up the residue on the nozzle and " @@ -15649,8 +15744,8 @@ msgstr "" "Чи бажаєте ви їх перезаписати?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ми б перейменували попередні налаштування на «Вибраний вами серійний " @@ -16979,53 +17074,132 @@ msgstr "" "ABS, відповідне підвищення температури гарячого ліжка може зменшити " "ймовірність деформації." -#~ msgid "up to" -#~ msgstr "аж до" +#~ msgid "" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that " +#~ "will be filled can be controlled from the filter out tiny gaps option " +#~ "below.\n" +#~ "\n" +#~ "Options:\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " +#~ "surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " +#~ "only\n" +#~ "3. Nowhere: Disables gap fill\n" +#~ msgstr "" +#~ "Вмикає заповнення проміжків для вибраних поверхонь. Мінімальну довжину " +#~ "проміжку, який буде заповнено, можна контролювати за допомогою опції " +#~ "\"Відфільтрувати крихітні проміжки\" нижче.\n" +#~ "\n" +#~ "Параметри:\n" +#~ "1. Скрізь: Застосовує заповнення проміжків до верхньої, нижньої та " +#~ "внутрішніх суцільних поверхонь\n" +#~ "2. Верхня та нижня поверхні: Застосовує заповнення лише до верхньої та " +#~ "нижньої поверхонь\n" +#~ "3. Ніде: Вимикає заповнення проміжків\n" -#~ msgid "above" -#~ msgstr "вище" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "" +#~ "Трохи зменшіть це значення (наприклад, 0.9), щоб зменшити кількість " +#~ "матеріалу для мосту, щоб покращити провисання" -#~ msgid "from" -#~ msgstr "від" +#~ msgid "" +#~ "This value governs the thickness of the internal bridge layer. This is " +#~ "the first layer over sparse infill. Decrease this value slightly (for " +#~ "example 0.9) to improve surface quality over sparse infill." +#~ msgstr "" +#~ "Це значення визначає товщину внутрішнього мостовидного шару. Це перший " +#~ "шар над внутрішнім заповненням. Зменшіть це значення (наприклад, до 0,9), " +#~ "щоб покращити якість поверхні над внутрішнім заповненням." -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "Переключення мови програми при зміні деяких пресетів." +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "" +#~ "Цей фактор впливає на кількість матеріалу для заповнення верхнього " +#~ "твердоготіла. Можна трохи зменшити його, щоб отримати гладку " +#~ "шорсткістьповерхні" -#~ msgid "⌘+Shift+G" -#~ msgstr "⌘+Shift+G" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "" +#~ "Цей фактор впливає на кількість матеріалу для заповнення нижнього " +#~ "твердоготіла" -#~ msgid "Ctrl+Shift+G" -#~ msgstr "Ctrl+Shift+G" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "" +#~ "Увімкніть цей параметр, щоб сповільнити друк у зонах, де можуть існувати " +#~ "потенційно нависаючі периметри" -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+будь-яка стрілка" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "Швидкість мосту і периметр, що повністю звисає" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+Ліва кнопка миші" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "Швидкість внутрішнього мосту. Якщо значення виражено у відсотках, воно " +#~ "буде розраховано на основі bridge_speed. Значення за замовчуванням - 150%." -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+Ліва кнопка миші" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Час завантаження нового філаменту при перемиканні філаменту. Тільки для " +#~ "статистики" -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+будь-яка стрілка" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "" +#~ "Час вивантаження нового філаменту при перемиканні філаменту. Тільки для " +#~ "статистики" -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+Ліва кнопка миші" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Час для прошивки принтера (або Multi Material Unit 2.0), щоб завести " +#~ "новий філамент під час заміни інструменту (під час виконання коду Т). Цей " +#~ "час додається до загального часу друку за допомогою оцінювача часу G-коду." -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Ліва кнопка миші" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Час для прошивки принтера (або Multi Material Unit 2.0), щоб вивести " +#~ "філамент під час заміни інструменту (під час виконання коду Т). Цей час " +#~ "додається до загального часу друку за допомогою оцінювача часу G-коду." -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+Колесо миші" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "Відфільтруйте прогалини, менші за вказаний поріг" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+Колесо миші" +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "Увімкніть цю опцію для керування температурою в камері. Перед " +#~ "\"machine_start_gcode\" буде додано команду M191\n" +#~ "Команди G-коду: M141/M191 S(0-255)" -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Колесо миші" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+колесо миші" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "Вища температура камери може допомогти стримувати або зменшувати " +#~ "деформацію та, можливо, підвищити міцність зв’язку між шарами для " +#~ "матеріалів високої температури, таких як ABS, ASA, PC, PA тощо. У той же " +#~ "час, повітряна фільтрація для ABS та ASA може стати гіршею. Однак для " +#~ "PLA, PETG, TPU, PVA та інших матеріалів низької температури фактична " +#~ "температура камери не повинна бути високою, щоб уникнути засмічення, тому " +#~ "рекомендується вимкнути температуру камери (0)" #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 604c6c6d7c..c8ac4dbc22 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2024-07-28 07:12+0000\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -77,6 +77,9 @@ msgstr "智能填充角度" msgid "On overhangs only" msgstr "仅对悬空区生效" +msgid "Auto support threshold angle: " +msgstr "自动支撑角度阈值:" + msgid "Circle" msgstr "圆" @@ -96,9 +99,6 @@ msgstr "绘制仅对由%1%选中的面片生效" msgid "Highlight faces according to overhang angle." msgstr "根据当前设置的悬空角度来高亮片面。" -msgid "Auto support threshold angle: " -msgstr "自动支撑角度阈值:" - msgid "No auto support" msgstr "无自动支撑" @@ -1939,6 +1939,9 @@ msgstr "简化模型" msgid "Center" msgstr "居中" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "编辑工艺参数" @@ -3969,6 +3972,15 @@ msgstr "总时间" msgid "Total cost" msgstr "总成本" +msgid "up to" +msgstr "达到" + +msgid "above" +msgstr "高于" + +msgid "from" +msgstr "从" + msgid "Color Scheme" msgstr "颜色方案" @@ -4032,12 +4044,12 @@ msgstr "换料次数" msgid "Cost" msgstr "成本" -msgid "Print" -msgstr "打印" - msgid "Color change" msgstr "颜色更换" +msgid "Print" +msgstr "打印" + msgid "Printer" msgstr "打印机" @@ -4222,7 +4234,7 @@ msgstr "体积:" msgid "Size:" msgstr "尺寸:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4661,6 +4673,18 @@ msgstr "细调" msgid "Flow rate test - Pass 2" msgstr "流量测试 - 通过 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "流量" @@ -5866,19 +5890,14 @@ msgstr "检测到多零件对象" msgid "The file does not contain any geometry data." msgstr "此文件不包含任何几何数据。" -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "对象太大" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" msgstr "对象看起来太大,希望将对象自动缩小以适应热床吗?" +msgid "Object too large" +msgstr "对象太大" + msgid "Export STL file:" msgstr "导出 STL 文件:" @@ -6234,6 +6253,9 @@ msgstr "是否继续?" msgid "Language selection" msgstr "语言选择" +msgid "Switching application language while some presets are modified." +msgstr "在切换应用语言之前发现某些参数预设有更改。" + msgid "Changing application language" msgstr "正在为应用程序切换语言" @@ -7278,8 +7300,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "在录制无工具头延时摄影视频时,建议添加“延时摄影擦料塔”\n" "右键单击打印板的空白位置,选择“添加标准模型”->“延时摄影擦料塔”。" @@ -8099,7 +8121,10 @@ msgstr "对象列表" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "从STL/STEP/3MF/OBJ/AMF文件中导入几何数据" -msgid "Shift+G" +msgid "⌘+Shift+G" +msgstr "" + +msgid "Ctrl+Shift+G" msgstr "" msgid "Paste from clipboard" @@ -8149,18 +8174,33 @@ msgstr "" msgid "Collapse/Expand the sidebar" msgstr "收起/展开 侧边栏" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+方向键" msgid "Movement in camera space" msgstr "沿相机视角移动对象" +msgid "⌥+Left mouse button" +msgstr "⌥+鼠标左键" + msgid "Select a part" msgstr "选择单个零件" +msgid "⌘+Left mouse button" +msgstr "⌘+鼠标左键" + msgid "Select multiple objects" msgstr "选择多个对象" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+方向键" + +msgid "Alt+Left mouse button" +msgstr "Alt+鼠标左键" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+鼠标左键" + msgid "Shift+Left mouse button" msgstr "Shift+鼠标左键" @@ -8263,12 +8303,24 @@ msgstr "准备" msgid "Move: press to snap by 1mm" msgstr "移动:以1mm为步进移动" +msgid "⌘+Mouse wheel" +msgstr "⌘+鼠标滚轮" + msgid "Support/Color Painting: adjust pen radius" msgstr "支撑/颜色绘制:调节画笔半径" +msgid "⌥+Mouse wheel" +msgstr "⌥+鼠标滚轮" + msgid "Support/Color Painting: adjust section position" msgstr "支撑/色彩绘制:调节剖面位置" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+鼠标滚轮" + +msgid "Alt+Mouse wheel" +msgstr "Alt+鼠标滚轮" + msgid "Gizmo" msgstr "" @@ -9220,14 +9272,31 @@ msgid "Apply gap fill" msgstr "启用间隙填充" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9294,8 +9363,11 @@ msgstr "桥接流量" msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" -msgstr "稍微减小这个数值(比如0.9)可以减小桥接的材料量,来改善下垂。" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Internal bridge flow ratio" msgstr "内部搭桥流量比例" @@ -9303,7 +9375,11 @@ msgstr "内部搭桥流量比例" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" @@ -9311,14 +9387,21 @@ msgstr "顶部表面流量比例" msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" -msgstr "稍微减小这个数值(比如0.97)可以来改善顶面的光滑程度。" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Bottom surface flow ratio" msgstr "底部表面流量比例" -msgid "This factor affects the amount of material for bottom solid infill" -msgstr "首层流量调整系数,默认为1.0" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Precise wall" msgstr "精准外墙尺寸" @@ -9468,10 +9551,26 @@ msgstr "启用此选项将降低不同悬垂程度的走线的打印速度" msgid "Slow down for curled perimeters" msgstr "翘边降速" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" -msgstr "启用这个选项,降低可能存在卷曲部位的打印速度" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." +msgstr "" msgid "mm/s or %" msgstr "mm/s 或 %" @@ -9479,8 +9578,14 @@ msgstr "mm/s 或 %" msgid "External" msgstr "外部" -msgid "Speed of bridge and completely overhang wall" -msgstr "桥接和完全悬空的外墙的打印速度" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9489,11 +9594,9 @@ msgid "Internal" msgstr "内部" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"内部桥接的速度。如果该值以百分比表示,则将根据桥接速度进行计算。默认值为" -"150%。" msgid "Brim width" msgstr "Brim宽度" @@ -10066,6 +10169,17 @@ msgstr "" "量。推荐的范围为0.95到1.05。发现大平层模型的顶面有轻微的缺料或多料时,或许可" "以尝试微调这个参数。" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "启用压力提前" @@ -10240,14 +10354,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "加载耗材丝的时间" -msgid "Time to load new filament when switch filament. For statistics only" -msgstr "切换耗材丝时,加载新耗材丝所需的时间。只用于统计信息。" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" msgid "Filament unload time" msgstr "卸载耗材丝的时间" -msgid "Time to unload old filament when switch filament. For statistics only" -msgstr "切换耗材丝时,卸载旧的耗材丝所需时间。只用于统计信息。" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" +msgstr "" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10370,14 +10499,6 @@ msgstr "最后一次冷却移动的速度" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "冷却移动向这个速度逐渐加速。" -msgid "" -"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." -msgstr "" -"在换色时(执行T代码,如T1,T2),打印机固件(或Multi Material Unit 2.0)加载" -"新耗材的所需时间。该时间将会被G-code时间评估功能加到总打印时间上去。" - msgid "Ramming parameters" msgstr "尖端成型参数" @@ -10386,14 +10507,6 @@ msgid "" "parameters." msgstr "此内容由尖端成型窗口编辑,包含尖端成型的特定参数。" -msgid "" -"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." -msgstr "" -"换色期间(执行T代码时如T1,T2),打印机固件(或MMU2.0)卸载耗材所需时间。该时" -"间将会被G-code时间评估功能加到总打印时间上去。" - msgid "Enable ramming for multitool setups" msgstr "启用多色尖端成型设置" @@ -10718,10 +10831,10 @@ msgstr "满速风扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "风扇速度将从“禁用第一层”的零线性上升到“全风扇速度层”的最大。如果低于“禁用风扇" "第一层”,则“全风扇速度第一层”将被忽略,在这种情况下,风扇将在“禁用风扇第一" @@ -10782,8 +10895,11 @@ msgstr "忽略微小间隙" msgid "Layers and Perimeters" msgstr "层和墙" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "忽略小于指定阈值的间隙" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -12677,30 +12793,40 @@ msgid "Activate temperature control" msgstr "激活温度控制" msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"启用该选项以控制打印仓温度,这将会在\"machine_start_gcode\"之前添加一个M191命" -"令。\n" -"G-code命令:M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "机箱温度" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" -"更高的腔温可以帮助抑制或减少翘曲,同时可能会提高高温材料(如ABS、ASA、PC、PA" -"等)的层间粘合强度。与此同时,ABS和ASA的空气过滤性能会变差。而对于PLA、PETG、" -"TPU、PVA等低温材料,为了避免堵塞,实际的腔温不应该过高,因此强烈建议使用0(表" -"示关闭)。" msgid "Nozzle temperature for layers after the initial one" msgstr "除首层外的其它层的喷嘴温度" @@ -14506,8 +14632,8 @@ msgstr "" "你想重写预设吗" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "我们将会把预设重命名为“供应商类型名 @ 您选择的打印机”\n" @@ -15695,47 +15821,82 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" -#~ msgid "up to" -#~ msgstr "达到" +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "稍微减小这个数值(比如0.9)可以减小桥接的材料量,来改善下垂。" -#~ msgid "above" -#~ msgstr "高于" +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "稍微减小这个数值(比如0.97)可以来改善顶面的光滑程度。" -#~ msgid "from" -#~ msgstr "从" +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "首层流量调整系数,默认为1.0" -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "在切换应用语言之前发现某些参数预设有更改。" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "启用这个选项,降低可能存在卷曲部位的打印速度" -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+方向键" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "桥接和完全悬空的外墙的打印速度" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+鼠标左键" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "内部桥接的速度。如果该值以百分比表示,则将根据桥接速度进行计算。默认值为" +#~ "150%。" -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+鼠标左键" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "切换耗材丝时,加载新耗材丝所需的时间。只用于统计信息。" -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+方向键" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "切换耗材丝时,卸载旧的耗材丝所需时间。只用于统计信息。" -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+鼠标左键" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "在换色时(执行T代码,如T1,T2),打印机固件(或Multi Material Unit 2.0)加" +#~ "载新耗材的所需时间。该时间将会被G-code时间评估功能加到总打印时间上去。" -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+鼠标左键" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "换色期间(执行T代码时如T1,T2),打印机固件(或MMU2.0)卸载耗材所需时间。" +#~ "该时间将会被G-code时间评估功能加到总打印时间上去。" -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+鼠标滚轮" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "忽略小于指定阈值的间隙" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+鼠标滚轮" +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "启用该选项以控制打印仓温度,这将会在\"machine_start_gcode\"之前添加一个" +#~ "M191命令。\n" +#~ "G-code命令:M141/M191 S(0-255)" -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+鼠标滚轮" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+鼠标滚轮" +#~ msgid "" +#~ "Higher chamber temperature can help suppress or reduce warping and " +#~ "potentially lead to higher interlayer bonding strength for high " +#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " +#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " +#~ "TPU, PVA and other low temperature materials,the actual chamber " +#~ "temperature should not be high to avoid cloggings, so 0 which stands for " +#~ "turning off is highly recommended" +#~ msgstr "" +#~ "更高的腔温可以帮助抑制或减少翘曲,同时可能会提高高温材料(如ABS、ASA、PC、" +#~ "PA等)的层间粘合强度。与此同时,ABS和ASA的空气过滤性能会变差。而对于PLA、" +#~ "PETG、TPU、PVA等低温材料,为了避免堵塞,实际的腔温不应该过高,因此强烈建议" +#~ "使用0(表示关闭)。" #~ msgid "" #~ "Different nozzle diameters and different filament diameters is not " @@ -16001,8 +16162,8 @@ msgstr "" #~ msgstr "无稀疏层(实验)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "我们会将预设重命名为“供应商 类型 系列 @您选择的打印机”。\n" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 4ff1c7b512..702424b747 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"POT-Creation-Date: 2024-08-23 16:24+0200\n" "PO-Revision-Date: 2023-11-06 14:37+0800\n" "Last-Translator: ablegods \n" "Language-Team: \n" @@ -85,6 +85,9 @@ msgstr "智慧填充角度" msgid "On overhangs only" msgstr "僅對懸空區生效" +msgid "Auto support threshold angle: " +msgstr "自動支撐角度臨界值:" + #, fuzzy msgid "Circle" msgstr "圓形" @@ -107,9 +110,6 @@ msgstr "僅允許在由以下條件選擇的平面上進行繪製:%1%" msgid "Highlight faces according to overhang angle." msgstr "根據懸空角度突出顯示面。" -msgid "Auto support threshold angle: " -msgstr "自動支撐角度臨界值:" - msgid "No auto support" msgstr "無自動支撐" @@ -1979,6 +1979,9 @@ msgstr "簡化模型" msgid "Center" msgstr "居中" +msgid "Drop" +msgstr "" + msgid "Edit Process Settings" msgstr "編輯列印參數" @@ -4094,6 +4097,15 @@ msgstr "總時間" msgid "Total cost" msgstr "總成本" +msgid "up to" +msgstr "達到" + +msgid "above" +msgstr "高於" + +msgid "from" +msgstr "從" + msgid "Color Scheme" msgstr "顏色方案" @@ -4161,12 +4173,12 @@ msgstr "更換線材次數" msgid "Cost" msgstr "成本" -msgid "Print" -msgstr "列印" - msgid "Color change" msgstr "顏色更換" +msgid "Print" +msgstr "列印" + #, fuzzy msgid "Printer" msgstr "列印設備" @@ -4356,7 +4368,7 @@ msgstr "體積:" msgid "Size:" msgstr "尺寸:" -#, fuzzy, c-format, boost-format +#, fuzzy, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4815,6 +4827,18 @@ msgstr "細調" msgid "Flow rate test - Pass 2" msgstr "流量測試 - 通過 2" +msgid "YOLO (Recommended)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.01 step" +msgstr "" + +msgid "YOLO (perfectionist version)" +msgstr "" + +msgid "Orca YOLO flowrate calibration, 0.005 step" +msgstr "" + msgid "Flow rate" msgstr "流量" @@ -6066,19 +6090,14 @@ msgstr "偵測到多零件物件" msgid "The file does not contain any geometry data." msgstr "此檔案不包含任何幾何數據。" -msgid "" -"Your object appears to be too large. It will be scaled down to fit the heat " -"bed automatically." -msgstr "" - -msgid "Object too large" -msgstr "物件太大" - msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" msgstr "物件看起來太大,希望將物件自動縮小以適應列印板嗎?" +msgid "Object too large" +msgstr "物件太大" + msgid "Export STL file:" msgstr "匯出 STL 檔案:" @@ -6443,6 +6462,9 @@ msgstr "是否繼續?" msgid "Language selection" msgstr "語言選擇" +msgid "Switching application language while some presets are modified." +msgstr "在切換應用語言之前發現某些參數預設有更改。" + msgid "Changing application language" msgstr "正在為應用程式切換語言" @@ -7538,8 +7560,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "在錄製無工具頭縮時錄影影片時,建議增加“縮時錄影擦拭塔”\n" "右鍵單擊列印板的空白位置,選擇“新增標準模型”->“縮時錄影擦拭塔”。" @@ -8399,7 +8421,10 @@ msgstr "物件清單" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "從 STL/STEP/3MF/OBJ/AMF 檔案中匯入幾何數據" -msgid "Shift+G" +msgid "⌘+Shift+G" +msgstr "" + +msgid "Ctrl+Shift+G" msgstr "" msgid "Paste from clipboard" @@ -8453,20 +8478,35 @@ msgstr "" msgid "Collapse/Expand the sidebar" msgstr "摺疊/展開 側邊欄" -msgid "Any arrow" -msgstr "" +msgid "⌘+Any arrow" +msgstr "⌘+方向鍵" #, fuzzy msgid "Movement in camera space" msgstr "沿相機視角移動物件" +msgid "⌥+Left mouse button" +msgstr "⌥+滑鼠左鍵" + msgid "Select a part" msgstr "選擇單一零件" +msgid "⌘+Left mouse button" +msgstr "⌘+滑鼠左鍵" + #, fuzzy msgid "Select multiple objects" msgstr "選擇多個物件" +msgid "Ctrl+Any arrow" +msgstr "Ctrl+方向鍵" + +msgid "Alt+Left mouse button" +msgstr "Alt+滑鼠左鍵" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+滑鼠左鍵" + msgid "Shift+Left mouse button" msgstr "Shift+滑鼠左鍵" @@ -8576,12 +8616,24 @@ msgstr "準備" msgid "Move: press to snap by 1mm" msgstr "移動:以 1mm 為單位步進移動" +msgid "⌘+Mouse wheel" +msgstr "⌘+滑鼠滾輪" + msgid "Support/Color Painting: adjust pen radius" msgstr "支撐/顏色繪製:調整筆刷半徑" +msgid "⌥+Mouse wheel" +msgstr "⌥+滑鼠滾輪" + msgid "Support/Color Painting: adjust section position" msgstr "支撐/色彩繪製:調整剖面位置" +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+滑鼠滾輪" + +msgid "Alt+Mouse wheel" +msgstr "Alt+滑鼠滾輪" + msgid "Gizmo" msgstr "" @@ -9568,14 +9620,31 @@ msgid "Apply gap fill" msgstr "" msgid "" -"Enables gap fill for the selected surfaces. The minimum gap length that will " -"be filled can be controlled from the filter out tiny gaps option below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length " +"that will be filled can be controlled from the filter out tiny gaps option " +"below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " +"for maximum strength\n" "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" -"3. Nowhere: Disables gap fill\n" +"only, balancing print speed, reducing potential over extrusion in the solid " +"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"3. Nowhere: Disables gap fill for all solid infill areas. \n" +"\n" +"Note that if using the classic perimeter generator, gap fill may also be " +"generated between perimeters, if a full width line cannot fit between them. " +"That perimeter gap fill is not controlled by this setting. \n" +"\n" +"If you would like all gap fill, including the classic perimeter generated " +"one, removed, set the filter out tiny gaps value to a large number, like " +"999999. \n" +"\n" +"However this is not advised, as gap fill between perimeters is contributing " +"to the model's strength. For models where excessive gap fill is generated " +"between perimeters, a better option would be to switch to the arachne wall " +"generator and use this option to control whether the cosmetic top and bottom " +"surface gap fill is generated" msgstr "" msgid "Everywhere" @@ -9645,11 +9714,13 @@ msgstr "外部橋接的密度。 100% 意味著堅固的橋樑。 預設值為 1 msgid "Bridge flow ratio" msgstr "橋接流量" -#, fuzzy msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" -msgstr "稍微減小這個數值(比如 0.9)可以減小橋接的線材量,來改善下垂。" +"material for bridge, to improve sag. \n" +"\n" +"The actual bridge flow used is calculated by multiplying this value with the " +"filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Internal bridge flow ratio" msgstr "" @@ -9657,24 +9728,33 @@ msgstr "" msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill." +"0.9) to improve surface quality over sparse infill.\n" +"\n" +"The actual internal bridge flow used is calculated by multiplying this value " +"with the bridge flow ratio, the filament flow ratio, and if set, the " +"object's flow ratio." msgstr "" msgid "Top surface flow ratio" msgstr "頂部表面流量比例" -#, fuzzy msgid "" "This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" -msgstr "稍微減小這個數值(比如 0.97)可以來改善頂面的光滑程度。" +"decrease it slightly to have smooth surface finish. \n" +"\n" +"The actual top surface flow used is calculated by multiplying this value " +"with the filament flow ratio, and if set, the object's flow ratio." +msgstr "" msgid "Bottom surface flow ratio" msgstr "底部表面流量比例" -#, fuzzy -msgid "This factor affects the amount of material for bottom solid infill" -msgstr "首層流量調整係數,預設為 1.0" +msgid "" +"This factor affects the amount of material for bottom solid infill. \n" +"\n" +"The actual bottom solid infill flow used is calculated by multiplying this " +"value with the filament flow ratio, and if set, the object's flow ratio." +msgstr "" #, fuzzy msgid "Precise wall" @@ -9815,10 +9895,26 @@ msgstr "打開這個選項將降低不同懸垂程度的走線的列印速度" msgid "Slow down for curled perimeters" msgstr "翹邊降速" +#, c-format, boost-format msgid "" -"Enable this option to slow printing down in areas where potential curled " -"perimeters may exist" -msgstr "啟用此選項降低可能存在潛在翹邊區域的列印速度" +"Enable this option to slow down printing in areas where perimeters may have " +"curled upwards.For example, additional slowdown will be applied when " +"printing overhangs on sharp corners like the front of the Benchy hull, " +"reducing curling which compounds over multiple layers.\n" +"\n" +" It is generally recommended to have this option switched on unless your " +"printer cooling is powerful enough or the print speed slow enough that " +"perimeter curling does not happen. If printing with a high external " +"perimeter speed, this parameter may introduce slight artifacts when slowing " +"down due to the large variance in print speeds. If you notice artifacts, " +"ensure your pressure advance is tuned correctly.\n" +"\n" +"Note: When this option is enabled, overhang perimeters are treated like " +"overhangs, meaning the overhang speed is applied even if the overhanging " +"perimeter is part of a bridge. For example, when the perimeters are " +"100% overhanging, with no wall supporting them from underneath, the " +"100% overhang speed will be applied." +msgstr "" msgid "mm/s or %" msgstr "mm/s 或 %" @@ -9827,8 +9923,14 @@ msgstr "mm/s 或 %" msgid "External" msgstr "外部" -msgid "Speed of bridge and completely overhang wall" -msgstr "橋接和完全懸空的外牆的列印速度" +msgid "" +"Speed of the externally visible bridge extrusions. \n" +"\n" +"In addition, if Slow down for curled perimeters is disabled or Classic " +"overhang mode is enabled, it will be the print speed of overhang walls that " +"are supported by less than 13%, whether they are part of a bridge or an " +"overhang." +msgstr "" msgid "mm/s" msgstr "mm/s" @@ -9838,11 +9940,9 @@ msgid "Internal" msgstr "內部" msgid "" -"Speed of internal bridge. If the value is expressed as a percentage, it will " -"be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it " +"will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"內部橋接速度。 如果該值以百分比表示,則會根據 橋接速度 進行計算。 預設值為 " -"150%" #, fuzzy msgid "Brim width" @@ -10382,6 +10482,17 @@ msgstr "" "量。推薦的範圍為 0.95 到 1.05。發現大平層模型的頂面有輕微的缺料或多料時,或許" "可以嘗試微調這個參數。" +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow. \n" +"\n" +"The final object flow ratio is this value multiplied by the filament flow " +"ratio." +msgstr "" + msgid "Enable pressure advance" msgstr "啟用壓力提前" @@ -10555,14 +10666,29 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "進料的時間" -msgid "Time to load new filament when switch filament. For statistics only" -msgstr "切換線材時,進料所需的時間。只用於統計資訊。" +msgid "" +"Time to load new filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" msgid "Filament unload time" msgstr "退料的時間" -msgid "Time to unload old filament when switch filament. For statistics only" -msgstr "切換線材時,退料所需時間。只用於統計資訊。" +msgid "" +"Time to unload old filament when switch filament. It's usually applicable " +"for single-extruder multi-material machines. For tool changers or multi-tool " +"machines, it's typically 0. For statistics only" +msgstr "" + +msgid "Tool change time" +msgstr "" + +msgid "" +"Time taken to switch tools. It's usually applicable for tool changers or " +"multi-tool machines. For single-extruder multi-material machines, it's " +"typically 0. For statistics only" +msgstr "" msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -10690,15 +10816,6 @@ msgstr "最後一次冷卻移動的速度" msgid "Cooling moves are gradually accelerating towards this speed." msgstr "冷卻移動向這個速度逐漸加速。" -msgid "" -"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." -msgstr "" -"在換色時(執行 T-code ,如 T1,T2),列印設備韌體(或 Multi Material Unit " -"2.0)載入新線材的所需時間。該時間將會被 G-code 時間評估功能加到總列印時間上" -"去。" - msgid "Ramming parameters" msgstr "尖端成型參數" @@ -10707,14 +10824,6 @@ msgid "" "parameters." msgstr "此內容由尖端成型欄位編輯,包含尖端成型的特定參數。" -msgid "" -"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." -msgstr "" -"換色期間(執行T-cide 時如 T1,T2),列印設備韌體(或 Multi Material Unit " -"2.0)退出線材所需時間。該時間將會被 G-code 時間評估功能加到總列印時間上去。" - msgid "Enable ramming for multitool setups" msgstr "使用多色尖端成形設定" @@ -11048,10 +11157,10 @@ msgstr "滿速風扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "風扇速度將從“禁用第一層”的零線性上升到“全風扇速度層”的最大。如果低於“禁用風扇" "第一層”,則“全風扇速度第一層”將被忽略,在這種情況下,風扇將在“禁用風扇第一" @@ -11118,8 +11227,11 @@ msgstr "忽略微小間隙" msgid "Layers and Perimeters" msgstr "層和牆" -msgid "Filter out gaps smaller than the threshold specified" -msgstr "忽略小於指定數值的間隙" +msgid "" +"Don't print gap fill with a length is smaller than the threshold specified " +"(in mm). This setting applies to top, bottom and solid infill and, if using " +"the classic perimeter generator, to wall gap fill. " +msgstr "" msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -13000,27 +13112,40 @@ msgstr "此設定決定是否為樹狀支撐內部的空間產生填充。" msgid "Activate temperature control" msgstr "啟動溫度控制" -#, fuzzy msgid "" -"Enable this option for chamber temperature control. An M191 command will be " -"added before \"machine_start_gcode\"\n" -"G-code commands: M141/M191 S(0-255)" +"Enable this option for automated chamber temperature control. This option " +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In " +"addition, it emits an M141 command at the end of the print to turn off the " +"chamber heater, if present. \n" +"\n" +"This option relies on the firmware supporting the M191 and M141 commands " +"either via macros or natively and is usually used when an active chamber " +"heater is installed." msgstr "" -"啟用此選項以控製列印設備內部溫度。 在「machine_start_gcode」之前將會新增一個" -"M191指令\n" -"G碼指令:M141/M191 S(0-255)" msgid "Chamber temperature" msgstr "機箱溫度" msgid "" -"Higher chamber temperature can help suppress or reduce warping and " -"potentially lead to higher interlayer bonding strength for high temperature " -"materials like ABS, ASA, PC, PA and so on.At the same time, the air " -"filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " -"other low temperature materials,the actual chamber temperature should not be " -"high to avoid cloggings, so 0 which stands for turning off is highly " -"recommended" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " +"temperature can help suppress or reduce warping and potentially lead to " +"higher interlayer bonding strength. However, at the same time, a higher " +"chamber temperature will reduce the efficiency of air filtration for ABS and " +"ASA. \n" +"\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " +"should be disabled (set to 0) as the chamber temperature should be low to " +"avoid extruder clogging caused by material softening at the heat break.\n" +"\n" +"If enabled, this parameter also sets a gcode variable named " +"chamber_temperature, which can be used to pass the desired chamber " +"temperature to your print start macro, or a heat soak macro like this: " +"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " +"be useful if your printer does not support M141/M191 commands, or if you " +"desire to handle heat soaking in the print start macro if no active chamber " +"heater is installed." msgstr "" msgid "Nozzle temperature for layers after the initial one" @@ -14831,8 +14956,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -15927,47 +16052,74 @@ msgid "" "probability of warping." msgstr "" -#~ msgid "up to" -#~ msgstr "達到" +#, fuzzy +#~ msgid "" +#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " +#~ "material for bridge, to improve sag" +#~ msgstr "稍微減小這個數值(比如 0.9)可以減小橋接的線材量,來改善下垂。" -#~ msgid "above" -#~ msgstr "高於" +#, fuzzy +#~ msgid "" +#~ "This factor affects the amount of material for top solid infill. You can " +#~ "decrease it slightly to have smooth surface finish" +#~ msgstr "稍微減小這個數值(比如 0.97)可以來改善頂面的光滑程度。" -#~ msgid "from" -#~ msgstr "從" +#, fuzzy +#~ msgid "This factor affects the amount of material for bottom solid infill" +#~ msgstr "首層流量調整係數,預設為 1.0" -#~ msgid "Switching application language while some presets are modified." -#~ msgstr "在切換應用語言之前發現某些參數預設有更改。" +#~ msgid "" +#~ "Enable this option to slow printing down in areas where potential curled " +#~ "perimeters may exist" +#~ msgstr "啟用此選項降低可能存在潛在翹邊區域的列印速度" -#~ msgid "⌘+Any arrow" -#~ msgstr "⌘+方向鍵" +#~ msgid "Speed of bridge and completely overhang wall" +#~ msgstr "橋接和完全懸空的外牆的列印速度" -#~ msgid "⌥+Left mouse button" -#~ msgstr "⌥+滑鼠左鍵" +#~ msgid "" +#~ "Speed of internal bridge. If the value is expressed as a percentage, it " +#~ "will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "" +#~ "內部橋接速度。 如果該值以百分比表示,則會根據 橋接速度 進行計算。 預設值" +#~ "為 150%" -#~ msgid "⌘+Left mouse button" -#~ msgstr "⌘+滑鼠左鍵" +#~ msgid "Time to load new filament when switch filament. For statistics only" +#~ msgstr "切換線材時,進料所需的時間。只用於統計資訊。" -#~ msgid "Ctrl+Any arrow" -#~ msgstr "Ctrl+方向鍵" +#~ msgid "" +#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "切換線材時,退料所需時間。只用於統計資訊。" -#~ msgid "Alt+Left mouse button" -#~ msgstr "Alt+滑鼠左鍵" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "在換色時(執行 T-code ,如 T1,T2),列印設備韌體(或 Multi Material Unit " +#~ "2.0)載入新線材的所需時間。該時間將會被 G-code 時間評估功能加到總列印時間" +#~ "上去。" -#~ msgid "Ctrl+Left mouse button" -#~ msgstr "Ctrl+滑鼠左鍵" +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "換色期間(執行T-cide 時如 T1,T2),列印設備韌體(或 Multi Material Unit " +#~ "2.0)退出線材所需時間。該時間將會被 G-code 時間評估功能加到總列印時間上" +#~ "去。" -#~ msgid "⌘+Mouse wheel" -#~ msgstr "⌘+滑鼠滾輪" +#~ msgid "Filter out gaps smaller than the threshold specified" +#~ msgstr "忽略小於指定數值的間隙" -#~ msgid "⌥+Mouse wheel" -#~ msgstr "⌥+滑鼠滾輪" - -#~ msgid "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+滑鼠滾輪" - -#~ msgid "Alt+Mouse wheel" -#~ msgstr "Alt+滑鼠滾輪" +#, fuzzy +#~ msgid "" +#~ "Enable this option for chamber temperature control. An M191 command will " +#~ "be added before \"machine_start_gcode\"\n" +#~ "G-code commands: M141/M191 S(0-255)" +#~ msgstr "" +#~ "啟用此選項以控製列印設備內部溫度。 在「machine_start_gcode」之前將會新增一" +#~ "個M191指令\n" +#~ "G碼指令:M141/M191 S(0-255)" #~ msgid "Wipe tower extruder" #~ msgstr "擦拭塔擠出機" From a6050b845f3a3113e8e14d1515115b2356fa0469 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Tue, 27 Aug 2024 18:26:43 +0300 Subject: [PATCH 146/151] Bug fix: Avoid crossing walls feature removes some retraction wipes (#6518) * Bug fix: Avoid crossing walls feature removes some retraction wipes * Merge remote-tracking branch 'upstream/main' into Bug-Fix-Avoid-crossing-walls-removing-wipe-moves-when-retraction-was-happening * Merge branch 'main' into Bug-Fix-Avoid-crossing-walls-removing-wipe-moves-when-retraction-was-happening * Merge branch 'main' into Bug-Fix-Avoid-crossing-walls-removing-wipe-moves-when-retraction-was-happening --- src/libslic3r/GCode.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 1b6335e169..9ed689b5c5 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -5892,8 +5892,10 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string // generate G-code for the travel move if (needs_retraction) { - if (m_config.reduce_crossing_wall && could_be_wipe_disabled) - m_wipe.reset_path(); + // ORCA: Fix scenario where wipe is disabled when avoid crossing perimeters was enabled even though a retraction move was performed. + // This replicates the existing behaviour of always wiping when retracting + /*if (m_config.reduce_crossing_wall && could_be_wipe_disabled) + m_wipe.reset_path();*/ Point last_post_before_retract = this->last_pos(); gcode += this->retract(false, false, lift_type); From e963a3c51cf32ffed6e378cc9ecd7a5b6d58bc0b Mon Sep 17 00:00:00 2001 From: Kenneth Jiang Date: Tue, 27 Aug 2024 08:28:02 -0700 Subject: [PATCH 147/151] Profiles for Kingroon KLP1 and KP3S V1 (#6554) * Kingroon KLP1 profiles * Kingroon KP3S V1 profiles * Make cover png file size more reasonable * copy/paste error in the profile name * Merge branch 'main' into kingroon-klp1-profiles --- resources/profiles/Kingroon.json | 26 +++++- .../profiles/Kingroon/Kingroon KLP1_cover.png | Bin 0 -> 169796 bytes .../Kingroon/Kingroon KP3S V1_cover.png | Bin 0 -> 126962 bytes .../filament/Kingroon Generic ABS.json | 2 + .../filament/Kingroon Generic ASA.json | 2 + .../filament/Kingroon Generic PA-CF.json | 4 +- .../filament/Kingroon Generic PA.json | 4 +- .../filament/Kingroon Generic PC.json | 4 +- .../filament/Kingroon Generic PETG.json | 2 + .../filament/Kingroon Generic PLA-CF.json | 4 +- .../filament/Kingroon Generic PLA.json | 2 + .../filament/Kingroon Generic PVA.json | 2 + .../filament/Kingroon Generic TPU.json | 2 + .../machine/Kingroon KLP1 0.4 nozzle.json | 61 +++++++++++++ .../Kingroon/machine/Kingroon KLP1.json | 10 +++ .../machine/Kingroon KP3S V1 0.4 nozzle.json | 85 ++++++++++++++++++ .../Kingroon/machine/Kingroon KP3S V1.json | 10 +++ .../0.12mm Standard @Kingroon KLP1.json | 13 +++ .../0.20mm Standard @Kingroon KLP1.json | 13 +++ .../0.20mm Standard @Kingroon KP3S V1.json | 45 ++++++++++ 20 files changed, 286 insertions(+), 5 deletions(-) create mode 100644 resources/profiles/Kingroon/Kingroon KLP1_cover.png create mode 100644 resources/profiles/Kingroon/Kingroon KP3S V1_cover.png create mode 100644 resources/profiles/Kingroon/machine/Kingroon KLP1 0.4 nozzle.json create mode 100644 resources/profiles/Kingroon/machine/Kingroon KLP1.json create mode 100644 resources/profiles/Kingroon/machine/Kingroon KP3S V1 0.4 nozzle.json create mode 100644 resources/profiles/Kingroon/machine/Kingroon KP3S V1.json create mode 100644 resources/profiles/Kingroon/process/0.12mm Standard @Kingroon KLP1.json create mode 100644 resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KLP1.json create mode 100644 resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KP3S V1.json diff --git a/resources/profiles/Kingroon.json b/resources/profiles/Kingroon.json index 099668cd66..90896d3e62 100644 --- a/resources/profiles/Kingroon.json +++ b/resources/profiles/Kingroon.json @@ -13,9 +13,17 @@ "name": "Kingroon KP3S PRO V2", "sub_path": "machine/Kingroon KP3S PRO V2.json" }, - { + { "name": "Kingroon KP3S 3.0", "sub_path": "machine/Kingroon KP3S 3.0.json" + }, + { + "name": "Kingroon KP3S V1", + "sub_path": "machine/Kingroon KP3S V1.json" + }, + { + "name": "Kingroon KLP1", + "sub_path": "machine/Kingroon KLP1.json" } ], "process_list": [ @@ -42,6 +50,18 @@ { "name": "0.30mm Standard @Kingroon KP3S 3.0", "sub_path": "process/0.30mm Standard @Kingroon KP3S 3.0.json" + }, + { + "name": "0.20mm Standard @Kingroon KP3S V1", + "sub_path": "process/0.20mm Standard @Kingroon KP3S V1.json" + }, + { + "name": "0.12mm Standard @Kingroon KLP1", + "sub_path": "process/0.12mm Standard @Kingroon KLP1.json" + }, + { + "name": "0.20mm Standard @Kingroon KLP1", + "sub_path": "process/0.20mm Standard @Kingroon KLP1.json" } ], "filament_list": [ @@ -142,6 +162,10 @@ { "name": "Kingroon KP3S 0.4 nozzle", "sub_path": "machine/Kingroon KP3S 3.0 0.4 nozzle.json" + }, + { + "name": "Kingroon KLP1 0.4 nozzle", + "sub_path": "machine/Kingroon KLP1 0.4 nozzle.json" } ] } diff --git a/resources/profiles/Kingroon/Kingroon KLP1_cover.png b/resources/profiles/Kingroon/Kingroon KLP1_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb71eb9b977d25ce148f03d8b9b245083c39b4b GIT binary patch literal 169796 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

      LK%&C5k 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 j|L)-b&pWs`M1DcBTk;NtK literal 0 HcmV?d00001 diff --git a/resources/profiles/Kingroon/Kingroon KP3S V1_cover.png b/resources/profiles/Kingroon/Kingroon KP3S V1_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a50e207b9abcd034bee7234af3a4b19b096126 GIT binary patch literal 126962 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic ABS.json b/resources/profiles/Kingroon/filament/Kingroon Generic ABS.json index 5e11d9665f..73911af68b 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic ABS.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic ABS.json @@ -13,6 +13,8 @@ "12" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic ASA.json b/resources/profiles/Kingroon/filament/Kingroon Generic ASA.json index 2231d6a9f3..b06c5b8ee6 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic ASA.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic ASA.json @@ -13,6 +13,8 @@ "12" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic PA-CF.json b/resources/profiles/Kingroon/filament/Kingroon Generic PA-CF.json index eac58e6a01..8eef1a8c69 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic PA-CF.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic PA-CF.json @@ -19,8 +19,10 @@ "8" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic PA.json b/resources/profiles/Kingroon/filament/Kingroon Generic PA.json index 00e4ee4680..07d73558d3 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic PA.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic PA.json @@ -16,8 +16,10 @@ "12" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic PC.json b/resources/profiles/Kingroon/filament/Kingroon Generic PC.json index 14378164dc..f40641125f 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic PC.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic PC.json @@ -13,8 +13,10 @@ "0.94" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic PETG.json b/resources/profiles/Kingroon/filament/Kingroon Generic PETG.json index d63d8fac21..281aae4af3 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic PETG.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic PETG.json @@ -43,6 +43,8 @@ "; filament start gcode\n" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic PLA-CF.json b/resources/profiles/Kingroon/filament/Kingroon Generic PLA-CF.json index d96b58a6c8..43b20cd38e 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic PLA-CF.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic PLA-CF.json @@ -19,8 +19,10 @@ "7" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic PLA.json b/resources/profiles/Kingroon/filament/Kingroon Generic PLA.json index e4b457bce7..df234d7e05 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic PLA.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic PLA.json @@ -7,6 +7,8 @@ "instantiation": "true", "inherits": "fdm_filament_pla", "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic PVA.json b/resources/profiles/Kingroon/filament/Kingroon Generic PVA.json index 63e253dcf9..1cb99ecb5d 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic PVA.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic PVA.json @@ -19,6 +19,8 @@ "10" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" diff --git a/resources/profiles/Kingroon/filament/Kingroon Generic TPU.json b/resources/profiles/Kingroon/filament/Kingroon Generic TPU.json index 8c07c5871f..7908828470 100644 --- a/resources/profiles/Kingroon/filament/Kingroon Generic TPU.json +++ b/resources/profiles/Kingroon/filament/Kingroon Generic TPU.json @@ -10,6 +10,8 @@ "3.2" ], "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle", + "Kingroon KP3S V1 0.4 nozzle", "Kingroon KP3S PRO S1 0.4 nozzle", "Kingroon KP3S PRO V2 0.4 nozzle", "Kingroon KP3S 3.0 0.4 nozzle" diff --git a/resources/profiles/Kingroon/machine/Kingroon KLP1 0.4 nozzle.json b/resources/profiles/Kingroon/machine/Kingroon KLP1 0.4 nozzle.json new file mode 100644 index 0000000000..84d12a50c1 --- /dev/null +++ b/resources/profiles/Kingroon/machine/Kingroon KLP1 0.4 nozzle.json @@ -0,0 +1,61 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Kingroon KLP1 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Kingroon KLP1", + "default_filament_profile": "Kingroon Generic PLA", + "default_print_profile": "0.20mm Standard @Kingroon KLP1", + + "thumbnails": [ "100x100" ], + "change_filament_gcode": "", + "deretraction_speed": [ "90" ], + "enable_filament_ramming": "1", + "extra_loading_move": "-2", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "high_current_on_filament_swap": "0", + "machine_unload_filament_time": "0", + "min_layer_height": "0.08", + "parking_pos_retraction": "92", + "purge_in_prime_tower": "1", + "retract_lift_above": [ "0" ], + "retract_lift_below": [ "0" ], + "retract_lift_enforce": ["All Surfaces"], + "bed_exclude_area": ["0x0"], + "extruder_colour": ["#FCE94F"], + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "machine_end_gcode": "G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y200 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n G1 X0 Y200 F1000 ; prepare for part removal\n M84 ; disable motors\n M106 S0 ; turn off fan", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["5000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["9000", "9000"], + "machine_max_acceleration_x": ["10000", "20000"], + "machine_max_acceleration_y": ["10000", "20000"], + "machine_max_acceleration_z": ["500", "200"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["20", "9"], + "machine_max_jerk_y": ["20", "9"], + "machine_max_jerk_z": ["0.2", "0.4"], + "machine_max_speed_e": ["100", "25"], + "machine_max_speed_z": ["50", "12"], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nG28 ; h1ome all axes\n M117 ;Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y175.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y175.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface", + "max_layer_height": ["0.32"], + "retraction_length": ["1"], + "retraction_speed": ["90"], + "use_firmware_retraction": "0", + "wipe": ["1"], + "z_hop": ["0"], + "printable_area": [ + "0x0", + "230x0", + "230x230", + "0x230" +], +"printable_height": "210", +"nozzle_diameter": ["0.4"] +} diff --git a/resources/profiles/Kingroon/machine/Kingroon KLP1.json b/resources/profiles/Kingroon/machine/Kingroon KLP1.json new file mode 100644 index 0000000000..2e0964289d --- /dev/null +++ b/resources/profiles/Kingroon/machine/Kingroon KLP1.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "Kingroon KLP1", + "model_id": "Kingroon KLP1", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Kingroon", + "hotend_model": "", + "default_materials": "Kingroon Generic ABS;Kingroon Generic PLA;Kingroon Generic PLA-CF;Kingroon Generic PETG;Kingroon Generic TPU;Kingroon Generic ASA;Kingroon Generic PC;Kingroon Generic PVA;Kingroon Generic PA;Kingroon Generic PA-CF" +} diff --git a/resources/profiles/Kingroon/machine/Kingroon KP3S V1 0.4 nozzle.json b/resources/profiles/Kingroon/machine/Kingroon KP3S V1 0.4 nozzle.json new file mode 100644 index 0000000000..e836c3e08e --- /dev/null +++ b/resources/profiles/Kingroon/machine/Kingroon KP3S V1 0.4 nozzle.json @@ -0,0 +1,85 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Kingroon KP3S V1 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Kingroon KP3S V1", + "default_filament_profile": "Kingroon Generic PLA", + "default_print_profile": "0.20mm Standard @Kingroon KP3S V1", + + "thumbnails": [ "100x100" ], + "change_filament_gcode": "", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "deretraction_speed": [ "30" ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "head_wrap_detect_zone": [], + "enable_long_retraction_when_cut": "0", + "long_retractions_when_cut": [ + "0" + ], + "retract_before_wipe": [ "0%" ], + "retraction_distances_when_cut": [ + "18" + ], + "extra_loading_move": "0", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "high_current_on_filament_swap": "0", + "machine_unload_filament_time": "0", + "min_layer_height": "0.08", + "parking_pos_retraction": "0", + "preferred_orientation": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_lift_above": [ "0" ], + "retract_lift_below": [ "0" ], + "retract_lift_enforce": ["All Surfaces"], + "bed_exclude_area": ["0x0"], + "extruder_colour": ["#FCE94F"], + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "machine_end_gcode": "G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y180 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n G1 X0 Y180 F1000 ; prepare for part removal\n M84 ; disable motors\n M106 S0 ; turn off fan", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "20000"], + "machine_max_acceleration_retracting": ["5000", "5000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["10000", "20000"], + "machine_max_acceleration_y": ["10000", "20000"], + "machine_max_acceleration_z": ["500", "200"], + "machine_max_jerk_e": ["2.5", "2.5"], + "machine_max_jerk_x": ["9", "9"], + "machine_max_jerk_y": ["9", "9"], + "machine_max_jerk_z": ["0.2", "0.4"], + "machine_max_speed_e": ["100", "25"], + "machine_max_speed_z": ["12", "12"], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "M104 S{first_layer_temperature[0]} ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nM83\nG28 ; h1ome all axes\nG1 Z0.2 ; lift nozzle a bit \nG92 E0 \nG1 Y-3 F2400 \nG1 X50 F2400 ; zero the extruded length \nG1 X115 E40 F500 ; Extrude 25mm of filament in a 5cm line. \nG92 E0 ; zero the extruded length again \nG1 E-0.2 F3000 ; Retract a little \nG1 X180 F4000 ; Quickly wipe away from the filament line\nM117", + "manual_filament_change": "0", + "nozzle_height": "4", + "nozzle_type": "brass", + "max_layer_height": ["0.32"], + "retraction_length": ["0.8"], + "retraction_speed": ["30"], + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "0", + "use_firmware_retraction": "0", + "wipe": ["1"], + "z_hop": ["0"], + "z_offset": "0", + "printable_area": [ + "0x0", + "180x0", + "180x180", + "0x180" +], +"printable_height": "180", +"nozzle_diameter": ["0.4"] +} diff --git a/resources/profiles/Kingroon/machine/Kingroon KP3S V1.json b/resources/profiles/Kingroon/machine/Kingroon KP3S V1.json new file mode 100644 index 0000000000..9b92571019 --- /dev/null +++ b/resources/profiles/Kingroon/machine/Kingroon KP3S V1.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "Kingroon KP3S V1", + "model_id": "Kingroon KP3S V1", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Kingroon", + "hotend_model": "", + "default_materials": "Kingroon Generic ABS;Kingroon Generic PLA;Kingroon Generic PLA-CF;Kingroon Generic PETG;Kingroon Generic TPU;Kingroon Generic ASA;Kingroon Generic PC;Kingroon Generic PVA;Kingroon Generic PA;Kingroon Generic PA-CF" +} diff --git a/resources/profiles/Kingroon/process/0.12mm Standard @Kingroon KLP1.json b/resources/profiles/Kingroon/process/0.12mm Standard @Kingroon KLP1.json new file mode 100644 index 0000000000..cbbabc2017 --- /dev/null +++ b/resources/profiles/Kingroon/process/0.12mm Standard @Kingroon KLP1.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle" + ], + "compatible_printers_condition": "", + "inherits": "fdm_process_common", + "name": "0.12mm Standard @Kingroon KLP1", + "initial_layer_print_height": "0.2", + "layer_height": "0.12", + "line_width": "0.4", + "instantiation": "true" +} diff --git a/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KLP1.json b/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KLP1.json new file mode 100644 index 0000000000..02e8d9219d --- /dev/null +++ b/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KLP1.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "compatible_printers": [ + "Kingroon KLP1 0.4 nozzle" + ], + "compatible_printers_condition": "", + "inherits": "fdm_process_common", + "name": "0.20mm Standard @Kingroon KLP1", + "initial_layer_print_height": "0.2", + "layer_height": "0.2", + "line_width": "0.42", + "instantiation": "true" +} diff --git a/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KP3S V1.json b/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KP3S V1.json new file mode 100644 index 0000000000..fde94f4741 --- /dev/null +++ b/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KP3S V1.json @@ -0,0 +1,45 @@ +{ + "type": "process", + "compatible_printers": [ + "Kingroon KP3S V1 0.4 nozzle" + ], + "inherits": "fdm_process_common", + "name": "0.20mm Standard @Kingroon KP3S V1", + "instantiation": "true", + "bottom_shell_layers": "2", + "bridge_speed": "30", + "brim_type": "no_brim", + "default_acceleration": "10000", + "detect_thin_wall": "1", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "60", + "infill_wall_overlap": "8%", + "initial_layer_print_height": "0.25", + "initial_layer_travel_speed": "200", + "internal_solid_infill_acceleration": "6000", + "internal_solid_infill_speed": "160", + "is_custom_defined": "0", + "outer_wall_acceleration": "4000", + "overhang_2_4_speed": "30", + "overhang_reverse": "1", + "overhang_reverse_internal_only": "1", + "overhang_reverse_threshold": "0%", + "overhang_speed_classic": "1", + "seam_gap": "0.1", + "seam_position": "back", + "slow_down_layers": "2", + "slowdown_for_curled_perimeters": "1", + "sparse_infill_acceleration": "6000", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "300", + "support_type": "normal(manual)", + "thick_bridges": "1", + "top_surface_acceleration": "5000", + "top_surface_speed": "180", + "travel_acceleration": "10000", + "version": "1.6.0.0", + "wall_generator": "classic", + "wall_loops": "2", + "wall_transition_angle": "25", + "xy_hole_compensation": "0.1" +} From 3016b31d150598fda2cbd104671e87cc91bbf904 Mon Sep 17 00:00:00 2001 From: Aleksey Bogomolov Date: Tue, 27 Aug 2024 18:30:58 +0300 Subject: [PATCH 148/151] UseElegoo Neptune 4 retraction from Np4 Pro profile (#6565) * Use Elegoo Neptune 4 retraction from Np4 Pro profile --- .../Elegoo/machine/Elegoo Neptune 4 (0.2 nozzle).json | 5 ++++- .../Elegoo/machine/Elegoo Neptune 4 (0.4 nozzle).json | 5 ++++- .../Elegoo/machine/Elegoo Neptune 4 (0.6 nozzle).json | 5 ++++- .../Elegoo/machine/Elegoo Neptune 4 (0.8 nozzle).json | 7 +++++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.2 nozzle).json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.2 nozzle).json index a89e82d021..978b436ae9 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.2 nozzle).json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.2 nozzle).json @@ -36,7 +36,10 @@ "85%" ], "retraction_length": [ - "5" + "0.8" + ], + "retraction_speed": [ + "60" ], "retract_length_toolchange": [ "2" diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.4 nozzle).json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.4 nozzle).json index 2717448e77..f7af80c318 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.4 nozzle).json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.4 nozzle).json @@ -36,7 +36,10 @@ "85%" ], "retraction_length": [ - "5" + "0.8" + ], + "retraction_speed": [ + "60" ], "retract_length_toolchange": [ "2" diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.6 nozzle).json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.6 nozzle).json index 693ff8d370..1e1c35823a 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.6 nozzle).json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.6 nozzle).json @@ -36,7 +36,10 @@ "85%" ], "retraction_length": [ - "5" + "2.5" + ], + "retraction_speed": [ + "60" ], "retract_length_toolchange": [ "2" diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.8 nozzle).json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.8 nozzle).json index ab3fbb9b4a..34d51ddb6f 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.8 nozzle).json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 (0.8 nozzle).json @@ -36,8 +36,11 @@ "85%" ], "retraction_length": [ - "5" - ], + "0.8" + ], + "retraction_speed": [ + "60" + ], "retract_length_toolchange": [ "2" ], From 6544d6879cf15c7fac8b9ca7c405e7d4f64c7f01 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 27 Aug 2024 17:32:52 +0200 Subject: [PATCH 149/151] Translated new strings in French (#6578) * Translated new strings * Fixes * c-boost fix --- localization/i18n/fr/OrcaSlicer_fr.po | 8143 ++++++------------------- 1 file changed, 1951 insertions(+), 6192 deletions(-) diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index adcd0f2f69..9471cfde7f 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -94,8 +94,7 @@ msgstr "Remplissage des espaces" #, boost-format msgid "Allows painting only on facets selected by: \"%1%\"" -msgstr "" -"Permet de peindre uniquement sur les facettes sélectionnées par : \"%1%\"" +msgstr "Permet de peindre uniquement sur les facettes sélectionnées par : \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Mettre en surbrillance les faces en fonction de l'angle de surplomb." @@ -113,13 +112,8 @@ msgid "Lay on face" msgstr "Poser sur une face" #, boost-format -msgid "" -"Filament count exceeds the maximum number that painting tool supports. only " -"the first %1% filaments will be available in painting tool." -msgstr "" -"Le nombre de filaments dépasse le nombre maximum pris en charge par l'outil " -"de peinture. seuls les %1% premiers filaments seront disponibles dans " -"l'outil de peinture." +msgid "Filament count exceeds the maximum number that painting tool supports. only the first %1% filaments will be available in painting tool." +msgstr "Le nombre de filaments dépasse le nombre maximum pris en charge par l'outil de peinture. seuls les %1% premiers filaments seront disponibles dans l'outil de peinture." msgid "Color Painting" msgstr "Mettre en couleur" @@ -531,9 +525,7 @@ msgid "Cut by Plane" msgstr "Coupe par plan" msgid "non-manifold edges be caused by cut tool, do you want to fix it now?" -msgstr "" -"les bords non pliables sont dus à l’outil de coupe, voulez-vous les corriger " -"maintenant ?" +msgstr "les bords non pliables sont dus à l’outil de coupe, voulez-vous les corriger maintenant ?" msgid "Repairing model object" msgstr "Réparer l'objet modèle" @@ -554,12 +546,8 @@ msgid "Decimate ratio" msgstr "Rapport de décimation" #, boost-format -msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is " -"highly recommended to simplify the model." -msgstr "" -"Le traitement du modèle '%1%' avec plus de 1 million de triangles peut être " -"lent. Il est fortement recommandé de simplifier le modèle." +msgid "Processing model '%1%' with more than 1M triangles could be slow. It is highly recommended to simplify the model." +msgstr "Le traitement du modèle '%1%' avec plus de 1 million de triangles peut être lent. Il est fortement recommandé de simplifier le modèle." msgid "Simplify model" msgstr "Simplifier le modèle" @@ -568,9 +556,7 @@ msgid "Simplify" msgstr "Simplifier" msgid "Simplification is currently only allowed when a single part is selected" -msgstr "" -"La simplification n'est actuellement autorisée que lorsqu'une seule pièce " -"est sélectionnée" +msgstr "La simplification n'est actuellement autorisée que lorsqu'une seule pièce est sélectionnée" msgid "Error" msgstr "Erreur" @@ -727,20 +713,14 @@ msgstr "Police de caractères par défaut" msgid "Advanced" msgstr "Avancé" -msgid "" -"The text cannot be written using the selected font. Please try choosing a " -"different font." -msgstr "" -"Le texte ne peut pas être écrit avec la police sélectionnée. Veuillez " -"essayer de choisir une autre police." +msgid "The text cannot be written using the selected font. Please try choosing a different font." +msgstr "Le texte ne peut pas être écrit avec la police sélectionnée. Veuillez essayer de choisir une autre police." msgid "Embossed text cannot contain only white spaces." msgstr "Le texte en relief ne peut pas contenir uniquement des espaces blancs." msgid "Text contains character glyph (represented by '?') unknown by font." -msgstr "" -"Le texte contient un caractère glyphe (représenté par ‘?’) inconnu de la " -"police." +msgstr "Le texte contient un caractère glyphe (représenté par ‘?’) inconnu de la police." msgid "Text input doesn't show font skew." msgstr "La saisie de texte n’affiche pas l’inclinaison de la police." @@ -755,9 +735,7 @@ msgid "Too tall, diminished font height inside text input." msgstr "Hauteur de police trop élevée, diminuée dans la saisie de texte." msgid "Too small, enlarged font height inside text input." -msgstr "" -"La hauteur de la police est trop petite et trop grande dans la saisie de " -"texte." +msgstr "La hauteur de la police est trop petite et trop grande dans la saisie de texte." msgid "Text doesn't show current horizontal alignment." msgstr "Le texte n’affiche pas l’alignement horizontal actuel." @@ -779,8 +757,7 @@ msgid "Click to change text into object part." msgstr "Cliquez pour transformer le texte en partie d’objet." msgid "You can't change a type of the last solid part of the object." -msgstr "" -"Vous ne pouvez pas modifier le type de la dernière partie pleine de l’objet." +msgstr "Vous ne pouvez pas modifier le type de la dernière partie pleine de l’objet." msgctxt "EmbossOperation" msgid "Cut" @@ -881,8 +858,7 @@ msgid "" "\n" "Would you like to continue anyway?" msgstr "" -"La modification du style en \"%1%\" annulera la modification du style " -"actuel.\n" +"La modification du style en \"%1%\" annulera la modification du style actuel.\n" "\n" "Voulez-vous continuer quand même ?" @@ -891,8 +867,7 @@ msgstr "Style non valide." #, boost-format msgid "Style \"%1%\" can't be used and will be removed from a list." -msgstr "" -"Le style \"%1%\" ne peut pas être utilisé et sera supprimé de la liste." +msgstr "Le style \"%1%\" ne peut pas être utilisé et sera supprimé de la liste." msgid "Unset italic" msgstr "Enlever l’italique" @@ -916,8 +891,7 @@ msgid "" "Advanced options cannot be changed for the selected font.\n" "Select another font." msgstr "" -"Les options avancées ne peuvent pas être modifiées pour la police " -"sélectionnée.\n" +"Les options avancées ne peuvent pas être modifiées pour la police sélectionnée.\n" "Sélectionnez une autre police." msgid "Revert using of model surface." @@ -1000,14 +974,10 @@ msgid "Rotate text Clock-wise." msgstr "Rotation du texte dans le sens des aiguilles d’une montre." msgid "Unlock the text's rotation when moving text along the object's surface." -msgstr "" -"Déverrouille la rotation du texte lorsqu’il est déplacé le long de la " -"surface de l’objet." +msgstr "Déverrouille la rotation du texte lorsqu’il est déplacé le long de la surface de l’objet." msgid "Lock the text's rotation when moving text along the object's surface." -msgstr "" -"Verrouille la rotation du texte lorsqu’il est déplacé le long de la surface " -"de l’objet." +msgstr "Verrouille la rotation du texte lorsqu’il est déplacé le long de la surface de l’objet." msgid "Select from True Type Collection." msgstr "Sélectionner dans la collection True Type." @@ -1019,13 +989,8 @@ msgid "Orient the text towards the camera." msgstr "Orienter le texte vers la caméra." #, boost-format -msgid "" -"Can't load exactly same font(\"%1%\"). Application selected a similar " -"one(\"%2%\"). You have to specify font for enable edit text." -msgstr "" -"Impossible de charger exactement la même police (« %1% »). L’application a " -"sélectionné une police similaire (« %2% »). Vous devez spécifier la police " -"pour permettre l’édition du texte." +msgid "Can't load exactly same font(\"%1%\"). Application selected a similar one(\"%2%\"). You have to specify font for enable edit text." +msgstr "Impossible de charger exactement la même police (« %1% »). L’application a sélectionné une police similaire (« %2% »). Vous devez spécifier la police pour permettre l’édition du texte." msgid "No symbol" msgstr "Pas de symbole" @@ -1138,16 +1103,10 @@ msgid "Undefined stroke type" msgstr "Type de trait non défini" msgid "Path can't be healed from selfintersection and multiple points." -msgstr "" -"Le chemin ne peut pas être consolidé à partir d’une auto-intersection et de " -"points multiples." +msgstr "Le chemin ne peut pas être consolidé à partir d’une auto-intersection et de points multiples." -msgid "" -"Final shape constains selfintersection or multiple points with same " -"coordinate." -msgstr "" -"La forme finale contient une auto-intersection ou plusieurs points ayant les " -"mêmes coordonnées." +msgid "Final shape constains selfintersection or multiple points with same coordinate." +msgstr "La forme finale contient une auto-intersection ou plusieurs points ayant les mêmes coordonnées." #, boost-format msgid "Shape is marked as invisible (%1%)." @@ -1156,19 +1115,15 @@ msgstr "La forme est marquée comme invisible (%1%)." #. TRN: The first placeholder is shape identifier, the second one is text describing the problem. #, boost-format msgid "Fill of shape (%1%) contains unsupported: %2%." -msgstr "" -"Le remplissage de la forme (%1%) contient un élément non pris en charge : " -"%2%." +msgstr "Le remplissage de la forme (%1%) contient un élément non pris en charge : %2%." #, boost-format msgid "Stroke of shape (%1%) is too thin (minimal width is %2% mm)." -msgstr "" -"Le trait de la forme (%1%) est trop fin (la largeur minimale est de %2% mm)." +msgstr "Le trait de la forme (%1%) est trop fin (la largeur minimale est de %2% mm)." #, boost-format msgid "Stroke of shape (%1%) contains unsupported: %2%." -msgstr "" -"Le trait de la forme (%1%) contient un élément non pris en charge : %2%." +msgstr "Le trait de la forme (%1%) contient un élément non pris en charge : %2%." msgid "Face the camera" msgstr "Faire face à la caméra" @@ -1223,8 +1178,7 @@ msgstr "Taille dans le sens de l’embossage." #. TRN: The placeholder contains a number. #, boost-format msgid "Scale also changes amount of curve samples (%1%)" -msgstr "" -"L’échelle modifie également la quantité d’échantillons de la courbe (%1%)." +msgstr "L’échelle modifie également la quantité d’échantillons de la courbe (%1%)." msgid "Width of SVG." msgstr "Largeur du SVG." @@ -1248,9 +1202,7 @@ msgid "Reset rotation" msgstr "Réinitialiser la rotation" msgid "Lock/unlock rotation angle when dragging above the surface." -msgstr "" -"Verrouillage/déverrouillage de l’angle de rotation lorsque l’on tire au-" -"dessus de la surface." +msgstr "Verrouillage/déverrouillage de l’angle de rotation lorsque l’on tire au-dessus de la surface." msgid "Mirror vertically" msgstr "Symétrie verticale" @@ -1275,9 +1227,7 @@ msgstr "Le fichier n’existe pas (%1%)." #, boost-format msgid "Filename has to end with \".svg\" but you selected %1%" -msgstr "" -"Le nom de fichier doit se terminer par \".svg\" mais vous avez sélectionné " -"%1%." +msgstr "Le nom de fichier doit se terminer par \".svg\" mais vous avez sélectionné %1%." #, boost-format msgid "Nano SVG parser can't load from file (%1%)." @@ -1383,9 +1333,7 @@ msgid "%1% was replaced with %2%" msgstr "%1% a été remplacé par %2%" msgid "The configuration may be generated by a newer version of OrcaSlicer." -msgstr "" -"La configuration peut être générée par une version plus récente de Orca " -"Slicer." +msgstr "La configuration peut être générée par une version plus récente de Orca Slicer." msgid "Some values have been replaced. Please check them:" msgstr "Certaines valeurs ont été remplacées. Veuillez les vérifier :" @@ -1400,34 +1348,20 @@ msgid "Machine" msgstr "Machine" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "" -"Le package de configuration a été chargé, mais certaines valeurs n'ont pas " -"été reconnues." +msgstr "Le package de configuration a été chargé, mais certaines valeurs n'ont pas été reconnues." #, boost-format -msgid "" -"Configuration file \"%1%\" was loaded, but some values were not recognized." -msgstr "" -"Le fichier de configuration \"%1%\" a été chargé, mais certaines valeurs " -"n'ont pas été reconnues." +msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "Le fichier de configuration \"%1%\" a été chargé, mais certaines valeurs n'ont pas été reconnues." -msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. " -"It will be appreciated if you report the issue to our team." -msgstr "" -"Orca Slicer va s'arrêter à cause d'un manque de mémoire. Il peut s'agir d'un " -"bogue. Il sera apprécié de signaler le problème à notre équipe." +msgid "OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be appreciated if you report the issue to our team." +msgstr "Orca Slicer va s'arrêter à cause d'un manque de mémoire. Il peut s'agir d'un bogue. Il sera apprécié de signaler le problème à notre équipe." msgid "Fatal error" msgstr "Erreur fatale" -msgid "" -"OrcaSlicer will terminate because of a localization error. It will be " -"appreciated if you report the specific scenario this issue happened." -msgstr "" -"Orca Slicer va s'arrêter à cause d'une erreur de localisation. Il sera " -"apprécié si vous signalez le scénario spécifique dans lequel ce problème " -"s'est produit." +msgid "OrcaSlicer will terminate because of a localization error. It will be appreciated if you report the specific scenario this issue happened." +msgstr "Orca Slicer va s'arrêter à cause d'une erreur de localisation. Il sera apprécié si vous signalez le scénario spécifique dans lequel ce problème s'est produit." msgid "Critical error" msgstr "Erreur critique" @@ -1453,12 +1387,10 @@ msgid "Connect %s failed! [SN:%s, code=%s]" msgstr "La connexion à %s a échoué ! [SN : %s, code = %s]" msgid "" -"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " -"features.\n" +"Orca Slicer requires the Microsoft WebView2 Runtime to operate certain features.\n" "Click Yes to install it now." msgstr "" -"Orca Slicer nécessite Microsoft WebView2 Runtime pour utiliser certaines " -"fonctions.\n" +"Orca Slicer nécessite Microsoft WebView2 Runtime pour utiliser certaines fonctions.\n" "Cliquez sur Oui pour l'installer maintenant." msgid "WebView2 Runtime" @@ -1480,9 +1412,7 @@ msgstr "Chargement de la configuration" #, c-format, boost-format msgid "Click to download new version in default browser: %s" -msgstr "" -"Cliquez pour télécharger la nouvelle version dans le navigateur par défaut : " -"%s" +msgstr "Cliquez pour télécharger la nouvelle version dans le navigateur par défaut : %s" msgid "The Orca Slicer needs an upgrade" msgstr "Orca Slicer a besoin d’être mis à jour" @@ -1496,14 +1426,11 @@ msgstr "Info" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will " -"not be affected." +"Please note, application settings will be lost, but printer profiles will not be affected." msgstr "" -"Le fichier de configuration d'OrcaSlicer peut être corrompu et ne peut pas " -"être analysé.\n" +"Le fichier de configuration d'OrcaSlicer peut être corrompu et ne peut pas être analysé.\n" "OrcaSlicer a tenté de recréer le fichier de configuration.\n" -"Veuillez noter que les paramètres de l'application seront perdus, mais que " -"les profils d'imprimante ne seront pas affectés." +"Veuillez noter que les paramètres de l'application seront perdus, mais que les profils d'imprimante ne seront pas affectés." msgid "Rebuild" msgstr "Reconstruire" @@ -1518,8 +1445,7 @@ msgid "Choose one file (3mf):" msgstr "Choisissez un fichier (3mf):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" -msgstr "" -"Choisissez un ou plusieurs fichiers (3mf/step/stl/svg/obj/amf/usd*/abc/ply) :" +msgstr "Choisissez un ou plusieurs fichiers (3mf/step/stl/svg/obj/amf/usd*/abc/ply) :" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Choisissez un ou plusieurs fichiers (3mf/step/stl/svg/obj/amf) :" @@ -1533,40 +1459,27 @@ msgstr "Choisissez un fichier (gcode/3mf):" msgid "Some presets are modified." msgstr "Certains préréglages sont modifiés." -msgid "" -"You can keep the modifield presets to the new project, discard or save " -"changes as new presets." -msgstr "" -"Vous pouvez conserver les préréglages modifiés dans le nouveau projet, " -"annuler ou enregistrer les modifications en tant que nouveaux préréglages." +msgid "You can keep the modifield presets to the new project, discard or save changes as new presets." +msgstr "Vous pouvez conserver les préréglages modifiés dans le nouveau projet, annuler ou enregistrer les modifications en tant que nouveaux préréglages." msgid "User logged out" msgstr "Utilisateur déconnecté" msgid "new or open project file is not allowed during the slicing process!" -msgstr "" -"l’ouverture ou la création d'un fichier de projet n'est pas autorisée " -"pendant le processus de découpe !" +msgstr "l’ouverture ou la création d'un fichier de projet n'est pas autorisée pendant le processus de découpe !" msgid "Open Project" msgstr "Ouvrir un projet" -msgid "" -"The version of Orca Slicer is too low and needs to be updated to the latest " -"version before it can be used normally" -msgstr "" -"La version de OrcaSlicer est trop ancienne et doit être mise à jour vers la " -"dernière version afin qu’il puisse être utilisé normalement" +msgid "The version of Orca Slicer is too low and needs to be updated to the latest version before it can be used normally" +msgstr "La version de OrcaSlicer est trop ancienne et doit être mise à jour vers la dernière version afin qu’il puisse être utilisé normalement" msgid "Privacy Policy Update" msgstr "Mise à jour de la politique de confidentialité" -msgid "" -"The number of user presets cached in the cloud has exceeded the upper limit, " -"newly created user presets can only be used locally." +msgid "The number of user presets cached in the cloud has exceeded the upper limit, newly created user presets can only be used locally." msgstr "" -"Le nombre de préréglages utilisateur mis en cache dans le nuage a dépassé la " -"limite supérieure. Les préréglages utilisateur \n" +"Le nombre de préréglages utilisateur mis en cache dans le nuage a dépassé la limite supérieure. Les préréglages utilisateur \n" "nouvellement créés ne peuvent être utilisés que localement." msgid "Sync user presets" @@ -1599,13 +1512,8 @@ msgstr "Téléversements en cours" msgid "Select a G-code file:" msgstr "Sélectionnez un fichier G-code :" -msgid "" -"Could not start URL download. Destination folder is not set. Please choose " -"destination folder in Configuration Wizard." -msgstr "" -"Impossible de lancer le téléchargement de l’URL. Le dossier de destination " -"n’est pas défini. Veuillez choisir le dossier de destination dans " -"l’assistant de configuration." +msgid "Could not start URL download. Destination folder is not set. Please choose destination folder in Configuration Wizard." +msgstr "Impossible de lancer le téléchargement de l’URL. Le dossier de destination n’est pas défini. Veuillez choisir le dossier de destination dans l’assistant de configuration." msgid "Import File" msgstr "Importer un Fichier" @@ -1765,16 +1673,11 @@ msgid "Orca String Hell" msgstr "Orca String Hell" msgid "" -"This model features text embossment on the top surface. For optimal results, " -"it is advisable to set the 'One Wall Threshold(min_width_top_surface)' to 0 " -"for the 'Only One Wall on Top Surfaces' to work best.\n" +"This model features text embossment on the top surface. For optimal results, it is advisable to set the 'One Wall Threshold(min_width_top_surface)' to 0 for the 'Only One Wall on Top Surfaces' to work best.\n" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" -"Ce modèle présente un texte en relief sur la surface supérieure. Pour " -"obtenir des résultats optimaux, il est conseillé de régler le \"Seuil une " -"paroi(min_width_top_surface)\" sur 0 pour que l'option \"Une seule paroi sur " -"les surfaces supérieures\" fonctionne au mieux.\n" +"Ce modèle présente un texte en relief sur la surface supérieure. Pour obtenir des résultats optimaux, il est conseillé de régler le \"Seuil une paroi(min_width_top_surface)\" sur 0 pour que l'option \"Une seule paroi sur les surfaces supérieures\" fonctionne au mieux.\n" "Oui - Modifier ces paramètres automatiquement\n" "Non - Ne pas modifier ces paramètres pour moi" @@ -1800,8 +1703,7 @@ msgid "Fill bed with copies" msgstr "Remplir le plateau de copies" msgid "Fill the remaining area of bed with copies of the selected object" -msgstr "" -"Remplissez la zone restante du plateau avec des copies de l'objet sélectionné" +msgstr "Remplissez la zone restante du plateau avec des copies de l'objet sélectionné" msgid "Printable" msgstr "Imprimable" @@ -1889,8 +1791,7 @@ msgid "Mesh boolean" msgstr "Opérations booléennes" msgid "Mesh boolean operations including union and subtraction" -msgstr "" -"Opérations booléennes de maillage, incluant la fusion et la soustraction" +msgstr "Opérations booléennes de maillage, incluant la fusion et la soustraction" msgid "Along X axis" msgstr "Le long de l'axe X" @@ -1962,8 +1863,7 @@ msgid "Auto orientation" msgstr "Orientation automatique" msgid "Auto orient the object to improve print quality." -msgstr "" -"Orientez automatiquement l'objet pour améliorer la qualité d'impression." +msgstr "Orientez automatiquement l'objet pour améliorer la qualité d'impression." msgid "Select All" msgstr "Tout sélectionner" @@ -2011,7 +1911,7 @@ msgid "Center" msgstr "Centrer" msgid "Drop" -msgstr "" +msgstr "Déposer" msgid "Edit Process Settings" msgstr "Modifier les paramètres du traitement" @@ -2065,17 +1965,13 @@ msgid "Right click the icon to fix model object" msgstr "Cliquez avec le bouton droit sur l'icône pour fixer l'objet modèle" msgid "Right button click the icon to drop the object settings" -msgstr "" -"Cliquez avec le bouton droit sur l'icône pour supprimer les paramètres de " -"l'objet" +msgstr "Cliquez avec le bouton droit sur l'icône pour supprimer les paramètres de l'objet" msgid "Click the icon to reset all settings of the object" msgstr "Cliquez sur l'icône pour réinitialiser tous les paramètres de l'objet" msgid "Right button click the icon to drop the object printable property" -msgstr "" -"Cliquez avec le bouton droit sur l'icône pour déposer la propriété " -"imprimable de l'objet" +msgstr "Cliquez avec le bouton droit sur l'icône pour déposer la propriété imprimable de l'objet" msgid "Click the icon to toggle printable property of the object" msgstr "Cliquez sur l'icône pour basculer la propriété imprimable de l'objet" @@ -2105,16 +2001,10 @@ msgid "Add Modifier" msgstr "Ajouter un modificateur" msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "" -"Basculez vers le mode de réglage par objet pour modifier les paramètres du " -"modificateur." +msgstr "Basculez vers le mode de réglage par objet pour modifier les paramètres du modificateur." -msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." -msgstr "" -"Passez en mode de réglage \"par objet\" pour modifier les paramètres de " -"traitement des objets sélectionnés." +msgid "Switch to per-object setting mode to edit process settings of selected objects." +msgstr "Passez en mode de réglage \"par objet\" pour modifier les paramètres de traitement des objets sélectionnés." msgid "Delete connector from object which is a part of cut" msgstr "Supprimer le connecteur de l'objet qui fait partie de la découpe" @@ -2125,25 +2015,19 @@ msgstr "Supprimer la partie pleine de l'objet qui est une partie découpée" msgid "Delete negative volume from object which is a part of cut" msgstr "Supprimer le volume négatif de l'objet qui fait partie de la découpe" -msgid "" -"To save cut correspondence you can delete all connectors from all related " -"objects." -msgstr "" -"Pour enregistrer la correspondance coupée, vous pouvez supprimer tous les " -"connecteurs de tous les objets associés." +msgid "To save cut correspondence you can delete all connectors from all related objects." +msgstr "Pour enregistrer la correspondance coupée, vous pouvez supprimer tous les connecteurs de tous les objets associés." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut infornation first." msgstr "" "Cette action rompra une correspondance coupée.\n" "Après cela, la cohérence du modèle ne peut être garantie.\n" "\n" -"Pour manipuler des pièces pleines ou des volumes négatifs, vous devez " -"d'abord invalider les informations de coupe." +"Pour manipuler des pièces pleines ou des volumes négatifs, vous devez d'abord invalider les informations de coupe." msgid "Delete all connectors" msgstr "Supprimer tous les connecteurs" @@ -2152,8 +2036,7 @@ msgid "Deleting the last solid part is not allowed." msgstr "La suppression de la dernière partie pleine n'est pas autorisée." msgid "The target object contains only one part and can not be splited." -msgstr "" -"L'objet cible ne contient qu'une seule partie et ne peut pas être divisé." +msgstr "L'objet cible ne contient qu'une seule partie et ne peut pas être divisé." msgid "Assembly" msgstr "Assemblé" @@ -2194,22 +2077,14 @@ msgstr "Couche" msgid "Selection conflicts" msgstr "Conflits de sélection" -msgid "" -"If first selected item is an object, the second one should also be object." -msgstr "" -"Si le premier élément sélectionné est un objet, le second doit également " -"être un objet." +msgid "If first selected item is an object, the second one should also be object." +msgstr "Si le premier élément sélectionné est un objet, le second doit également être un objet." -msgid "" -"If first selected item is a part, the second one should be part in the same " -"object." -msgstr "" -"Si le premier élément sélectionné est une partie, le second doit faire " -"partie du même objet." +msgid "If first selected item is a part, the second one should be part in the same object." +msgstr "Si le premier élément sélectionné est une partie, le second doit faire partie du même objet." msgid "The type of the last solid object part is not to be changed." -msgstr "" -"Le type de la dernière partie pleine de l'objet ne doit pas être modifié." +msgstr "Le type de la dernière partie pleine de l'objet ne doit pas être modifié." msgid "Negative Part" msgstr "Partie négative" @@ -2264,9 +2139,7 @@ msgid "Invalid numeric." msgstr "Chiffre non valide." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "" -"une cellule ne peut être copiée que dans une ou plusieurs cellules de la " -"même colonne" +msgstr "une cellule ne peut être copiée que dans une ou plusieurs cellules de la même colonne" msgid "multiple cells copy is not supported" msgstr "la copie de plusieurs cellules n'est pas prise en charge" @@ -2479,9 +2352,7 @@ msgid "Calibrating AMS..." msgstr "Étalonnage de l'AMS…" msgid "A problem occurred during calibration. Click to view the solution." -msgstr "" -"Un problème est survenu lors de la calibration. Cliquez pour voir la " -"solution." +msgstr "Un problème est survenu lors de la calibration. Cliquez pour voir la solution." msgid "Calibrate again" msgstr "Etalonner de nouveau" @@ -2519,12 +2390,8 @@ msgstr "Vérification de la position du filament" msgid "Grab new filament" msgstr "Saisir un nouveau filament" -msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " -"load or unload filaments." -msgstr "" -"Choisissez un emplacement AMS puis appuyez sur le bouton «  Charger «  ou «  " -"Décharger «  pour charger ou décharger automatiquement les filaments." +msgid "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload filaments." +msgstr "Choisissez un emplacement AMS puis appuyez sur le bouton «  Charger «  ou «  Décharger «  pour charger ou décharger automatiquement les filaments." msgid "Edit" msgstr "Éditer" @@ -2555,29 +2422,21 @@ msgstr "Agencement" msgid "Arranging canceled." msgstr "Agencement annulé." -msgid "" -"Arranging is done but there are unpacked items. Reduce spacing and try again." -msgstr "" -"L'arrangement est fait mais il y a des articles non emballés. Réduisez " -"l'espacement et réessayez." +msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." +msgstr "L'arrangement est fait mais il y a des articles non emballés. Réduisez l'espacement et réessayez." msgid "Arranging done." msgstr "Agencement terminé." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." -msgstr "" -"Échec de l'arrangement. Trouvé quelques exceptions lors du traitement des " -"géométries d'objets." +msgid "Arrange failed. Found some exceptions when processing object geometries." +msgstr "Échec de l'arrangement. Trouvé quelques exceptions lors du traitement des géométries d'objets." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" -"L'agencement a ignoré les objets suivants qui ne peuvent pas tenir dans un " -"seul plateau :\n" +"L'agencement a ignoré les objets suivants qui ne peuvent pas tenir dans un seul plateau :\n" "%s" msgid "" @@ -2590,9 +2449,7 @@ msgstr "" msgid "" "This plate is locked,\n" "We can not do auto-orient on this plate." -msgstr "" -"Cette plaque est verrouillée, on ne peut pas faire d'auto-orientation sur " -"cette plaque." +msgstr "Cette plaque est verrouillée, on ne peut pas faire d'auto-orientation sur cette plaque." msgid "Orienting..." msgstr "Orienter…" @@ -2631,16 +2488,13 @@ msgid "Please check the printer network connection." msgstr "Vérifiez la connexion réseau de l'imprimante." msgid "Abnormal print file data. Please slice again." -msgstr "" -"Données de fichier d'impression anormales, veuillez redécouvre le fichier." +msgstr "Données de fichier d'impression anormales, veuillez redécouvre le fichier." msgid "Task canceled." msgstr "Tâche annulée." msgid "Upload task timed out. Please check the network status and try again." -msgstr "" -"Le délai de téléversement de la tâche a expiré. Vérifiez l'état du réseau et " -"réessayez." +msgstr "Le délai de téléversement de la tâche a expiré. Vérifiez l'état du réseau et réessayez." msgid "Cloud service connection failed. Please try again." msgstr "La connexion au service cloud a échoué. Veuillez réessayer." @@ -2648,12 +2502,8 @@ msgstr "La connexion au service cloud a échoué. Veuillez réessayer." msgid "Print file not found. please slice again." msgstr "Fichier d'impression introuvable, veuillez le redécouvre." -msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again." -msgstr "" -"Le fichier d'impression dépasse la taille maximale autorisée (1 Go). " -"Veuillez simplifier le modèle puis le redécouvre." +msgid "The print file exceeds the maximum allowable size (1GB). Please simplify the model and slice again." +msgstr "Le fichier d'impression dépasse la taille maximale autorisée (1 Go). Veuillez simplifier le modèle puis le redécouvre." msgid "Failed to send the print job. Please try again." msgstr "L'envoi de la tâche d'impression a échoué. Veuillez réessayer." @@ -2661,30 +2511,17 @@ msgstr "L'envoi de la tâche d'impression a échoué. Veuillez réessayer." msgid "Failed to upload file to ftp. Please try again." msgstr "Échec du téléversement du fichier vers le ftp. Veuillez réessayer." -msgid "" -"Check the current status of the bambu server by clicking on the link above." -msgstr "" -"Vérifiez l'état actuel du serveur Bambu Lab en cliquant sur le lien ci-" -"dessus." +msgid "Check the current status of the bambu server by clicking on the link above." +msgstr "Vérifiez l'état actuel du serveur Bambu Lab en cliquant sur le lien ci-dessus." -msgid "" -"The size of the print file is too large. Please adjust the file size and try " -"again." -msgstr "" -"La taille du fichier d'impression est trop importante. Ajustez la taille du " -"fichier et réessayez." +msgid "The size of the print file is too large. Please adjust the file size and try again." +msgstr "La taille du fichier d'impression est trop importante. Ajustez la taille du fichier et réessayez." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "" -"Fichier d'impression introuvable, redécoupez-le et renvoyez-le pour " -"impression." +msgstr "Fichier d'impression introuvable, redécoupez-le et renvoyez-le pour impression." -msgid "" -"Failed to upload print file to FTP. Please check the network status and try " -"again." -msgstr "" -"Impossible de charger le fichier d'impression via FTP. Vérifiez l'état du " -"réseau et réessayez." +msgid "Failed to upload print file to FTP. Please check the network status and try again." +msgstr "Impossible de charger le fichier d'impression via FTP. Vérifiez l'état du réseau et réessayez." msgid "Sending print job over LAN" msgstr "Envoi de la tâche d'impression sur le réseau local" @@ -2706,8 +2543,7 @@ msgstr "Envoi de la configuration d'impression" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %ss" -msgstr "" -"Envoyé avec succès. Basculement automatique vers la page Appareil dans %ss" +msgstr "Envoyé avec succès. Basculement automatique vers la page Appareil dans %ss" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the next page in %ss" @@ -2732,12 +2568,8 @@ msgstr "Une carte SD doit être insérée avant l'envoi à l'imprimante." msgid "Importing SLA archive" msgstr "Importation d'une archive SLA" -msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." -msgstr "" -"L'archive SLA ne contient aucun préréglage. Veuillez d'abord activer " -"certains préréglages d'imprimante SLA avant d'importer cette archive SLA." +msgid "The SLA archive doesn't contain any presets. Please activate some SLA printer preset first before importing that SLA archive." +msgstr "L'archive SLA ne contient aucun préréglage. Veuillez d'abord activer certains préréglages d'imprimante SLA avant d'importer cette archive SLA." msgid "Importing canceled." msgstr "Importation annulée." @@ -2745,17 +2577,11 @@ msgstr "Importation annulée." msgid "Importing done." msgstr "Importation terminée." -msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." -msgstr "" -"L'archive SLA importée ne contenait aucun préréglage. Les préréglages SLA " -"actuels ont été utilisés comme solution de secours." +msgid "The imported SLA archive did not contain any presets. The current SLA presets were used as fallback." +msgstr "L'archive SLA importée ne contenait aucun préréglage. Les préréglages SLA actuels ont été utilisés comme solution de secours." msgid "You cannot load SLA project with a multi-part object on the bed" -msgstr "" -"Vous ne pouvez pas charger un projet SLA avec un objet en plusieurs parties " -"sur le plateau" +msgstr "Vous ne pouvez pas charger un projet SLA avec un objet en plusieurs parties sur le plateau" msgid "Please check your object list before preset changing." msgstr "Vérifiez votre liste d'objets avant de modifier le préréglage." @@ -2802,12 +2628,8 @@ msgstr "Orca Slicer est basé sur PrusaSlicer et BambuStudio" msgid "Libraries" msgstr "Bibliothèques" -msgid "" -"This software uses open source components whose copyright and other " -"proprietary rights belong to their respective owners" -msgstr "" -"Ce logiciel utilise des composants open source dont les droits d'auteur et " -"autres droits de propriété appartiennent à leurs propriétaires respectifs" +msgid "This software uses open source components whose copyright and other proprietary rights belong to their respective owners" +msgstr "Ce logiciel utilise des composants open source dont les droits d'auteur et autres droits de propriété appartiennent à leurs propriétaires respectifs" #, c-format, boost-format msgid "About %s" @@ -2825,12 +2647,8 @@ msgstr "Bambu Studio est basé sur PrusaSlicer de PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "PrusaSlicer est initialement basé sur Slic3r d'Alessandro Ranellucci." -msgid "" -"Slic3r was created by Alessandro Ranellucci with the help of many other " -"contributors." -msgstr "" -"Slic3r a été créé par Alessandro Ranellucci avec l'aide de nombreux autres " -"contributeurs." +msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." +msgstr "Slic3r a été créé par Alessandro Ranellucci avec l'aide de nombreux autres contributeurs." msgid "Version" msgstr "Version" @@ -2866,9 +2684,7 @@ msgid "SN" msgstr "Numéro de série" msgid "Setting AMS slot information while printing is not supported" -msgstr "" -"La définition des informations relatives aux emplacements AMS pendant " -"l'impression n'est pas prise en charge" +msgstr "La définition des informations relatives aux emplacements AMS pendant l'impression n'est pas prise en charge" msgid "Factors of Flow Dynamics Calibration" msgstr "Facteurs de calibration dynamique du débit" @@ -2883,9 +2699,7 @@ msgid "Factor N" msgstr "Facteur N" msgid "Setting Virtual slot information while printing is not supported" -msgstr "" -"Le réglage des informations relatives à l'emplacement virtuel pendant " -"l'impression n'est pas pris en charge" +msgstr "Le réglage des informations relatives à l'emplacement virtuel pendant l'impression n'est pas pris en charge" msgid "Are you sure you want to clear the filament information?" msgstr "Êtes-vous sûr de vouloir effacer les informations du filament ?" @@ -2899,8 +2713,7 @@ msgstr "Veuillez saisir une valeur valide (K entre %.1f~%.1f)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "" -"Veuillez saisir une valeur valide (K entre %.1f~%.1f, N entre %.1f~%.1f)" +msgstr "Veuillez saisir une valeur valide (K entre %.1f~%.1f, N entre %.1f~%.1f)" msgid "Other Color" msgstr "Autre couleur" @@ -2911,15 +2724,8 @@ msgstr "Couleur perso" msgid "Dynamic flow calibration" msgstr "Calibrage dynamique du débit" -msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." -msgstr "" -"La température de la buse et la vitesse volumétrique maximale affecteront " -"les résultats de la calibration. Veuillez saisir les mêmes valeurs que lors " -"de l'impression réelle. Ils peuvent être remplis automatiquement en " -"sélectionnant un préréglage de filament." +msgid "The nozzle temp and max volumetric speed will affect the calibration results. Please fill in the same values as the actual printing. They can be auto-filled by selecting a filament preset." +msgstr "La température de la buse et la vitesse volumétrique maximale affecteront les résultats de la calibration. Veuillez saisir les mêmes valeurs que lors de l'impression réelle. Ils peuvent être remplis automatiquement en sélectionnant un préréglage de filament." msgid "Nozzle Diameter" msgstr "Diamètre de la Buse" @@ -2951,14 +2757,8 @@ msgstr "Démarrer" msgid "Next" msgstr "Suivant" -msgid "" -"Calibration completed. Please find the most uniform extrusion line on your " -"hot bed like the picture below, and fill the value on its left side into the " -"factor K input box." -msgstr "" -"Calibrage terminé. Veuillez trouver la ligne d'extrusion la plus uniforme " -"sur votre plateau comme dans l'image ci-dessous, et entrez la valeur sur son " -"côté gauche dans le champ de saisie du facteur K." +msgid "Calibration completed. Please find the most uniform extrusion line on your hot bed like the picture below, and fill the value on its left side into the factor K input box." +msgstr "Calibrage terminé. Veuillez trouver la ligne d'extrusion la plus uniforme sur votre plateau comme dans l'image ci-dessous, et entrez la valeur sur son côté gauche dans le champ de saisie du facteur K." msgid "Save" msgstr "Enregistrer" @@ -2989,11 +2789,8 @@ msgstr "Étape" msgid "AMS Slots" msgstr "Emplacements AMS" -msgid "" -"Note: Only the AMS slots loaded with the same material type can be selected." -msgstr "" -"Remarque : seuls les emplacements AMS chargés avec le même type de matériau " -"peuvent être sélectionnés." +msgid "Note: Only the AMS slots loaded with the same material type can be selected." +msgstr "Remarque : seuls les emplacements AMS chargés avec le même type de matériau peuvent être sélectionnés." msgid "Enable AMS" msgstr "Activer l'AMS" @@ -3010,23 +2807,11 @@ msgstr "Impression avec du filament de la bobine externe" msgid "Current Cabin humidity" msgstr "Humidité dans le caisson" -msgid "" -"Please change the desiccant when it is too wet. The indicator may not " -"represent accurately in following cases : when the lid is open or the " -"desiccant pack is changed. it take hours to absorb the moisture, low " -"temperatures also slow down the process." -msgstr "" -"Veuillez changer le déshydratant lorsqu’il est trop humide. L’indicateur " -"peut ne pas s’afficher correctement dans les cas suivants : lorsque le " -"couvercle est ouvert ou que le sachet de déshydratant est changé. Il faut " -"des heures pour absorber l’humidité, les basses températures ralentissent " -"également le processus." +msgid "Please change the desiccant when it is too wet. The indicator may not represent accurately in following cases : when the lid is open or the desiccant pack is changed. it take hours to absorb the moisture, low temperatures also slow down the process." +msgstr "Veuillez changer le déshydratant lorsqu’il est trop humide. L’indicateur peut ne pas s’afficher correctement dans les cas suivants : lorsque le couvercle est ouvert ou que le sachet de déshydratant est changé. Il faut des heures pour absorber l’humidité, les basses températures ralentissent également le processus." -msgid "" -"Config which AMS slot should be used for a filament used in the print job" -msgstr "" -"Configurez l'emplacement AMS qui doit être utilisé pour un filament utilisé " -"dans la tâche d'impression" +msgid "Config which AMS slot should be used for a filament used in the print job" +msgstr "Configurez l'emplacement AMS qui doit être utilisé pour un filament utilisé dans la tâche d'impression" msgid "Filament used in this print job" msgstr "Filament utilisé dans ce travail d'impression" @@ -3049,9 +2834,7 @@ msgstr "Imprimer avec du filament de l'AMS" msgid "Print with filaments mounted on the back of the chassis" msgstr "Impression avec du filament de la bobine externe" -msgid "" -"When the current material run out, the printer will continue to print in the " -"following order." +msgid "When the current material run out, the printer will continue to print in the following order." msgstr "" "Lorsque le filament actuel est épuisé, l'imprimante\n" "continue d'imprimer dans l'ordre suivant." @@ -3060,20 +2843,14 @@ msgid "Group" msgstr "Groupe" msgid "The printer does not currently support auto refill." -msgstr "" -"L’imprimante ne prend actuellement pas en charge la recharge automatique." +msgstr "L’imprimante ne prend actuellement pas en charge la recharge automatique." + +msgid "AMS filament backup is not enabled, please enable it in the AMS settings." +msgstr "La sauvegarde du filament AMS n'est pas activée, veuillez l'activer dans les paramètres AMS." msgid "" -"AMS filament backup is not enabled, please enable it in the AMS settings." -msgstr "" -"La sauvegarde du filament AMS n'est pas activée, veuillez l'activer dans les " -"paramètres AMS." - -msgid "" -"If there are two identical filaments in AMS, AMS filament backup will be " -"enabled. \n" -"(Currently supporting automatic supply of consumables with the same brand, " -"material type, and color)" +"If there are two identical filaments in AMS, AMS filament backup will be enabled. \n" +"(Currently supporting automatic supply of consumables with the same brand, material type, and color)" msgstr "" "S’il y a deux filaments identiques dans AMS, la prise en\n" "charge de la recharge automatique de filaments sera activée.\n" @@ -3094,82 +2871,41 @@ msgstr "Paramètres AMS" msgid "Insertion update" msgstr "Insertion de la mise à jour" -msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." -msgstr "" -"L'AMS lit automatiquement les informations relatives au filament lors de " -"l'insertion d'une nouvelle bobine de filament Bambu Lab. Cela prend environ " -"20 secondes." +msgid "The AMS will automatically read the filament information when inserting a new Bambu Lab filament. This takes about 20 seconds." +msgstr "L'AMS lit automatiquement les informations relatives au filament lors de l'insertion d'une nouvelle bobine de filament Bambu Lab. Cela prend environ 20 secondes." -msgid "" -"Note: if a new filament is inserted during printing, the AMS will not " -"automatically read any information until printing is completed." -msgstr "" -"Remarque : si un nouveau filament est inséré pendant l’impression, l’AMS ne " -"lira pas automatiquement les informations jusqu’à ce que l’impression soit " -"terminée." +msgid "Note: if a new filament is inserted during printing, the AMS will not automatically read any information until printing is completed." +msgstr "Remarque : si un nouveau filament est inséré pendant l’impression, l’AMS ne lira pas automatiquement les informations jusqu’à ce que l’impression soit terminée." -msgid "" -"When inserting a new filament, the AMS will not automatically read its " -"information, leaving it blank for you to enter manually." -msgstr "" -"Lors de l'insertion d'un nouveau filament, l'AMS ne lit pas automatiquement " -"ses informations. Elles sont laissées vides pour que vous puissiez les " -"saisir manuellement." +msgid "When inserting a new filament, the AMS will not automatically read its information, leaving it blank for you to enter manually." +msgstr "Lors de l'insertion d'un nouveau filament, l'AMS ne lit pas automatiquement ses informations. Elles sont laissées vides pour que vous puissiez les saisir manuellement." msgid "Power on update" msgstr "Mise à jour de la mise sous tension" -msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." -msgstr "" -"Au démarrage, l'AMS lit automatiquement les informations relatives au " -"filament inséré. Cela prend environ 1 minute et ce processus fait tourner " -"les bobines de filament." +msgid "The AMS will automatically read the information of inserted filament on start-up. It will take about 1 minute.The reading process will roll filament spools." +msgstr "Au démarrage, l'AMS lit automatiquement les informations relatives au filament inséré. Cela prend environ 1 minute et ce processus fait tourner les bobines de filament." -msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." -msgstr "" -"L'AMS ne lira pas automatiquement les informations du filament inséré " -"pendant le démarrage et continuera à utiliser les informations enregistrées " -"avant le dernier arrêt." +msgid "The AMS will not automatically read information from inserted filament during startup and will continue to use the information recorded before the last shutdown." +msgstr "L'AMS ne lira pas automatiquement les informations du filament inséré pendant le démarrage et continuera à utiliser les informations enregistrées avant le dernier arrêt." msgid "Update remaining capacity" msgstr "Mettre à jour la capacité restante" -msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament " -"info is updated. During printing, remaining capacity will be updated " -"automatically." -msgstr "" -"L'AMS estimera la capacité restante du filament Bambu après la mise à jour " -"des infos du filament. Pendant l'impression, la capacité restante sera " -"automatiquement mise à jour." +msgid "The AMS will estimate Bambu filament's remaining capacity after the filament info is updated. During printing, remaining capacity will be updated automatically." +msgstr "L'AMS estimera la capacité restante du filament Bambu après la mise à jour des infos du filament. Pendant l'impression, la capacité restante sera automatiquement mise à jour." msgid "AMS filament backup" msgstr "Filament de secours AMS" -msgid "" -"AMS will continue to another spool with the same properties of filament " -"automatically when current filament runs out" -msgstr "" -"L'AMS passera automatiquement à une autre bobine avec les mêmes propriétés " -"de filament lorsque la bobine actuelle est épuisé" +msgid "AMS will continue to another spool with the same properties of filament automatically when current filament runs out" +msgstr "L'AMS passera automatiquement à une autre bobine avec les mêmes propriétés de filament lorsque la bobine actuelle est épuisé" msgid "Air Printing Detection" msgstr "Détection de l’impression dans l’air" -msgid "" -"Detects clogging and filament grinding, halting printing immediately to " -"conserve time and filament." -msgstr "" -"Détecte le colmatage et le grignotage du filament, interrompant " -"immédiatement l’impression pour économiser du temps et du filament." +msgid "Detects clogging and filament grinding, halting printing immediately to conserve time and filament." +msgstr "Détecte le colmatage et le grignotage du filament, interrompant immédiatement l’impression pour économiser du temps et du filament." msgid "File" msgstr "Fichier" @@ -3177,19 +2913,11 @@ msgstr "Fichier" msgid "Calibration" msgstr "Calibration" -msgid "" -"Failed to download the plug-in. Please check your firewall settings and vpn " -"software, check and retry." -msgstr "" -"Échec du téléchargement du plug-in. Veuillez vérifier les paramètres de " -"votre pare-feu et votre logiciel VPN puis réessayer." +msgid "Failed to download the plug-in. Please check your firewall settings and vpn software, check and retry." +msgstr "Échec du téléchargement du plug-in. Veuillez vérifier les paramètres de votre pare-feu et votre logiciel VPN puis réessayer." -msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted " -"by anti-virus software." -msgstr "" -"Échec de l'installation du plug-in. Veuillez vérifier s'il est bloqué ou " -"s'il a été supprimé par un logiciel anti-virus." +msgid "Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus software." +msgstr "Échec de l'installation du plug-in. Veuillez vérifier s'il est bloqué ou s'il a été supprimé par un logiciel anti-virus." msgid "click here to see more info" msgstr "cliquez ici pour voir plus d'informations" @@ -3197,22 +2925,14 @@ msgstr "cliquez ici pour voir plus d'informations" msgid "Please home all axes (click " msgstr "Veuillez mettre à 0 les axes (cliquer " -msgid "" -") to locate the toolhead's position. This prevents device moving beyond the " -"printable boundary and causing equipment wear." -msgstr "" -") pour localiser la position de la tête. Cela éviter de dépasser la limite " -"imprimable et de provoquer une usure de l'équipement." +msgid ") to locate the toolhead's position. This prevents device moving beyond the printable boundary and causing equipment wear." +msgstr ") pour localiser la position de la tête. Cela éviter de dépasser la limite imprimable et de provoquer une usure de l'équipement." msgid "Go Home" msgstr "Retour 0" -msgid "" -"A error occurred. Maybe memory of system is not enough or it's a bug of the " -"program" -msgstr "" -"Une erreur s'est produite. Peut-être que la mémoire du système n'est pas " -"suffisante ou c'est un bug du programme" +msgid "A error occurred. Maybe memory of system is not enough or it's a bug of the program" +msgstr "Une erreur s'est produite. Peut-être que la mémoire du système n'est pas suffisante ou c'est un bug du programme" msgid "Please save project and restart the program. " msgstr "Veuillez enregistrer le projet et redémarrer le programme. " @@ -3255,51 +2975,27 @@ msgstr "Une erreur inconnue s’est produite lors de l’exportation du G-code." #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. Maybe the SD " -"card is write locked?\n" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\n" "Error message: %1%" msgstr "" -"La copie du G-code temporaire vers le G-code de sortie a échoué. La carte SD " -"est peut-être bloquée en écriture ?\n" +"La copie du G-code temporaire vers le G-code de sortie a échoué. La carte SD est peut-être bloquée en écriture ?\n" "Message d’erreur : %1%" #, boost-format -msgid "" -"Copying of the temporary G-code to the output G-code failed. There might be " -"problem with target device, please try exporting again or using different " -"device. The corrupted output G-code is at %1%.tmp." -msgstr "" -"La copie du G-code temporaire vers le G-code de sortie a échoué. Il se peut " -"qu’il y ait un problème avec le dispositif cible, veuillez essayer " -"d’exporter à nouveau ou d’utiliser un autre périphérique. Le G-code de " -"sortie corrompu se trouve dans %1%.tmp." +msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." +msgstr "La copie du G-code temporaire vers le G-code de sortie a échoué. Il se peut qu’il y ait un problème avec le dispositif cible, veuillez essayer d’exporter à nouveau ou d’utiliser un autre périphérique. Le G-code de sortie corrompu se trouve dans %1%.tmp." #, boost-format -msgid "" -"Renaming of the G-code after copying to the selected destination folder has " -"failed. Current path is %1%.tmp. Please try exporting again." -msgstr "" -"Le renommage du G-code après la copie dans le dossier de destination " -"sélectionné a échoué. Le chemin actuel est %1%.tmp. Veuillez réessayer " -"l’exportation." +msgid "Renaming of the G-code after copying to the selected destination folder has failed. Current path is %1%.tmp. Please try exporting again." +msgstr "Le renommage du G-code après la copie dans le dossier de destination sélectionné a échoué. Le chemin actuel est %1%.tmp. Veuillez réessayer l’exportation." #, boost-format -msgid "" -"Copying of the temporary G-code has finished but the original code at %1% " -"couldn't be opened during copy check. The output G-code is at %2%.tmp." -msgstr "" -"La copie du G-code temporaire est terminée mais le code original à %1% n’a " -"pas pu être ouvert pendant la vérification de la copie. Le G-code de sortie " -"se trouve dans %2%.tmp." +msgid "Copying of the temporary G-code has finished but the original code at %1% couldn't be opened during copy check. The output G-code is at %2%.tmp." +msgstr "La copie du G-code temporaire est terminée mais le code original à %1% n’a pas pu être ouvert pendant la vérification de la copie. Le G-code de sortie se trouve dans %2%.tmp." #, boost-format -msgid "" -"Copying of the temporary G-code has finished but the exported code couldn't " -"be opened during copy check. The output G-code is at %1%.tmp." -msgstr "" -"La copie du G-code temporaire est terminée mais le code exporté n’a pas pu " -"être ouvert lors du contrôle de la copie. Le G-code de sortie se trouve dans " -"%1%.tmp." +msgid "Copying of the temporary G-code has finished but the exported code couldn't be opened during copy check. The output G-code is at %1%.tmp." +msgstr "La copie du G-code temporaire est terminée mais le code exporté n’a pas pu être ouvert lors du contrôle de la copie. Le G-code de sortie se trouve dans %1%.tmp." #, boost-format msgid "G-code file exported to %1%" @@ -3313,18 +3009,14 @@ msgid "" "Failed to save gcode file.\n" "Error message: %1%.\n" "Source file %2%." -msgstr "" -"Échec de l'enregistrement du fichier gcode. Message d'erreur : %1%. Fichier " -"source %2%." +msgstr "Échec de l'enregistrement du fichier gcode. Message d'erreur : %1%. Fichier source %2%." msgid "Copying of the temporary G-code to the output G-code failed" msgstr "La copie du G-code temporaire vers le G-code de sortie a échoué" #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" -msgstr "" -"Planification du téléversement vers `%1% `. Voir Fenêtre -> File d'attente " -"de téléversement de l'hôte d'impression" +msgstr "Planification du téléversement vers `%1% `. Voir Fenêtre -> File d'attente de téléversement de l'hôte d'impression" msgid "Device" msgstr "Appareil" @@ -3376,11 +3068,8 @@ msgstr "État de l’appareil" msgid "Actions" msgstr "Actions" -msgid "" -"Please select the devices you would like to manage here (up to 6 devices)" -msgstr "" -"Veuillez sélectionner ici les appareils que vous souhaitez gérer (jusqu’à 6 " -"appareils)." +msgid "Please select the devices you would like to manage here (up to 6 devices)" +msgstr "Veuillez sélectionner ici les appareils que vous souhaitez gérer (jusqu’à 6 appareils)." msgid "Add" msgstr "Ajouter" @@ -3470,8 +3159,7 @@ msgid "Preparing print job" msgstr "Préparation du travail d'impression" msgid "Abnormal print file data. Please slice again" -msgstr "" -"Données de fichier d'impression anormales. Veuillez redécouvre le fichier." +msgstr "Données de fichier d'impression anormales. Veuillez redécouvre le fichier." msgid "There is no device available to send printing." msgstr "Il n’y a pas de périphérique disponible pour envoyer l’impression." @@ -3509,20 +3197,14 @@ msgstr "Options d’envoi" msgid "Send to" msgstr "Envoyer à" -msgid "" -"printers at the same time.(It depends on how many devices can undergo " -"heating at the same time.)" -msgstr "" -"imprimantes en même temps. (Cela dépend du nombre d’appareils qui peuvent " -"être chauffés en même temps)." +msgid "printers at the same time.(It depends on how many devices can undergo heating at the same time.)" +msgstr "imprimantes en même temps. (Cela dépend du nombre d’appareils qui peuvent être chauffés en même temps)." msgid "Wait" msgstr "Attendre" -msgid "" -"minute each batch.(It depends on how long it takes to complete the heating.)" -msgstr "" -"minute par lot. (Cela dépend du temps nécessaire pour terminer le chauffage.)" +msgid "minute each batch.(It depends on how long it takes to complete the heating.)" +msgstr "minute par lot. (Cela dépend du temps nécessaire pour terminer le chauffage.)" msgid "Send" msgstr "Envoyer" @@ -3554,19 +3236,11 @@ msgstr "Origine" msgid "Size in X and Y of the rectangular plate." msgstr "Taille en X et Y du plateau rectangulaire." -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." -msgstr "" -"Distance des coordonnées 0,0 du G-code depuis le coin avant gauche du " -"rectangle." +msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." +msgstr "Distance des coordonnées 0,0 du G-code depuis le coin avant gauche du rectangle." -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." -msgstr "" -"Diamètre du plateau d'impression. Il est supposé que l'origine (0,0) est " -"située au centre." +msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." +msgstr "Diamètre du plateau d'impression. Il est supposé que l'origine (0,0) est située au centre." msgid "Rectangular" msgstr "Rectangle" @@ -3593,8 +3267,7 @@ msgid "Model" msgstr "Modèle" msgid "Choose an STL file to import bed shape from:" -msgstr "" -"Choisissez un fichier STL à partir duquel importer la forme du plateau :" +msgstr "Choisissez un fichier STL à partir duquel importer la forme du plateau :" msgid "Invalid file format." msgstr "Format de fichier non valide." @@ -3605,36 +3278,23 @@ msgstr "Erreur ! Modèle invalide" msgid "The selected file contains no geometry." msgstr "Le fichier sélectionné ne contient aucune géométrie." -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"Le fichier sélectionné contient plusieurs zones disjointes. Cela n'est pas " -"utilisable." +msgid "The selected file contains several disjoint areas. This is not supported." +msgstr "Le fichier sélectionné contient plusieurs zones disjointes. Cela n'est pas utilisable." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "" -"Choisir un fichier à partir duquel importer la texture du plateau (PNG/SVG) :" +msgstr "Choisir un fichier à partir duquel importer la texture du plateau (PNG/SVG) :" msgid "Choose an STL file to import bed model from:" -msgstr "" -"Choisissez un fichier STL à partir duquel importer le modèle de plateau :" +msgstr "Choisissez un fichier STL à partir duquel importer le modèle de plateau :" msgid "Bed Shape" msgstr "Forme du plateau" -msgid "" -"The recommended minimum temperature is less than 190 degree or the " -"recommended maximum temperature is greater than 300 degree.\n" -msgstr "" -"La température minimale recommandée est inférieure à 190 degrés ou la " -"température maximale recommandée est supérieure à 300 degrés.\n" +msgid "The recommended minimum temperature is less than 190 degree or the recommended maximum temperature is greater than 300 degree.\n" +msgstr "La température minimale recommandée est inférieure à 190 degrés ou la température maximale recommandée est supérieure à 300 degrés.\n" -msgid "" -"The recommended minimum temperature cannot be higher than the recommended " -"maximum temperature.\n" -msgstr "" -"La température minimale recommandée ne peut être supérieure à la température " -"maximale recommandée.\n" +msgid "The recommended minimum temperature cannot be higher than the recommended maximum temperature.\n" +msgstr "La température minimale recommandée ne peut être supérieure à la température maximale recommandée.\n" msgid "Please check.\n" msgstr "Veuillez vérifier.\n" @@ -3644,17 +3304,12 @@ msgid "" "Please make sure whether to use the temperature to print.\n" "\n" msgstr "" -"La buse peut être bloquée lorsque la température est hors de la plage " -"recommandée.\n" +"La buse peut être bloquée lorsque la température est hors de la plage recommandée.\n" "Veuillez vous assurer d'utiliser la température pour imprimer.\n" #, c-format, boost-format -msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " -"centigrade" -msgstr "" -"La température de buse recommandée pour ce type de filament est de [%d, %d] " -"degrés centigrades" +msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" +msgstr "La température de buse recommandée pour ce type de filament est de [%d, %d] degrés centigrades" msgid "" "Too small max volumetric speed.\n" @@ -3664,14 +3319,8 @@ msgstr "" "La valeur a été réinitialisée à 0,5" #, c-format, boost-format -msgid "" -"Current chamber temperature is higher than the material's safe temperature," -"it may result in material softening and clogging.The maximum safe " -"temperature for the material is %d" -msgstr "" -"La température actuelle du caisson est supérieure à la température de " -"sécurité du matériau, ce qui peut entraîner un ramollissement et un bouchage " -"du filament. La température de sécurité maximale pour le matériau est %d" +msgid "Current chamber temperature is higher than the material's safe temperature,it may result in material softening and clogging.The maximum safe temperature for the material is %d" +msgstr "La température actuelle du caisson est supérieure à la température de sécurité du matériau, ce qui peut entraîner un ramollissement et un bouchage du filament. La température de sécurité maximale pour le matériau est %d" msgid "" "Too small layer height.\n" @@ -3687,23 +3336,15 @@ msgid "" "Zero initial layer height is invalid.\n" "\n" "The first layer height will be reset to 0.2." -msgstr "" -"La hauteur de couche initiale nulle n'est pas valide. La hauteur de la " -"première couche sera réinitialisée à 0,2." +msgstr "La hauteur de couche initiale nulle n'est pas valide. La hauteur de la première couche sera réinitialisée à 0,2." msgid "" -"This setting is only used for model size tunning with small value in some " -"cases.\n" +"This setting is only used for model size tunning with small value in some cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." -msgstr "" -"Ce paramètre n'est utilisé que pour le réglage de la taille du modèle avec " -"une petite valeur dans certains cas. Par exemple, lorsque la taille du " -"modèle présente une petite erreur et est difficile à assembler. Pour un " -"réglage de grande taille, veuillez utiliser la fonction d'échelle de modèle. " -"La valeur sera remise à 0." +msgstr "Ce paramètre n'est utilisé que pour le réglage de la taille du modèle avec une petite valeur dans certains cas. Par exemple, lorsque la taille du modèle présente une petite erreur et est difficile à assembler. Pour un réglage de grande taille, veuillez utiliser la fonction d'échelle de modèle. La valeur sera remise à 0." msgid "" "Too large elephant foot compensation is unreasonable.\n" @@ -3711,43 +3352,30 @@ msgid "" "For example, whether bed temperature is too high.\n" "\n" "The value will be reset to 0." -msgstr "" -"Une trop grande compensation de la patte d'éléphant est déraisonnable. Si " -"vous avez vraiment un effet de patte d'éléphant important, veuillez vérifier " -"d'autres paramètres. Par exemple, si la température du plateau est trop " -"élevée. La valeur sera remise à 0." +msgstr "Une trop grande compensation de la patte d'éléphant est déraisonnable. Si vous avez vraiment un effet de patte d'éléphant important, veuillez vérifier d'autres paramètres. Par exemple, si la température du plateau est trop élevée. La valeur sera remise à 0." -msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness " -"is set to All. " -msgstr "" -"La paroi supplémentaire alternée ne fonctionne pas bien lorsque le paramètre " -"Assurer l’épaisseur de la coque verticale est réglée sur Tous. " +msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All. " +msgstr "La paroi supplémentaire alternée ne fonctionne pas bien lorsque le paramètre Assurer l’épaisseur de la coque verticale est réglée sur Tous. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable " -"alternate extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable alternate extra wall\n" "No - Dont use alternate extra wall" msgstr "" "Modifier ces paramètres automatiquement ? \n" -"Oui - Modifier l’épaisseur de la coque verticale pour qu’elle soit modérée " -"et activer la paroi supplémentaire\n" +"Oui - Modifier l’épaisseur de la coque verticale pour qu’elle soit modérée et activer la paroi supplémentaire\n" "Non - Ne pas utiliser la paroi supplémentaire alternée" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support " -"Layer Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support Layer Height is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"La tour de purge ne fonctionne pas lorsque la hauteur de couche adaptative " -"ou la hauteur de couche de support indépendante est activée. \n" +"La tour de purge ne fonctionne pas lorsque la hauteur de couche adaptative ou la hauteur de couche de support indépendante est activée. \n" "Que souhaitez-vous conserver ? \n" "OUI - Conserver la tour de purge \n" -"NON - Conserver la hauteur de la couche adaptative et la hauteur de la " -"couche de support indépendante" +"NON - Conserver la hauteur de la couche adaptative et la hauteur de la couche de support indépendante" msgid "" "Prime tower does not work when Adaptive Layer Height is on.\n" @@ -3755,8 +3383,7 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height" msgstr "" -"La tour de purge ne fonctionne pas lorsque la hauteur de couche adaptative " -"est activée. \n" +"La tour de purge ne fonctionne pas lorsque la hauteur de couche adaptative est activée. \n" "Que souhaitez-vous conserver ? \n" "OUI - Conserver la tour de purge \n" "NON - Conserver la hauteur de la couche adaptative" @@ -3767,8 +3394,7 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"La tour de purge ne fonctionne pas lorsque la hauteur de la couche de " -"support indépendante est activée.\n" +"La tour de purge ne fonctionne pas lorsque la hauteur de la couche de support indépendante est activée.\n" "Que souhaitez-vous conserver ?\n" "OUI - Garder la tour de purge\n" "NON - Gardez la hauteur de la couche de support indépendante" @@ -3777,8 +3403,7 @@ msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." msgstr "" -"Lors de l'impression par objet, l'extrudeur peut entrer en collision avec " -"une jupe.\n" +"Lors de l'impression par objet, l'extrudeur peut entrer en collision avec une jupe.\n" "Il faut donc remettre la couche de la jupe à 1 pour éviter les collisions." msgid "" @@ -3788,18 +3413,11 @@ msgstr "" "seam_slope_start_height doit être inférieur à la hauteur de couche.\n" "Remise à 0." -msgid "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell " -"layers is 0, sparse infill density is 0 and timelapse type is traditional." -msgstr "" -"Le mode spirale ne fonctionne que lorsque qu'il n'y a qu'une seule paroi, " -"les supports sont désactivés, que les couches supérieures de la coque sont à " -"0, qu'il n'y a pas de remplissage et que le type timelapse est traditionnel." +msgid "Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgstr "Le mode spirale ne fonctionne que lorsque qu'il n'y a qu'une seule paroi, les supports sont désactivés, que les couches supérieures de la coque sont à 0, qu'il n'y a pas de remplissage et que le type timelapse est traditionnel." msgid " But machines with I3 structure will not generate timelapse videos." -msgstr "" -" Mais les machines avec une structure I3 ne généreront pas de vidéos " -"timelapse." +msgstr " Mais les machines avec une structure I3 ne généreront pas de vidéos timelapse." msgid "" "Change these settings automatically? \n" @@ -3807,8 +3425,7 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Modifier ces paramètres automatiquement ? \n" -"Oui - Modifiez ces paramètres et activez automatiquement le mode spirale/" -"vase\n" +"Oui - Modifiez ces paramètres et activez automatiquement le mode spirale/vase\n" "Non - Annuler l'activation du mode spirale" msgid "Auto bed leveling" @@ -3872,8 +3489,7 @@ msgid "Paused due to nozzle temperature malfunction" msgstr "Pause en raison d'un dysfonctionnement de la température de la buse" msgid "Paused due to heat bed temperature malfunction" -msgstr "" -"Pause en raison d'un dysfonctionnement de la température du plateau chauffant" +msgstr "Pause en raison d'un dysfonctionnement de la température du plateau chauffant" msgid "Filament unloading" msgstr "Déchargement du filament" @@ -3891,12 +3507,10 @@ msgid "Paused due to AMS lost" msgstr "Suspendu en raison de la perte de l’AMS" msgid "Paused due to low speed of the heat break fan" -msgstr "" -"Mise en pause en raison de la faible vitesse du ventilateur du heatbreak" +msgstr "Mise en pause en raison de la faible vitesse du ventilateur du heatbreak" msgid "Paused due to chamber temperature control error" -msgstr "" -"Mise en pause en raison d’une erreur de contrôle de la température du caisson" +msgstr "Mise en pause en raison d’une erreur de contrôle de la température du caisson" msgid "Cooling chamber" msgstr "Refroidissement du caisson" @@ -3943,48 +3557,26 @@ msgstr "Échec de la vérification." msgid "Update failed." msgstr "Mise à jour a échoué." -msgid "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" -"TPU) is not allowed to be loaded." -msgstr "" -"La température actuelle du caisson ou la température cible du caisson " -"dépasse 45℃. Afin d’éviter le bouchage de l’extrudeur, un filament basse " -"température (PLA/PETG/TPU) ne doit pas être chargé." +msgid "The current chamber temperature or the target chamber temperature exceeds 45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is not allowed to be loaded." +msgstr "La température actuelle du caisson ou la température cible du caisson dépasse 45℃. Afin d’éviter le bouchage de l’extrudeur, un filament basse température (PLA/PETG/TPU) ne doit pas être chargé." -msgid "" -"Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " -"avoid extruder clogging,it is not allowed to set the chamber temperature " -"above 45℃." -msgstr "" -"Un filament basse température (PLA/PETG/TPU) est chargé dans l’extrudeur. " -"Afin d’éviter le bouchage de l’extrudeur, il n’est pas autorisé de régler la " -"température du caisson au-dessus de 45℃." +msgid "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to avoid extruder clogging,it is not allowed to set the chamber temperature above 45℃." +msgstr "Un filament basse température (PLA/PETG/TPU) est chargé dans l’extrudeur. Afin d’éviter le bouchage de l’extrudeur, il n’est pas autorisé de régler la température du caisson au-dessus de 45℃." -msgid "" -"When you set the chamber temperature below 40℃, the chamber temperature " -"control will not be activated. And the target chamber temperature will " -"automatically be set to 0℃." -msgstr "" -"Lorsque vous réglez la température du caisson en dessous de 40℃, le contrôle " -"de la température du caisson ne sera pas activé. Et la température cible du " -"caisson sera automatiquement réglée sur 0℃." +msgid "When you set the chamber temperature below 40℃, the chamber temperature control will not be activated. And the target chamber temperature will automatically be set to 0℃." +msgstr "Lorsque vous réglez la température du caisson en dessous de 40℃, le contrôle de la température du caisson ne sera pas activé. Et la température cible du caisson sera automatiquement réglée sur 0℃." msgid "Failed to start printing job" msgstr "Échec du lancement de la tâche d'impression" -msgid "" -"This calibration does not support the currently selected nozzle diameter" -msgstr "" -"Cette calibration ne prend pas en charge le diamètre de buse actuellement " -"sélectionné" +msgid "This calibration does not support the currently selected nozzle diameter" +msgstr "Cette calibration ne prend pas en charge le diamètre de buse actuellement sélectionné" msgid "Current flowrate cali param is invalid" msgstr "Le paramètre de calibration du débit actuel n’est pas valide" msgid "Selected diameter and machine diameter do not match" -msgstr "" -"Le diamètre sélectionné et le diamètre de la machine ne correspondent pas" +msgstr "Le diamètre sélectionné et le diamètre de la machine ne correspondent pas" msgid "Failed to generate cali gcode" msgstr "Échec de la génération du G-code de calibration" @@ -3998,19 +3590,11 @@ msgstr "Le TPU n’est pas pris en charge par l’AMS." msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF n’est pas pris en charge par l’AMS." -msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to " -"dry it before use." -msgstr "" -"Le PVA humide deviendra flexible et restera coincé à l’intérieur de l’AMS, " -"veuillez prendre soin de le sécher avant utilisation." +msgid "Damp PVA will become flexible and get stuck inside AMS,please take care to dry it before use." +msgstr "Le PVA humide deviendra flexible et restera coincé à l’intérieur de l’AMS, veuillez prendre soin de le sécher avant utilisation." -msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." -msgstr "" -"Les filaments CF/GF sont durs et cassants, ils peuvent se casser ou se " -"coincer dans l’AMS, veuillez les utiliser avec prudence." +msgid "CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, please use with caution." +msgstr "Les filaments CF/GF sont durs et cassants, ils peuvent se casser ou se coincer dans l’AMS, veuillez les utiliser avec prudence." msgid "default" msgstr "défaut" @@ -4020,8 +3604,7 @@ msgid "Edit Custom G-code (%1%)" msgstr "Modifier le G-code personnalisé (%1%)" msgid "Built-in placeholders (Double click item to add to G-code)" -msgstr "" -"Placeholders intégrés (double-cliquez sur l’élément pour l’ajouter au G-code)" +msgstr "Placeholders intégrés (double-cliquez sur l’élément pour l’ajouter au G-code)" msgid "Search gcode placeholders" msgstr "Rechercher les placeholders de G-code" @@ -4094,8 +3677,7 @@ msgstr "Validation du paramètre" #, c-format, boost-format msgid "Value %s is out of range. The valid range is from %d to %d." -msgstr "" -"La valeur %s est hors plage. La plage valide est comprise entre %d et %d." +msgstr "La valeur %s est hors plage. La plage valide est comprise entre %d et %d." msgid "Value is out of range." msgstr "La valeur est hors plage." @@ -4108,12 +3690,8 @@ msgid "" msgstr "Est-ce %s%% ou %s %s ? OUI pour %s%%, NON pour %s %s." #, boost-format -msgid "" -"Invalid input format. Expected vector of dimensions in the following format: " -"\"%1%\"" -msgstr "" -"Format d'entrée non valide. Vecteur de dimensions attendu dans le format " -"suivant : \"%1%\"" +msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" +msgstr "Format d'entrée non valide. Vecteur de dimensions attendu dans le format suivant : \"%1%\"" msgid "Input value is out of range" msgstr "La valeur entrée est hors plage" @@ -4138,7 +3716,7 @@ msgid "Temperature" msgstr "Température" msgid "Flow" -msgstr "Flux" +msgstr "Débit" msgid "Tool" msgstr "Outil" @@ -4204,13 +3782,13 @@ msgid "Total cost" msgstr "Coût total" msgid "up to" -msgstr "" +msgstr "jusqu’à" msgid "above" -msgstr "" +msgstr "plus que" msgid "from" -msgstr "" +msgstr "de" msgid "Color Scheme" msgstr "Schéma de couleur" @@ -4465,12 +4043,8 @@ msgid "Size:" msgstr "Taille:" #, boost-format -msgid "" -"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " -"separate the conflicted objects farther (%s <-> %s)." -msgstr "" -"Des conflits de chemins G-code ont été trouvés au niveau de la couche %d, z " -"= %.2lf mm. Veuillez séparer davantage les objets en conflit (%s <-> %s)." +msgid "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate the conflicted objects farther (%s <-> %s)." +msgstr "Des conflits de chemins G-code ont été trouvés au niveau de la couche %d, z = %.2lf mm. Veuillez séparer davantage les objets en conflit (%s <-> %s)." msgid "An object is layed over the boundary of plate." msgstr "Un objet est posé sur la limite du plateau." @@ -4486,13 +4060,10 @@ msgstr "Seul l'objet en cours d'édition est visible." msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and " -"confirming that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the build volume." msgstr "" -"Un objet est posé sur la limite de la plaque ou dépasse la limite de " -"hauteur.\n" -"Veuillez résoudre le problème en le déplaçant totalement sur ou hors du " -"plateau, et en confirmant que la hauteur entre dans le volume d'impression." +"Un objet est posé sur la limite de la plaque ou dépasse la limite de hauteur.\n" +"Veuillez résoudre le problème en le déplaçant totalement sur ou hors du plateau, et en confirmant que la hauteur entre dans le volume d'impression." msgid "Calibration step selection" msgstr "Sélection de l'étape de calibration" @@ -4513,12 +4084,10 @@ msgid "Calibration program" msgstr "Programme de calibration" msgid "" -"The calibration program detects the status of your device automatically to " -"minimize deviation.\n" +"The calibration program detects the status of your device automatically to minimize deviation.\n" "It keeps the device performing optimally." msgstr "" -"Le processus de calibration détecte automatiquement l'état de votre appareil " -"pour minimiser les écarts.\n" +"Le processus de calibration détecte automatiquement l'état de votre appareil pour minimiser les écarts.\n" "Il permet à l'appareil de fonctionner de manière optimale." msgid "Calibration Flow" @@ -4593,8 +4162,7 @@ msgid "Application is closing" msgstr "L'application se ferme" msgid "Closing Application while some presets are modified." -msgstr "" -"Fermeture de l'application pendant que certains préréglages sont modifiés." +msgstr "Fermeture de l'application pendant que certains préréglages sont modifiés." msgid "Logging" msgstr "Enregistrement" @@ -4867,8 +4435,7 @@ msgid "Show 3D Navigator" msgstr "Afficher le navigateur 3D" msgid "Show 3D navigator in Prepare and Preview scene" -msgstr "" -"Afficher le navigateur 3D dans la scène de préparation et de prévisualisation" +msgstr "Afficher le navigateur 3D dans la scène de préparation et de prévisualisation" msgid "Reset Window Layout" msgstr "Réinitialiser la présentation de la fenêtre" @@ -4910,16 +4477,16 @@ msgid "Flow rate test - Pass 2" msgstr "Test de débit - Passe 2" msgid "YOLO (Recommended)" -msgstr "" +msgstr "YOLO (Recommandé)" msgid "Orca YOLO flowrate calibration, 0.01 step" -msgstr "" +msgstr "Calibrage du débit YOLO d’Orca, par intervalle de 0,01" msgid "YOLO (perfectionist version)" -msgstr "" +msgstr "YOLO (version perfectionniste)" msgid "Orca YOLO flowrate calibration, 0.005 step" -msgstr "" +msgstr "Calibrage du débit YOLO d’Orca, par intervalle de 0,005" msgid "Flow rate" msgstr "Débit" @@ -4993,14 +4560,11 @@ msgstr "&Aide" #, c-format, boost-format msgid "A file exists with the same name: %s, do you want to override it." -msgstr "" -"Il existe un fichier portant le même nom : %s. Voulez-vous le remplacer ?" +msgstr "Il existe un fichier portant le même nom : %s. Voulez-vous le remplacer ?" #, c-format, boost-format msgid "A config exists with the same name: %s, do you want to override it." -msgstr "" -"Il existe une configuration portant le même nom : %s. Voulez-vous la " -"remplacer ?" +msgstr "Il existe une configuration portant le même nom : %s. Voulez-vous la remplacer ?" msgid "Overwrite file" msgstr "Remplacer le fichier" @@ -5017,11 +4581,8 @@ msgstr "Choisir un dossier" #, c-format, boost-format msgid "There is %d config exported. (Only non-system configs)" msgid_plural "There are %d configs exported. (Only non-system configs)" -msgstr[0] "" -"Il y a %d configuration exportée. (Uniquement les configurations non système)" -msgstr[1] "" -"Il y a %d configurations exportées. (Uniquement les configurations non " -"système)" +msgstr[0] "Il y a %d configuration exportée. (Uniquement les configurations non système)" +msgstr[1] "Il y a %d configurations exportées. (Uniquement les configurations non système)" msgid "Export result" msgstr "Exporter le Résultat" @@ -5031,23 +4592,16 @@ msgstr "Sélectionnez le profil à charger :" #, c-format, boost-format msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "" -"There are %d configs imported. (Only non-system and compatible configs)" -msgstr[0] "" -"Il y a %d configuration importée. (Uniquement les configurations non système " -"et compatibles)" -msgstr[1] "" -"Il y a %d configurations importées. (Uniquement les configurations non " -"système et compatibles)" +msgid_plural "There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "Il y a %d configuration importée. (Uniquement les configurations non système et compatibles)" +msgstr[1] "Il y a %d configurations importées. (Uniquement les configurations non système et compatibles)" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing " -"the configs." +"Hint: Make sure you have added the corresponding printer before importing the configs." msgstr "" "\n" -"Conseil : assurez-vous d’avoir ajouté l’imprimante correspondante avant " -"d’importer les configurations." +"Conseil : assurez-vous d’avoir ajouté l’imprimante correspondante avant d’importer les configurations." msgid "Import result" msgstr "Importer le résultat" @@ -5078,43 +4632,28 @@ msgid "Synchronization" msgstr "Synchronisation" msgid "The device cannot handle more conversations. Please retry later." -msgstr "" -"L'appareil ne peut pas gérer plus de conversations. Veuillez réessayer plus " -"tard." +msgstr "L'appareil ne peut pas gérer plus de conversations. Veuillez réessayer plus tard." msgid "Player is malfunctioning. Please reinstall the system player." -msgstr "" -"Le lecteur ne fonctionne pas correctement. Veuillez réinstaller le lecteur " -"système." +msgstr "Le lecteur ne fonctionne pas correctement. Veuillez réinstaller le lecteur système." msgid "The player is not loaded, please click \"play\" button to retry." -msgstr "" -"Le lecteur n’est pas chargé, veuillez cliquer sur le bouton « play » pour " -"réessayer." +msgstr "Le lecteur n’est pas chargé, veuillez cliquer sur le bouton « play » pour réessayer." msgid "Please confirm if the printer is connected." msgstr "Veuillez vérifier que l’imprimante est bien connectée." -msgid "" -"The printer is currently busy downloading. Please try again after it " -"finishes." -msgstr "" -"L’imprimante est actuellement occupée à télécharger. Veuillez réessayer une " -"fois le téléchargement terminé." +msgid "The printer is currently busy downloading. Please try again after it finishes." +msgstr "L’imprimante est actuellement occupée à télécharger. Veuillez réessayer une fois le téléchargement terminé." msgid "Printer camera is malfunctioning." msgstr "La caméra de l’imprimante ne fonctionne pas correctement." msgid "Problem occured. Please update the printer firmware and try again." -msgstr "" -"Un problème s’est produit. Veuillez mettre à jour le micrologiciel de " -"l’imprimante et réessayer." +msgstr "Un problème s’est produit. Veuillez mettre à jour le micrologiciel de l’imprimante et réessayer." -msgid "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." -msgstr "" -"La fonction vue en direct sur réseau local est désactivée. Veuillez activer " -"l’affichage en direct sur l’écran de l’imprimante." +msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgstr "La fonction vue en direct sur réseau local est désactivée. Veuillez activer l’affichage en direct sur l’écran de l’imprimante." msgid "Please enter the IP of printer to connect." msgstr "Veuillez saisir l’IP de l’imprimante à connecter." @@ -5125,12 +4664,8 @@ msgstr "Initialisation…" msgid "Connection Failed. Please check the network and try again" msgstr "Échec de la connexion. Veuillez vérifier le réseau et réessayer" -msgid "" -"Please check the network and try again, You can restart or update the " -"printer if the issue persists." -msgstr "" -"Veuillez vérifier le réseau et réessayer, Vous pouvez redémarrer ou mettre à " -"jour l’imprimante si le problème persiste." +msgid "Please check the network and try again, You can restart or update the printer if the issue persists." +msgstr "Veuillez vérifier le réseau et réessayer, Vous pouvez redémarrer ou mettre à jour l’imprimante si le problème persiste." msgid "The printer has been logged out and cannot connect." msgstr "L’imprimante a été déconnectée et ne peut pas se connecter." @@ -5139,9 +4674,7 @@ msgid "Stopped." msgstr "Arrêté." msgid "LAN Connection Failed (Failed to start liveview)" -msgstr "" -"Échec de la connexion au réseau local (échec du démarrage de l’affichage en " -"direct)" +msgstr "Échec de la connexion au réseau local (échec du démarrage de l’affichage en direct)" msgid "" "Virtual Camera Tools is required for this task!\n" @@ -5243,30 +4776,19 @@ msgid "Load failed" msgstr "Échec du chargement" msgid "Initialize failed (Device connection not ready)!" -msgstr "" -"L'initialisation a échoué (la connexion de l'appareil n'est pas prête) !" +msgstr "L'initialisation a échoué (la connexion de l'appareil n'est pas prête) !" -msgid "" -"Browsing file in SD card is not supported in current firmware. Please update " -"the printer firmware." -msgstr "" -"La navigation dans les fichiers de la carte SD n’est pas prise en charge par " -"le micrologiciel actuel. Veuillez mettre à jour le micrologiciel de " -"l’imprimante." +msgid "Browsing file in SD card is not supported in current firmware. Please update the printer firmware." +msgstr "La navigation dans les fichiers de la carte SD n’est pas prise en charge par le micrologiciel actuel. Veuillez mettre à jour le micrologiciel de l’imprimante." msgid "Initialize failed (Storage unavailable, insert SD card.)!" -msgstr "" -"Échec de l’initialisation (Stockage indisponible, insérer la carte SD.) !" +msgstr "Échec de l’initialisation (Stockage indisponible, insérer la carte SD.) !" msgid "LAN Connection Failed (Failed to view sdcard)" -msgstr "" -"Échec de la connexion au réseau local (Échec de la visualisation de la carte " -"SD)" +msgstr "Échec de la connexion au réseau local (Échec de la visualisation de la carte SD)" msgid "Browsing file in SD card is not supported in LAN Only Mode." -msgstr "" -"La navigation dans les fichiers de la carte SD n’est pas prise en charge en " -"mode LAN uniquement." +msgstr "La navigation dans les fichiers de la carte SD n’est pas prise en charge en mode LAN uniquement." #, c-format, boost-format msgid "Initialize failed (%s)!" @@ -5274,14 +4796,9 @@ msgstr "L'initialisation a échoué (%s)!" #, c-format, boost-format msgid "You are going to delete %u file from printer. Are you sure to continue?" -msgid_plural "" -"You are going to delete %u files from printer. Are you sure to continue?" -msgstr[0] "" -"Vous allez supprimer le fichier %u de l’imprimante. Êtes-vous sûr de vouloir " -"continuer ?" -msgstr[1] "" -"Vous allez supprimer %u fichiers de l’imprimante. Êtes-vous sûr de vouloir " -"continuer ?" +msgid_plural "You are going to delete %u files from printer. Are you sure to continue?" +msgstr[0] "Vous allez supprimer le fichier %u de l’imprimante. Êtes-vous sûr de vouloir continuer ?" +msgstr[1] "Vous allez supprimer %u fichiers de l’imprimante. Êtes-vous sûr de vouloir continuer ?" msgid "Delete files" msgstr "Supprimer les fichiers" @@ -5302,12 +4819,8 @@ msgstr "Échec de la récupération des informations de modèle de l’imprimant msgid "Failed to parse model information." msgstr "Échec de l’analyse des informations sur le modèle." -msgid "" -"The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " -"and export a new .gcode.3mf file." -msgstr "" -"Le fichier G-code .3mf ne contient pas de données G-code. Veuillez le " -"découper avec OrcaSlicer et exporter un nouveau fichier G-code .3mf." +msgid "The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and export a new .gcode.3mf file." +msgstr "Le fichier G-code .3mf ne contient pas de données G-code. Veuillez le découper avec OrcaSlicer et exporter un nouveau fichier G-code .3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -5337,12 +4850,8 @@ msgstr "Téléchargement terminé" msgid "Downloading %d%%..." msgstr "Téléchargement %d%%..." -msgid "" -"Reconnecting the printer, the operation cannot be completed immediately, " -"please try again later." -msgstr "" -"Reconnexion de l’imprimante, l’opération ne peut être effectuée maintenant, " -"veuillez réessayer plus tard." +msgid "Reconnecting the printer, the operation cannot be completed immediately, please try again later." +msgstr "Reconnexion de l’imprimante, l’opération ne peut être effectuée maintenant, veuillez réessayer plus tard." msgid "File does not exist." msgstr "Le fichier n’existe pas." @@ -5421,9 +4930,7 @@ msgstr "" msgid "How do you like this printing file?" msgstr "Que pensez-vous de ce fichier d’impression ?" -msgid "" -"(The model has already been rated. Your rating will overwrite the previous " -"rating.)" +msgid "(The model has already been rated. Your rating will overwrite the previous rating.)" msgstr "(Le modèle a déjà été noté. Votre note écrasera la note précédente.)" msgid "Rate" @@ -5498,12 +5005,8 @@ msgstr "Couche : %s" msgid "Layer: %d/%d" msgstr "Couche : %d/%d" -msgid "" -"Please heat the nozzle to above 170 degree before loading or unloading " -"filament." -msgstr "" -"Veuillez chauffer la buse à plus de 170 degrés avant de charger ou de " -"décharger le filament." +msgid "Please heat the nozzle to above 170 degree before loading or unloading filament." +msgstr "Veuillez chauffer la buse à plus de 170 degrés avant de charger ou de décharger le filament." msgid "Still unload" msgstr "Décharger encore" @@ -5514,12 +5017,8 @@ msgstr "Charger encore" msgid "Please select an AMS slot before calibration" msgstr "Veuillez sélectionner un emplacement AMS avant la calibration" -msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please " -"unload the filament and try again." -msgstr "" -"Impossible de lire les informations sur le filament: le filament est chargé " -"dans l'extrudeur. Veuillez décharger le filament et réessayer." +msgid "Cannot read filament info: the filament is loaded to the tool head,please unload the filament and try again." +msgstr "Impossible de lire les informations sur le filament: le filament est chargé dans l'extrudeur. Veuillez décharger le filament et réessayer." msgid "This only takes effect during printing" msgstr "Cela ne prend effet que pendant l'impression" @@ -5585,21 +5084,17 @@ msgid " can not be opened\n" msgstr " ne peut pas être ouvert\n" msgid "" -"The following issues occurred during the process of uploading images. Do you " -"want to ignore them?\n" +"The following issues occurred during the process of uploading images. Do you want to ignore them?\n" "\n" msgstr "" -"Les problèmes suivants se sont produits lors du processus d’envoi des " -"images. Voulez-vous les ignorer ?\n" +"Les problèmes suivants se sont produits lors du processus d’envoi des images. Voulez-vous les ignorer ?\n" "\n" msgid "info" msgstr "info" msgid "Synchronizing the printing results. Please retry a few seconds later." -msgstr "" -"Synchronisation des résultats d’impression. Veuillez réessayer dans quelques " -"secondes." +msgstr "Synchronisation des résultats d’impression. Veuillez réessayer dans quelques secondes." msgid "Upload failed\n" msgstr "Échec de l’envoi\n" @@ -5612,8 +5107,7 @@ msgid "" "\n" " error code: " msgstr "" -"Le résultat de votre commentaire ne peut pas être téléchargé pour certaines " -"raisons :\n" +"Le résultat de votre commentaire ne peut pas être téléchargé pour certaines raisons :\n" "\n" " code d’erreur : " @@ -5629,12 +5123,8 @@ msgstr "" "\n" "Souhaitez-vous être redirigé vers la page Web pour l’évaluation ?" -msgid "" -"Some of your images failed to upload. Would you like to redirect to the " -"webpage for rating?" -msgstr "" -"Certaines de vos images n’ont pas pu être envoyées. Souhaitez-vous être " -"redirigé vers la page Web pour l’évaluation ?" +msgid "Some of your images failed to upload. Would you like to redirect to the webpage for rating?" +msgstr "Certaines de vos images n’ont pas pu être envoyées. Souhaitez-vous être redirigé vers la page Web pour l’évaluation ?" msgid "You can select up to 16 images." msgstr "Vous pouvez sélectionner jusqu’à 16 images." @@ -5685,12 +5175,8 @@ msgstr "Sauter" msgid "Newer 3mf version" msgstr "Nouvelle version 3mf" -msgid "" -"The 3mf file version is in Beta and it is newer than the current OrcaSlicer " -"version." -msgstr "" -"La version du fichier 3mf est en bêta et est plus récente que la version " -"actuelle d’OrcaSlicer." +msgid "The 3mf file version is in Beta and it is newer than the current OrcaSlicer version." +msgstr "La version du fichier 3mf est en bêta et est plus récente que la version actuelle d’OrcaSlicer." msgid "If you would like to try Orca Slicer Beta, you may click to" msgstr "Si vous souhaitez essayer OrcaSlicer Beta, vous pouvez cliquer sur" @@ -5699,14 +5185,10 @@ msgid "Download Beta Version" msgstr "Télécharger la version bêta" msgid "The 3mf file version is newer than the current Orca Slicer version." -msgstr "" -"La version du fichier 3mf est plus récente que la version actuelle " -"d’OrcaSlicer" +msgstr "La version du fichier 3mf est plus récente que la version actuelle d’OrcaSlicer" msgid "Update your Orca Slicer could enable all functionality in the 3mf file." -msgstr "" -"La mise à jour d’OrcaSlicer permet d’activer toutes les fonctionnalités du " -"fichier 3mf." +msgstr "La mise à jour d’OrcaSlicer permet d’activer toutes les fonctionnalités du fichier 3mf." msgid "Current Version: " msgstr "Version actuelle : " @@ -5823,8 +5305,7 @@ msgid "WARNING:" msgstr "ATTENTION :" msgid "Your model needs support ! Please make support material enable." -msgstr "" -"Votre modèle a besoin de supports ! Veuillez activer le matériau de support." +msgstr "Votre modèle a besoin de supports ! Veuillez activer le matériau de support." msgid "Gcode path overlap" msgstr "Chevauchement de chemin G-code" @@ -5844,12 +5325,8 @@ msgstr "Couches" msgid "Range" msgstr "Zone" -msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" -msgstr "" -"L'application ne peut pas fonctionner normalement car la version d'OpenGL " -"est inférieure à 2.0.\n" +msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" +msgstr "L'application ne peut pas fonctionner normalement car la version d'OpenGL est inférieure à 2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Veuillez mettre à jour le pilote de votre carte graphique." @@ -5883,12 +5360,8 @@ msgstr "La sensibilité de pause est" msgid "Enable detection of build plate position" msgstr "Activation de la détection de la position de la plaque" -msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." -msgstr "" -"La balise de localisation de la plaque est détectée, l'impression est " -"interrompue si la balise n'est pas dans la plage prédéfinie." +msgid "The localization tag of build plate is detected, and printing is paused if the tag is not in predefined range." +msgstr "La balise de localisation de la plaque est détectée, l'impression est interrompue si la balise n'est pas dans la plage prédéfinie." msgid "First Layer Inspection" msgstr "Inspection de la Première Couche" @@ -5906,9 +5379,7 @@ msgid "Nozzle Clumping Detection" msgstr "Détection de l’encrassement de la buse" msgid "Check if the nozzle is clumping by filament or other foreign objects." -msgstr "" -"Vérifier si la buse est encrassée par du filament ou d’autres corps " -"étrangers." +msgstr "Vérifier si la buse est encrassée par du filament ou d’autres corps étrangers." msgid "Nozzle Type" msgstr "Type de buse" @@ -6020,28 +5491,17 @@ msgstr "Recherche de plaque, d'objet et de pièce." msgid "Pellets" msgstr "Pellets" -msgid "" -"No AMS filaments. Please select a printer in 'Device' page to load AMS info." -msgstr "" -"Pas de filaments AMS. Veuillez sélectionner une imprimante dans la page " -"\"Appareil\" pour charger les informations AMS." +msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgstr "Pas de filaments AMS. Veuillez sélectionner une imprimante dans la page \"Appareil\" pour charger les informations AMS." msgid "Sync filaments with AMS" msgstr "Synchroniser les filaments avec AMS" -msgid "" -"Sync filaments with AMS will drop all current selected filament presets and " -"colors. Do you want to continue?" -msgstr "" -"La synchronisation des filaments avec AMS supprimera tous les préréglages et " -"couleurs de filament actuellement sélectionnés. Voulez-vous continuer ?" +msgid "Sync filaments with AMS will drop all current selected filament presets and colors. Do you want to continue?" +msgstr "La synchronisation des filaments avec AMS supprimera tous les préréglages et couleurs de filament actuellement sélectionnés. Voulez-vous continuer ?" -msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" -msgstr "" -"Vous avez déjà effectué une synchronisation. Voulez-vous synchroniser " -"uniquement les modifications ou tout resynchroniser ?" +msgid "Already did a synchronization, do you want to sync only changes or resync all?" +msgstr "Vous avez déjà effectué une synchronisation. Voulez-vous synchroniser uniquement les modifications ou tout resynchroniser ?" msgid "Sync" msgstr "Sync" @@ -6050,30 +5510,18 @@ msgid "Resync" msgstr "Resync" msgid "There are no compatible filaments, and sync is not performed." -msgstr "" -"Il n'y a pas de filaments compatibles et la synchronisation n'est pas " -"effectuée." +msgstr "Il n'y a pas de filaments compatibles et la synchronisation n'est pas effectuée." -msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " -"presets." -msgstr "" -"Il existe des filaments inconnus mappés sur un préréglage générique. " -"Veuillez mettre à jour ou redémarrer Orca Slicer pour vérifier s'il existe " -"une mise à jour des préréglages système." +msgid "There are some unknown filaments mapped to generic preset. Please update Orca Slicer or restart Orca Slicer to check if there is an update to system presets." +msgstr "Il existe des filaments inconnus mappés sur un préréglage générique. Veuillez mettre à jour ou redémarrer Orca Slicer pour vérifier s'il existe une mise à jour des préréglages système." #, boost-format msgid "Do you want to save changes to \"%1%\"?" msgstr "Voulez-vous enregistrer les modifications apportées à \"%1%\" ?" #, c-format, boost-format -msgid "" -"Successfully unmounted. The device %s(%s) can now be safely removed from the " -"computer." -msgstr "" -"Démonté avec succès. Le périphérique %s(%s) peut maintenant être retiré en " -"toute sécurité de l'ordinateur." +msgid "Successfully unmounted. The device %s(%s) can now be safely removed from the computer." +msgstr "Démonté avec succès. Le périphérique %s(%s) peut maintenant être retiré en toute sécurité de l'ordinateur." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." @@ -6085,30 +5533,14 @@ msgstr "Projet précédent non enregistré détecté, voulez-vous le restaurer ? msgid "Restore" msgstr "Restaurer" -msgid "" -"The current hot bed temperature is relatively high. The nozzle may be " -"clogged when printing this filament in a closed enclosure. Please open the " -"front door and/or remove the upper glass." -msgstr "" -"La température actuelle du plateau est relativement élevée. La buse peut se " -"boucher lors de l’impression de ce filament dans une enceinte fermée. " -"Veuillez ouvrir la porte avant et/ou retirer la vitre supérieure." +msgid "The current hot bed temperature is relatively high. The nozzle may be clogged when printing this filament in a closed enclosure. Please open the front door and/or remove the upper glass." +msgstr "La température actuelle du plateau est relativement élevée. La buse peut se boucher lors de l’impression de ce filament dans une enceinte fermée. Veuillez ouvrir la porte avant et/ou retirer la vitre supérieure." -msgid "" -"The nozzle hardness required by the filament is higher than the default " -"nozzle hardness of the printer. Please replace the hardened nozzle or " -"filament, otherwise, the nozzle will be attrited or damaged." -msgstr "" -"La dureté de la buse requise par le filament est supérieure à la dureté par " -"défaut de la buse de l'imprimante. Veuillez remplacer la buse ou le " -"filament, sinon la buse s'usera ou s'endommagera." +msgid "The nozzle hardness required by the filament is higher than the default nozzle hardness of the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be attrited or damaged." +msgstr "La dureté de la buse requise par le filament est supérieure à la dureté par défaut de la buse de l'imprimante. Veuillez remplacer la buse ou le filament, sinon la buse s'usera ou s'endommagera." -msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. " -"It is recommended to change to smooth mode." -msgstr "" -"L’activation de la photographie timelapse traditionnelle peut provoquer des " -"imperfections de surface. Il est recommandé de passer en mode fluide." +msgid "Enabling traditional timelapse photography may cause surface imperfections. It is recommended to change to smooth mode." +msgstr "L’activation de la photographie timelapse traditionnelle peut provoquer des imperfections de surface. Il est recommandé de passer en mode fluide." msgid "Expand sidebar" msgstr "Agrandir la barre latérale" @@ -6121,31 +5553,21 @@ msgid "Loading file: %s" msgstr "Chargement du fichier : %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." -msgstr "" -"Le fichier 3mf n’est pas supporté par OrcaSlicer, chargement des données de " -"géométrie uniquement." +msgstr "Le fichier 3mf n’est pas supporté par OrcaSlicer, chargement des données de géométrie uniquement." msgid "Load 3mf" msgstr "Charger 3mf" #, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Found following keys " -"unrecognized:" -msgstr "" -"La version %s du 3mf est plus récente que la version %s de %s. Les clés " -"suivantes ne sont pas reconnues:" +msgid "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" +msgstr "La version %s du 3mf est plus récente que la version %s de %s. Les clés suivantes ne sont pas reconnues:" msgid "You'd better upgrade your software.\n" msgstr "Vous feriez mieux de mettre à jour votre logiciel.\n" #, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " -"software." -msgstr "" -"La version %s du 3mf est plus récente que la version %s de %s. Nous vous " -"suggérons de mettre à jour votre logiciel." +msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." +msgstr "La version %s du 3mf est plus récente que la version %s de %s. Nous vous suggérons de mettre à jour votre logiciel." msgid "Invalid values found in the 3mf:" msgstr "Valeurs invalides trouvées dans le 3mf :" @@ -6154,38 +5576,25 @@ msgid "Please correct them in the param tabs" msgstr "Veuillez les corriger dans les onglets de paramètres" msgid "The 3mf has following modified G-codes in filament or printer presets:" -msgstr "" -"Le 3mf a les G-codes modifiés suivants dans le filament ou les préréglages " -"de l'imprimante :" +msgstr "Le 3mf a les G-codes modifiés suivants dans le filament ou les préréglages de l'imprimante :" -msgid "" -"Please confirm that these modified G-codes are safe to prevent any damage to " -"the machine!" -msgstr "" -"Veuillez vous assurer que ces G-codes modifiés sont sûrs afin d'éviter tout " -"dommage à la machine !" +msgid "Please confirm that these modified G-codes are safe to prevent any damage to the machine!" +msgstr "Veuillez vous assurer que ces G-codes modifiés sont sûrs afin d'éviter tout dommage à la machine !" msgid "Modified G-codes" msgstr "G-codes modifiés" msgid "The 3mf has following customized filament or printer presets:" -msgstr "" -"Le 3mf dispose de filaments personnalisés ou de préréglages d'imprimante :" +msgstr "Le 3mf dispose de filaments personnalisés ou de préréglages d'imprimante :" -msgid "" -"Please confirm that the G-codes within these presets are safe to prevent any " -"damage to the machine!" -msgstr "" -"Veuillez vous assurer que les G-codes de ces préréglages sont sûrs afin " -"d'éviter d'endommager la machine !" +msgid "Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!" +msgstr "Veuillez vous assurer que les G-codes de ces préréglages sont sûrs afin d'éviter d'endommager la machine !" msgid "Customized Preset" msgstr "Préréglage personnalisé" msgid "Name of components inside step file is not UTF8 format!" -msgstr "" -"Le nom des composants à l'intérieur du fichier d'étape n'est pas au format " -"UTF8 !" +msgstr "Le nom des composants à l'intérieur du fichier d'étape n'est pas au format UTF8 !" msgid "The name may show garbage characters!" msgstr "Le nom peut afficher des caractères inutiles !" @@ -6195,9 +5604,7 @@ msgstr "Mémoriser mon choix." #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." -msgstr "" -"Échec du chargement du fichier \"%1%\". Une configuration invalide a été " -"trouvée." +msgstr "Échec du chargement du fichier \"%1%\". Une configuration invalide a été trouvée." msgid "Objects with zero volume removed" msgstr "Objets avec zéro volume supprimé" @@ -6209,9 +5616,7 @@ msgstr "Le volume de l'objet est nul" msgid "" "The object from file %s is too small, and maybe in meters or inches.\n" " Do you want to scale to millimeters?" -msgstr "" -"L'objet du fichier %s est trop petit, et peut-être en mètres ou en pouces. " -"Voulez-vous mettre à l'échelle en millimètres ?" +msgstr "L'objet du fichier %s est trop petit, et peut-être en mètres ou en pouces. Voulez-vous mettre à l'échelle en millimètres ?" msgid "Object too small" msgstr "Objet trop petit" @@ -6229,8 +5634,7 @@ msgid "Multi-part object detected" msgstr "Objet en plusieurs pièces détecté" msgid "Load these files as a single object with multiple parts?\n" -msgstr "" -"Charger ces fichiers en tant qu'objet unique avec plusieurs parties ?\n" +msgstr "Charger ces fichiers en tant qu'objet unique avec plusieurs parties ?\n" msgid "Object with multiple parts was detected" msgstr "Un objet en plusieurs parties a été détecté" @@ -6238,12 +5642,8 @@ msgstr "Un objet en plusieurs parties a été détecté" msgid "The file does not contain any geometry data." msgstr "Le fichier ne contient pas de données géométriques." -msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "" -"Votre objet semble trop grand. Voulez-vous le réduire pour l'adapter " -"automatiquement au plateau d'impression ?" +msgid "Your object appears to be too large, Do you want to scale it down to fit the heat bed automatically?" +msgstr "Votre objet semble trop grand. Voulez-vous le réduire pour l'adapter automatiquement au plateau d'impression ?" msgid "Object too large" msgstr "Objet trop grand" @@ -6341,24 +5741,18 @@ msgstr "Découpe du plateau %d" msgid "Please resolve the slicing errors and publish again." msgstr "Veuillez résoudre les erreurs de découpage et republier." -msgid "" -"Network Plug-in is not detected. Network related features are unavailable." -msgstr "" -"Le plug-in réseau n'est pas détecté. Les fonctionnalités liées au réseau ne " -"sont pas disponibles." +msgid "Network Plug-in is not detected. Network related features are unavailable." +msgstr "Le plug-in réseau n'est pas détecté. Les fonctionnalités liées au réseau ne sont pas disponibles." msgid "" "Preview only mode:\n" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" "Mode de prévisualisation:\n" -"Le fichier chargé contient uniquement du G-code, impossible d'accéder à la " -"page de Préparation" +"Le fichier chargé contient uniquement du G-code, impossible d'accéder à la page de Préparation" msgid "You can keep the modified presets to the new project or discard them" -msgstr "" -"Vous pouvez conserver les préréglages modifiés dans le nouveau projet ou les " -"supprimer" +msgstr "Vous pouvez conserver les préréglages modifiés dans le nouveau projet ou les supprimer" msgid "Creating a new project" msgstr "Créer un nouveau projet" @@ -6368,12 +5762,10 @@ msgstr "Charger le projet" msgid "" "Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the " -"project file." +"Please check whether the folder exists online or if other programs open the project file." msgstr "" "Impossible d'enregistrer le projet.\n" -"Vérifiez si le dossier existe en ligne ou si le fichier de projet est ouvert " -"dans d'autres programmes." +"Vérifiez si le dossier existe en ligne ou si le fichier de projet est ouvert dans d'autres programmes." msgid "Save project" msgstr "Sauvegarder le projet" @@ -6395,16 +5787,10 @@ msgstr "Le téléchargement a échoué, exception de taille de fichier." #, c-format, boost-format msgid "Project downloaded %d%%" -msgstr "" -"Projet téléchargé à %d%%L’importation dans Bambu Studio a échoué. Veuillez " -"télécharger le fichier et l’importer manuellement." +msgstr "Projet téléchargé à %d%%L’importation dans Bambu Studio a échoué. Veuillez télécharger le fichier et l’importer manuellement." -msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." -msgstr "" -"L’importation vers OrcaSlicer a échoué. Veuillez télécharger le fichier et " -"l’importer manuellement." +msgid "Importing to Orca Slicer failed. Please download the file and manually import it." +msgstr "L’importation vers OrcaSlicer a échoué. Veuillez télécharger le fichier et l’importer manuellement." msgid "Import SLA archive" msgstr "Importer les archives SLA" @@ -6430,9 +5816,7 @@ msgstr "Échec de la décompression du fichier vers %1% : %2%" #, boost-format msgid "Failed to find unzipped file at %1%. Unzipping of file has failed." -msgstr "" -"Impossible de trouver le fichier décompressé dans %1%. La décompression du " -"fichier a échoué." +msgstr "Impossible de trouver le fichier décompressé dans %1%. La décompression du fichier a échoué." msgid "Drop project file" msgstr "Déposer le fichier de projet" @@ -6453,8 +5837,7 @@ msgid "G-code loading" msgstr "Chargement du G-code" msgid "G-code files can not be loaded with models together!" -msgstr "" -"Les fichiers G-code ne peuvent pas être chargés avec des modèles ensemble !" +msgstr "Les fichiers G-code ne peuvent pas être chargés avec des modèles ensemble !" msgid "Can not add models when in preview mode!" msgstr "Impossible d'ajouter des modèles en mode aperçu !" @@ -6463,9 +5846,7 @@ msgid "All objects will be removed, continue?" msgstr "Tous les objets seront supprimés, continuer ?" msgid "The current project has unsaved changes, save it before continue?" -msgstr "" -"Le projet en cours comporte des modifications non enregistrées, enregistrez-" -"les avant de continuer ?" +msgstr "Le projet en cours comporte des modifications non enregistrées, enregistrez-les avant de continuer ?" msgid "Number of copies:" msgstr "Nombre de copies:" @@ -6483,28 +5864,17 @@ msgid "The provided file name is not valid." msgstr "Le nom de fichier fourni n’est pas valide." msgid "The following characters are not allowed by a FAT file system:" -msgstr "" -"Les caractères suivants ne sont pas autorisés par un système de fichiers " -"FAT :" +msgstr "Les caractères suivants ne sont pas autorisés par un système de fichiers FAT :" msgid "Save Sliced file as:" msgstr "Enregistrer le fichier découpé sous :" #, c-format, boost-format -msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." -msgstr "" -"Le fichier %s a été envoyé vers l'espace de stockage de l'imprimante et peut " -"être visualisé sur l'imprimante." +msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." +msgstr "Le fichier %s a été envoyé vers l'espace de stockage de l'imprimante et peut être visualisé sur l'imprimante." -msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." -msgstr "" -"Impossible d’effectuer une opération booléenne sur les mailles du modèle. " -"Seules les parties positives seront conservées. Vous pouvez corriger les " -"mailles et réessayer." +msgid "Unable to perform boolean operation on model meshes. Only positive parts will be kept. You may fix the meshes and try again." +msgstr "Impossible d’effectuer une opération booléenne sur les mailles du modèle. Seules les parties positives seront conservées. Vous pouvez corriger les mailles et réessayer." #, boost-format msgid "Reason: part \"%1%\" is empty." @@ -6523,22 +5893,17 @@ msgid "Reason: \"%1%\" and another part have no intersection." msgstr "Raison : « %1% » et une autre partie n’ont pas d’intersection." msgid "" -"Are you sure you want to store original SVGs with their local paths into the " -"3MF file?\n" +"Are you sure you want to store original SVGs with their local paths into the 3MF file?\n" "If you hit 'NO', all SVGs in the project will not be editable any more." msgstr "" -"Êtes-vous sûr de vouloir stocker les SVG originaux avec leurs chemins " -"d'accès locaux dans le fichier 3MF ?\n" -"Si vous cliquez sur \"NON\", tous les SVG du projet ne seront plus " -"modifiables." +"Êtes-vous sûr de vouloir stocker les SVG originaux avec leurs chemins d'accès locaux dans le fichier 3MF ?\n" +"Si vous cliquez sur \"NON\", tous les SVG du projet ne seront plus modifiables." msgid "Private protection" msgstr "Protection privée" msgid "Is the printer ready? Is the print sheet in place, empty and clean?" -msgstr "" -"L’imprimante est-elle prête ? Le plateau d’impression est-il en place, vide " -"et propre ?" +msgstr "L’imprimante est-elle prête ? Le plateau d’impression est-il en place, vide et propre ?" msgid "Upload and Print" msgstr "Envoyer & Imprimer" @@ -6548,8 +5913,7 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Imprimer par objet :\n" -"Nous vous suggérons d'utiliser la disposition automatique pour éviter les " -"collisions lors de l'impression." +"Nous vous suggérons d'utiliser la disposition automatique pour éviter les collisions lors de l'impression." msgid "Send G-code" msgstr "Envoyer le G-code" @@ -6558,9 +5922,7 @@ msgid "Send to printer" msgstr "Envoyer à l'imprimante" msgid "Custom supports and color painting were removed before repairing." -msgstr "" -"Les supports personnalisés et la peinture de couleur ont été retirés avant " -"la réparation." +msgstr "Les supports personnalisés et la peinture de couleur ont été retirés avant la réparation." msgid "Optimize Rotation" msgstr "Optimiser la rotation" @@ -6610,24 +5972,12 @@ msgstr "Triangles : %1%\n" msgid "Tips:" msgstr "Astuces:" -msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model " -"on Orca Slicer(windows) or CAD softwares." -msgstr "" -"La fonctionnalité \"Réparer le modèle\" n'est actuellement disponible que " -"sur Windows. Veuillez réparer le modèle sur Orca Slicer (Windows) ou avec " -"des logiciels de CAO." +msgid "\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca Slicer(windows) or CAD softwares." +msgstr "La fonctionnalité \"Réparer le modèle\" n'est actuellement disponible que sur Windows. Veuillez réparer le modèle sur Orca Slicer (Windows) ou avec des logiciels de CAO." #, c-format, boost-format -msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." -msgstr "" -"La plaque% d : %s n'est pas suggéré pour l'utilisation du filament " -"d'impression %s(%s). Si vous souhaitez toujours effectuer ce travail " -"d'impression, veuillez régler la température du plateau de ce filament sur " -"un nombre différent de zéro." +msgid "Plate% d: %s is not suggested to be used to print filament %s(%s). If you still want to do this printing, please set this filament's bed temperature to non zero." +msgstr "La plaque% d : %s n'est pas suggéré pour l'utilisation du filament d'impression %s(%s). Si vous souhaitez toujours effectuer ce travail d'impression, veuillez régler la température du plateau de ce filament sur un nombre différent de zéro." msgid "Switching the language requires application restart.\n" msgstr "Le changement de langue nécessite le redémarrage de l'application.\n" @@ -6639,7 +5989,7 @@ msgid "Language selection" msgstr "Sélection de la langue" msgid "Switching application language while some presets are modified." -msgstr "" +msgstr "Changement de langue d’application alors que certaines présélections sont modifiées." msgid "Changing application language" msgstr "Changer la langue de l'application" @@ -6698,14 +6048,8 @@ msgstr "Région d'origine" msgid "Stealth Mode" msgstr "Mode privé" -msgid "" -"This stops the transmission of data to Bambu's cloud services. Users who " -"don't use BBL machines or use LAN mode only can safely turn on this function." -msgstr "" -"Cette fonction interrompt la transmission des données vers les services en " -"ligne de Bambu. Les utilisateurs qui n’utilisent pas de machines BBL ou qui " -"utilisent uniquement le mode LAN peuvent activer cette fonction en toute " -"sécurité." +msgid "This stops the transmission of data to Bambu's cloud services. Users who don't use BBL machines or use LAN mode only can safely turn on this function." +msgstr "Cette fonction interrompt la transmission des données vers les services en ligne de Bambu. Les utilisateurs qui n’utilisent pas de machines BBL ou qui utilisent uniquement le mode LAN peuvent activer cette fonction en toute sécurité." msgid "Enable network plugin" msgstr "Activer le plug-in réseau" @@ -6725,24 +6069,11 @@ msgstr "Unités" msgid "Allow only one OrcaSlicer instance" msgstr "Autoriser une seule instance d’OrcaSlicer" -msgid "" -"On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. " -"In such case this settings will allow only one instance." -msgstr "" -"Sous OSX, il n’y a toujours qu’une seule instance de l’application en cours " -"d’exécution par défaut. Cependant, il est possible de lancer plusieurs " -"instances de la même application à partir de la ligne de commande. Dans ce " -"cas, ces paramètres n’autorisent qu’une seule instance." +msgid "On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances of same app from the command line. In such case this settings will allow only one instance." +msgstr "Sous OSX, il n’y a toujours qu’une seule instance de l’application en cours d’exécution par défaut. Cependant, il est possible de lancer plusieurs instances de la même application à partir de la ligne de commande. Dans ce cas, ces paramètres n’autorisent qu’une seule instance." -msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the " -"same OrcaSlicer is already running, that instance will be reactivated " -"instead." -msgstr "" -"Si cette option est activée, lorsque vous démarrez OrcaSlicer et qu’une " -"autre instance du même OrcaSlicer est déjà en cours d’exécution, cette " -"instance sera réactivée à la place." +msgid "If this is enabled, when starting OrcaSlicer and another instance of the same OrcaSlicer is already running, that instance will be reactivated instead." +msgstr "Si cette option est activée, lorsque vous démarrez OrcaSlicer et qu’une autre instance du même OrcaSlicer est déjà en cours d’exécution, cette instance sera réactivée à la place." msgid "Home" msgstr "Accueil" @@ -6765,36 +6096,26 @@ msgid "" "Touchpad: Alt+move for rotation, Shift+move for panning." msgstr "" "Sélectionner le style de navigation de l’appareil photo.\n" -"Par défaut : LMB+mouvement pour la rotation, RMB/MMB+mouvement pour le " -"panoramique.\n" -"Pavé tactile : Alt+mouvement pour la rotation, Shift+mouvement pour le " -"panoramique." +"Par défaut : LMB+mouvement pour la rotation, RMB/MMB+mouvement pour le panoramique.\n" +"Pavé tactile : Alt+mouvement pour la rotation, Shift+mouvement pour le panoramique." msgid "Zoom to mouse position" msgstr "Zoom sur la position de la souris" -msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." -msgstr "" -"Zoomez sur la position du pointeur de la souris dans la vue 3D, plutôt que " -"sur le centre de la fenêtre 2D." +msgid "Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center." +msgstr "Zoomez sur la position du pointeur de la souris dans la vue 3D, plutôt que sur le centre de la fenêtre 2D." msgid "Use free camera" msgstr "Utiliser la caméra libre" msgid "If enabled, use free camera. If not enabled, use constrained camera." -msgstr "" -"Si activée, utilise la caméra libre. Si désactivée, utilise la caméra " -"contrainte." +msgstr "Si activée, utilise la caméra libre. Si désactivée, utilise la caméra contrainte." msgid "Reverse mouse zoom" msgstr "Inverser le zoom de la souris" msgid "If enabled, reverses the direction of zoom with mouse wheel." -msgstr "" -"Si cette option est activée, elle inverse le sens du zoom avec la molette de " -"la souris." +msgstr "Si cette option est activée, elle inverse le sens du zoom avec la molette de la souris." msgid "Show splash screen" msgstr "Afficher l'écran de démarrage" @@ -6806,45 +6127,31 @@ msgid "Show \"Tip of the day\" notification after start" msgstr "Afficher la notification \"Astuce du jour\" après le démarrage" msgid "If enabled, useful hints are displayed at startup." -msgstr "" -"Si cette option est activée, des conseils utiles s'affichent au démarrage." +msgstr "Si cette option est activée, des conseils utiles s'affichent au démarrage." msgid "Flushing volumes: Auto-calculate everytime the color changed." msgstr "Volumes de purge : Auto-calcul à chaque changement de couleur." msgid "If enabled, auto-calculate everytime the color changed." -msgstr "" -"Si cette option est activée, le calcul se fera automatiquement à chaque " -"changement de couleur." +msgstr "Si cette option est activée, le calcul se fera automatiquement à chaque changement de couleur." -msgid "" -"Flushing volumes: Auto-calculate every time when the filament is changed." +msgid "Flushing volumes: Auto-calculate every time when the filament is changed." msgstr "Volumes de purge : Calcul automatique à chaque changement de filament." msgid "If enabled, auto-calculate every time when filament is changed" -msgstr "" -"Si cette option est activée, le calcul s’effectue automatiquement à chaque " -"changement de filament." +msgstr "Si cette option est activée, le calcul s’effectue automatiquement à chaque changement de filament." msgid "Remember printer configuration" msgstr "Mémoriser la configuration de l’imprimante" -msgid "" -"If enabled, Orca will remember and switch filament/process configuration for " -"each printer automatically." -msgstr "" -"Si cette option est activée, Orca se souviendra de la configuration du " -"filament/processus pour chaque imprimante et la modifiera automatiquement." +msgid "If enabled, Orca will remember and switch filament/process configuration for each printer automatically." +msgstr "Si cette option est activée, Orca se souviendra de la configuration du filament/processus pour chaque imprimante et la modifiera automatiquement." msgid "Multi-device Management(Take effect after restarting Orca)." msgstr "Gestion multi-appareils (prend effet après le redémarrage d’Orca)." -msgid "" -"With this option enabled, you can send a task to multiple devices at the " -"same time and manage multiple devices." -msgstr "" -"Si cette option est activée, vous pouvez envoyer une tâche à plusieurs " -"appareils en même temps et gérer plusieurs appareils." +msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." +msgstr "Si cette option est activée, vous pouvez envoyer une tâche à plusieurs appareils en même temps et gérer plusieurs appareils." msgid "Auto arrange plate after cloning" msgstr "Arrangement automatique de la plaque après le clonage" @@ -6856,9 +6163,7 @@ msgid "Network" msgstr "Réseau" msgid "Auto sync user presets(Printer/Filament/Process)" -msgstr "" -"Synchronisation automatique des pré-réglages utilisateur (Imprimante/" -"Filament/Traitement)" +msgstr "Synchronisation automatique des pré-réglages utilisateur (Imprimante/Filament/Traitement)" msgid "User Sync" msgstr "Synchronisation utilisateur" @@ -6879,25 +6184,19 @@ msgid "Associate .3mf files to OrcaSlicer" msgstr "Associer les fichiers .3mf à Orca Slicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "" -"Si activé, définit Orca Slicer comme application par défaut pour ouvrir les " -"fichiers .3mf" +msgstr "Si activé, définit Orca Slicer comme application par défaut pour ouvrir les fichiers .3mf" msgid "Associate .stl files to OrcaSlicer" msgstr "Associer les fichiers .stl à Orca Slicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "" -"Si activé, définit Orca Slicer comme application par défaut pour ouvrir les " -"fichiers .stl" +msgstr "Si activé, définit Orca Slicer comme application par défaut pour ouvrir les fichiers .stl" msgid "Associate .step/.stp files to OrcaSlicer" msgstr "Associer les fichiers .step/.stp à Orca Slicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" -msgstr "" -"Si activé, définit Orca Slicer comme application par défaut pour ouvrir les " -"fichiers .step/.stp" +msgstr "Si activé, définit Orca Slicer comme application par défaut pour ouvrir les fichiers .step/.stp" msgid "Associate web links to OrcaSlicer" msgstr "Associer des liens web à OrcaSlicer" @@ -6915,17 +6214,13 @@ msgid "Clear my choice on the unsaved projects." msgstr "Efface mon choix sur les projets non enregistrés." msgid "No warnings when loading 3MF with modified G-codes" -msgstr "" -"Pas d'avertissement lors du chargement de 3MF avec des G-codes modifiés" +msgstr "Pas d'avertissement lors du chargement de 3MF avec des G-codes modifiés" msgid "Auto-Backup" msgstr "Sauvegarde automatique" -msgid "" -"Backup your project periodically for restoring from the occasional crash." -msgstr "" -"Sauvegardez votre projet périodiquement pour faciliter la restauration après " -"un plantage occasionnel." +msgid "Backup your project periodically for restoring from the occasional crash." +msgstr "Sauvegardez votre projet périodiquement pour faciliter la restauration après un plantage occasionnel." msgid "every" msgstr "chaque" @@ -7132,9 +6427,7 @@ msgid "Log Out" msgstr "Déconnexion" msgid "Slice all plate to obtain time and filament estimation" -msgstr "" -"Découpez toutes les couches pour obtenir une estimation du temps et du " -"filament" +msgstr "Découpez toutes les couches pour obtenir une estimation du temps et du filament" msgid "Packing project data into 3mf file" msgstr "Compression des données du projet dans un fichier 3mf" @@ -7146,8 +6439,7 @@ msgid "Jump to model publish web page" msgstr "Accéder à la page internet de publication des modèles" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "" -"Remarque : La préparation peut prendre plusieurs minutes. Veuillez patienter." +msgstr "Remarque : La préparation peut prendre plusieurs minutes. Veuillez patienter." msgid "Publish" msgstr "Publier" @@ -7186,9 +6478,7 @@ msgstr "Le préréglage \"%1%\" existe déjà." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "" -"Le préréglage \"%1%\" existe déjà et est incompatible avec l'imprimante " -"actuelle." +msgstr "Le préréglage \"%1%\" existe déjà et est incompatible avec l'imprimante actuelle." msgid "Please note that saving action will replace this preset" msgstr "Veuillez noter que l'action d'enregistrement remplacera ce préréglage" @@ -7209,9 +6499,7 @@ msgstr "L'imprimante \"%1%\" est sélectionnée avec le préréglage \"%2%\"" #, boost-format msgid "Please choose an action with \"%1%\" preset after saving." -msgstr "" -"Veuillez choisir une action avec le préréglage \"%1%\" après " -"l'enregistrement." +msgstr "Veuillez choisir une action avec le préréglage \"%1%\" après l'enregistrement." #, boost-format msgid "For \"%1%\", change \"%2%\" to \"%3%\" " @@ -7289,8 +6577,7 @@ msgid "Error code" msgstr "Code erreur" msgid "No login account, only printers in LAN mode are displayed" -msgstr "" -"Pas de connexion au cloud, seules les imprimantes en mode LAN sont affichées" +msgstr "Pas de connexion au cloud, seules les imprimantes en mode LAN sont affichées" msgid "Connecting to server" msgstr "Connexion au serveur" @@ -7302,115 +6589,61 @@ msgid "Synchronizing device information time out" msgstr "Expiration du délai de synchronisation des informations sur l'appareil" msgid "Cannot send the print job when the printer is updating firmware" -msgstr "" -"Impossible d'envoyer une tâche d'impression pendant la mise à jour du " -"firmware de l'imprimante" +msgstr "Impossible d'envoyer une tâche d'impression pendant la mise à jour du firmware de l'imprimante" -msgid "" -"The printer is executing instructions. Please restart printing after it ends" -msgstr "" -"L'imprimante exécute des instructions. Veuillez recommencer l'impression " -"après la fin de l'exécution." +msgid "The printer is executing instructions. Please restart printing after it ends" +msgstr "L'imprimante exécute des instructions. Veuillez recommencer l'impression après la fin de l'exécution." msgid "The printer is busy on other print job" msgstr "L'imprimante est occupée par un autre travail d'impression." #, c-format, boost-format -msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer " -"firmware to support AMS slot assignment." -msgstr "" -"Le filament %s dépasse le nombre d'emplacements AMS. Veuillez mettre à jour " -"le firmware de l'imprimante pour qu'il prenne en charge l'attribution des " -"emplacements AMS." +msgid "Filament %s exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." +msgstr "Le filament %s dépasse le nombre d'emplacements AMS. Veuillez mettre à jour le firmware de l'imprimante pour qu'il prenne en charge l'attribution des emplacements AMS." -msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware " -"to support AMS slot assignment." -msgstr "" -"Le nombre de filaments dépasse le nombre d'emplacements AMS. Veuillez mettre " -"à jour le firmware de l'imprimante pour qu'il prenne en charge l'attribution " -"des emplacements AMS." +msgid "Filament exceeds the number of AMS slots. Please update the printer firmware to support AMS slot assignment." +msgstr "Le nombre de filaments dépasse le nombre d'emplacements AMS. Veuillez mettre à jour le firmware de l'imprimante pour qu'il prenne en charge l'attribution des emplacements AMS." -msgid "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" -msgstr "" -"L'affectation des filaments aux emplacements de l'AMS a été réalisée. Vous " -"pouvez cliquer sur un filament ci-dessus pour modifier sa correspondance " -"avec l'emplacement AMS." +msgid "Filaments to AMS slots mappings have been established. You can click a filament above to change its mapping AMS slot" +msgstr "L'affectation des filaments aux emplacements de l'AMS a été réalisée. Vous pouvez cliquer sur un filament ci-dessus pour modifier sa correspondance avec l'emplacement AMS." -msgid "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" -msgstr "" -"Veuillez cliquer sur chaque filament ci-dessus pour indiquer son emplacement " -"AMS avant d'envoyer la tâche d'impression." +msgid "Please click each filament above to specify its mapping AMS slot before sending the print job" +msgstr "Veuillez cliquer sur chaque filament ci-dessus pour indiquer son emplacement AMS avant d'envoyer la tâche d'impression." #, c-format, boost-format -msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the " -"printer firmware to support AMS slot assignment." -msgstr "" -"Le filament %s ne correspond pas au filament de l'emplacement AMS %s. " -"Veuillez mettre à jour le firmware de l'imprimante pour qu'il prenne en " -"charge l'attribution des emplacements AMS." +msgid "Filament %s does not match the filament in AMS slot %s. Please update the printer firmware to support AMS slot assignment." +msgstr "Le filament %s ne correspond pas au filament de l'emplacement AMS %s. Veuillez mettre à jour le firmware de l'imprimante pour qu'il prenne en charge l'attribution des emplacements AMS." -msgid "" -"Filament does not match the filament in AMS slot. Please update the printer " -"firmware to support AMS slot assignment." -msgstr "" -"Le filament ne correspond pas au filament du slot AMS. Veuillez mettre à " -"jour le firmware de l'imprimante pour qu'il prenne en charge l'attribution " -"des emplacements AMS." +msgid "Filament does not match the filament in AMS slot. Please update the printer firmware to support AMS slot assignment." +msgstr "Le filament ne correspond pas au filament du slot AMS. Veuillez mettre à jour le firmware de l'imprimante pour qu'il prenne en charge l'attribution des emplacements AMS." -msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." -msgstr "" -"Le firmware de l’imprimante ne prend en charge que le mappage séquentiel du " -"filament => emplacement AMS." +msgid "The printer firmware only supports sequential mapping of filament => AMS slot." +msgstr "Le firmware de l’imprimante ne prend en charge que le mappage séquentiel du filament => emplacement AMS." msgid "An SD card needs to be inserted before printing." msgstr "Une carte SD doit être insérée avant l'impression." #, c-format, boost-format -msgid "" -"The selected printer (%s) is incompatible with the chosen printer profile in " -"the slicer (%s)." -msgstr "" -"L’imprimante sélectionnée (%s) est incompatible avec le profil d’imprimante " -"choisi dans le logiciel de découpe (%s)." +msgid "The selected printer (%s) is incompatible with the chosen printer profile in the slicer (%s)." +msgstr "L’imprimante sélectionnée (%s) est incompatible avec le profil d’imprimante choisi dans le logiciel de découpe (%s)." msgid "An SD card needs to be inserted to record timelapse." msgstr "Une carte SD doit être insérée pour enregistrer un timelapse." -msgid "" -"Cannot send the print job to a printer whose firmware is required to get " -"updated." -msgstr "" -"Impossible d'envoyer la tâche d'impression à une imprimante dont le firmware " -"doit être mis à jour." +msgid "Cannot send the print job to a printer whose firmware is required to get updated." +msgstr "Impossible d'envoyer la tâche d'impression à une imprimante dont le firmware doit être mis à jour." msgid "Cannot send the print job for empty plate" msgstr "Impossible d'envoyer une tâche d'impression d'un plateau vide." msgid "This printer does not support printing all plates" -msgstr "" -"Cette imprimante ne prend pas en charge l'impression de toutes les plaques" +msgstr "Cette imprimante ne prend pas en charge l'impression de toutes les plaques" -msgid "" -"When enable spiral vase mode, machines with I3 structure will not generate " -"timelapse videos." -msgstr "" -"Lorsque vous activez le mode vase, les machines avec une structure I3 ne " -"généreront pas de vidéos timelapse." +msgid "When enable spiral vase mode, machines with I3 structure will not generate timelapse videos." +msgstr "Lorsque vous activez le mode vase, les machines avec une structure I3 ne généreront pas de vidéos timelapse." -msgid "" -"Timelapse is not supported because Print sequence is set to \"By object\"." -msgstr "" -"La fonction Timelapse n'est pas prise en charge car la séquence d'impression " -"est réglée sur \"Par objet\"." +msgid "Timelapse is not supported because Print sequence is set to \"By object\"." +msgstr "La fonction Timelapse n'est pas prise en charge car la séquence d'impression est réglée sur \"Par objet\"." msgid "Errors" msgstr "Erreurs" @@ -7418,23 +6651,11 @@ msgstr "Erreurs" msgid "Please check the following:" msgstr "Veuillez vérifier les points suivants :" -msgid "" -"The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer " -"type for slicing." -msgstr "" -"Le type d'imprimante sélectionné lors de la génération du G-Code n'est pas " -"cohérent avec l'imprimante actuellement sélectionnée. Il est recommandé " -"d'utiliser le même type d'imprimante pour la découpe." +msgid "The printer type selected when generating G-Code is not consistent with the currently selected printer. It is recommended that you use the same printer type for slicing." +msgstr "Le type d'imprimante sélectionné lors de la génération du G-Code n'est pas cohérent avec l'imprimante actuellement sélectionnée. Il est recommandé d'utiliser le même type d'imprimante pour la découpe." -msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." -msgstr "" -"Il y a quelques filaments inconnus dans les association avec l'AMS. Veuillez " -"vérifier s'il s'agit des filaments nécessaires. S'ils sont corrects, cliquez " -"sur \"Confirmer\" pour lancer l'impression." +msgid "There are some unknown filaments in the AMS mappings. Please check whether they are the required filaments. If they are okay, press \"Confirm\" to start printing." +msgstr "Il y a quelques filaments inconnus dans les association avec l'AMS. Veuillez vérifier s'il s'agit des filaments nécessaires. S'ils sont corrects, cliquez sur \"Confirmer\" pour lancer l'impression." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7444,45 +6665,24 @@ msgstr "buse dans le préréglage : %s %s" msgid "nozzle memorized: %.2f %s" msgstr "buse mémorisée : %.2f %s" -msgid "" -"Your nozzle diameter in sliced file is not consistent with memorized nozzle. " -"If you changed your nozzle lately, please go to Device > Printer Parts to " -"change settings." -msgstr "" -"Le diamètre de votre buse dans le fichier découpé ne correspond pas à la " -"buse mémorisée. Si vous avez changé de buse récemment, veuillez aller dans " -"Périphérique > Pièces de l’imprimante pour modifier les paramètres." +msgid "Your nozzle diameter in sliced file is not consistent with memorized nozzle. If you changed your nozzle lately, please go to Device > Printer Parts to change settings." +msgstr "Le diamètre de votre buse dans le fichier découpé ne correspond pas à la buse mémorisée. Si vous avez changé de buse récemment, veuillez aller dans Périphérique > Pièces de l’imprimante pour modifier les paramètres." #, c-format, boost-format -msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" -msgstr "" -"L’impression d’un matériau à haute température (matériau %s) avec %s peut " -"endommager la buse." +msgid "Printing high temperature material(%s material) with %s may cause nozzle damage" +msgstr "L’impression d’un matériau à haute température (matériau %s) avec %s peut endommager la buse." msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "" -"Veuillez corriger l’erreur ci-dessus, sinon l’impression ne pourra pas se " -"poursuivre." +msgstr "Veuillez corriger l’erreur ci-dessus, sinon l’impression ne pourra pas se poursuivre." -msgid "" -"Please click the confirm button if you still want to proceed with printing." -msgstr "" -"Cliquez sur le bouton de confirmation si vous souhaitez continuer à imprimer." +msgid "Please click the confirm button if you still want to proceed with printing." +msgstr "Cliquez sur le bouton de confirmation si vous souhaitez continuer à imprimer." -msgid "" -"Connecting to the printer. Unable to cancel during the connection process." -msgstr "" -"Connexion à l’imprimante. Impossible d’annuler pendant le processus de " -"connexion." +msgid "Connecting to the printer. Unable to cancel during the connection process." +msgstr "Connexion à l’imprimante. Impossible d’annuler pendant le processus de connexion." -msgid "" -"Caution to use! Flow calibration on Textured PEI Plate may fail due to the " -"scattered surface." -msgstr "" -"Attention à l’utilisation ! La calibration du débit sur le plateau PEI " -"texturé double face peut échouer en raison de la surface texturée." +msgid "Caution to use! Flow calibration on Textured PEI Plate may fail due to the scattered surface." +msgstr "Attention à l’utilisation ! La calibration du débit sur le plateau PEI texturé double face peut échouer en raison de la surface texturée." msgid "Automatic flow calibration using Micro Lidar" msgstr "Calibration automatique du débit à l’aide du Micro-Lidar" @@ -7497,19 +6697,13 @@ msgid "Send to Printer SD card" msgstr "Envoyer sur la carte SD de l'imprimante" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "" -"Impossible d'envoyer la tâche d'impression lorsque la mise à niveau est en " -"cours." +msgstr "Impossible d'envoyer la tâche d'impression lorsque la mise à niveau est en cours." msgid "The selected printer is incompatible with the chosen printer presets." -msgstr "" -"L’imprimante sélectionnée est incompatible avec les préréglages d’imprimante " -"choisis." +msgstr "L’imprimante sélectionnée est incompatible avec les préréglages d’imprimante choisis." msgid "An SD card needs to be inserted before send to printer SD card." -msgstr "" -"Il est nécessaire d'insérer une carte MicroSD avant d'envoyer les données " -"vers l'imprimante." +msgstr "Il est nécessaire d'insérer une carte MicroSD avant d'envoyer les données vers l'imprimante." msgid "The printer is required to be in the same LAN as Orca Slicer." msgstr "L'imprimante doit être sur le même réseau local que OrcaSlicer." @@ -7554,8 +6748,7 @@ msgid "" "Please Find the Pin Code in Account page on printer screen,\n" " and type in the Pin Code below." msgstr "" -"Veuillez trouver le code pin dans la page Compte sur l’écran de " -"l’imprimante,\n" +"Veuillez trouver le code pin dans la page Compte sur l’écran de l’imprimante,\n" " et tapez le code pin ci-dessous." msgid "Can't find Pin Code?" @@ -7577,8 +6770,7 @@ msgid "Log in printer" msgstr "Connectez-vous à l'imprimante" msgid "Would you like to log in this printer with current account?" -msgstr "" -"Souhaitez-vous vous connecter à cette imprimante avec un compte courant ?" +msgstr "Souhaitez-vous vous connecter à cette imprimante avec un compte courant ?" msgid "Check the reason" msgstr "Vérifier le motif" @@ -7589,20 +6781,8 @@ msgstr "Lire et accepter" msgid "Terms and Conditions" msgstr "Termes et conditions" -msgid "" -"Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the termsand conditions.By clicking to agree to use your " -"Bambu Lab device, you agree to abide by the Privacy Policyand Terms of " -"Use(collectively, the \"Terms\"). If you do not comply with or agree to the " -"Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." -msgstr "" -"Nous vous remercions d'avoir acheté un produit Bambu Lab. Avant d'utiliser " -"votre appareil Bambu Lab, veuillez lire les conditions générales. En " -"cliquant pour confirmer que vous acceptez d'utiliser votre appareil Bambu " -"Lab, vous vous engagez à respecter la politique de confidentialité et les " -"conditions d'utilisation (collectivement, les \"conditions\"). Si vous ne " -"respectez pas ou n'acceptez pas la politique de confidentialité de Bambu " -"Lab, veuillez ne pas utiliser les produits et services de Bambu Lab." +msgid "Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, please read the termsand conditions.By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy Policyand Terms of Use(collectively, the \"Terms\"). If you do not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." +msgstr "Nous vous remercions d'avoir acheté un produit Bambu Lab. Avant d'utiliser votre appareil Bambu Lab, veuillez lire les conditions générales. En cliquant pour confirmer que vous acceptez d'utiliser votre appareil Bambu Lab, vous vous engagez à respecter la politique de confidentialité et les conditions d'utilisation (collectivement, les \"conditions\"). Si vous ne respectez pas ou n'acceptez pas la politique de confidentialité de Bambu Lab, veuillez ne pas utiliser les produits et services de Bambu Lab." msgid "and" msgstr "et" @@ -7611,46 +6791,17 @@ msgid "Privacy Policy" msgstr "Politique de Confidentialité" msgid "We ask for your help to improve everyone's printer" -msgstr "" -"Nous vous demandons de nous aider à améliorer l'imprimante de toute la " -"communauté" +msgstr "Nous vous demandons de nous aider à améliorer l'imprimante de toute la communauté" msgid "Statement about User Experience Improvement Program" -msgstr "" -"Déclaration sur le programme d'amélioration de l'expérience utilisateur" +msgstr "Déclaration sur le programme d'amélioration de l'expérience utilisateur" #, c-format, boost-format -msgid "" -"In the 3D Printing community, we learn from each other's successes and " -"failures to adjust our own slicing parameters and settings. %s follows the " -"same principle and uses machine learning to improve its performance from the " -"successes and failures of the vast number of prints by our users. We are " -"training %s to be smarter by feeding them the real-world data. If you are " -"willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." -msgstr "" -"Au sein de la communauté de l'impression 3D, nous apprenons des succès et " -"des échecs de chacun pour ajuster nos propres paramètres et réglages de " -"découpage. %s suit le même principe et utilise l'apprentissage automatique " -"pour améliorer ses performances en fonction des succès et des échecs du " -"grand nombre d'impressions effectuées par nos utilisateurs. Nous entraînons " -"%s à devenir plus intelligent en leur fournissant les données du monde réel. " -"Si vous le souhaitez, ce service accèdera aux informations de vos journaux " -"d'erreurs et de vos journaux d'utilisation, qui peuvent inclure des " -"informations décrites dans la Politique de confidentialité. Nous ne " -"collecterons aucune donnée personnelle permettant d'identifier une personne " -"directement ou indirectement, y compris, mais sans s'y limiter, les noms, " -"les adresses, les informations de paiement ou les numéros de téléphone. En " -"activant ce service, vous acceptez ces conditions et la déclaration " -"concernant la politique de confidentialité." +msgid "In the 3D Printing community, we learn from each other's successes and failures to adjust our own slicing parameters and settings. %s follows the same principle and uses machine learning to improve its performance from the successes and failures of the vast number of prints by our users. We are training %s to be smarter by feeding them the real-world data. If you are willing, this service will access information from your error logs and usage logs, which may include information described in Privacy Policy. We will not collect any Personal Data by which an individual can be identified directly or indirectly, including without limitation names, addresses, payment information, or phone numbers. By enabling this service, you agree to these terms and the statement about Privacy Policy." +msgstr "Au sein de la communauté de l'impression 3D, nous apprenons des succès et des échecs de chacun pour ajuster nos propres paramètres et réglages de découpage. %s suit le même principe et utilise l'apprentissage automatique pour améliorer ses performances en fonction des succès et des échecs du grand nombre d'impressions effectuées par nos utilisateurs. Nous entraînons %s à devenir plus intelligent en leur fournissant les données du monde réel. Si vous le souhaitez, ce service accèdera aux informations de vos journaux d'erreurs et de vos journaux d'utilisation, qui peuvent inclure des informations décrites dans la Politique de confidentialité. Nous ne collecterons aucune donnée personnelle permettant d'identifier une personne directement ou indirectement, y compris, mais sans s'y limiter, les noms, les adresses, les informations de paiement ou les numéros de téléphone. En activant ce service, vous acceptez ces conditions et la déclaration concernant la politique de confidentialité." msgid "Statement on User Experience Improvement Plan" -msgstr "" -"Déclaration concernant le plan d'amélioration de l'expérience utilisateur" +msgstr "Déclaration concernant le plan d'amélioration de l'expérience utilisateur" msgid "Log in successful." msgstr "Connexion réussie." @@ -7665,9 +6816,7 @@ msgid "Please log in first." msgstr "S'il vous plait Connectez-vous d'abord." msgid "There was a problem connecting to the printer. Please try again." -msgstr "" -"Un problème est survenu lors de la connexion à l'imprimante. Veuillez " -"réessayer." +msgstr "Un problème est survenu lors de la connexion à l'imprimante. Veuillez réessayer." msgid "Failed to log out." msgstr "Échec de la déconnexion." @@ -7684,37 +6833,23 @@ msgid "Search in preset" msgstr "Rechercher dans le préréglage" msgid "Click to reset all settings to the last saved preset." -msgstr "" -"Cliquez pour rétablir tous les paramètres au dernier préréglage enregistré." +msgstr "Cliquez pour rétablir tous les paramètres au dernier préréglage enregistré." -msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" -msgstr "" -"Une tour de purge est requise pour le mode Timeplase fluide. Il peut y avoir " -"des défauts sur le modèle sans tour de purge. Êtes-vous sûr de vouloir la " -"désactiver ?" +msgid "Prime tower is required for smooth timeplase. There may be flaws on the model without prime tower. Are you sure you want to disable prime tower?" +msgstr "Une tour de purge est requise pour le mode Timeplase fluide. Il peut y avoir des défauts sur le modèle sans tour de purge. Êtes-vous sûr de vouloir la désactiver ?" -msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" -msgstr "" -"Une tour de purge est requise pour un mode timelapse fluide. Il peut y avoir " -"des défauts sur le modèle sans tour de purge. Voulez-vous activer la " -"désactiver?" +msgid "Prime tower is required for smooth timelapse. There may be flaws on the model without prime tower. Do you want to enable prime tower?" +msgstr "Une tour de purge est requise pour un mode timelapse fluide. Il peut y avoir des défauts sur le modèle sans tour de purge. Voulez-vous activer la désactiver?" msgid "Still print by object?" msgstr "Vous imprimez toujours par objet ?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller " -"support volume but weaker strength.\n" +"We have added an experimental style \"Tree Slim\" that features smaller support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" -"Nous avons ajouté un style expérimental « Arborescent Fin » qui offre un " -"volume de support plus petit mais également une solidité plus faible.\n" -"Nous recommandons de l'utiliser avec : 0 couches d'interface, 0 distance " -"supérieure, 2 parois." +"Nous avons ajouté un style expérimental « Arborescent Fin » qui offre un volume de support plus petit mais également une solidité plus faible.\n" +"Nous recommandons de l'utiliser avec : 0 couches d'interface, 0 distance supérieure, 2 parois." msgid "" "Change these settings automatically? \n" @@ -7725,36 +6860,18 @@ msgstr "" "Oui - Modifiez ces paramètres automatiquement\n" "Non - Ne modifiez pas ces paramètres pour moi" -msgid "" -"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." -msgstr "" -"Pour les styles \"Arborescent fort\" et \"Arborescent Hybride\", nous " -"recommandons les réglages suivants : au moins 2 couches d'interface, au " -"moins 0,1 mm de distance entre le haut et le z ou l'utilisation de matériaux " -"de support sur l'interface." +msgid "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following settings: at least 2 interface layers, at least 0.1mm top z distance or using support materials on interface." +msgstr "Pour les styles \"Arborescent fort\" et \"Arborescent Hybride\", nous recommandons les réglages suivants : au moins 2 couches d'interface, au moins 0,1 mm de distance entre le haut et le z ou l'utilisation de matériaux de support sur l'interface." msgid "" -"When using support material for the support interface, We recommend the " -"following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable " -"independent support layer height" +"When using support material for the support interface, We recommend the following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable independent support layer height" msgstr "" -"Lorsque vous utilisez du matériel de support pour l'interface de support, " -"nous vous recommandons d'utiliser les paramètres suivants :\n" -"Distance Z supérieure nulle, espacement d'interface nul, motif concentrique " -"et désactivation de la hauteur indépendante de la couche de support" +"Lorsque vous utilisez du matériel de support pour l'interface de support, nous vous recommandons d'utiliser les paramètres suivants :\n" +"Distance Z supérieure nulle, espacement d'interface nul, motif concentrique et désactivation de la hauteur indépendante de la couche de support" -msgid "" -"Enabling this option will modify the model's shape. If your print requires " -"precise dimensions or is part of an assembly, it's important to double-check " -"whether this change in geometry impacts the functionality of your print." -msgstr "" -"L’activation de cette option modifie la forme du modèle. Si votre impression " -"nécessite des dimensions précises ou fait partie d’un assemblage, il est " -"important de vérifier si ce changement de géométrie a un impact sur la " -"fonctionnalité de votre impression." +msgid "Enabling this option will modify the model's shape. If your print requires precise dimensions or is part of an assembly, it's important to double-check whether this change in geometry impacts the functionality of your print." +msgstr "L’activation de cette option modifie la forme du modèle. Si votre impression nécessite des dimensions précises ou fait partie d’un assemblage, il est important de vérifier si ce changement de géométrie a un impact sur la fonctionnalité de votre impression." msgid "Are you sure you want to enable this option?" msgstr "Êtes-vous sûr de vouloir activer cette option ?" @@ -7767,13 +6884,8 @@ msgstr "" "Elle sera définie à min_layer_height\n" "\n" -msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " -"height limits ,this may cause printing quality issues." -msgstr "" -"La hauteur de la couche dépasse la limite fixée dans Paramètres de " -"l’imprimante -> Extrudeur -> Limites de la hauteur de la couche, ce qui peut " -"entraîner des problèmes de qualité d’impression." +msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits ,this may cause printing quality issues." +msgstr "La hauteur de la couche dépasse la limite fixée dans Paramètres de l’imprimante -> Extrudeur -> Limites de la hauteur de la couche, ce qui peut entraîner des problèmes de qualité d’impression." msgid "Adjust to the set range automatically? \n" msgstr "S’ajuster automatiquement à la plage définie ? \n" @@ -7784,41 +6896,18 @@ msgstr "Ajuster" msgid "Ignore" msgstr "Ignorer" -msgid "" -"Experimental feature: Retracting and cutting off the filament at a greater " -"distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other " -"printing complications." -msgstr "" -"Fonction expérimentale : Rétracter et couper le filament à une plus grande " -"distance lors des changements de filament afin de minimiser le rinçage. Bien " -"que cela puisse réduire considérablement le rinçage, cela peut également " -"augmenter le risque de bouchage des buses ou d’autres complications " -"d’impression." +msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush.Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." +msgstr "Fonction expérimentale : Rétracter et couper le filament à une plus grande distance lors des changements de filament afin de minimiser le rinçage. Bien que cela puisse réduire considérablement le rinçage, cela peut également augmenter le risque de bouchage des buses ou d’autres complications d’impression." + +msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush.Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications.Please use with the latest printer firmware." +msgstr "Fonction expérimentale : Rétracter et couper le filament à une plus grande distance lors des changements de filament afin de minimiser l’affleurement.Bien que cela puisse réduire sensiblement l’affleurement, cela peut également augmenter le risque d’obstruction des buses ou d’autres complications d’impression.Veuillez utiliser le dernier micrologiciel de l’imprimante." msgid "" -"Experimental feature: Retracting and cutting off the filament at a greater " -"distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other printing " -"complications.Please use with the latest printer firmware." +"When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe Tower\" \n" +"by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" -"Fonction expérimentale : Rétracter et couper le filament à une plus grande " -"distance lors des changements de filament afin de minimiser l’affleurement." -"Bien que cela puisse réduire sensiblement l’affleurement, cela peut " -"également augmenter le risque d’obstruction des buses ou d’autres " -"complications d’impression.Veuillez utiliser le dernier micrologiciel de " -"l’imprimante." - -msgid "" -"When recording timelapse without toolhead, it is recommended to add a " -"\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." -msgstr "" -"Lorsque vous enregistrez un timelapse sans tête d’outil, il est recommandé " -"d’ajouter une \"Tour d’essuyage timelapse\".\n" -"en faisant un clic droit sur un emplacement vide sur le plateau et en " -"choisissant \"Ajouter Primitive\"-> \"Tour d’essuyage timelapse\"." +"Lorsque vous enregistrez un timelapse sans tête d’outil, il est recommandé d’ajouter une \"Tour d’essuyage timelapse\".\n" +"en faisant un clic droit sur un emplacement vide sur le plateau et en choisissant \"Ajouter Primitive\"-> \"Tour d’essuyage timelapse\"." msgid "Line width" msgstr "Largeur de ligne" @@ -7856,15 +6945,8 @@ msgstr "Autres couches" msgid "Overhang speed" msgstr "Vitesse de surplomb" -msgid "" -"This is the speed for various overhang degrees. Overhang degrees are " -"expressed as a percentage of line width. 0 speed means no slowing down for " -"the overhang degree range and wall speed is used" -msgstr "" -"Il s'agit de la vitesse pour différents degrés de surplomb. Les degrés de " -"surplomb sont exprimés en pourcentage de la largeur de la ligne. 0 vitesse " -"signifie qu'il n'y a pas de ralentissement pour la plage de degrés du " -"surplomb et que la vitesse par défaut des périmètres est utilisée" +msgid "This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used" +msgstr "Il s'agit de la vitesse pour différents degrés de surplomb. Les degrés de surplomb sont exprimés en pourcentage de la largeur de la ligne. 0 vitesse signifie qu'il n'y a pas de ralentissement pour la plage de degrés du surplomb et que la vitesse par défaut des périmètres est utilisée" msgid "Bridge" msgstr "Pont" @@ -7923,20 +7005,12 @@ msgstr "Fréquent" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time " -"estimation." +"Please remove it, or will beat G-code visualization and printing time estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time " -"estimation." -msgstr[0] "" -"La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " -"ou il battra la visualisation du G-code et l'estimation du temps " -"d'impression." -msgstr[1] "" -"La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " -"ou il battra la visualisation du G-code et l'estimation du temps " -"d'impression." +"Please remove them, or will beat G-code visualization and printing time estimation." +msgstr[0] "La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, ou il battra la visualisation du G-code et l'estimation du temps d'impression." +msgstr[1] "La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, ou il battra la visualisation du G-code et l'estimation du temps d'impression." msgid "Reserved keywords found" msgstr "Mots clés réservés trouvés" @@ -7954,9 +7028,7 @@ msgid "Recommended nozzle temperature" msgstr "Température de buse recommandée" msgid "Recommended nozzle temperature range of this filament. 0 means no set" -msgstr "" -"Plage de température de buse recommandée pour ce filament. 0 signifie pas " -"d'ensemble" +msgstr "Plage de température de buse recommandée pour ce filament. 0 signifie pas d'ensemble" msgid "Flow ratio and Pressure Advance" msgstr "Rapport de débit et avance de pression" @@ -7976,47 +7048,26 @@ msgstr "Température de la buse lors de l'impression" msgid "Cool plate" msgstr "Plaque Cool plate" -msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" -msgstr "" -"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool " -"plate\") est installé. Une valeur à 0 signifie que ce filament ne peut pas " -"être imprimé sur le plateau froid." +msgid "Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate" +msgstr "Il s'agit de la température du plateau lorsque le plateau froid (\"Cool plate\") est installé. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur le plateau froid." msgid "Engineering plate" msgstr "Plaque Engineering" -msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the " -"filament does not support to print on the Engineering Plate" -msgstr "" -"Il s'agit de la température du plateau lorsque le plaque Engineering est " -"installée. Une valeur à 0 signifie que ce filament ne peut pas être imprimé " -"sur le plateau Engineering." +msgid "Bed temperature when engineering plate is installed. Value 0 means the filament does not support to print on the Engineering Plate" +msgstr "Il s'agit de la température du plateau lorsque le plaque Engineering est installée. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur le plateau Engineering." msgid "Smooth PEI Plate / High Temp Plate" msgstr "Plateau PEI lisse / Plateau haute température" -msgid "" -"Bed temperature when Smooth PEI Plate/High temperature plate is installed. " -"Value 0 means the filament does not support to print on the Smooth PEI Plate/" -"High Temp Plate" -msgstr "" -"Température du plateau lorsque le Plateau PEI lisse / haute température est " -"installé. Une valeur à 0 signifie que le filament ne prend pas en charge " -"l'impression sur le plateau PEI lisse/haute température" +msgid "Bed temperature when Smooth PEI Plate/High temperature plate is installed. Value 0 means the filament does not support to print on the Smooth PEI Plate/High Temp Plate" +msgstr "Température du plateau lorsque le Plateau PEI lisse / haute température est installé. Une valeur à 0 signifie que le filament ne prend pas en charge l'impression sur le plateau PEI lisse/haute température" msgid "Textured PEI Plate" msgstr "Plaque PEI texturée" -msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" -msgstr "" -"Température du plateau lorsque la plaque PEI texturée est installée. La " -"valeur 0 signifie que le filament n'est pas supporté par la plaque PEI " -"texturée" +msgid "Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not support to print on the Textured PEI Plate" +msgstr "Température du plateau lorsque la plaque PEI texturée est installée. La valeur 0 signifie que le filament n'est pas supporté par la plaque PEI texturée" msgid "Volumetric speed limitation" msgstr "Limitation de vitesse volumétrique" @@ -8033,28 +7084,14 @@ msgstr "Ventilateur de refroidissement des pièces" msgid "Min fan speed threshold" msgstr "Seuil de vitesse mini du ventilateur" -msgid "" -"Part cooling fan speed will start to run at min speed when the estimated " -"layer time is no longer than the layer time in setting. When layer time is " -"shorter than threshold, fan speed is interpolated between the minimum and " -"maximum fan speed according to layer printing time" -msgstr "" -"La vitesse du ventilateur de refroidissement des pièces commencera à " -"fonctionner à la vitesse minimale lorsque le temps de couche estimé n'est " -"pas supérieur au temps de couche dans le réglage. Lorsque le temps de couche " -"est inférieur au seuil, la vitesse du ventilateur est interpolée entre la " -"vitesse minimale et maximale du ventilateur en fonction du temps " -"d'impression de la couche" +msgid "Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between the minimum and maximum fan speed according to layer printing time" +msgstr "La vitesse du ventilateur de refroidissement des pièces commencera à fonctionner à la vitesse minimale lorsque le temps de couche estimé n'est pas supérieur au temps de couche dans le réglage. Lorsque le temps de couche est inférieur au seuil, la vitesse du ventilateur est interpolée entre la vitesse minimale et maximale du ventilateur en fonction du temps d'impression de la couche" msgid "Max fan speed threshold" msgstr "Seuil de vitesse maximale du ventilateur" -msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the setting value" -msgstr "" -"La vitesse du ventilateur de refroidissement des pièces sera maximale " -"lorsque le temps de couche estimé est plus court que la valeur de réglage" +msgid "Part cooling fan speed will be max when the estimated layer time is shorter than the setting value" +msgstr "La vitesse du ventilateur de refroidissement des pièces sera maximale lorsque le temps de couche estimé est plus court que la valeur de réglage" msgid "Auxiliary part cooling fan" msgstr "Ventilateur de refroidissement auxiliaire" @@ -8078,16 +7115,13 @@ msgid "Wipe tower parameters" msgstr "Paramètres de la tour d’essuyage" msgid "Toolchange parameters with single extruder MM printers" -msgstr "" -"Paramètres de changement d'outil avec les imprimantes MM à extrudeur unique" +msgstr "Paramètres de changement d'outil avec les imprimantes MM à extrudeur unique" msgid "Ramming settings" msgstr "Paramètres de pilonnage" msgid "Toolchange parameters with multi extruder MM printers" -msgstr "" -"Paramètres de changement d'outil pour les imprimantes MM à extrudeurs " -"multiples" +msgstr "Paramètres de changement d'outil pour les imprimantes MM à extrudeurs multiples" msgid "Printable space" msgstr "Espace imprimable" @@ -8172,13 +7206,11 @@ msgstr "Nombre d’extrudeurs de l’imprimante." msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder " -"nozzle diameter value?" +"Do you want to change the diameter for all extruders to first extruder nozzle diameter value?" msgstr "" "Extrudeur unique multi-matériaux est sélectionné, \n" "et tous les extrudeurs doivent avoir le même diamètre.\n" -"Souhaitez-vous modifier le diamètre de tous les extrudeurs pour qu’il " -"corresponde à la première valeur du diamètre de la buse de l’extrudeur ?" +"Souhaitez-vous modifier le diamètre de tous les extrudeurs pour qu’il corresponde à la première valeur du diamètre de la buse de l’extrudeur ?" msgid "Nozzle diameter" msgstr "Diamètre de la buse" @@ -8189,13 +7221,8 @@ msgstr "Tour d’essuyage" msgid "Single extruder multimaterial parameters" msgstr "Paramètres multi-matériaux pour extrudeur unique" -msgid "" -"This is a single extruder multimaterial printer, diameters of all extruders " -"will be set to the new value. Do you want to proceed?" -msgstr "" -"Il s’agit d’une imprimante mono extrudeur multimatériaux, les diamètres de " -"tous les extrudeurs seront réglés sur la nouvelle valeur. Voulez-vous " -"continuer ?" +msgid "This is a single extruder multimaterial printer, diameters of all extruders will be set to the new value. Do you want to proceed?" +msgstr "Il s’agit d’une imprimante mono extrudeur multimatériaux, les diamètres de tous les extrudeurs seront réglés sur la nouvelle valeur. Voulez-vous continuer ?" msgid "Layer height limits" msgstr "Limites de hauteur de couche" @@ -8211,8 +7238,7 @@ msgid "" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" -"L’option Essuyage n’est pas disponible lors de l’utilisation du mode " -"Rétraction Firmware.\n" +"L’option Essuyage n’est pas disponible lors de l’utilisation du mode Rétraction Firmware.\n" "\n" "Voulez-vous désactiver cette option pour activer la Rétraction Firmware ?" @@ -8223,17 +7249,11 @@ msgid "Detached" msgstr "Détaché" #, c-format, boost-format -msgid "" -"%d Filament Preset and %d Process Preset is attached to this printer. Those " -"presets would be deleted if the printer is deleted." -msgstr "" -"Le préréglage de filament %d et le préréglage de processus %d sont associés " -"à cette imprimante. Ces préréglages seront supprimés si l’imprimante est " -"supprimée." +msgid "%d Filament Preset and %d Process Preset is attached to this printer. Those presets would be deleted if the printer is deleted." +msgstr "Le préréglage de filament %d et le préréglage de processus %d sont associés à cette imprimante. Ces préréglages seront supprimés si l’imprimante est supprimée." msgid "Presets inherited by other presets can not be deleted!" -msgstr "" -"Les préréglages hérités d’autres préréglages ne peuvent pas être supprimés !" +msgstr "Les préréglages hérités d’autres préréglages ne peuvent pas être supprimés !" msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." @@ -8252,13 +7272,10 @@ msgstr[1] "Les préréglages suivants seront également supprimés." msgid "" "Are you sure to delete the selected preset? \n" -"If the preset corresponds to a filament currently in use on your printer, " -"please reset the filament information for that slot." +"If the preset corresponds to a filament currently in use on your printer, please reset the filament information for that slot." msgstr "" "Êtes-vous sûr de vouloir supprimer le préréglage sélectionné ? \n" -"Si le préréglage correspond à un filament actuellement utilisé sur votre " -"imprimante, veuillez réinitialiser les informations sur le filament pour cet " -"emplacement." +"Si le préréglage correspond à un filament actuellement utilisé sur votre imprimante, veuillez réinitialiser les informations sur le filament pour cet emplacement." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -8271,14 +7288,10 @@ msgid "Set" msgstr "Appliquer" msgid "Click to reset current value and attach to the global value." -msgstr "" -"Cliquez pour réinitialiser la valeur actuelle et l'attacher à la valeur " -"globale." +msgstr "Cliquez pour réinitialiser la valeur actuelle et l'attacher à la valeur globale." msgid "Click to drop current modify and reset to saved value." -msgstr "" -"Cliquez pour supprimer la modification actuelle et réinitialiser la valeur " -"enregistrée." +msgstr "Cliquez pour supprimer la modification actuelle et réinitialiser la valeur enregistrée." msgid "Process Settings" msgstr "Paramètres de traitement" @@ -8308,8 +7321,7 @@ msgid "Discard" msgstr "Ignorer" msgid "Click the right mouse button to display the full text." -msgstr "" -"Cliquez sur le bouton droit de la souris pour afficher le texte complet." +msgstr "Cliquez sur le bouton droit de la souris pour afficher le texte complet." msgid "All changes will not be saved" msgstr "Toutes les modifications ne seront pas enregistrées" @@ -8324,9 +7336,7 @@ msgid "Keep the selected options." msgstr "Conserver les options sélectionnées." msgid "Transfer the selected options to the newly selected preset." -msgstr "" -"Transférez les options sélectionnées vers le préréglage nouvellement " -"sélectionné." +msgstr "Transférez les options sélectionnées vers le préréglage nouvellement sélectionné." #, boost-format msgid "" @@ -8338,30 +7348,19 @@ msgstr "Enregistrez les options sélectionnées dans le préréglage \"%1%\"." msgid "" "Transfer the selected options to the newly selected preset \n" "\"%1%\"." -msgstr "" -"Transférez les options sélectionnées vers le préréglage nouvellement " -"sélectionné \"%1%\"." +msgstr "Transférez les options sélectionnées vers le préréglage nouvellement sélectionné \"%1%\"." #, boost-format msgid "Preset \"%1%\" contains the following unsaved changes:" -msgstr "" -"Le préréglage \"%1%\" contient les modifications non enregistrées suivantes :" +msgstr "Le préréglage \"%1%\" contient les modifications non enregistrées suivantes :" #, boost-format -msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" -msgstr "" -"Le préréglage \"%1%\" n'est pas compatible avec le nouveau profil " -"d'imprimante et contient les modifications non enregistrées suivantes :" +msgid "Preset \"%1%\" is not compatible with the new printer profile and it contains the following unsaved changes:" +msgstr "Le préréglage \"%1%\" n'est pas compatible avec le nouveau profil d'imprimante et contient les modifications non enregistrées suivantes :" #, boost-format -msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" -msgstr "" -"Le préréglage \"%1%\" n'est pas compatible avec le nouveau profil de " -"traitement et contient les modifications non enregistrées suivantes :" +msgid "Preset \"%1%\" is not compatible with the new process profile and it contains the following unsaved changes:" +msgstr "Le préréglage \"%1%\" n'est pas compatible avec le nouveau profil de traitement et contient les modifications non enregistrées suivantes :" #, boost-format msgid "You have changed some settings of preset \"%1%\". " @@ -8372,30 +7371,24 @@ msgid "" "You can save or discard the preset values you have modified." msgstr "" "\n" -"Vous pouvez enregistrer ou rejeter les valeurs prédéfinies que vous avez " -"modifiées." +"Vous pouvez enregistrer ou rejeter les valeurs prédéfinies que vous avez modifiées." msgid "" "\n" -"You can save or discard the preset values you have modified, or choose to " -"transfer the values you have modified to the new preset." +"You can save or discard the preset values you have modified, or choose to transfer the values you have modified to the new preset." msgstr "" "\n" -"Vous pouvez sauvegarder ou ignorer les valeurs de préréglage que vous avez " -"modifiées, ou choisir de transférer les valeurs que vous avez modifiées dans " -"le nouveau préréglage." +"Vous pouvez sauvegarder ou ignorer les valeurs de préréglage que vous avez modifiées, ou choisir de transférer les valeurs que vous avez modifiées dans le nouveau préréglage." msgid "You have previously modified your settings." msgstr "Vous avez déjà modifié vos réglages." msgid "" "\n" -"You can discard the preset values you have modified, or choose to transfer " -"the modified values to the new project" +"You can discard the preset values you have modified, or choose to transfer the modified values to the new project" msgstr "" "\n" -"Vous pouvez ignorer les valeurs prédéfinies que vous avez modifiées ou " -"choisir de transférer les valeurs modifiées dans le nouveau projet." +"Vous pouvez ignorer les valeurs prédéfinies que vous avez modifiées ou choisir de transférer les valeurs modifiées dans le nouveau projet." msgid "Extruders count" msgstr "Nombre d'extrudeurs" @@ -8412,31 +7405,21 @@ msgstr "Afficher tous les préréglages (y compris incompatibles)" msgid "Select presets to compare" msgstr "Sélectionnez les préréglages à comparer" -msgid "" -"You can only transfer to current active profile because it has been modified." -msgstr "" -"Le transfert vers le profil actif actuel n’est possible que s’il a été " -"modifié." +msgid "You can only transfer to current active profile because it has been modified." +msgstr "Le transfert vers le profil actif actuel n’est possible que s’il a été modifié." msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close " -"this dialog." +"Note: New modified presets will be selected in settings tabs after close this dialog." msgstr "" -"Transférer les options sélectionnées du préréglage de gauche vers celui de " -"droite.\n" -"Remarque : Les nouveaux préréglages modifiés seront sélectionnés dans les " -"onglets de réglage après la fermeture de cette boîte de dialogue." +"Transférer les options sélectionnées du préréglage de gauche vers celui de droite.\n" +"Remarque : Les nouveaux préréglages modifiés seront sélectionnés dans les onglets de réglage après la fermeture de cette boîte de dialogue." msgid "Transfer values from left to right" msgstr "Transférer les valeurs de gauche à droite" -msgid "" -"If enabled, this dialog can be used for transfer selected values from left " -"to right preset." -msgstr "" -"Si elle est activée, cette boîte de dialogue peut être utilisée pour " -"convertir les valeurs sélectionnées de gauche à droite." +msgid "If enabled, this dialog can be used for transfer selected values from left to right preset." +msgstr "Si elle est activée, cette boîte de dialogue peut être utilisée pour convertir les valeurs sélectionnées de gauche à droite." msgid "Add File" msgstr "Ajouter un Fichier" @@ -8480,8 +7463,7 @@ msgid "Configuration update" msgstr "Mise à jour de la configuration" msgid "A new configuration package available, Do you want to install it?" -msgstr "" -"Un nouveau package de configuration disponible, Voulez-vous l'installer ?" +msgstr "Un nouveau package de configuration disponible, Voulez-vous l'installer ?" msgid "Description:" msgstr "La description:" @@ -8490,24 +7472,20 @@ msgid "Configuration incompatible" msgstr "Configuration incompatible" msgid "the configuration package is incompatible with current application." -msgstr "" -"le package de configuration est incompatible avec l'application actuelle." +msgstr "le package de configuration est incompatible avec l'application actuelle." #, c-format, boost-format msgid "" "The configuration package is incompatible with current application.\n" "%s will update the configuration package, Otherwise it won't be able to start" -msgstr "" -"Le package de configuration est incompatible avec l'application actuelle. %s " -"mettra à jour le package de configuration, sinon il ne pourra pas démarrer" +msgstr "Le package de configuration est incompatible avec l'application actuelle. %s mettra à jour le package de configuration, sinon il ne pourra pas démarrer" #, c-format, boost-format msgid "Exit %s" msgstr "Sortir de %s" msgid "the Configuration package is incompatible with current APP." -msgstr "" -"le package de configuration est incompatible avec l'application actuelle." +msgstr "le package de configuration est incompatible avec l'application actuelle." msgid "Configuration updates" msgstr "Mises à jour de la configuration" @@ -8576,27 +7554,13 @@ msgid "Ramming customization" msgstr "Personnalisation du pilonnage" msgid "" -"Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"Ramming denotes the rapid extrusion just before a tool change in a single-extruder MM printer. Its purpose is to properly shape the end of the unloaded filament so it does not prevent insertion of the new filament and can itself be reinserted later. This phase is important and different materials can require different extrusion speeds to get the good shape. For this reason, the extrusion rates during ramming are adjustable.\n" "\n" -"This is an expert-level setting, incorrect adjustment will likely lead to " -"jams, extruder wheel grinding into filament etc." +"This is an expert-level setting, incorrect adjustment will likely lead to jams, extruder wheel grinding into filament etc." msgstr "" -"Le pilonnage désigne l’extrusion rapide juste avant un changement d’outil " -"sur une imprimante MM à extrudeur unique. Son but est de façonner " -"correctement l’extrémité du filament déchargé afin qu’il n’empêche pas " -"l’insertion du nouveau filament et puisse lui-même être réinséré plus tard. " -"Cette phase est importante et différents matériaux peuvent nécessiter " -"différentes vitesses d’extrusion pour obtenir la bonne forme. Pour cette " -"raison, les taux d’extrusion lors du pilonnage sont réglables.\n" +"Le pilonnage désigne l’extrusion rapide juste avant un changement d’outil sur une imprimante MM à extrudeur unique. Son but est de façonner correctement l’extrémité du filament déchargé afin qu’il n’empêche pas l’insertion du nouveau filament et puisse lui-même être réinséré plus tard. Cette phase est importante et différents matériaux peuvent nécessiter différentes vitesses d’extrusion pour obtenir la bonne forme. Pour cette raison, les taux d’extrusion lors du pilonnage sont réglables.\n" "\n" -"Il s’agit d’un réglage de niveau expert, un réglage incorrect entraînera " -"probablement des bourrages, des roues de l’extrudeur broyant le filament, " -"etc." +"Il s’agit d’un réglage de niveau expert, un réglage incorrect entraînera probablement des bourrages, des roues de l’extrudeur broyant le filament, etc." msgid "Total ramming time" msgstr "Durée totale de pilonnage" @@ -8622,13 +7586,8 @@ msgstr "Re-calculer" msgid "Flushing volumes for filament change" msgstr "Volumes de purge pour le changement de filament" -msgid "" -"Orca would re-calculate your flushing volumes everytime the filaments color " -"changed. You could disable the auto-calculate in Orca Slicer > Preferences" -msgstr "" -"Orca recalcule les volumes de purge à chaque fois que la couleur des " -"filaments change. Vous pouvez désactiver le calcul automatique dans Orca " -"Slicer > Préférences" +msgid "Orca would re-calculate your flushing volumes everytime the filaments color changed. You could disable the auto-calculate in Orca Slicer > Preferences" +msgstr "Orca recalcule les volumes de purge à chaque fois que la couleur des filaments change. Vous pouvez désactiver le calcul automatique dans Orca Slicer > Préférences" msgid "Flushing volume (mm³) for each filament pair." msgstr "Volume de purge (mm³) pour chaque paire de filaments." @@ -8659,44 +7618,20 @@ msgstr "De" msgid "To" msgstr "À" -msgid "" -"Windows Media Player is required for this task! Do you want to enable " -"'Windows Media Player' for your operation system?" -msgstr "" -"Windows Media Player est nécessaire pour cette tâche ! Voulez-vous activer " -"‘Windows Media Player’ pour votre système d’exploitation ?" +msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?" +msgstr "Windows Media Player est nécessaire pour cette tâche ! Voulez-vous activer ‘Windows Media Player’ pour votre système d’exploitation ?" -msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes " -"to re-register it. You will be promoted twice" -msgstr "" -"BambuSource n’a pas été correctement enregistré pour la lecture de médias ! " -"Appuyez sur Oui pour le réenregistrer. Vous recevrez deux fois la demande de " -"permission." +msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice" +msgstr "BambuSource n’a pas été correctement enregistré pour la lecture de médias ! Appuyez sur Oui pour le réenregistrer. Vous recevrez deux fois la demande de permission." -msgid "" -"Missing BambuSource component registered for media playing! Please re-" -"install BambuStutio or seek after-sales help." -msgstr "" -"Composant BambuSource manquant enregistré pour la lecture des médias ! " -"Veuillez réinstaller OrcaSlicer ou demander de l’aide au service après-vente." +msgid "Missing BambuSource component registered for media playing! Please re-install BambuStutio or seek after-sales help." +msgstr "Composant BambuSource manquant enregistré pour la lecture des médias ! Veuillez réinstaller OrcaSlicer ou demander de l’aide au service après-vente." -msgid "" -"Using a BambuSource from a different install, video play may not work " -"correctly! Press Yes to fix it." -msgstr "" -"Si vous utilisez une BambuSource provenant d’une autre installation, la " -"lecture de la vidéo peut ne pas fonctionner correctement ! Appuyez sur Oui " -"pour résoudre le problème." +msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it." +msgstr "Si vous utilisez une BambuSource provenant d’une autre installation, la lecture de la vidéo peut ne pas fonctionner correctement ! Appuyez sur Oui pour résoudre le problème." -msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to " -"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" -"libav packages, then restart Orca Slicer?)" -msgstr "" -"Il manque à votre système les codecs H.264 pour GStreamer, qui sont " -"nécessaires pour lire la vidéo. (Essayez d’installer les paquets " -"gstreamer1.0-plugins-bad ou gstreamer1.0-libav, puis redémarrez Orca Slicer)." +msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" +msgstr "Il manque à votre système les codecs H.264 pour GStreamer, qui sont nécessaires pour lire la vidéo. (Essayez d’installer les paquets gstreamer1.0-plugins-bad ou gstreamer1.0-libav, puis redémarrez Orca Slicer)." msgid "Bambu Network plug-in not detected." msgstr "Le plug-in Bambu Network n’a pas été détecté." @@ -8708,9 +7643,7 @@ msgid "Login" msgstr "Connexion" msgid "The configuration package is changed in previous Config Guide" -msgstr "" -"Le package de configuration est modifié dans le guide de configuration " -"précédent" +msgstr "Le package de configuration est modifié dans le guide de configuration précédent" msgid "Configuration package changed" msgstr "Package de configuration modifié" @@ -8722,22 +7655,19 @@ msgid "Objects list" msgstr "Liste des objets" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "" -"Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF." +msgstr "Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF." msgid "⌘+Shift+G" -msgstr "" +msgstr "⌘+Shift+G" msgid "Ctrl+Shift+G" -msgstr "" +msgstr "Ctrl+Shift+G" msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "" -"Afficher/Masquer la boîte de dialogue des paramètres des périphériques " -"3Dconnexion" +msgstr "Afficher/Masquer la boîte de dialogue des paramètres des périphériques 3Dconnexion" msgid "Switch table page" msgstr "Page du tableau de commutation" @@ -8766,14 +7696,8 @@ msgstr "Maj+A" msgid "Shift+R" msgstr "Maj+R" -msgid "" -"Auto orientates selected objects or all objects.If there are selected " -"objects, it just orientates the selected ones.Otherwise, it will orientates " -"all objects in the current disk." -msgstr "" -"Oriente automatiquement les objets sélectionnés ou tous les objets. S'il y a " -"des objets sélectionnés, il oriente uniquement ceux qui sont sélectionnés. " -"Sinon, il oriente tous les objets du disque actuel." +msgid "Auto orientates selected objects or all objects.If there are selected objects, it just orientates the selected ones.Otherwise, it will orientates all objects in the current disk." +msgstr "Oriente automatiquement les objets sélectionnés ou tous les objets. S'il y a des objets sélectionnés, il oriente uniquement ceux qui sont sélectionnés. Sinon, il oriente tous les objets du disque actuel." msgid "Shift+Tab" msgstr "Maj+Tab" @@ -8782,31 +7706,31 @@ msgid "Collapse/Expand the sidebar" msgstr "Réduire/développer la barre latérale" msgid "⌘+Any arrow" -msgstr "" +msgstr "⌘+Toute flèche" msgid "Movement in camera space" msgstr "Mouvement dans l'espace de la caméra" msgid "⌥+Left mouse button" -msgstr "" +msgstr "⌥+Bouton gauche de la souris" msgid "Select a part" msgstr "Sélectionner une pièce" msgid "⌘+Left mouse button" -msgstr "" +msgstr "⌘+Bouton gauche de la souris" msgid "Select multiple objects" msgstr "Sélectionnez tous les objets sur la plaque actuelle" msgid "Ctrl+Any arrow" -msgstr "" +msgstr "Ctrl+Toute flèche" msgid "Alt+Left mouse button" -msgstr "" +msgstr "Alt+Bouton gauche de la souris" msgid "Ctrl+Left mouse button" -msgstr "" +msgstr "Ctrl+Bouton gauche de la souris" msgid "Shift+Left mouse button" msgstr "Maj+Bouton gauche de la souris" @@ -8911,22 +7835,22 @@ msgid "Move: press to snap by 1mm" msgstr "Déplacer : appuyez pour aligner de 1 mm" msgid "⌘+Mouse wheel" -msgstr "" +msgstr "⌘+Molette de la souris" msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Peinture couleur : ajustez le rayon du stylet" msgid "⌥+Mouse wheel" -msgstr "" +msgstr "⌥+Molette de la souris" msgid "Support/Color Painting: adjust section position" msgstr "Support/Peinture couleur : ajuster la position de la section" msgid "Ctrl+Mouse wheel" -msgstr "" +msgstr "Ctrl+Molette de la souris" msgid "Alt+Mouse wheel" -msgstr "" +msgstr "Alt+Molette de la souris" msgid "Gizmo" msgstr "Gizmo" @@ -8938,15 +7862,13 @@ msgid "Delete objects, parts, modifiers " msgstr "Supprimer des objets, des pièces, des modificateurs " msgid "Select the object/part and press space to change the name" -msgstr "" -"Sélectionnez l'objet/la pièce et appuyez sur espace pour changer le nom" +msgstr "Sélectionnez l'objet/la pièce et appuyez sur espace pour changer le nom" msgid "Mouse click" msgstr "Clic de souris" msgid "Select the object/part and mouse click to change the name" -msgstr "" -"Sélectionnez l'objet/la pièce et cliquez avec la souris pour changer le nom" +msgstr "Sélectionnez l'objet/la pièce et cliquez avec la souris pour changer le nom" msgid "Objects List" msgstr "Liste d'objets" @@ -8958,12 +7880,10 @@ msgid "Vertical slider - Move active thumb Down" msgstr "Barre de défilement verticale - Déplacer le curseur actif vers le Bas" msgid "Horizontal slider - Move active thumb Left" -msgstr "" -"Barre de défilement horizontale - Déplacer le curseur actif vers la Gauche" +msgstr "Barre de défilement horizontale - Déplacer le curseur actif vers la Gauche" msgid "Horizontal slider - Move active thumb Right" -msgstr "" -"Barre de défilement horizontale - Déplacer le curseur actif vers la Droite" +msgstr "Barre de défilement horizontale - Déplacer le curseur actif vers la Droite" msgid "On/Off one layer mode of the vertical slider" msgstr "On/Off mode couche unique de la barre de défilement verticale" @@ -8993,16 +7913,12 @@ msgstr "informations de mise à jour de la version %s :" msgid "Network plug-in update" msgstr "Mise à jour du plug-in réseau" -msgid "" -"Click OK to update the Network plug-in when Orca Slicer launches next time." -msgstr "" -"Cliquez sur OK pour mettre à jour le plug-in réseau lors du prochain " -"démarrage de OrcaSlicer." +msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." +msgstr "Cliquez sur OK pour mettre à jour le plug-in réseau lors du prochain démarrage de OrcaSlicer." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" -msgstr "" -"Un nouveau plug-in réseau (%s) est disponible. Voulez-vous l'installer ?" +msgstr "Un nouveau plug-in réseau (%s) est disponible. Voulez-vous l'installer ?" msgid "New version of Orca Slicer" msgstr "Nouvelle version de OrcaSlicer" @@ -9055,18 +7971,11 @@ msgstr "Confirmation et mise à jour de la buse" msgid "LAN Connection Failed (Sending print file)" msgstr "Échec de la connexion au réseau local (envoi du fichier d'impression)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "" -"Étape 1, veuillez confirmer que OrcaSlicer et votre imprimante sont sur le " -"même réseau local." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "Étape 1, veuillez confirmer que OrcaSlicer et votre imprimante sont sur le même réseau local." -msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." -msgstr "" -"Étape 2, si l'adresse IP et le code d'accès ci-dessous sont différents des " -"valeurs actuelles de votre imprimante, corrigez-les." +msgid "Step 2, if the IP and Access Code below are different from the actual values on your printer, please correct them." +msgstr "Étape 2, si l'adresse IP et le code d'accès ci-dessous sont différents des valeurs actuelles de votre imprimante, corrigez-les." msgid "IP" msgstr "IP" @@ -9078,9 +7987,7 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "Où trouver l'adresse IP et le code d'accès de votre imprimante ?" msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Étape 3 : Effectuer un ping de l’adresse IP pour vérifier la perte de " -"paquets et la latence." +msgstr "Étape 3 : Effectuer un ping de l’adresse IP pour vérifier la perte de paquets et la latence." msgid "Test" msgstr "Tester" @@ -9125,32 +8032,14 @@ msgstr "La mise à jour a échoué" msgid "Updating successful" msgstr "Mise à jour réussie" -msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." -msgstr "" -"Êtes-vous sûr de vouloir effectuer la mise à jour ? Cela prendra environ 10 " -"minutes. Ne mettez pas l'imprimante hors tension durant la mise à jour." +msgid "Are you sure you want to update? This will take about 10 minutes. Do not turn off the power while the printer is updating." +msgstr "Êtes-vous sûr de vouloir effectuer la mise à jour ? Cela prendra environ 10 minutes. Ne mettez pas l'imprimante hors tension durant la mise à jour." -msgid "" -"An important update was detected and needs to be run before printing can " -"continue. Do you want to update now? You can also update later from 'Upgrade " -"firmware'." -msgstr "" -"Une mise à jour importante a été détectée et doit être exécutée avant de " -"pouvoir poursuivre l'impression. Voulez-vous effectuer la mise à jour " -"maintenant ? Vous pouvez également effectuer une mise à jour ultérieurement " -"à partir de \"Mettre à jour le firmware\"." +msgid "An important update was detected and needs to be run before printing can continue. Do you want to update now? You can also update later from 'Upgrade firmware'." +msgstr "Une mise à jour importante a été détectée et doit être exécutée avant de pouvoir poursuivre l'impression. Voulez-vous effectuer la mise à jour maintenant ? Vous pouvez également effectuer une mise à jour ultérieurement à partir de \"Mettre à jour le firmware\"." -msgid "" -"The firmware version is abnormal. Repairing and updating are required before " -"printing. Do you want to update now? You can also update later on printer or " -"update next time starting Orca." -msgstr "" -"La version du firmware est erronée. La réparation et la mise à jour sont " -"nécessaires avant l'impression. Voulez-vous effectuer la mise à jour " -"maintenant ? Vous pouvez également effectuer une mise à jour ultérieurement " -"depuis l'imprimante ou lors du prochain démarrage d'Orca Slicer." +msgid "The firmware version is abnormal. Repairing and updating are required before printing. Do you want to update now? You can also update later on printer or update next time starting Orca." +msgstr "La version du firmware est erronée. La réparation et la mise à jour sont nécessaires avant l'impression. Voulez-vous effectuer la mise à jour maintenant ? Vous pouvez également effectuer une mise à jour ultérieurement depuis l'imprimante ou lors du prochain démarrage d'Orca Slicer." msgid "Extension Board" msgstr "Carte d'Extension" @@ -9208,9 +8097,7 @@ msgid "Copying of file %1% to %2% failed: %3%" msgstr "Échec de la copie du fichier %1% vers %2% : %3%" msgid "Need to check the unsaved changes before configuration updates." -msgstr "" -"Besoin de vérifier les modifications non enregistrées avant les mises à jour " -"de configuration." +msgstr "Besoin de vérifier les modifications non enregistrées avant les mises à jour de configuration." msgid "Configuration package: " msgstr "Paquet de configuration : " @@ -9221,50 +8108,33 @@ msgstr " mis à jour en " msgid "Open G-code file:" msgstr "Ouvrir un fichier G-code :" -msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." -msgstr "" -"Un objet a une couche initiale vide et ne peut pas être imprimé. Veuillez " -"couper le bas ou activer les supports." +msgid "One object has empty initial layer and can't be printed. Please Cut the bottom or enable supports." +msgstr "Un objet a une couche initiale vide et ne peut pas être imprimé. Veuillez couper le bas ou activer les supports." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." -msgstr "" -"L'objet comporte des couches vides comprises entre %1% et %2% et ne peut pas " -"être imprimé." +msgstr "L'objet comporte des couches vides comprises entre %1% et %2% et ne peut pas être imprimé." #, boost-format msgid "Object: %1%" msgstr "Objet : %1%" -msgid "" -"Maybe parts of the object at these height are too thin, or the object has " -"faulty mesh" -msgstr "" -"Peut-être que certaines parties de l'objet à ces hauteurs sont trop fines ou " -"que l'objet a un maillage défectueux" +msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" +msgstr "Peut-être que certaines parties de l'objet à ces hauteurs sont trop fines ou que l'objet a un maillage défectueux" msgid "No object can be printed. Maybe too small" msgstr "Aucun objet ne peut être imprimé. Peut-être trop petit" -msgid "" -"Your print is very close to the priming regions. Make sure there is no " -"collision." -msgstr "" -"Votre impression est très proche des régions d’amorçage. Assurez-vous qu’il " -"n’y a pas de collision." +msgid "Your print is very close to the priming regions. Make sure there is no collision." +msgstr "Votre impression est très proche des régions d’amorçage. Assurez-vous qu’il n’y a pas de collision." msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" -msgstr "" -"Échec de la génération du G-code pour un G-code personnalisé non valide.\n" +msgstr "Échec de la génération du G-code pour un G-code personnalisé non valide.\n" msgid "Please check the custom G-code or use the default custom G-code." -msgstr "" -"Veuillez vérifier le G-code personnalisé ou utiliser le G-code personnalisé " -"par défaut." +msgstr "Veuillez vérifier le G-code personnalisé ou utiliser le G-code personnalisé par défaut." #, boost-format msgid "Generating G-code: layer %1%" @@ -9308,16 +8178,10 @@ msgstr "Plusieurs" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " -msgstr "" -"Échec du calcul de la largeur de ligne de %1%. Impossible d'obtenir la " -"valeur de \"%2%\" " +msgstr "Échec du calcul de la largeur de ligne de %1%. Impossible d'obtenir la valeur de \"%2%\" " -msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" -msgstr "" -"Espacement non valide fourni à Flow::with_spacing(), vérifiez la hauteur de " -"votre couche et la largeur d’extrusion" +msgid "Invalid spacing supplied to Flow::with_spacing(), check your layer height and extrusion width" +msgstr "Espacement non valide fourni à Flow::with_spacing(), vérifiez la hauteur de votre couche et la largeur d’extrusion" msgid "undefined error" msgstr "erreur non définie" @@ -9413,171 +8277,93 @@ msgid "write callback failed" msgstr "échec du rappel d'écriture" #, boost-format -msgid "" -"%1% is too close to exclusion area, there may be collisions when printing." -msgstr "" -"%1% est trop proche de la zone d'exclusion. Il peut y avoir des collisions " -"lors de l'impression." +msgid "%1% is too close to exclusion area, there may be collisions when printing." +msgstr "%1% est trop proche de la zone d'exclusion. Il peut y avoir des collisions lors de l'impression." #, boost-format msgid "%1% is too close to others, and collisions may be caused." -msgstr "" -"%1% est trop proche des autres, cela pourrait provoquer des collisions." +msgstr "%1% est trop proche des autres, cela pourrait provoquer des collisions." #, boost-format msgid "%1% is too tall, and collisions will be caused." msgstr "%1% est trop grand, cela pourrait provoquer des collisions." msgid " is too close to others, there may be collisions when printing." -msgstr "" -" est trop proche des autres; il peut y avoir des collisions lors de " -"l'impression." +msgstr " est trop proche des autres; il peut y avoir des collisions lors de l'impression." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "" -" est trop proche d'une zone d'exclusion, il peut y avoir des collisions lors " -"de l'impression." +msgstr " est trop proche d'une zone d'exclusion, il peut y avoir des collisions lors de l'impression." msgid "Prime Tower" msgstr "Tour de purge" msgid " is too close to others, and collisions may be caused.\n" -msgstr "" -" est trop proche des autres. Des collisions risquent d'être provoquées.\n" +msgstr " est trop proche des autres. Des collisions risquent d'être provoquées.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr "" -" est trop proche d'une zone d'exclusion. Cela va entraîner des collisions.\n" +msgstr " est trop proche d'une zone d'exclusion. Cela va entraîner des collisions.\n" -msgid "" -"Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" -msgstr "" -"Impossible d'imprimer plusieurs filaments qui ont une grande différence de " -"température ensemble. Sinon, l'extrudeur et la buse peuvent être bloquées ou " -"endommagées pendant l'impression" +msgid "Can not print multiple filaments which have large difference of temperature together. Otherwise, the extruder and nozzle may be blocked or damaged during printing" +msgstr "Impossible d'imprimer plusieurs filaments qui ont une grande différence de température ensemble. Sinon, l'extrudeur et la buse peuvent être bloquées ou endommagées pendant l'impression" msgid "No extrusions under current settings." msgstr "Aucune extrusion dans les paramètres actuels." -msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is " -"enabled." -msgstr "" -"Le mode fluide du timelapse n'est pas pris en charge lorsque le mode " -"d'impression « par objet » est activé." +msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." +msgstr "Le mode fluide du timelapse n'est pas pris en charge lorsque le mode d'impression « par objet » est activé." -msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." -msgstr "" -"Veuillez sélectionner la séquence d'impression \"Par objet\" pour imprimer " -"plusieurs objets en mode vase en spirale." +msgid "Please select \"By object\" print sequence to print multiple objects in spiral vase mode." +msgstr "Veuillez sélectionner la séquence d'impression \"Par objet\" pour imprimer plusieurs objets en mode vase en spirale." -msgid "" -"The spiral vase mode does not work when an object contains more than one " -"materials." -msgstr "" -"Le mode vase en spirale ne fonctionne pas lorsqu'un objet contient plusieurs " -"matériaux." +msgid "The spiral vase mode does not work when an object contains more than one materials." +msgstr "Le mode vase en spirale ne fonctionne pas lorsqu'un objet contient plusieurs matériaux." #, boost-format msgid "The object %1% exceeds the maximum build volume height." msgstr "L’objet %1% dépasse la hauteur maximale du volume d’impression." #, boost-format -msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." -msgstr "" -"Bien que l’objet %1% s’adapte lui-même au volume d’impression, sa dernière " -"couche dépasse la hauteur maximale du volume de construction." +msgid "While the object %1% itself fits the build volume, its last layer exceeds the maximum build volume height." +msgstr "Bien que l’objet %1% s’adapte lui-même au volume d’impression, sa dernière couche dépasse la hauteur maximale du volume de construction." -msgid "" -"You might want to reduce the size of your model or change current print " -"settings and retry." -msgstr "" -"Vous devez réduire la taille de votre modèle ou modifier les paramètres " -"d’impression actuels et réessayer." +msgid "You might want to reduce the size of your model or change current print settings and retry." +msgstr "Vous devez réduire la taille de votre modèle ou modifier les paramètres d’impression actuels et réessayer." msgid "Variable layer height is not supported with Organic supports." -msgstr "" -"La hauteur de couche variable n’est pas prise en charge avec les supports " -"organiques." +msgstr "La hauteur de couche variable n’est pas prise en charge avec les supports organiques." -msgid "" -"Different nozzle diameters and different filament diameters may not work " -"well when the prime tower is enabled. It's very experimental, so please " -"proceed with caution." -msgstr "" -"Différents diamètres de buses et de filaments peuvent ne pas fonctionner " -"correctement lorsque la tour d’amorçage est activée. Il s’agit d’un projet " -"très expérimental, il convient donc de procéder avec prudence." +msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." +msgstr "Différents diamètres de buses et de filaments peuvent ne pas fonctionner correctement lorsque la tour d’amorçage est activée. Il s’agit d’un projet très expérimental, il convient donc de procéder avec prudence." -msgid "" -"The Wipe Tower is currently only supported with the relative extruder " -"addressing (use_relative_e_distances=1)." -msgstr "" -"La tour d’essuyage n’est actuellement supportée qu’avec l’adressage relatif " -"des extrudeurs (use_relative_e_distances=1)." +msgid "The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)." +msgstr "La tour d’essuyage n’est actuellement supportée qu’avec l’adressage relatif des extrudeurs (use_relative_e_distances=1)." -msgid "" -"Ooze prevention is only supported with the wipe tower when " -"'single_extruder_multi_material' is off." -msgstr "" -"La prévention du suintement n’est possible qu’avec la tour d’essuyage " -"lorsque l’option ‘single_extruder_multi_material’ est désactivée." +msgid "Ooze prevention is only supported with the wipe tower when 'single_extruder_multi_material' is off." +msgstr "La prévention du suintement n’est possible qu’avec la tour d’essuyage lorsque l’option ‘single_extruder_multi_material’ est désactivée." -msgid "" -"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " -"RepRapFirmware and Repetier G-code flavors." -msgstr "" -"La tour principale n’est actuellement prise en charge que pour les versions " -"Marlin, RepRap/Sprinter, RepRapFirmware et Repetier G-code." +msgid "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, RepRapFirmware and Repetier G-code flavors." +msgstr "La tour principale n’est actuellement prise en charge que pour les versions Marlin, RepRap/Sprinter, RepRapFirmware et Repetier G-code." msgid "The prime tower is not supported in \"By object\" print." -msgstr "" -"La tour de purge n'est pas prise en charge dans l'impression \"Par objet\"." +msgstr "La tour de purge n'est pas prise en charge dans l'impression \"Par objet\"." -msgid "" -"The prime tower is not supported when adaptive layer height is on. It " -"requires that all objects have the same layer height." -msgstr "" -"La tour de purge n'est pas prise en charge lorsque la hauteur de couche " -"adaptative est activée. Cela nécessite que tous les objets aient la même " -"hauteur de couche." +msgid "The prime tower is not supported when adaptive layer height is on. It requires that all objects have the same layer height." +msgstr "La tour de purge n'est pas prise en charge lorsque la hauteur de couche adaptative est activée. Cela nécessite que tous les objets aient la même hauteur de couche." msgid "The prime tower requires \"support gap\" to be multiple of layer height" -msgstr "" -"La tour de purge nécessite que \"l'écart de support\" soit un multiple de la " -"hauteur de la couche" +msgstr "La tour de purge nécessite que \"l'écart de support\" soit un multiple de la hauteur de la couche" msgid "The prime tower requires that all objects have the same layer heights" -msgstr "" -"La tour de purge nécessite que tous les objets aient la même hauteur de " -"couche." +msgstr "La tour de purge nécessite que tous les objets aient la même hauteur de couche." -msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" -msgstr "" -"La tour de purge nécessite que tous les objets soient imprimés sur le même " -"nombre de couche de radeau." +msgid "The prime tower requires that all objects are printed over the same number of raft layers" +msgstr "La tour de purge nécessite que tous les objets soient imprimés sur le même nombre de couche de radeau." -msgid "" -"The prime tower requires that all objects are sliced with the same layer " -"heights." -msgstr "" -"La tour de purge nécessite que tous les objets soient découpés avec la même " -"hauteur de couche." +msgid "The prime tower requires that all objects are sliced with the same layer heights." +msgstr "La tour de purge nécessite que tous les objets soient découpés avec la même hauteur de couche." -msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" -msgstr "" -"La tour de purge n'est prise en charge que si tous les objets ont la même " -"hauteur de couche variable" +msgid "The prime tower is only supported if all objects have the same variable layer height" +msgstr "La tour de purge n'est prise en charge que si tous les objets ont la même hauteur de couche variable" msgid "Too small line width" msgstr "Largeur de ligne trop petite" @@ -9585,119 +8371,66 @@ msgstr "Largeur de ligne trop petite" msgid "Too large line width" msgstr "Largeur de ligne trop grande" -msgid "" -"The prime tower requires that support has the same layer height with object." -msgstr "" -"La tour de purge nécessite que le support ait la même hauteur de couche avec " -"l'objet." +msgid "The prime tower requires that support has the same layer height with object." +msgstr "La tour de purge nécessite que le support ait la même hauteur de couche avec l'objet." -msgid "" -"Organic support tree tip diameter must not be smaller than support material " -"extrusion width." -msgstr "" -"Le diamètre de la pointe des supports organiques ne doit pas être inférieur " -"à la largeur d’extrusion du matériau utilisé pour les supports." +msgid "Organic support tree tip diameter must not be smaller than support material extrusion width." +msgstr "Le diamètre de la pointe des supports organiques ne doit pas être inférieur à la largeur d’extrusion du matériau utilisé pour les supports." -msgid "" -"Organic support branch diameter must not be smaller than 2x support material " -"extrusion width." -msgstr "" -"Le diamètre des branches des supports organiques ne doit pas être inférieur " -"à 2 fois la largeur d’extrusion du matériau utilisé pour les supports." +msgid "Organic support branch diameter must not be smaller than 2x support material extrusion width." +msgstr "Le diamètre des branches des supports organiques ne doit pas être inférieur à 2 fois la largeur d’extrusion du matériau utilisé pour les supports." -msgid "" -"Organic support branch diameter must not be smaller than support tree tip " -"diameter." -msgstr "" -"Le diamètre des branches des supports organiques ne doit pas être inférieur " -"au diamètre de la pointe des supports." +msgid "Organic support branch diameter must not be smaller than support tree tip diameter." +msgstr "Le diamètre des branches des supports organiques ne doit pas être inférieur au diamètre de la pointe des supports." -msgid "" -"Support enforcers are used but support is not enabled. Please enable support." -msgstr "" -"Les forceurs de support sont utilisés mais le support n'est pas activé. " -"Veuillez activer les supports." +msgid "Support enforcers are used but support is not enabled. Please enable support." +msgstr "Les forceurs de support sont utilisés mais le support n'est pas activé. Veuillez activer les supports." msgid "Layer height cannot exceed nozzle diameter" msgstr "La hauteur de la couche ne peut pas dépasser le diamètre de la buse" -msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " -"layer_gcode." -msgstr "" -"L'extrusion relative de l'extrudeur nécessite de réinitialiser la position " -"de celui-ci à chaque couche pour éviter la perte de précision de la virgule " -"flottante. Ajouter \"G92 E0\" au G-code de changement de couche." +msgid "Relative extruder addressing requires resetting the extruder position at each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to layer_gcode." +msgstr "L'extrusion relative de l'extrudeur nécessite de réinitialiser la position de celui-ci à chaque couche pour éviter la perte de précision de la virgule flottante. Ajouter \"G92 E0\" au G-code de changement de couche." -msgid "" -"\"G92 E0\" was found in before_layer_gcode, which is incompatible with " -"absolute extruder addressing." -msgstr "" -"\"G92 E0\" a été trouvé dans le G-code avant le changement de couche, ce qui " -"est incompatible avec l’extrusion absolue de l’extrudeur." +msgid "\"G92 E0\" was found in before_layer_gcode, which is incompatible with absolute extruder addressing." +msgstr "\"G92 E0\" a été trouvé dans le G-code avant le changement de couche, ce qui est incompatible avec l’extrusion absolue de l’extrudeur." -msgid "" -"\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " -"extruder addressing." -msgstr "" -"\"G92 E0\" a été trouvé dans le G-code de changement de couche, ce qui est " -"incompatible avec l’extrusion absolue de l’extrudeur." +msgid "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute extruder addressing." +msgstr "\"G92 E0\" a été trouvé dans le G-code de changement de couche, ce qui est incompatible avec l’extrusion absolue de l’extrudeur." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" msgstr "Plaque %d : %s ne prend pas en charge le filament %s" -msgid "" -"Setting the jerk speed too low could lead to artifacts on curved surfaces" -msgstr "" -"Un réglage trop bas de la vitesse de saccade peut entraîner des artefacts " -"sur les surfaces courbes." +msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" +msgstr "Un réglage trop bas de la vitesse de saccade peut entraîner des artefacts sur les surfaces courbes." msgid "" -"The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/" -"machine_max_jerk_y).\n" -"Orca will automatically cap the jerk speed to ensure it doesn't surpass the " -"printer's capabilities.\n" -"You can adjust the maximum jerk setting in your printer's configuration to " -"get higher speeds." +"The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/machine_max_jerk_y).\n" +"Orca will automatically cap the jerk speed to ensure it doesn't surpass the printer's capabilities.\n" +"You can adjust the maximum jerk setting in your printer's configuration to get higher speeds." msgstr "" -"Le réglage du jerk dépasse le jerk maximum de l’imprimante " -"(machine_max_jerk_x/machine_max_jerk_y).\n" -"Orca plafonne automatiquement la vitesse de l’impulsion pour s’assurer " -"qu’elle ne dépasse pas les capacités de l’imprimante.\n" -"Vous pouvez ajuster le réglage du jerk maximum dans la configuration de " -"votre imprimante pour obtenir des vitesses plus élevées." +"Le réglage du jerk dépasse le jerk maximum de l’imprimante (machine_max_jerk_x/machine_max_jerk_y).\n" +"Orca plafonne automatiquement la vitesse de l’impulsion pour s’assurer qu’elle ne dépasse pas les capacités de l’imprimante.\n" +"Vous pouvez ajuster le réglage du jerk maximum dans la configuration de votre imprimante pour obtenir des vitesses plus élevées." msgid "" -"The acceleration setting exceeds the printer's maximum acceleration " -"(machine_max_acceleration_extruding).\n" -"Orca will automatically cap the acceleration speed to ensure it doesn't " -"surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your " -"printer's configuration to get higher speeds." +"The acceleration setting exceeds the printer's maximum acceleration (machine_max_acceleration_extruding).\n" +"Orca will automatically cap the acceleration speed to ensure it doesn't surpass the printer's capabilities.\n" +"You can adjust the machine_max_acceleration_extruding value in your printer's configuration to get higher speeds." msgstr "" -"Le paramètre d’accélération dépasse l’accélération maximale de l’imprimante " -"(machine_max_acceleration_extruding).\n" -"Orca limitera automatiquement la vitesse d’accélération pour s’assurer " -"qu’elle ne dépasse pas les capacités de l’imprimante.\n" -"Vous pouvez ajuster la valeur machine_max_acceleration_extruding dans la " -"configuration de votre imprimante pour obtenir des vitesses plus élevées." +"Le paramètre d’accélération dépasse l’accélération maximale de l’imprimante (machine_max_acceleration_extruding).\n" +"Orca limitera automatiquement la vitesse d’accélération pour s’assurer qu’elle ne dépasse pas les capacités de l’imprimante.\n" +"Vous pouvez ajuster la valeur machine_max_acceleration_extruding dans la configuration de votre imprimante pour obtenir des vitesses plus élevées." msgid "" -"The travel acceleration setting exceeds the printer's maximum travel " -"acceleration (machine_max_acceleration_travel).\n" -"Orca will automatically cap the travel acceleration speed to ensure it " -"doesn't surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_travel value in your printer's " -"configuration to get higher speeds." +"The travel acceleration setting exceeds the printer's maximum travel acceleration (machine_max_acceleration_travel).\n" +"Orca will automatically cap the travel acceleration speed to ensure it doesn't surpass the printer's capabilities.\n" +"You can adjust the machine_max_acceleration_travel value in your printer's configuration to get higher speeds." msgstr "" -"Le réglage de l’accélération de déplacement dépasse l’accélération de " -"déplacement maximale de l’imprimante (machine_max_acceleration_travel).\n" -"Orca plafonnera automatiquement la vitesse d’accélération du déplacement " -"pour s’assurer qu’elle ne dépasse pas les capacités de l’imprimante.\n" -"Vous pouvez ajuster la valeur machine_max_acceleration_travel dans la " -"configuration de votre imprimante pour obtenir des vitesses plus élevées." +"Le réglage de l’accélération de déplacement dépasse l’accélération de déplacement maximale de l’imprimante (machine_max_acceleration_travel).\n" +"Orca plafonnera automatiquement la vitesse d’accélération du déplacement pour s’assurer qu’elle ne dépasse pas les capacités de l’imprimante.\n" +"Vous pouvez ajuster la valeur machine_max_acceleration_travel dans la configuration de votre imprimante pour obtenir des vitesses plus élevées." msgid "Generating skirt & brim" msgstr "Génération jupe et bord" @@ -9717,15 +8450,8 @@ msgstr "Zone imprimable" msgid "Bed exclude area" msgstr "Zone d'exclusion de plateau" -msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front " -"left corner to cut filament during filament change. The area is expressed as " -"polygon by points in following format: \"XxY, XxY, ...\"" -msgstr "" -"Zone non imprimable dans le plan XY. Par exemple, les imprimantes de la " -"série X1 utilisent le coin avant gauche pour couper le filament lors du " -"changement de filament. La zone est exprimée sous forme de polygone par des " -"points au format suivant : \"XxY, XxY,... \"" +msgid "Unprintable area in XY plane. For example, X1 Series printers use the front left corner to cut filament during filament change. The area is expressed as polygon by points in following format: \"XxY, XxY, ...\"" +msgstr "Zone non imprimable dans le plan XY. Par exemple, les imprimantes de la série X1 utilisent le coin avant gauche pour couper le filament lors du changement de filament. La zone est exprimée sous forme de polygone par des points au format suivant : \"XxY, XxY,... \"" msgid "Bed custom texture" msgstr "Texture personnalisée du plateau" @@ -9736,36 +8462,20 @@ msgstr "Modèle de plateau personnalisé" msgid "Elephant foot compensation" msgstr "Compensation de l'effet patte d'éléphant" -msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" -msgstr "" -"Rétrécissez la couche initiale sur le plateau pour compenser l'effet de " -"patte d'éléphant" +msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" +msgstr "Rétrécissez la couche initiale sur le plateau pour compenser l'effet de patte d'éléphant" msgid "Elephant foot compensation layers" msgstr "Couches de compensation de la patte d'éléphant" -msgid "" -"The number of layers on which the elephant foot compensation will be active. " -"The first layer will be shrunk by the elephant foot compensation value, then " -"the next layers will be linearly shrunk less, up to the layer indicated by " -"this value." -msgstr "" -"Nombre de couches sur lesquelles la compensation de la patte d'éléphant sera " -"active. La première couche sera réduite de la valeur de compensation de la " -"patte d'éléphant, puis les couches suivantes seront réduites linéairement " -"moins, jusqu'à la couche indiquée par cette valeur." +msgid "The number of layers on which the elephant foot compensation will be active. The first layer will be shrunk by the elephant foot compensation value, then the next layers will be linearly shrunk less, up to the layer indicated by this value." +msgstr "Nombre de couches sur lesquelles la compensation de la patte d'éléphant sera active. La première couche sera réduite de la valeur de compensation de la patte d'éléphant, puis les couches suivantes seront réduites linéairement moins, jusqu'à la couche indiquée par cette valeur." msgid "layers" msgstr "couches" -msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and " -"more printing time" -msgstr "" -"Hauteur de découpe pour chaque couche. Une hauteur de couche plus petite " -"signifie plus de précision et plus de temps d'impression" +msgid "Slicing height for each layer. Smaller layer height means more accurate and more printing time" +msgstr "Hauteur de découpe pour chaque couche. Une hauteur de couche plus petite signifie plus de précision et plus de temps d'impression" msgid "Printable height" msgstr "Hauteur imprimable" @@ -9777,8 +8487,7 @@ msgid "Preferred orientation" msgstr "Orientation préférée" msgid "Automatically orient stls on the Z-axis upon initial import" -msgstr "" -"Orienter automatiquement les stls sur l’axe Z lors de l’importation initiale" +msgstr "Orienter automatiquement les stls sur l’axe Z lors de l’importation initiale" msgid "Printer preset names" msgstr "Noms des préréglages de l'imprimante" @@ -9787,46 +8496,25 @@ msgid "Use 3rd-party print host" msgstr "Utiliser un hôte d’impression tiers" msgid "Allow controlling BambuLab's printer through 3rd party print hosts" -msgstr "" -"Permettre le contrôle de l’imprimante de BambuLab par des hôtes d’impression " -"tiers" +msgstr "Permettre le contrôle de l’imprimante de BambuLab par des hôtes d’impression tiers" msgid "Hostname, IP or URL" msgstr "Nom d'hôte, adresse IP ou URL" -msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should " -"contain the hostname, IP address or URL of the printer host instance. Print " -"host behind HAProxy with basic auth enabled can be accessed by putting the " -"user name and password into the URL in the following format: https://" -"username:password@your-octopi-address/" -msgstr "" -"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce " -"champ doit contenir le nom d'hôte, l'adresse IP ou l'URL de l'instance hôte " -"de l'imprimante. L'hôte d'impression derrière HAProxy avec " -"l'authentification de base activée est accessible en saisissant le nom " -"d'utilisateur et le mot de passe dans l'URL au format suivant : https://" -"username:password@your-octopi-address/" +msgid "Orca Slicer can upload G-code files to a printer host. This field should contain the hostname, IP address or URL of the printer host instance. Print host behind HAProxy with basic auth enabled can be accessed by putting the user name and password into the URL in the following format: https://username:password@your-octopi-address/" +msgstr "Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ doit contenir le nom d'hôte, l'adresse IP ou l'URL de l'instance hôte de l'imprimante. L'hôte d'impression derrière HAProxy avec l'authentification de base activée est accessible en saisissant le nom d'utilisateur et le mot de passe dans l'URL au format suivant : https://username:password@your-octopi-address/" msgid "Device UI" msgstr "Interface utilisateur de l’appareil" -msgid "" -"Specify the URL of your device user interface if it's not same as print_host" -msgstr "" -"Spécifiez l’URL de l’interface utilisateur de votre appareil si elle n’est " -"pas identique à print_host" +msgid "Specify the URL of your device user interface if it's not same as print_host" +msgstr "Spécifiez l’URL de l’interface utilisateur de votre appareil si elle n’est pas identique à print_host" msgid "API Key / Password" msgstr "Clé API / Mot de passe" -msgid "" -"Orca Slicer can upload G-code files to a printer host. This field should " -"contain the API Key or the password required for authentication." -msgstr "" -"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce " -"champ doit contenir la clé API ou le mot de passe requis pour " -"l'authentification." +msgid "Orca Slicer can upload G-code files to a printer host. This field should contain the API Key or the password required for authentication." +msgstr "Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ doit contenir la clé API ou le mot de passe requis pour l'authentification." msgid "Name of the printer" msgstr "Nom de l'imprimante" @@ -9834,14 +8522,8 @@ msgstr "Nom de l'imprimante" msgid "HTTPS CA File" msgstr "Fichier HTTPS CA" -msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." -msgstr "" -"Un fichier de certificat CA personnalisé peut être spécifié pour les " -"connexions HTTPS OctoPrint, au format crt/pem. Si ce champ est laissé vide, " -"le référentiel de certificats OS CA par défaut est utilisé." +msgid "Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem format. If left blank, the default OS CA certificate repository is used." +msgstr "Un fichier de certificat CA personnalisé peut être spécifié pour les connexions HTTPS OctoPrint, au format crt/pem. Si ce champ est laissé vide, le référentiel de certificats OS CA par défaut est utilisé." msgid "User" msgstr "Utilisateur" @@ -9852,14 +8534,8 @@ msgstr "Mot de passe" msgid "Ignore HTTPS certificate revocation checks" msgstr "Ignorer les contrôles de révocation des certificats HTTPS" -msgid "" -"Ignore HTTPS certificate revocation checks in case of missing or offline " -"distribution points. One may want to enable this option for self signed " -"certificates if connection fails." -msgstr "" -"Ignorez les contrôles de révocation des certificats HTTPS en cas de points " -"de distribution manquants ou hors ligne. Il peut être utile d'activer cette " -"option pour les certificats auto-signés en cas d'échec de la connexion." +msgid "Ignore HTTPS certificate revocation checks in case of missing or offline distribution points. One may want to enable this option for self signed certificates if connection fails." +msgstr "Ignorez les contrôles de révocation des certificats HTTPS en cas de points de distribution manquants ou hors ligne. Il peut être utile d'activer cette option pour les certificats auto-signés en cas d'échec de la connexion." msgid "Names of presets related to the physical printer" msgstr "Noms des préréglages associés à l'imprimante physique" @@ -9877,24 +8553,13 @@ msgid "Avoid crossing wall" msgstr "Évitez de traverser les parois" msgid "Detour and avoid to travel across wall which may cause blob on surface" -msgstr "" -"Faire un détour et éviter de traverser la paroi, ce qui pourrait causer des " -"dépôts sur la surface" +msgstr "Faire un détour et éviter de traverser la paroi, ce qui pourrait causer des dépôts sur la surface" msgid "Avoid crossing wall - Max detour length" msgstr "Évitez de traverser les parois - Longueur maximale du détour" -msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the " -"detour distance is large than this value. Detour length could be specified " -"either as an absolute value or as percentage (for example 50%) of a direct " -"travel path. Zero to disable" -msgstr "" -"Distance de détour maximale pour éviter de traverser une paroi: l'imprimante " -"ne fera pas de détour si la distance de détour est supérieure à cette " -"valeur. La longueur du détour peut être spécifiée sous forme de valeur " -"absolue ou de pourcentage (par exemple 50 %) d'un trajet direct. Une valeur " -"de 0 désactivera cette option." +msgid "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is large than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable" +msgstr "Distance de détour maximale pour éviter de traverser une paroi: l'imprimante ne fera pas de détour si la distance de détour est supérieure à cette valeur. La longueur du détour peut être spécifiée sous forme de valeur absolue ou de pourcentage (par exemple 50 %) d'un trajet direct. Une valeur de 0 désactivera cette option." msgid "mm or %" msgstr "mm ou %" @@ -9902,39 +8567,20 @@ msgstr "mm ou %" msgid "Other layers" msgstr "Autres couches" -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" -msgstr "" -"Il s'agit de la température du plateau pour toutes les couches à l'exception " -"de la première. Une valeur à 0 signifie que ce filament ne peut pas être " -"imprimé sur le plateau froid (\"Cool plate\")." +msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Cool Plate" +msgstr "Il s'agit de la température du plateau pour toutes les couches à l'exception de la première. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur le plateau froid (\"Cool plate\")." msgid "°C" msgstr "°C" -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" -msgstr "" -"Il s'agit de la température du plateau pour toutes les couches à l'exception " -"de la première. Une valeur à 0 signifie que ce filament ne peut pas être " -"imprimé sur la plaque Engineering." +msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Engineering Plate" +msgstr "Il s'agit de la température du plateau pour toutes les couches à l'exception de la première. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur la plaque Engineering." -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" -msgstr "" -"Il s'agit de la température du plateau pour toutes les couches à l'exception " -"de la première. Une valeur à 0 signifie que ce filament ne peut pas être " -"imprimé sur le plateau haute température (\"High Temp plate\")." +msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the High Temp Plate" +msgstr "Il s'agit de la température du plateau pour toutes les couches à l'exception de la première. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur le plateau haute température (\"High Temp plate\")." -msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" -msgstr "" -"Température du plateau après la première couche. 0 signifie que le filament " -"n'est pas supporté par la plaque PEI texturée." +msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the Textured PEI Plate" +msgstr "Température du plateau après la première couche. 0 signifie que le filament n'est pas supporté par la plaque PEI texturée." msgid "Initial layer" msgstr "Couche initiale" @@ -9942,36 +8588,17 @@ msgstr "Couche initiale" msgid "Initial layer bed temperature" msgstr "Température du plateau lors de la couche initiale" -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Cool Plate" -msgstr "" -"Il s'agit de la température du plateau pour la première couche. Une valeur à " -"0 signifie que ce filament ne peut pas être imprimé sur le plateau froid " -"(\"Cool plate\")." +msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Cool Plate" +msgstr "Il s'agit de la température du plateau pour la première couche. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur le plateau froid (\"Cool plate\")." -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Engineering Plate" -msgstr "" -"Il s'agit de la température du plateau pour la première couche. Une valeur à " -"0 signifie que ce filament ne peut pas être imprimé sur le plateau " -"Engineering." +msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Engineering Plate" +msgstr "Il s'agit de la température du plateau pour la première couche. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur le plateau Engineering." -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the High Temp Plate" -msgstr "" -"Il s'agit de la température du plateau pour la première couche. Une valeur à " -"0 signifie que ce filament ne peut pas être imprimé sur le plateau haute " -"température (\"High Temp plate\")." +msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the High Temp Plate" +msgstr "Il s'agit de la température du plateau pour la première couche. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur le plateau haute température (\"High Temp plate\")." -msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" -msgstr "" -"La température du plateau à la première couche. La valeur 0 signifie que le " -"filament n'est pas supporté sur la plaque PEI texturée." +msgid "Bed temperature of the initial layer. Value 0 means the filament does not support to print on the Textured PEI Plate" +msgstr "La température du plateau à la première couche. La valeur 0 signifie que le filament n'est pas supporté sur la plaque PEI texturée." msgid "Bed types supported by the printer" msgstr "Types de plateaux pris en charge par l'imprimante" @@ -9995,69 +8622,49 @@ msgid "Other layers filament sequence" msgstr "Séquence de filament des autres couches" msgid "This G-code is inserted at every layer change before lifting z" -msgstr "" -"Ce G-code est inséré à chaque changement de couche avant le levage du Z" +msgstr "Ce G-code est inséré à chaque changement de couche avant le levage du Z" msgid "Bottom shell layers" msgstr "Couches inférieures de la coque" -msgid "" -"This is the number of solid layers of bottom shell, including the bottom " -"surface layer. When the thickness calculated by this value is thinner than " -"bottom shell thickness, the bottom shell layers will be increased" -msgstr "" -"Il s'agit du nombre de couches pleines de coque inférieure, y compris la " -"couche de surface inférieure. Lorsque l'épaisseur calculée par cette valeur " -"est plus fine que l'épaisseur de la coque inférieure, les couches de la " -"coque inférieure seront augmentées" +msgid "This is the number of solid layers of bottom shell, including the bottom surface layer. When the thickness calculated by this value is thinner than bottom shell thickness, the bottom shell layers will be increased" +msgstr "Il s'agit du nombre de couches pleines de coque inférieure, y compris la couche de surface inférieure. Lorsque l'épaisseur calculée par cette valeur est plus fine que l'épaisseur de la coque inférieure, les couches de la coque inférieure seront augmentées" msgid "Bottom shell thickness" msgstr "Épaisseur de la coque inférieure" -msgid "" -"The number of bottom solid layers is increased when slicing if the thickness " -"calculated by bottom shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" -msgstr "" -"Le nombre de couches pleines inférieures est augmenté lors du découpage si " -"l'épaisseur calculée par les couches de coque inférieures est inférieure à " -"cette valeur. Cela peut éviter d'avoir une coque trop fine lorsque la " -"hauteur de couche est faible. 0 signifie que ce paramètre est désactivé et " -"que l'épaisseur de la coque inférieure est absolument déterminée par les " -"couches de la coque inférieure" +msgid "The number of bottom solid layers is increased when slicing if the thickness calculated by bottom shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of bottom shell is absolutely determained by bottom shell layers" +msgstr "Le nombre de couches pleines inférieures est augmenté lors du découpage si l'épaisseur calculée par les couches de coque inférieures est inférieure à cette valeur. Cela peut éviter d'avoir une coque trop fine lorsque la hauteur de couche est faible. 0 signifie que ce paramètre est désactivé et que l'épaisseur de la coque inférieure est absolument déterminée par les couches de la coque inférieure" msgid "Apply gap fill" msgstr "Remplissage des trous" msgid "" -"Enables gap fill for the selected solid surfaces. The minimum gap length " -"that will be filled can be controlled from the filter out tiny gaps option " -"below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length that will be filled can be controlled from the filter out tiny gaps option below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " -"for maximum strength\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only, balancing print speed, reducing potential over extrusion in the solid " -"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces for maximum strength\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only, balancing print speed, reducing potential over extrusion in the solid infill and making sure the top and bottom surfaces have no pin hole gaps\n" "3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" -"Note that if using the classic perimeter generator, gap fill may also be " -"generated between perimeters, if a full width line cannot fit between them. " -"That perimeter gap fill is not controlled by this setting. \n" +"Note that if using the classic perimeter generator, gap fill may also be generated between perimeters, if a full width line cannot fit between them. That perimeter gap fill is not controlled by this setting. \n" "\n" -"If you would like all gap fill, including the classic perimeter generated " -"one, removed, set the filter out tiny gaps value to a large number, like " -"999999. \n" +"If you would like all gap fill, including the classic perimeter generated one, removed, set the filter out tiny gaps value to a large number, like 999999. \n" "\n" -"However this is not advised, as gap fill between perimeters is contributing " -"to the model's strength. For models where excessive gap fill is generated " -"between perimeters, a better option would be to switch to the arachne wall " -"generator and use this option to control whether the cosmetic top and bottom " -"surface gap fill is generated" +"However this is not advised, as gap fill between perimeters is contributing to the model's strength. For models where excessive gap fill is generated between perimeters, a better option would be to switch to the arachne wall generator and use this option to control whether the cosmetic top and bottom surface gap fill is generated" msgstr "" +"Active le remplissage des espaces pour les surfaces solides sélectionnées. La longueur minimale de l'espace qui sera comblé peut être contrôlée à partir de l'option « Filtrer les petits espaces » ci-dessous.\n" +"\n" +"Options :\n" +"1. Partout : Applique le remplissage de l'espace aux faces supérieures, inférieures et internes des solides pour une résistance maximale.\n" +"2. Surfaces supérieure et inférieure : Remplissage des espaces uniquement sur les faces supérieure et inférieure, ce qui permet d'équilibrer la vitesse d'impression, de réduire les risques de sur-extrusion dans le remplissage solide et de s'assurer que les faces supérieure et inférieure ne présentent pas de trous d'épingle.\n" +"3. Nulle part : Désactive le remplissage de l'espace pour toutes les zones de remplissage solide. \n" +"\n" +"Notez que si vous utilisez le générateur de périmètre classique, le remplissage de l’espace peut également être généré entre les périmètres, si une ligne de largeur complète ne peut pas tenir entre eux. Ce remplissage du périmètre n’est pas contrôlé par ce paramètre. \n" +"\n" +"Si vous souhaitez que tous les espaces, y compris ceux générés par le périmètre classique, soient supprimés, définissez la valeur de filtrage des petits espaces sur un grand nombre, comme 999999. \n" +"\n" +"Il n’est toutefois pas conseillé de procéder ainsi, car le remplissage des espaces entre les périmètres contribue à la solidité du modèle. Pour les modèles où un remplissage excessif est généré entre les périmètres, une meilleure option serait de passer au générateur de parois Arachne et d’utiliser cette option pour contrôler si le remplissage cosmétique des surfaces supérieures et inférieures est généré." msgid "Everywhere" msgstr "Partout" @@ -10071,97 +8678,69 @@ msgstr "Nulle part" msgid "Force cooling for overhang and bridge" msgstr "Forcer la ventilation pour les surplombs et ponts" -msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" -msgstr "" -"Activez cette option pour optimiser la vitesse du ventilateur de " -"refroidissement des pièces pour le surplomb et le pont afin d'obtenir un " -"meilleur refroidissement" +msgid "Enable this option to optimize part cooling fan speed for overhang and bridge to get better cooling" +msgstr "Activez cette option pour optimiser la vitesse du ventilateur de refroidissement des pièces pour le surplomb et le pont afin d'obtenir un meilleur refroidissement" msgid "Fan speed for overhang" msgstr "Vitesse du ventilateur pour les surplombs" -msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" -msgstr "" -"Forcez le ventilateur de refroidissement des pièces à être à cette vitesse " -"lors de l'impression d'un pont ou d'une paroi en surplomb qui a un degré de " -"surplomb important. Forcer le refroidissement pour les surplombs et le pont " -"pour obtenir une meilleure qualité pour ces pièces." +msgid "Force part cooling fan to be this speed when printing bridge or overhang wall which has large overhang degree. Forcing cooling for overhang and bridge can get better quality for these part" +msgstr "Forcez le ventilateur de refroidissement des pièces à être à cette vitesse lors de l'impression d'un pont ou d'une paroi en surplomb qui a un degré de surplomb important. Forcer le refroidissement pour les surplombs et le pont pour obtenir une meilleure qualité pour ces pièces." msgid "Cooling overhang threshold" msgstr "Seuil de dépassement de refroidissement" #, c-format -msgid "" -"Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" -msgstr "" -"Forcer le ventilateur de refroidissement à atteindre une vitesse spécifique " -"lorsque le degré de surplomb de la pièce imprimée dépasse cette valeur. Ceci " -"est exprimé en pourcentage qui indique la largeur de la ligne sans support " -"provenant de la couche inférieure. 0%% signifie un refroidissement forcé de " -"toutes les parois extérieures, quel que soit le degré de surplomb." +msgid "Force cooling fan to be specific speed when overhang degree of printed part exceeds this value. Expressed as percentage which indicides how much width of the line without support from lower layer. 0% means forcing cooling for all outer wall no matter how much overhang degree" +msgstr "Forcer le ventilateur de refroidissement à atteindre une vitesse spécifique lorsque le degré de surplomb de la pièce imprimée dépasse cette valeur. Ceci est exprimé en pourcentage qui indique la largeur de la ligne sans support provenant de la couche inférieure. 0%% signifie un refroidissement forcé de toutes les parois extérieures, quel que soit le degré de surplomb." msgid "Bridge infill direction" msgstr "Direction du remplissage des ponts" -msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for " -"external bridges. Use 180°for zero angle." -msgstr "" -"Forçage de l’angle des ponts. S’il est laissé à zéro, l’angle des ponts sera " -"calculé automatiquement. Sinon, l’angle fourni sera utilisé pour les ponts " -"externes. Utilisez 180° pour un angle nul." +msgid "Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for external bridges. Use 180°for zero angle." +msgstr "Forçage de l’angle des ponts. S’il est laissé à zéro, l’angle des ponts sera calculé automatiquement. Sinon, l’angle fourni sera utilisé pour les ponts externes. Utilisez 180° pour un angle nul." msgid "Bridge density" msgstr "Densité des ponts" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "" -"Densité des ponts externes, Une valeur à 100% signifie un pont plein. La " -"valeur par défaut est 100%." +msgstr "Densité des ponts externes, Une valeur à 100% signifie un pont plein. La valeur par défaut est 100%." msgid "Bridge flow ratio" msgstr "Débit des ponts" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag. \n" +"Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, to improve sag. \n" "\n" -"The actual bridge flow used is calculated by multiplying this value with the " -"filament flow ratio, and if set, the object's flow ratio." +"The actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Diminuez légèrement cette valeur (par exemple 0,9) pour réduire la quantité de matériau pour le pont, afin d’améliorer l’affaissement. \n" +"\n" +"Le débit réel du pont utilisé est calculé en multipliant cette valeur par le rapport de débit du filament et, s’il est défini, par le rapport de débit de l’objet." msgid "Internal bridge flow ratio" msgstr "Ratio de débit du pont interne" msgid "" -"This value governs the thickness of the internal bridge layer. This is the " -"first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill.\n" +"This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill.\n" "\n" -"The actual internal bridge flow used is calculated by multiplying this value " -"with the bridge flow ratio, the filament flow ratio, and if set, the " -"object's flow ratio." +"The actual internal bridge flow used is calculated by multiplying this value with the bridge flow ratio, the filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Cette valeur détermine l’épaisseur de la couche de pont interne. Il s’agit de la première couche au-dessus d’un remplissage peu dense. Diminuez légèrement cette valeur (par exemple 0,9) pour améliorer la qualité de la surface sur un remplissage peu dense.\n" +"\n" +"Le débit du pont interne utilisé est calculé en multipliant cette valeur par le rapport de débit du pont, le rapport de débit du filament et, s’il est défini, le rapport de débit de l’objet." msgid "Top surface flow ratio" msgstr "Ratio du débit des surfaces supérieures" msgid "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish. \n" +"This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish. \n" "\n" -"The actual top surface flow used is calculated by multiplying this value " -"with the filament flow ratio, and if set, the object's flow ratio." +"The actual top surface flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Ce facteur affecte la quantité de matériau pour le remplissage du massif supérieur. Vous pouvez le réduire légèrement pour obtenir une finition de surface lisse. \n" +"\n" +"Le débit réel de la surface supérieure utilisé est calculé en multipliant cette valeur par le rapport de débit du filament et, s’il est défini, par le rapport de débit de l’objet." msgid "Bottom surface flow ratio" msgstr "Ratio du débit des surfaces inférieures" @@ -10169,77 +8748,50 @@ msgstr "Ratio du débit des surfaces inférieures" msgid "" "This factor affects the amount of material for bottom solid infill. \n" "\n" -"The actual bottom solid infill flow used is calculated by multiplying this " -"value with the filament flow ratio, and if set, the object's flow ratio." +"The actual bottom solid infill flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Ce facteur affecte la quantité de matériau pour le remplissage solide du fond. \n" +"\n" +"Le débit réel du remplissage solide inférieur utilisé est calculé en multipliant cette valeur par le rapport de débit du filament et, s’il est défini, par le rapport de débit de l’objet." msgid "Precise wall" msgstr "Parois précises" msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves " -"layer consistency.\n" -"Note: This setting will only take effect if the wall sequence is configured " -"to Inner-Outer" +"Improve shell precision by adjusting outer wall spacing. This also improves layer consistency.\n" +"Note: This setting will only take effect if the wall sequence is configured to Inner-Outer" msgstr "" -"Améliorez la précision de la coque en ajustant l’espacement des parois " -"extérieures. Cela permet également d’améliorer la cohérence des couches.\n" -"Remarque : ce paramètre n’a d’effet que si la séquence des parois est " -"configurée sur Intérieur-Extérieur." +"Améliorez la précision de la coque en ajustant l’espacement des parois extérieures. Cela permet également d’améliorer la cohérence des couches.\n" +"Remarque : ce paramètre n’a d’effet que si la séquence des parois est configurée sur Intérieur-Extérieur." msgid "Only one wall on top surfaces" msgstr "Une seule paroi sur les surfaces supérieures" -msgid "" -"Use only one wall on flat top surface, to give more space to the top infill " -"pattern" -msgstr "" -"N'utilisez qu'une seule paroi sur les surfaces supérieures planes, afin de " -"donner plus d'espace au motif de remplissage supérieur." +msgid "Use only one wall on flat top surface, to give more space to the top infill pattern" +msgstr "N'utilisez qu'une seule paroi sur les surfaces supérieures planes, afin de donner plus d'espace au motif de remplissage supérieur." msgid "One wall threshold" msgstr "Seuil de paroi unique" #, no-c-format, no-boost-format msgid "" -"If a top surface has to be printed and it's partially covered by another " -"layer, it won't be considered at a top layer where its width is below this " -"value. This can be useful to not let the 'one perimeter on top' trigger on " -"surface that should be covered only by perimeters. This value can be a mm or " -"a % of the perimeter extrusion width.\n" -"Warning: If enabled, artifacts can be created if you have some thin features " -"on the next layer, like letters. Set this setting to 0 to remove these " -"artifacts." +"If a top surface has to be printed and it's partially covered by another layer, it won't be considered at a top layer where its width is below this value. This can be useful to not let the 'one perimeter on top' trigger on surface that should be covered only by perimeters. This value can be a mm or a % of the perimeter extrusion width.\n" +"Warning: If enabled, artifacts can be created if you have some thin features on the next layer, like letters. Set this setting to 0 to remove these artifacts." msgstr "" -"Si une surface supérieure doit être imprimée et qu’elle est partiellement " -"couverte par une autre couche, elle ne sera pas considérée comme une couche " -"supérieure si sa largeur est inférieure à cette valeur. Cela peut être utile " -"pour ne pas déclencher l’option « un périmètre sur le dessus » sur des " -"surfaces qui ne devraient être couvertes que par des périmètres. Cette " -"valeur peut être un mm ou un % de la largeur d’extrusion du périmètre.\n" -"Attention : Si cette option est activée, des artefacts peuvent être créés si " -"vous avez des éléments fins sur la couche suivante, comme des lettres. " -"Réglez ce paramètre à 0 pour supprimer ces artefacts." +"Si une surface supérieure doit être imprimée et qu’elle est partiellement couverte par une autre couche, elle ne sera pas considérée comme une couche supérieure si sa largeur est inférieure à cette valeur. Cela peut être utile pour ne pas déclencher l’option « un périmètre sur le dessus » sur des surfaces qui ne devraient être couvertes que par des périmètres. Cette valeur peut être un mm ou un % de la largeur d’extrusion du périmètre.\n" +"Attention : Si cette option est activée, des artefacts peuvent être créés si vous avez des éléments fins sur la couche suivante, comme des lettres. Réglez ce paramètre à 0 pour supprimer ces artefacts." msgid "Only one wall on first layer" msgstr "Une seule paroi sur la première couche" -msgid "" -"Use only one wall on first layer, to give more space to the bottom infill " -"pattern" -msgstr "" -"Utiliser qu’une seule paroi sur la première couche, pour donner plus " -"d’espace au motif de remplissage inférieur" +msgid "Use only one wall on first layer, to give more space to the bottom infill pattern" +msgstr "Utiliser qu’une seule paroi sur la première couche, pour donner plus d’espace au motif de remplissage inférieur" msgid "Extra perimeters on overhangs" msgstr "Parois supplémentaires sur les surplombs" -msgid "" -"Create additional perimeter paths over steep overhangs and areas where " -"bridges cannot be anchored. " -msgstr "" -"Créer des chemins de périmètres supplémentaires sur les surplombs abrupts et " -"les zones où les ponts ne peuvent pas être ancrés. " +msgid "Create additional perimeter paths over steep overhangs and areas where bridges cannot be anchored. " +msgstr "Créer des chemins de périmètres supplémentaires sur les surplombs abrupts et les zones où les ponts ne peuvent pas être ancrés. " msgid "Reverse on odd" msgstr "Parois inversées sur couches impaires" @@ -10248,19 +8800,13 @@ msgid "Overhang reversal" msgstr "Inversion du surplomb" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on odd layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction on odd layers. This alternating pattern can drastically improve steep overhangs.\n" "\n" -"This setting can also help reduce part warping due to the reduction of " -"stresses in the part walls." +"This setting can also help reduce part warping due to the reduction of stresses in the part walls." msgstr "" -"Extruder les périmètres dont une partie se trouve au-dessus d’un surplomb " -"dans le sens inverse sur les couches impaires. Ce motif alternatif peut " -"améliorer considérablement les surplombs abrupts.\n" +"Extruder les périmètres dont une partie se trouve au-dessus d’un surplomb dans le sens inverse sur les couches impaires. Ce motif alternatif peut améliorer considérablement les surplombs abrupts.\n" "\n" -"Ce paramètre peut également contribuer à réduire le gauchissement de la " -"pièce en raison de la réduction des contraintes dans les parois de la pièce." +"Ce paramètre peut également contribuer à réduire le gauchissement de la pièce en raison de la réduction des contraintes dans les parois de la pièce." msgid "Reverse only internal perimeters" msgstr "Inverser uniquement les périmètres internes" @@ -10268,50 +8814,29 @@ msgstr "Inverser uniquement les périmètres internes" msgid "" "Apply the reverse perimeters logic only on internal perimeters. \n" "\n" -"This setting greatly reduces part stresses as they are now distributed in " -"alternating directions. This should reduce part warping while also " -"maintaining external wall quality. This feature can be very useful for warp " -"prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over " -"supports.\n" +"This setting greatly reduces part stresses as they are now distributed in alternating directions. This should reduce part warping while also maintaining external wall quality. This feature can be very useful for warp prone material, like ABS/ASA, and also for elastic filaments, like TPU and Silk PLA. It can also help reduce warping on floating regions over supports.\n" "\n" -"For this setting to be the most effective, it is recomended to set the " -"Reverse Threshold to 0 so that all internal walls print in alternating " -"directions on odd layers irrespective of their overhang degree." +"For this setting to be the most effective, it is recomended to set the Reverse Threshold to 0 so that all internal walls print in alternating directions on odd layers irrespective of their overhang degree." msgstr "" -"Appliquer la logique d’inversion des périmètres uniquement sur les " -"périmètres internes. \n" +"Appliquer la logique d’inversion des périmètres uniquement sur les périmètres internes. \n" "\n" -"Ce paramètre réduit considérablement les contraintes exercées sur les " -"pièces, car elles sont désormais réparties dans des directions alternées. " -"Cela devrait réduire la déformation des pièces tout en maintenant la qualité " -"des parois externes. Cette fonction peut être très utile pour les matériaux " -"sujets à la déformation, comme l’ABS/ASA, ainsi que pour les filaments " -"élastiques, comme le TPU et le Silk PLA. Elle peut également contribuer à " -"réduire le gauchissement des régions flottantes sur les supports.\n" +"Ce paramètre réduit considérablement les contraintes exercées sur les pièces, car elles sont désormais réparties dans des directions alternées. Cela devrait réduire la déformation des pièces tout en maintenant la qualité des parois externes. Cette fonction peut être très utile pour les matériaux sujets à la déformation, comme l’ABS/ASA, ainsi que pour les filaments élastiques, comme le TPU et le Silk PLA. Elle peut également contribuer à réduire le gauchissement des régions flottantes sur les supports.\n" "\n" -"Pour que ce paramètre soit le plus efficace possible, il est recommandé de " -"régler le seuil d’inversion sur 0 afin que toutes les parois internes " -"s’impriment dans des directions alternées sur les couches impaires, quel que " -"soit leur degré de surplomb." +"Pour que ce paramètre soit le plus efficace possible, il est recommandé de régler le seuil d’inversion sur 0 afin que toutes les parois internes s’impriment dans des directions alternées sur les couches impaires, quel que soit leur degré de surplomb." msgid "Bridge counterbore holes" msgstr "Trous d'alésage pour le pont" msgid "" -"This option creates bridges for counterbore holes, allowing them to be " -"printed without support. Available modes include:\n" +"This option creates bridges for counterbore holes, allowing them to be printed without support. Available modes include:\n" "1. None: No bridge is created.\n" "2. Partially Bridged: Only a part of the unsupported area will be bridged.\n" "3. Sacrificial Layer: A full sacrificial bridge layer is created." msgstr "" -"Cette option crée des ponts pour les trous d'alésage, ce qui permet de les " -"imprimer sans support. Les modes disponibles sont les suivants\n" +"Cette option crée des ponts pour les trous d'alésage, ce qui permet de les imprimer sans support. Les modes disponibles sont les suivants\n" "1. Aucun : Aucun pont n’est créé.\n" -"2. Partiellement connecté : Seule une partie de la zone non prise en charge " -"sera connectée.\n" -"3. Couche sacrificielle : Une couche de pont sacrificielle complète est " -"créée." +"2. Partiellement connecté : Seule une partie de la zone non prise en charge sera connectée.\n" +"3. Couche sacrificielle : Une couche de pont sacrificielle complète est créée." msgid "Partially bridged" msgstr "Partiellement connecté" @@ -10327,12 +8852,10 @@ msgstr "Seuil d’inversion des surplombs" #, no-c-format, no-boost-format msgid "" -"Number of mm the overhang need to be for the reversal to be considered " -"useful. Can be a % of the perimeter width.\n" +"Number of mm the overhang need to be for the reversal to be considered useful. Can be a % of the perimeter width.\n" "Value 0 enables reversal on every odd layers regardless." msgstr "" -"Nombre de mm de dépassement nécessaire pour que l’inversion soit considérée " -"comme utile. Il peut s’agir d’un pourcentage de la largeur du périmètre.\n" +"Nombre de mm de dépassement nécessaire pour que l’inversion soit considérée comme utile. Il peut s’agir d’un pourcentage de la largeur du périmètre.\n" "La valeur 0 permet l’inversion sur toutes les couches impaires." msgid "Classic mode" @@ -10345,33 +8868,24 @@ msgid "Slow down for overhang" msgstr "Ralentir pour le surplomb" msgid "Enable this option to slow printing down for different overhang degree" -msgstr "" -"Activez cette option pour ralentir l'impression pour différents degrés de " -"surplomb" +msgstr "Activez cette option pour ralentir l'impression pour différents degrés de surplomb" msgid "Slow down for curled perimeters" msgstr "Ralentir lors des périmètres courbés" #, c-format, boost-format msgid "" -"Enable this option to slow down printing in areas where perimeters may have " -"curled upwards.For example, additional slowdown will be applied when " -"printing overhangs on sharp corners like the front of the Benchy hull, " -"reducing curling which compounds over multiple layers.\n" +"Enable this option to slow down printing in areas where perimeters may have curled upwards.For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers.\n" "\n" -" It is generally recommended to have this option switched on unless your " -"printer cooling is powerful enough or the print speed slow enough that " -"perimeter curling does not happen. If printing with a high external " -"perimeter speed, this parameter may introduce slight artifacts when slowing " -"down due to the large variance in print speeds. If you notice artifacts, " -"ensure your pressure advance is tuned correctly.\n" +" It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed slow enough that perimeter curling does not happen. If printing with a high external perimeter speed, this parameter may introduce slight artifacts when slowing down due to the large variance in print speeds. If you notice artifacts, ensure your pressure advance is tuned correctly.\n" "\n" -"Note: When this option is enabled, overhang perimeters are treated like " -"overhangs, meaning the overhang speed is applied even if the overhanging " -"perimeter is part of a bridge. For example, when the perimeters are " -"100% overhanging, with no wall supporting them from underneath, the " -"100% overhang speed will be applied." +"Note: When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge. For example, when the perimeters are 100%% overhanging, with no wall supporting them from underneath, the 100%% overhang speed will be applied." msgstr "" +"Activez cette option pour ralentir l'impression dans les zones où les périmètres peuvent s'être incurvés vers le haut. Par exemple, un ralentissement supplémentaire sera appliqué lors de l'impression de surplombs sur des angles aigus comme l'avant de la coque du Benchy, réduisant ainsi l'enroulement qui s'aggrave sur plusieurs couches.\n" +"\n" +"Il est généralement recommandé d’activer cette option à moins que le refroidissement de votre imprimante soit suffisamment puissant ou que la vitesse d’impression soit suffisamment lente pour que le phénomène de recourbement du périmètre ne se produise pas. Si vous imprimez avec une vitesse de périmètre externe élevée, ce paramètre peut introduire de légers artefacts lors du ralentissement en raison de la grande variance des vitesses d’impression. Si vous remarquez des artefacts, assurez-vous que votre avance de pression est réglée correctement.\n" +"\n" +"Remarque : lorsque cette option est activée, les périmètres en surplomb sont traités comme des surplombs, ce qui signifie que la vitesse de surplomb est appliquée même si le périmètre en surplomb fait partie d’un pont. Par exemple, lorsque les périmètres sont en surplomb de 100%%, sans paroi les soutenant par en dessous, la vitesse de surplomb de 100%% sera appliquée." msgid "mm/s or %" msgstr "mm/s ou %" @@ -10382,11 +8896,11 @@ msgstr "Externe" msgid "" "Speed of the externally visible bridge extrusions. \n" "\n" -"In addition, if Slow down for curled perimeters is disabled or Classic " -"overhang mode is enabled, it will be the print speed of overhang walls that " -"are supported by less than 13%, whether they are part of a bridge or an " -"overhang." +"In addition, if Slow down for curled perimeters is disabled or Classic overhang mode is enabled, it will be the print speed of overhang walls that are supported by less than 13%, whether they are part of a bridge or an overhang." msgstr "" +"Vitesse des extrusions de pont visible de l’extérieur. \n" +"\n" +"En outre, si la fonction Ralentir pour les périmètres courbés est désactivée ou si le mode Surplomb classique est activé, il s’agira de la vitesse d’impression des parois en surplomb dont l’appui est inférieur à 13 %, qu’elles fassent partie d’un pont ou d’un surplomb." msgid "mm/s" msgstr "mm/s" @@ -10394,10 +8908,8 @@ msgstr "mm/s" msgid "Internal" msgstr "Interne" -msgid "" -"Speed of internal bridges. If the value is expressed as a percentage, it " -"will be calculated based on the bridge_speed. Default value is 150%." -msgstr "" +msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." +msgstr "Vitesse des ponts internes. Si la valeur est exprimée en pourcentage, elle sera calculée sur la base de la vitesse du pont. La valeur par défaut est 150%." msgid "Brim width" msgstr "Largeur de la bordure" @@ -10408,23 +8920,14 @@ msgstr "Distance du modèle à la ligne de bord la plus externe" msgid "Brim type" msgstr "Type de bordure" -msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analysed and calculated automatically." -msgstr "" -"Cela permet de contrôler la génération de bordure extérieur et/ou intérieur " -"des modèles. Auto signifie que la largeur de bordure est analysée et " -"calculée automatiquement." +msgid "This controls the generation of the brim at outer and/or inner side of models. Auto means the brim width is analysed and calculated automatically." +msgstr "Cela permet de contrôler la génération de bordure extérieur et/ou intérieur des modèles. Auto signifie que la largeur de bordure est analysée et calculée automatiquement." msgid "Brim-object gap" msgstr "Écart bord-objet" -msgid "" -"A gap between innermost brim line and object can make brim be removed more " -"easily" -msgstr "" -"Un espace entre la ligne de bord la plus interne et l'objet peut faciliter " -"le retrait du bord" +msgid "A gap between innermost brim line and object can make brim be removed more easily" +msgstr "Un espace entre la ligne de bord la plus interne et l'objet peut faciliter le retrait du bord" msgid "Brim ears" msgstr "Bordures à oreilles" @@ -10442,19 +8945,16 @@ msgid "" msgstr "" "Angle maximum pour laisser apparaître la bordure à oreilles.\n" "S’il est défini sur 0, aucune bordure ne sera créée.\n" -"S’il est réglé sur ~180, la bordure sera créée sur tout sauf les sections " -"droites." +"S’il est réglé sur ~180, la bordure sera créée sur tout sauf les sections droites." msgid "Brim ear detection radius" msgstr "Rayon de détection de la bordure à oreilles" msgid "" -"The geometry will be decimated before dectecting sharp angles. This " -"parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This parameter indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" -"La géométrie sera décimée avant de détecter les angles vifs. Ce paramètre " -"indique la longueur minimale de l’écart pour la décimation.\n" +"La géométrie sera décimée avant de détecter les angles vifs. Ce paramètre indique la longueur minimale de l’écart pour la décimation.\n" "0 pour désactiver" msgid "Compatible machine" @@ -10493,27 +8993,14 @@ msgstr "En tant que liste d’objets" msgid "Slow printing down for better layer cooling" msgstr "Impression lente pour un meilleur refroidissement des couches" -msgid "" -"Enable this option to slow printing speed down to make the final layer time " -"not shorter than the layer time threshold in \"Max fan speed threshold\", so " -"that layer can be cooled for longer time. This can improve the cooling " -"quality for needle and small details" -msgstr "" -"Activez cette option pour ralentir la vitesse d'impression afin que le temps " -"de couche final ne soit pas plus court que le seuil de temps de couche dans " -"\"Seuil de vitesse maximale du ventilateur\", afin que cette couche puisse " -"être refroidie plus longtemps. Cela peut améliorer la qualité de " -"refroidissement pour l'aiguille et les petits détails" +msgid "Enable this option to slow printing speed down to make the final layer time not shorter than the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled for longer time. This can improve the cooling quality for needle and small details" +msgstr "Activez cette option pour ralentir la vitesse d'impression afin que le temps de couche final ne soit pas plus court que le seuil de temps de couche dans \"Seuil de vitesse maximale du ventilateur\", afin que cette couche puisse être refroidie plus longtemps. Cela peut améliorer la qualité de refroidissement pour l'aiguille et les petits détails" msgid "Normal printing" msgstr "Impression normale" -msgid "" -"The default acceleration of both normal printing and travel except initial " -"layer" -msgstr "" -"L'accélération par défaut de l'impression normale et du déplacement à " -"l'exception de la couche initiale" +msgid "The default acceleration of both normal printing and travel except initial layer" +msgstr "L'accélération par défaut de l'impression normale et du déplacement à l'exception de la couche initiale" msgid "mm/s²" msgstr "mm/s²" @@ -10534,19 +9021,13 @@ msgid "Activate air filtration" msgstr "Activer la filtration de l’air" msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)" -msgstr "" -"Activer pour une meilleure filtration de l’air. Commande G-code : M106 P3 " -"S(0-255)" +msgstr "Activer pour une meilleure filtration de l’air. Commande G-code : M106 P3 S(0-255)" msgid "Fan speed" msgstr "Vitesse du ventilateur" -msgid "" -"Speed of exhaust fan during printing.This speed will overwrite the speed in " -"filament custom gcode" -msgstr "" -"Vitesse du ventilateur d’extraction pendant l’impression. Cette vitesse " -"écrasera la vitesse dans le G-code personnalisé du filament." +msgid "Speed of exhaust fan during printing.This speed will overwrite the speed in filament custom gcode" +msgstr "Vitesse du ventilateur d’extraction pendant l’impression. Cette vitesse écrasera la vitesse dans le G-code personnalisé du filament." msgid "Speed of exhaust fan after printing completes" msgstr "Vitesse du ventilateur d’extraction après l’impression" @@ -10554,109 +9035,58 @@ msgstr "Vitesse du ventilateur d’extraction après l’impression" msgid "No cooling for the first" msgstr "Pas de refroidissement pour" -msgid "" -"Close all cooling fan for the first certain layers. Cooling fan of the first " -"layer used to be closed to get better build plate adhesion" -msgstr "" -"Éteignez tous les ventilateurs de refroidissement pour les premières " -"couches. Cela peut être utilisé pour améliorer l'adhérence à la plaque." +msgid "Close all cooling fan for the first certain layers. Cooling fan of the first layer used to be closed to get better build plate adhesion" +msgstr "Éteignez tous les ventilateurs de refroidissement pour les premières couches. Cela peut être utilisé pour améliorer l'adhérence à la plaque." msgid "Don't support bridges" msgstr "Ne pas supporter les ponts" -msgid "" -"Don't support the whole bridge area which make support very large. Bridge " -"usually can be printing directly without support if not very long" -msgstr "" -"Cela désactive le support des ponts, ce qui diminue le nombre de supports " -"requis. Les ponts peuvent généralement être imprimés directement sans " -"support s'ils ne sont pas très longs." +msgid "Don't support the whole bridge area which make support very large. Bridge usually can be printing directly without support if not very long" +msgstr "Cela désactive le support des ponts, ce qui diminue le nombre de supports requis. Les ponts peuvent généralement être imprimés directement sans support s'ils ne sont pas très longs." msgid "Thick bridges" msgstr "Ponts épais" -msgid "" -"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." -msgstr "" -"S'ils sont activés, les ponts sont plus fiables et peuvent couvrir de plus " -"longues distances, mais ils peuvent sembler moins jolis. S'ils sont " -"désactivés, les ponts ont une meilleure apparence mais ne sont fiables que " -"sur de courtes distances." +msgid "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." +msgstr "S'ils sont activés, les ponts sont plus fiables et peuvent couvrir de plus longues distances, mais ils peuvent sembler moins jolis. S'ils sont désactivés, les ponts ont une meilleure apparence mais ne sont fiables que sur de courtes distances." msgid "Thick internal bridges" msgstr "Ponts internes épais" -msgid "" -"If enabled, thick internal bridges will be used. It's usually recommended to " -"have this feature turned on. However, consider turning it off if you are " -"using large nozzles." -msgstr "" -"Si cette option est activée, des ponts internes épais seront utilisés. Il " -"est généralement recommandé d’activer cette fonctionnalité. Pensez cependant " -"à la désactiver si vous utilisez des buses larges." +msgid "If enabled, thick internal bridges will be used. It's usually recommended to have this feature turned on. However, consider turning it off if you are using large nozzles." +msgstr "Si cette option est activée, des ponts internes épais seront utilisés. Il est généralement recommandé d’activer cette fonctionnalité. Pensez cependant à la désactiver si vous utilisez des buses larges." msgid "Don't filter out small internal bridges (beta)" msgstr "Ne pas filtrer les petits ponts internes (expérimental)" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted " -"or curved models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted or curved models.\n" "\n" -"By default, small internal bridges are filtered out and the internal solid " -"infill is printed directly over the sparse infill. This works well in most " -"cases, speeding up printing without too much compromise on top surface " -"quality. \n" +"By default, small internal bridges are filtered out and the internal solid infill is printed directly over the sparse infill. This works well in most cases, speeding up printing without too much compromise on top surface quality. \n" "\n" -"However, in heavily slanted or curved models especially where too low sparse " -"infill density is used, this may result in curling of the unsupported solid " -"infill, causing pillowing.\n" +"However, in heavily slanted or curved models especially where too low sparse infill density is used, this may result in curling of the unsupported solid infill, causing pillowing.\n" "\n" -"Enabling this option will print internal bridge layer over slightly " -"unsupported internal solid infill. The options below control the amount of " -"filtering, i.e. the amount of internal bridges created.\n" +"Enabling this option will print internal bridge layer over slightly unsupported internal solid infill. The options below control the amount of filtering, i.e. the amount of internal bridges created.\n" "\n" -"Disabled - Disables this option. This is the default behaviour and works " -"well in most cases.\n" +"Disabled - Disables this option. This is the default behaviour and works well in most cases.\n" "\n" -"Limited filtering - Creates internal bridges on heavily slanted surfaces, " -"while avoiding creating uncessesary interal bridges. This works well for " -"most difficult models.\n" +"Limited filtering - Creates internal bridges on heavily slanted surfaces, while avoiding creating uncessesary interal bridges. This works well for most difficult models.\n" "\n" -"No filtering - Creates internal bridges on every potential internal " -"overhang. This option is useful for heavily slanted top surface models. " -"However, in most cases it creates too many unecessary bridges." +"No filtering - Creates internal bridges on every potential internal overhang. This option is useful for heavily slanted top surface models. However, in most cases it creates too many unecessary bridges." msgstr "" -"Cette option permet de réduire la formation de creux sur les surfaces " -"supérieures des modèles fortement inclinés ou courbés.\n" +"Cette option permet de réduire la formation de creux sur les surfaces supérieures des modèles fortement inclinés ou courbés.\n" "\n" -"Par défaut, les petits ponts internes sont filtrés et le remplissage plein " -"interne est imprimé directement sur le remplissage peu dense. Cela " -"fonctionne bien dans la plupart des cas, accélérant l'impression sans trop " -"compromettre la qualité de la surface supérieure. \n" +"Par défaut, les petits ponts internes sont filtrés et le remplissage plein interne est imprimé directement sur le remplissage peu dense. Cela fonctionne bien dans la plupart des cas, accélérant l'impression sans trop compromettre la qualité de la surface supérieure. \n" "\n" -"Cependant, dans les modèles fortement inclinés ou courbés, en particulier " -"lorsque la densité de remplissage est trop faible, il peut en résulter un " -"enroulement du remplissage plein non soutenu, ce qui provoque un effet de " -"creusement.\n" +"Cependant, dans les modèles fortement inclinés ou courbés, en particulier lorsque la densité de remplissage est trop faible, il peut en résulter un enroulement du remplissage plein non soutenu, ce qui provoque un effet de creusement.\n" "\n" -"L’activation de cette option permet d’imprimer une couche de pont interne " -"sur un remplissage plein interne légèrement non soutenu. Les options ci-" -"dessous contrôlent la quantité de filtrage, c’est-à-dire la quantité de " -"ponts internes créés.\n" +"L’activation de cette option permet d’imprimer une couche de pont interne sur un remplissage plein interne légèrement non soutenu. Les options ci-dessous contrôlent la quantité de filtrage, c’est-à-dire la quantité de ponts internes créés.\n" "\n" -"Désactivé - Désactive cette option. Il s’agit du comportement par défaut, " -"qui fonctionne bien dans la plupart des cas.\n" +"Désactivé - Désactive cette option. Il s’agit du comportement par défaut, qui fonctionne bien dans la plupart des cas.\n" "\n" -"Filtrage limité - Crée des ponts internes sur les surfaces fortement " -"inclinées, tout en évitant de créer des ponts internes inutiles. Cette " -"option fonctionne bien pour la plupart des modèles difficiles.\n" +"Filtrage limité - Crée des ponts internes sur les surfaces fortement inclinées, tout en évitant de créer des ponts internes inutiles. Cette option fonctionne bien pour la plupart des modèles difficiles.\n" "\n" -"Pas de filtrage - Crée des ponts internes sur chaque surplomb interne " -"potentiel. Cette option est utile pour les modèles à surface supérieure " -"fortement inclinée. Cependant, dans la plupart des cas, elle crée trop de " -"ponts inutiles." +"Pas de filtrage - Crée des ponts internes sur chaque surplomb interne potentiel. Cette option est utile pour les modèles à surface supérieure fortement inclinée. Cependant, dans la plupart des cas, elle crée trop de ponts inutiles." msgid "Disabled" msgstr "Désactivé" @@ -10670,15 +9100,8 @@ msgstr "Pas de filtrage" msgid "Max bridge length" msgstr "Longueur max des ponts" -msgid "" -"Max length of bridges that don't need support. Set it to 0 if you want all " -"bridges to be supported, and set it to a very large value if you don't want " -"any bridges to be supported." -msgstr "" -"Il s'agit de la longueur maximale des ponts qui n'ont pas besoin de support. " -"Mettez 0 si vous souhaitez que tous les ponts soient pris en charge, ou " -"mettez une valeur très élevée si vous souhaitez qu'aucun pont ne soit pris " -"en charge." +msgid "Max length of bridges that don't need support. Set it to 0 if you want all bridges to be supported, and set it to a very large value if you don't want any bridges to be supported." +msgstr "Il s'agit de la longueur maximale des ponts qui n'ont pas besoin de support. Mettez 0 si vous souhaitez que tous les ponts soient pris en charge, ou mettez une valeur très élevée si vous souhaitez qu'aucun pont ne soit pris en charge." msgid "End G-code" msgstr "G-code de fin" @@ -10689,12 +9112,8 @@ msgstr "G-code de fin lorsque vous avez terminé toute l'impression" msgid "Between Object Gcode" msgstr "G-code entre objet" -msgid "" -"Insert Gcode between objects. This parameter will only come into effect when " -"you print your models object by object" -msgstr "" -"Insérer le G-code entre les objets. Ce paramètre n’entrera en vigueur que " -"lorsque vous imprimerez vos modèles objet par objet." +msgid "Insert Gcode between objects. This parameter will only come into effect when you print your models object by object" +msgstr "Insérer le G-code entre les objets. Ce paramètre n’entrera en vigueur que lorsque vous imprimerez vos modèles objet par objet." msgid "End G-code when finish the printing of this filament" msgstr "G-code de fin lorsque l'impression de ce filament est terminée" @@ -10703,27 +9122,18 @@ msgid "Ensure vertical shell thickness" msgstr "Assurer l’épaisseur de la coque verticale" msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)\n" -"None: No solid infill will be added anywhere. Caution: Use this option " -"carefully if your model has sloped surfaces\n" +"Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)\n" +"None: No solid infill will be added anywhere. Caution: Use this option carefully if your model has sloped surfaces\n" "Critical Only: Avoid adding solid infill for walls\n" "Moderate: Add solid infill for heavily sloping surfaces only\n" "All: Add solid infill for all suitable sloping surfaces\n" "Default value is All." msgstr "" -"Ajouter un remplissage plein près des surfaces inclinées pour garantir " -"l’épaisseur verticale de la coque (couches solides supérieures et " -"inférieures).\n" -"Aucune : Aucun remplissage plein ne sera ajouté nulle part. Attention : " -"Utilisez cette option avec précaution si votre modèle comporte des surfaces " -"inclinées.\n" -"Critique seulement : Évitez d’ajouter des remplissages solides pour les " -"parois.\n" -"Modéré : Ajouter un remplissage plein uniquement pour les surfaces fortement " -"inclinées\n" -"Tous : ajouter un remplissage plein pour toutes les surfaces inclinées " -"appropriées.\n" +"Ajouter un remplissage plein près des surfaces inclinées pour garantir l’épaisseur verticale de la coque (couches solides supérieures et inférieures).\n" +"Aucune : Aucun remplissage plein ne sera ajouté nulle part. Attention : Utilisez cette option avec précaution si votre modèle comporte des surfaces inclinées.\n" +"Critique seulement : Évitez d’ajouter des remplissages solides pour les parois.\n" +"Modéré : Ajouter un remplissage plein uniquement pour les surfaces fortement inclinées\n" +"Tous : ajouter un remplissage plein pour toutes les surfaces inclinées appropriées.\n" "La valeur par défaut est Tous." msgid "Critical Only" @@ -10766,58 +9176,31 @@ msgid "Bottom surface pattern" msgstr "Motif de surface inférieure" msgid "Line pattern of bottom surface infill, not bridge infill" -msgstr "" -"Motif de ligne du remplissage de la surface inférieure, pas du remplissage " -"du pont" +msgstr "Motif de ligne du remplissage de la surface inférieure, pas du remplissage du pont" msgid "Internal solid infill pattern" msgstr "Motif de remplissage plein interne" -msgid "" -"Line pattern of internal solid infill. if the detect narrow internal solid " -"infill be enabled, the concentric pattern will be used for the small area." -msgstr "" -"Modèle de ligne de remplissage interne. Si la détection d’un remplissage " -"interne étroit est activée, le modèle concentrique sera utilisé pour la " -"petite zone." +msgid "Line pattern of internal solid infill. if the detect narrow internal solid infill be enabled, the concentric pattern will be used for the small area." +msgstr "Modèle de ligne de remplissage interne. Si la détection d’un remplissage interne étroit est activée, le modèle concentrique sera utilisé pour la petite zone." -msgid "" -"Line width of outer wall. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Largeur de la ligne de la paroi extérieure. Si elle est exprimée en %, elle " -"sera calculée sur le diamètre de la buse." +msgid "Line width of outer wall. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Largeur de la ligne de la paroi extérieure. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." -msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." -msgstr "" -"Vitesse de paroi extérieure qui est la plus à l'extérieur et visible. Elle " -"est généralement plus lente que la vitesse de la paroi interne pour obtenir " -"une meilleure qualité." +msgid "Speed of outer wall which is outermost and visible. It's used to be slower than inner wall speed to get better quality." +msgstr "Vitesse de paroi extérieure qui est la plus à l'extérieur et visible. Elle est généralement plus lente que la vitesse de la paroi interne pour obtenir une meilleure qualité." msgid "Small perimeters" msgstr "Petits périmètres" -msgid "" -"This separate setting will affect the speed of perimeters having radius <= " -"small_perimeter_threshold (usually holes). If expressed as percentage (for " -"example: 80%) it will be calculated on the outer wall speed setting above. " -"Set to zero for auto." -msgstr "" -"Ce paramètre séparé affectera la vitesse des périmètres ayant un rayon <= " -"petite longueur de périmètre (généralement des trous). S’il est exprimé en " -"pourcentage (par exemple : 80%), il sera calculé sur la vitesse de la paroi " -"extérieure ci-dessus. Mettre à zéro pour automatique." +msgid "This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. Set to zero for auto." +msgstr "Ce paramètre séparé affectera la vitesse des périmètres ayant un rayon <= petite longueur de périmètre (généralement des trous). S’il est exprimé en pourcentage (par exemple : 80%), il sera calculé sur la vitesse de la paroi extérieure ci-dessus. Mettre à zéro pour automatique." msgid "Small perimeters threshold" msgstr "Seuil des petits périmètres" -msgid "" -"This sets the threshold for small perimeter length. Default threshold is 0mm" -msgstr "" -"Cela définit le seuil pour une petite longueur de périmètre. Le seuil par " -"défaut est de 0 mm" +msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "Cela définit le seuil pour une petite longueur de périmètre. Le seuil par défaut est de 0 mm" msgid "Walls printing order" msgstr "Ordre d’impression des parois" @@ -10825,52 +9208,21 @@ msgstr "Ordre d’impression des parois" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighouring perimeter while printing. However, this option " -"results in slightly reduced surface quality as the external perimeter is " -"deformed by being squashed to the internal perimeter.\n" +"Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter.\n" "\n" -"Use Inner/Outer/Inner for the best external surface finish and dimensional " -"accuracy as the external wall is printed undisturbed from an internal " -"perimeter. However, overhang performance will reduce as there is no internal " -"perimeter to print the external wall against. This option requires a minimum " -"of 3 walls to be effective as it prints the internal walls from the 3rd " -"perimeter onwards first, then the external perimeter and, finally, the first " -"internal perimeter. This option is recomended against the Outer/Inner option " -"in most cases. \n" +"Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recomended against the Outer/Inner option in most cases. \n" "\n" -"Use Outer/Inner for the same external wall quality and dimensional accuracy " -"benefits of Inner/Outer/Inner option. However, the z seams will appear less " -"consistent as the first extrusion of a new layer starts on a visible " -"surface.\n" +"Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface.\n" "\n" " " msgstr "" -"Séquence d'impression des parois internes (intérieures) et externes " -"(extérieures). \n" +"Séquence d'impression des parois internes (intérieures) et externes (extérieures). \n" "\n" -"Utilisez Intérieur/Extérieur pour obtenir les meilleurs surplombs. En effet, " -"les parois en surplomb peuvent adhérer à un périmètre voisin lors de " -"l'impression. Toutefois, cette option entraîne une légère diminution de la " -"qualité de la surface, car le périmètre externe est déformé par l'écrasement " -"du périmètre interne.\n" +"Utilisez Intérieur/Extérieur pour obtenir les meilleurs surplombs. En effet, les parois en surplomb peuvent adhérer à un périmètre voisin lors de l'impression. Toutefois, cette option entraîne une légère diminution de la qualité de la surface, car le périmètre externe est déformé par l'écrasement du périmètre interne.\n" "\n" -"Utilisez l’option Intérieur/Extérieur/Intérieur pour obtenir la meilleure " -"finition de surface externe et la meilleure précision dimensionnelle, car la " -"paroi externe est imprimée sans être dérangée par un périmètre interne. " -"Cependant, les performances de la paroi en surplomb seront réduites car il " -"n’y a pas de périmètre interne contre lequel imprimer la paroi externe. " -"Cette option nécessite un minimum de trois parois pour être efficace, car " -"elle imprime d’abord les parois internes à partir du troisième périmètre, " -"puis le périmètre externe et, enfin, le premier périmètre interne. Cette " -"option est recommandée par rapport à l’option Extérieur/intérieur dans la " -"plupart des cas. \n" +"Utilisez l’option Intérieur/Extérieur/Intérieur pour obtenir la meilleure finition de surface externe et la meilleure précision dimensionnelle, car la paroi externe est imprimée sans être dérangée par un périmètre interne. Cependant, les performances de la paroi en surplomb seront réduites car il n’y a pas de périmètre interne contre lequel imprimer la paroi externe. Cette option nécessite un minimum de trois parois pour être efficace, car elle imprime d’abord les parois internes à partir du troisième périmètre, puis le périmètre externe et, enfin, le premier périmètre interne. Cette option est recommandée par rapport à l’option Extérieur/intérieur dans la plupart des cas. \n" "\n" -"Utilisez l’option Extérieur/intérieur pour bénéficier de la même qualité de " -"paroi externe et de la même précision dimensionnelle que l’option Intérieur/" -"extérieur/intérieur. Cependant, les joints en z paraîtront moins cohérents " -"car la première extrusion d’une nouvelle couche commence sur une surface " -"visible.\n" +"Utilisez l’option Extérieur/intérieur pour bénéficier de la même qualité de paroi externe et de la même précision dimensionnelle que l’option Intérieur/extérieur/intérieur. Cependant, les joints en z paraîtront moins cohérents car la première extrusion d’une nouvelle couche commence sur une surface visible.\n" "\n" " " @@ -10887,46 +9239,27 @@ msgid "Print infill first" msgstr "Imprimer d’abord le remplissage" msgid "" -"Order of wall/infill. When the tickbox is unchecked the walls are printed " -"first, which works best in most cases.\n" +"Order of wall/infill. When the tickbox is unchecked the walls are printed first, which works best in most cases.\n" "\n" -"Printing infill first may help with extreme overhangs as the walls have the " -"neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"Printing infill first may help with extreme overhangs as the walls have the neighbouring infill to adhere to. However, the infill will slighly push out the printed walls where it is attached to them, resulting in a worse external surface finish. It can also cause the infill to shine through the external surfaces of the part." msgstr "" -"Ordre des parois/remplissages. Lorsque la case n’est pas cochée, les parois " -"sont imprimées en premier, ce qui fonctionne le mieux dans la plupart des " -"cas.\n" +"Ordre des parois/remplissages. Lorsque la case n’est pas cochée, les parois sont imprimées en premier, ce qui fonctionne le mieux dans la plupart des cas.\n" "\n" -"L’impression du remplissage en premier peut aider dans le cas de parois en " -"surplomb importantes, car les parois ont le remplissage adjacent auquel " -"adhérer. Cependant, le remplissage repoussera légèrement les parois " -"imprimées à l’endroit où il est fixé, ce qui se traduira par une moins bonne " -"finition de la surface extérieure. Cela peut également faire ressortir le " -"remplissage à travers les surfaces externes de la pièce." +"L’impression du remplissage en premier peut aider dans le cas de parois en surplomb importantes, car les parois ont le remplissage adjacent auquel adhérer. Cependant, le remplissage repoussera légèrement les parois imprimées à l’endroit où il est fixé, ce qui se traduira par une moins bonne finition de la surface extérieure. Cela peut également faire ressortir le remplissage à travers les surfaces externes de la pièce." msgid "Wall loop direction" msgstr "Direction de la paroi" msgid "" -"The direction which the wall loops are extruded when looking down from the " -"top.\n" +"The direction which the wall loops are extruded when looking down from the top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on " -"odd is enabled. Set this to any option other than Auto will force the wall " -"direction regardless of the Reverse on odd.\n" +"By default all walls are extruded in counter-clockwise, unless Reverse on odd is enabled. Set this to any option other than Auto will force the wall direction regardless of the Reverse on odd.\n" "\n" "This option will be disabled if sprial vase mode is enabled." msgstr "" -"La direction dans laquelle les boucles de la paroi sont extrudées lorsque " -"l’on regarde du haut vers le bas.\n" +"La direction dans laquelle les boucles de la paroi sont extrudées lorsque l’on regarde du haut vers le bas.\n" "\n" -"Par défaut, toutes les parois sont extrudées dans le sens inverse des " -"aiguilles d’une montre, sauf si l’option Inverser sur impair est activée. Si " -"vous choisissez une option autre qu’Auto, la direction des parois sera " -"forcée, indépendamment de l’option Inverser sur l’impair.\n" +"Par défaut, toutes les parois sont extrudées dans le sens inverse des aiguilles d’une montre, sauf si l’option Inverser sur impair est activée. Si vous choisissez une option autre qu’Auto, la direction des parois sera forcée, indépendamment de l’option Inverser sur l’impair.\n" "\n" "Cette option sera désactivée si le mode vase sprial est activé." @@ -10939,29 +9272,17 @@ msgstr "Dans le sens des aiguilles d’une montre" msgid "Height to rod" msgstr "Hauteur jusqu’à la tige" -msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " -"by-object printing." -msgstr "" -"Distance entre la pointe de la buse et la tige de carbone inférieure. " -"Utilisé pour éviter les collisions lors de l'impression \"par objets\"." +msgid "Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object printing." +msgstr "Distance entre la pointe de la buse et la tige de carbone inférieure. Utilisé pour éviter les collisions lors de l'impression \"par objets\"." msgid "Height to lid" msgstr "Hauteur au couvercle" -msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" -"object printing." -msgstr "" -"Distance entre la pointe de la buse et le capot. Utilisé pour éviter les " -"collisions lors de l'impression \"par objets\"." +msgid "Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." +msgstr "Distance entre la pointe de la buse et le capot. Utilisé pour éviter les collisions lors de l'impression \"par objets\"." -msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." -msgstr "" -"Rayon de dégagement autour de l'extrudeur : utilisé pour éviter les " -"collisions lors de l'impression par objets." +msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." +msgstr "Rayon de dégagement autour de l'extrudeur : utilisé pour éviter les collisions lors de l'impression par objets." msgid "Nozzle height" msgstr "Hauteur de la buse" @@ -10972,71 +9293,26 @@ msgstr "Hauteur de l’extrémité de la buse." msgid "Bed mesh min" msgstr "Maillage du plateau min" -msgid "" -"This option sets the min point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To " -"ensure the probe point does not go outside the bed area, the minimum and " -"maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (-99999, -99999), which " -"means there are no limits, thus allowing probing across the entire bed." -msgstr "" -"Cette option définit le point minimum de la zone de maillage du plateau " -"autorisée. En raison du décalage XY de la sonde, la plupart des imprimantes " -"ne sont pas en mesure de sonder l’ensemble du plateau. Pour s’assurer que le " -"point de palpage ne sort pas de la zone du plateau, les points minimum et " -"maximum du maillage du lit doivent être définis de manière appropriée. " -"OrcaSlicer veille à ce que les valeurs adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max ne dépassent pas ces points min/max. Ces informations " -"peuvent généralement être obtenues auprès du fabricant de votre imprimante. " -"Le paramètre par défaut est (-99999, -99999), ce qui signifie qu’il n’y a " -"pas de limites, autorisant ainsi le palpage sur l’ensemble du plateau." +msgid "This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (-99999, -99999), which means there are no limits, thus allowing probing across the entire bed." +msgstr "Cette option définit le point minimum de la zone de maillage du plateau autorisée. En raison du décalage XY de la sonde, la plupart des imprimantes ne sont pas en mesure de sonder l’ensemble du plateau. Pour s’assurer que le point de palpage ne sort pas de la zone du plateau, les points minimum et maximum du maillage du lit doivent être définis de manière appropriée. OrcaSlicer veille à ce que les valeurs adaptive_bed_mesh_min/adaptive_bed_mesh_max ne dépassent pas ces points min/max. Ces informations peuvent généralement être obtenues auprès du fabricant de votre imprimante. Le paramètre par défaut est (-99999, -99999), ce qui signifie qu’il n’y a pas de limites, autorisant ainsi le palpage sur l’ensemble du plateau." msgid "Bed mesh max" msgstr "Maillage du plateau max" -msgid "" -"This option sets the max point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To " -"ensure the probe point does not go outside the bed area, the minimum and " -"maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (99999, 99999), which " -"means there are no limits, thus allowing probing across the entire bed." -msgstr "" -"Cette option définit le point maximum de la zone de maillage du plateau " -"autorisée. En raison du décalage XY de la sonde, la plupart des imprimantes " -"ne sont pas en mesure de sonder l’ensemble du plateau. Pour s’assurer que le " -"point de palpage ne sort pas de la zone du plateau, les points minimum et " -"maximum du maillage du lit doivent être définis de manière appropriée. " -"OrcaSlicer veille à ce que les valeurs adaptive_bed_mesh_min/" -"adaptive_bed_mesh_max ne dépassent pas ces points min/max. Ces informations " -"peuvent généralement être obtenues auprès du fabricant de votre imprimante. " -"Le réglage par défaut est (99999, 99999), ce qui signifie qu’il n’y a pas de " -"limites, autorisant ainsi le palpage sur l’ensemble du plateau." +msgid "This option sets the max point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (99999, 99999), which means there are no limits, thus allowing probing across the entire bed." +msgstr "Cette option définit le point maximum de la zone de maillage du plateau autorisée. En raison du décalage XY de la sonde, la plupart des imprimantes ne sont pas en mesure de sonder l’ensemble du plateau. Pour s’assurer que le point de palpage ne sort pas de la zone du plateau, les points minimum et maximum du maillage du lit doivent être définis de manière appropriée. OrcaSlicer veille à ce que les valeurs adaptive_bed_mesh_min/adaptive_bed_mesh_max ne dépassent pas ces points min/max. Ces informations peuvent généralement être obtenues auprès du fabricant de votre imprimante. Le réglage par défaut est (99999, 99999), ce qui signifie qu’il n’y a pas de limites, autorisant ainsi le palpage sur l’ensemble du plateau." msgid "Probe point distance" msgstr "Distance entre les points de mesure" -msgid "" -"This option sets the preferred distance between probe points (grid size) for " -"the X and Y directions, with the default being 50mm for both X and Y." -msgstr "" -"Cette option définit la distance préférée entre les points de mesure (taille " -"de la grille) pour les directions X et Y, la valeur par défaut étant de 50 " -"mm pour les deux directions." +msgid "This option sets the preferred distance between probe points (grid size) for the X and Y directions, with the default being 50mm for both X and Y." +msgstr "Cette option définit la distance préférée entre les points de mesure (taille de la grille) pour les directions X et Y, la valeur par défaut étant de 50 mm pour les deux directions." msgid "Mesh margin" msgstr "Marge de la maille" -msgid "" -"This option determines the additional distance by which the adaptive bed " -"mesh area should be expanded in the XY directions." -msgstr "" -"Cette option détermine la distance supplémentaire de laquelle le maillage du " -"plateau adaptatif doit être étendu dans les directions XY." +msgid "This option determines the additional distance by which the adaptive bed mesh area should be expanded in the XY directions." +msgstr "Cette option détermine la distance supplémentaire de laquelle le maillage du plateau adaptatif doit être étendu dans les directions XY." msgid "Extruder Color" msgstr "Couleur de l'extrudeur" @@ -11050,40 +9326,23 @@ msgstr "Décalage de l'extrudeur" msgid "Flow ratio" msgstr "Rapport de débit" -msgid "" -"The material may have volumetric change after switching between molten state " -"and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow" -msgstr "" -"Le matériau peut avoir un changement volumétrique après avoir basculé entre " -"l'état fondu et l'état cristallin. Ce paramètre modifie proportionnellement " -"tout le flux d'extrusion de ce filament dans le G-code. La plage de valeurs " -"recommandée est comprise entre 0,95 et 1,05. Vous pouvez peut-être ajuster " -"cette valeur pour obtenir une belle surface plane en cas de léger " -"débordement ou sous-dépassement" +msgid "The material may have volumetric change after switching between molten state and crystalline state. This setting changes all extrusion flow of this filament in gcode proportionally. Recommended value range is between 0.95 and 1.05. Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow" +msgstr "Le matériau peut avoir un changement volumétrique après avoir basculé entre l'état fondu et l'état cristallin. Ce paramètre modifie proportionnellement tout le débit d'extrusion de ce filament dans le G-code. La plage de valeurs recommandée est comprise entre 0,95 et 1,05. Vous pouvez peut-être ajuster cette valeur pour obtenir une belle surface plane en cas de léger débordement ou sous-dépassement" msgid "" -"The material may have volumetric change after switching between molten state " -"and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow. \n" +"The material may have volumetric change after switching between molten state and crystalline state. This setting changes all extrusion flow of this filament in gcode proportionally. Recommended value range is between 0.95 and 1.05. Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow. \n" "\n" -"The final object flow ratio is this value multiplied by the filament flow " -"ratio." +"The final object flow ratio is this value multiplied by the filament flow ratio." msgstr "" +"Le matériau peut présenter un changement volumétrique après le passage de l’état fondu à l’état cristallin. Ce paramètre modifie proportionnellement tous les débits d’extrusion de ce filament dans le gcode. La valeur recommandée est comprise entre 0,95 et 1,05. Vous pouvez peut-être ajuster cette valeur pour obtenir une belle surface plate lorsqu’il y a un léger débordement ou un sous-débordement. \n" +"\n" +"Le ratio de débit de l’objet final est cette valeur multipliée par le ratio de débit du filament." msgid "Enable pressure advance" msgstr "Activer la Pressure Advance" -msgid "" -"Enable pressure advance, auto calibration result will be overwriten once " -"enabled." -msgstr "" -"Activer le Pressure Advance, le résultat de l’auto calibration sera écrasé " -"une fois activé." +msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." +msgstr "Activer le Pressure Advance, le résultat de l’auto calibration sera écrasé une fois activé." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure Advance (Klipper) AKA Linear Advance (Marlin)" @@ -11093,101 +9352,49 @@ msgstr "Activer l’avance de pression adaptative (beta)" #, c-format, boost-format msgid "" -"With increasing print speeds (and hence increasing volumetric flow through " -"the nozzle) and increasing accelerations, it has been observed that the " -"effective PA value typically decreases. This means that a single PA value is " -"not always 100% optimal for all features and a compromise value is usually " -"used that does not cause too much bulging on features with lower flow speed " -"and accelerations while also not causing gaps on faster features.\n" +"With increasing print speeds (and hence increasing volumetric flow through the nozzle) and increasing accelerations, it has been observed that the effective PA value typically decreases. This means that a single PA value is not always 100%% optimal for all features and a compromise value is usually used that does not cause too much bulging on features with lower flow speed and accelerations while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of " -"your printer's extrusion system depending on the volumetric flow speed and " -"acceleration it is printing at. Internally, it generates a fitted model that " -"can extrapolate the needed pressure advance for any given volumetric flow " -"speed and acceleration, which is then emmited to the printer depending on " -"the current print conditions.\n" +"This feature aims to address this limitation by modeling the response of your printer's extrusion system depending on the volumetric flow speed and acceleration it is printing at. Internally, it generates a fitted model that can extrapolate the needed pressure advance for any given volumetric flow speed and acceleration, which is then emmited to the printer depending on the current print conditions.\n" "\n" -"When enabled, the pressure advance value above is overriden. However, a " -"reasonable default value above is strongly recomended to act as a fallback " -"and for when tool changing.\n" +"When enabled, the pressure advance value above is overriden. However, a reasonable default value above is strongly recomended to act as a fallback and for when tool changing.\n" "\n" msgstr "" +"Avec l’augmentation des vitesses d’impression (et donc du débit volumétrique à travers la buse) et des accélérations, il a été observé que la valeur effective du PA diminue généralement. Cela signifie qu’une valeur PA unique n’est pas toujours optimale à 100%% pour toutes les caractéristiques et qu’une valeur de compromis est généralement utilisée pour éviter de trop bomber les caractéristiques avec une vitesse d’écoulement et des accélérations plus faibles, tout en ne causant pas de lacunes sur les caractéristiques plus rapides.\n" +"\n" +"Cette fonction vise à remédier à cette limitation en modélisant la réponse du système d’extrusion de votre imprimante en fonction de la vitesse d’écoulement volumétrique et de l’accélération de l’impression. En interne, elle génère un modèle ajusté qui peut extrapoler l’avance de pression nécessaire pour une vitesse de débit volumétrique et une accélération données, qui est ensuite émise à l’imprimante en fonction des conditions d’impression actuelles.\n" +"\n" +"Lorsqu’elle est activée, la valeur de l’avance de pression ci-dessus est annulée. Cependant, il est fortement recommandé de choisir une valeur par défaut raisonnable pour servir de solution de repli et pour les changements d’outils.\n" msgid "Adaptive pressure advance measurements (beta)" msgstr "Mesures adaptatives de l’avance de pression (beta)" msgid "" -"Add sets of pressure advance (PA) values, the volumetric flow speeds and " -"accelerations they were measured at, separated by a comma. One set of values " -"per line. For example\n" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and accelerations they were measured at, separated by a comma. One set of values per line. For example\n" "0.04,3.96,3000\n" "0.033,3.96,10000\n" "0.029,7.91,3000\n" "0.026,7.91,10000\n" "\n" "How to calibrate:\n" -"1. Run the pressure advance test for at least 3 speeds per acceleration " -"value. It is recommended that the test is run for at least the speed of the " -"external perimeters, the speed of the internal perimeters and the fastest " -"feature print speed in your profile (usually its the sparse or solid " -"infill). Then run them for the same speeds for the slowest and fastest print " -"accelerations,and no faster than the recommended maximum acceleration as " -"given by the klipper input shaper.\n" -"2. Take note of the optimal PA value for each volumetric flow speed and " -"acceleration. You can find the flow number by selecting flow from the color " -"scheme drop down and move the horizontal slider over the PA pattern lines. " -"The number should be visible at the bottom of the page. The ideal PA value " -"should be decreasing the higher the volumetric flow is. If it is not, " -"confirm that your extruder is functioning correctly.The slower and with less " -"acceleration you print, the larger the range of acceptable PA values. If no " -"difference is visible, use the PA value from the faster test.3. Enter the " -"triplets of PA values, Flow and Accelerations in the text box here and save " -"your filament profile\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration value. It is recommended that the test is run for at least the speed of the external perimeters, the speed of the internal perimeters and the fastest feature print speed in your profile (usually its the sparse or solid infill). Then run them for the same speeds for the slowest and fastest print accelerations,and no faster than the recommended maximum acceleration as given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and acceleration. You can find the flow number by selecting flow from the color scheme drop down and move the horizontal slider over the PA pattern lines. The number should be visible at the bottom of the page. The ideal PA value should be decreasing the higher the volumetric flow is. If it is not, confirm that your extruder is functioning correctly.The slower and with less acceleration you print, the larger the range of acceptable PA values. If no difference is visible, use the PA value from the faster test.3. Enter the triplets of PA values, Flow and Accelerations in the text box here and save your filament profile\n" "\n" msgstr "" -"Ajouter des séries de valeurs d'avance de pression (PA), les vitesses de " -"débit volumétrique et les accélérations auxquelles elles ont été mesurées, " -"séparées par une virgule. Un ensemble de valeurs par ligne. Par exemple\n" +"Ajouter des séries de valeurs d'avance de pression (PA), les vitesses de débit volumétrique et les accélérations auxquelles elles ont été mesurées, séparées par une virgule. Un ensemble de valeurs par ligne. Par exemple\n" "0.04,3.96,3000\n" "0.033,3.96,10000\n" "0.029,7.91,3000\n" "0.026,7.91,10000\n" "\n" "Comment calibrer :\n" -"1. Effectuer le test d’avance de pression pour au moins 3 vitesses par " -"valeur d’accélération. Il est recommandé d’effectuer le test pour au moins " -"la vitesse des périmètres externes, la vitesse des périmètres internes et la " -"vitesse d’impression de la caractéristique la plus rapide de votre profil " -"(en général, il s’agit du remplissage clairsemé ou plein). Ensuite, il faut " -"les exécuter aux mêmes vitesses pour les accélérations d’impression les plus " -"lentes et les plus rapides, et pas plus vite que l’accélération maximale " -"recommandée par le modeleur d’entrée de klipper.\n" -"2. Notez la valeur optimale de PA pour chaque vitesse de flux volumétrique " -"et accélération. Vous pouvez trouver le numéro de débit en sélectionnant le " -"débit dans le menu déroulant du schéma de couleurs et en déplaçant le " -"curseur horizontal sur les lignes du schéma PA. Le chiffre doit être visible " -"en bas de la page. La valeur idéale du PA devrait diminuer au fur et à " -"mesure que le débit volumétrique augmente. Si ce n’est pas le cas, vérifiez " -"que votre extrudeur fonctionne correctement. Plus vous imprimez lentement et " -"avec peu d’accélération, plus la plage des valeurs PA acceptables est " -"grande. Si aucune différence n’est visible, utilisez la valeur PA du test le " -"plus rapide.3 Entrez les triplets de valeurs PA, de débit et d’accélérations " -"dans la zone de texte ici et sauvegardez votre profil de filament.\n" +"1. Effectuer le test d’avance de pression pour au moins 3 vitesses par valeur d’accélération. Il est recommandé d’effectuer le test pour au moins la vitesse des périmètres externes, la vitesse des périmètres internes et la vitesse d’impression de la caractéristique la plus rapide de votre profil (en général, il s’agit du remplissage clairsemé ou plein). Ensuite, il faut les exécuter aux mêmes vitesses pour les accélérations d’impression les plus lentes et les plus rapides, et pas plus vite que l’accélération maximale recommandée par le modeleur d’entrée de klipper.\n" +"2. Notez la valeur optimale de PA pour chaque vitesse de débit volumétrique et accélération. Vous pouvez trouver le numéro de débit en sélectionnant le débit dans le menu déroulant du schéma de couleurs et en déplaçant le curseur horizontal sur les lignes du schéma PA. Le chiffre doit être visible en bas de la page. La valeur idéale du PA devrait diminuer au fur et à mesure que le débit volumétrique augmente. Si ce n’est pas le cas, vérifiez que votre extrudeur fonctionne correctement. Plus vous imprimez lentement et avec peu d’accélération, plus la plage des valeurs PA acceptables est grande. Si aucune différence n’est visible, utilisez la valeur PA du test le plus rapide.3 Entrez les triplets de valeurs PA, de débit et d’accélérations dans la zone de texte ici et sauvegardez votre profil de filament.\n" msgid "Enable adaptive pressure advance for overhangs (beta)" -msgstr "" -"Activation de l’avance de pression adaptative pour les surplombs (beta)" +msgstr "Activation de l’avance de pression adaptative pour les surplombs (beta)" -msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the " -"same feature. This is an experimental option, as if the PA profile is not " -"set accurately, it will cause uniformity issues on the external surfaces " -"before and after overhangs.\n" -msgstr "" -"Activer le PA adaptatif pour les surplombs ainsi que pour les changements de " -"débit au sein d’un même élément. Il s’agit d’une option expérimentale, car " -"si le profil PA n’est pas défini avec précision, il entraînera des problèmes " -"d’uniformité sur les surfaces externes avant et après les surplombs.\n" +msgid "Enable adaptive PA for overhangs as well as when flow changes within the same feature. This is an experimental option, as if the PA profile is not set accurately, it will cause uniformity issues on the external surfaces before and after overhangs.\n" +msgstr "Activer le PA adaptatif pour les surplombs ainsi que pour les changements de débit au sein d’un même élément. Il s’agit d’une option expérimentale, car si le profil PA n’est pas défini avec précision, il entraînera des problèmes d’uniformité sur les surfaces externes avant et après les surplombs.\n" msgid "Pressure advance for bridges" msgstr "Avance de pression pour les ponts" @@ -11195,74 +9402,43 @@ msgstr "Avance de pression pour les ponts" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of " -"slight under extrusion immediately after bridges. This is caused by the " -"pressure drop in the nozzle when printing in the air and a lower PA helps " -"counteract this." +" A lower PA value when printing bridges helps reduce the appearance of slight under extrusion immediately after bridges. This is caused by the pressure drop in the nozzle when printing in the air and a lower PA helps counteract this." msgstr "" "Valeur de l’avance de pression pour les ponts. Régler à 0 pour désactiver. \n" "\n" -" Une valeur PA plus faible lors de l’impression de ponts permet de réduire " -"l’apparition d’une légère sous-extrusion immédiatement après les ponts. Ce " -"phénomène est dû à la chute de pression dans la buse lors de l’impression " -"dans l’air et une valeur PA plus faible permet d’y remédier." +" Une valeur PA plus faible lors de l’impression de ponts permet de réduire l’apparition d’une légère sous-extrusion immédiatement après les ponts. Ce phénomène est dû à la chute de pression dans la buse lors de l’impression dans l’air et une valeur PA plus faible permet d’y remédier." -msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." -msgstr "" -"Largeur de ligne par défaut si les autres largeurs de ligne sont fixées à 0. " -"Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." +msgid "Default line width if other line widths are set to 0. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Largeur de ligne par défaut si les autres largeurs de ligne sont fixées à 0. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." msgid "Keep fan always on" msgstr "Garder le ventilateur toujours actif" -msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" -msgstr "" -"Si ce paramètre est activé, le ventilateur de refroidissement des pièces ne " -"sera jamais arrêté et fonctionnera au moins à la vitesse minimale pour " -"réduire la fréquence de démarrage et d'arrêt" +msgid "If enable this setting, part cooling fan will never be stoped and will run at least at minimum speed to reduce the frequency of starting and stoping" +msgstr "Si ce paramètre est activé, le ventilateur de refroidissement des pièces ne sera jamais arrêté et fonctionnera au moins à la vitesse minimale pour réduire la fréquence de démarrage et d'arrêt" msgid "Don't slow down outer walls" msgstr "Ne pas ralentir sur les parois extérieures" msgid "" -"If enabled, this setting will ensure external perimeters are not slowed down " -"to meet the minimum layer time. This is particularly helpful in the below " -"scenarios:\n" +"If enabled, this setting will ensure external perimeters are not slowed down to meet the minimum layer time. This is particularly helpful in the below scenarios:\n" "\n" " 1. To avoid changes in shine when printing glossy filaments \n" -"2. To avoid changes in external wall speed which may create slight wall " -"artefacts that appear like z banding \n" -"3. To avoid printing at speeds which cause VFAs (fine artefacts) on the " -"external walls\n" +"2. To avoid changes in external wall speed which may create slight wall artefacts that appear like z banding \n" +"3. To avoid printing at speeds which cause VFAs (fine artefacts) on the external walls\n" "\n" msgstr "" -"S’il est activé, ce paramètre garantit que les périmètres externes ne sont " -"pas ralentis pour respecter la durée minimale de la couche. Ceci est " -"particulièrement utile dans les scénarios suivants :\n" +"S’il est activé, ce paramètre garantit que les périmètres externes ne sont pas ralentis pour respecter la durée minimale de la couche. Ceci est particulièrement utile dans les scénarios suivants :\n" "\n" -" 1. Pour éviter les changements de brillance lors de l’impression de " -"filaments brillants \n" -"2. Pour éviter les changements de vitesse des parois externes qui peuvent " -"créer de légers artefacts de paroi qui apparaissent comme des bandes en z. \n" -"3. Pour éviter d’imprimer à des vitesses qui provoquent des VFA (artefacts " -"fins) sur les parois externes.\n" +" 1. Pour éviter les changements de brillance lors de l’impression de filaments brillants \n" +"2. Pour éviter les changements de vitesse des parois externes qui peuvent créer de légers artefacts de paroi qui apparaissent comme des bandes en z. \n" +"3. Pour éviter d’imprimer à des vitesses qui provoquent des VFA (artefacts fins) sur les parois externes.\n" msgid "Layer time" msgstr "Temps de couche" -msgid "" -"Part cooling fan will be enabled for layers of which estimated time is " -"shorter than this value. Fan speed is interpolated between the minimum and " -"maximum fan speeds according to layer printing time" -msgstr "" -"Le ventilateur de refroidissement des pièces sera activé pour les couches " -"dont le temps estimé est inférieur à cette valeur. La vitesse du ventilateur " -"est interpolée entre les vitesses minimale et maximale du ventilateur en " -"fonction du temps d'impression de la couche" +msgid "Part cooling fan will be enabled for layers of which estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time" +msgstr "Le ventilateur de refroidissement des pièces sera activé pour les couches dont le temps estimé est inférieur à cette valeur. La vitesse du ventilateur est interpolée entre les vitesses minimale et maximale du ventilateur en fonction du temps d'impression de la couche" msgid "Default color" msgstr "Couleur par défaut" @@ -11279,22 +9455,11 @@ msgstr "Vous pouvez mettre vos notes concernant le filament ici." msgid "Required nozzle HRC" msgstr "Buse HRC requise" -msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking " -"of nozzle's HRC." -msgstr "" -"Dureté HRC minimum de la buse requis pour imprimer le filament. Une valeur " -"de 0 signifie qu'il n'y a pas de vérification de la dureté HRC de la buse." +msgid "Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's HRC." +msgstr "Dureté HRC minimum de la buse requis pour imprimer le filament. Une valeur de 0 signifie qu'il n'y a pas de vérification de la dureté HRC de la buse." -msgid "" -"This setting stands for how much volume of filament can be melted and " -"extruded per second. Printing speed is limited by max volumetric speed, in " -"case of too high and unreasonable speed setting. Can't be zero" -msgstr "" -"Ce paramètre correspond au volume de filament qui peut être fondu et extrudé " -"par seconde. La vitesse d'impression sera limitée par la vitesse " -"volumétrique maximale en cas de réglage de vitesse déraisonnablement trop " -"élevé. Cette valeur ne peut pas être nulle." +msgid "This setting stands for how much volume of filament can be melted and extruded per second. Printing speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. Can't be zero" +msgstr "Ce paramètre correspond au volume de filament qui peut être fondu et extrudé par seconde. La vitesse d'impression sera limitée par la vitesse volumétrique maximale en cas de réglage de vitesse déraisonnablement trop élevé. Cette valeur ne peut pas être nulle." msgid "mm³/s" msgstr "mm³/s" @@ -11302,54 +9467,37 @@ msgstr "mm³/s" msgid "Filament load time" msgstr "Temps de chargement du filament" -msgid "" -"Time to load new filament when switch filament. It's usually applicable for " -"single-extruder multi-material machines. For tool changers or multi-tool " -"machines, it's typically 0. For statistics only" -msgstr "" +msgid "Time to load new filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only" +msgstr "Temps nécessaire pour charger un nouveau filament lors d’un changement de filament. Ce paramètre s’applique généralement aux machines multi-matériaux à un seul extrudeur. La valeur est généralement de 0 pour les changeurs d’outils ou les machines multi-outils. Pour les statistiques uniquement." msgid "Filament unload time" msgstr "Temps de déchargement du filament" -msgid "" -"Time to unload old filament when switch filament. It's usually applicable " -"for single-extruder multi-material machines. For tool changers or multi-tool " -"machines, it's typically 0. For statistics only" -msgstr "" +msgid "Time to unload old filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only" +msgstr "Temps nécessaire pour décharger l’ancien filament lors du changement de filament. Ce paramètre s’applique généralement aux machines multi-matériaux à un seul extrudeur. Pour les changeurs d’outils ou les machines multi-outils, il est généralement égal à 0. Pour les statistiques uniquement." msgid "Tool change time" -msgstr "" +msgstr "Délais nécessaire au changement d’outil" -msgid "" -"Time taken to switch tools. It's usually applicable for tool changers or " -"multi-tool machines. For single-extruder multi-material machines, it's " -"typically 0. For statistics only" -msgstr "" +msgid "Time taken to switch tools. It's usually applicable for tool changers or multi-tool machines. For single-extruder multi-material machines, it's typically 0. For statistics only" +msgstr "Durée nécessaire pour changer d’outil. Il s’applique généralement aux changeurs d’outils ou aux machines multi-outils. Pour les machines multi-matériaux mono-extrudeuses, il est généralement égal à 0. Pour les statistiques uniquement." -msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important " -"and should be accurate" -msgstr "" -"Le diamètre du filament est utilisé pour calculer les variables d'extrusion " -"dans le G-code, il est donc important qu'il soit exact et précis." +msgid "Filament diameter is used to calculate extrusion in gcode, so it's important and should be accurate" +msgstr "Le diamètre du filament est utilisé pour calculer les variables d'extrusion dans le G-code, il est donc important qu'il soit exact et précis." msgid "Pellet flow coefficient" msgstr "Coefficient d’écoulement des pellets" msgid "" -"Pellet flow coefficient is emperically derived and allows for volume " -"calculation for pellet printers.\n" +"Pellet flow coefficient is emperically derived and allows for volume calculation for pellet printers.\n" "\n" -"Internally it is converted to filament_diameter. All other volume " -"calculations remain the same.\n" +"Internally it is converted to filament_diameter. All other volume calculations remain the same.\n" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" -"Le coefficient d’écoulement des pellets est dérivé de manière empirique et " -"permet de calculer le volume des imprimantes à pellets.\n" +"Le coefficient d’écoulement des pellets est dérivé de manière empirique et permet de calculer le volume des imprimantes à pellets.\n" "\n" -"En interne, il est converti en diamètre de filament. Tous les autres calculs " -"de volume restent inchangés.\n" +"En interne, il est converti en diamètre de filament. Tous les autres calculs de volume restent inchangés.\n" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" @@ -11358,18 +9506,11 @@ msgstr "Pourcentage de retrait" #, no-c-format, no-boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling (94% " -"if you measure 94mm instead of 100mm). The part will be scaled in xy to " -"compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done " -"after the checks." +"Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm). The part will be scaled in xy to compensate. Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done after the checks." msgstr "" -"Entrez le pourcentage de rétrécissement que le filament obtiendra après " -"refroidissement (94% si vous mesurez 94mm au lieu de 100mm). La pièce sera " -"mise à l’échelle en xy pour compenser. Seul le filament utilisé pour le " -"périmètre est pris en compte.\n" -"Veillez à laisser suffisamment d’espace entre les objets, car cette " -"compensation est effectuée après les contrôles." +"Entrez le pourcentage de rétrécissement que le filament obtiendra après refroidissement (94% si vous mesurez 94mm au lieu de 100mm). La pièce sera mise à l’échelle en xy pour compenser. Seul le filament utilisé pour le périmètre est pris en compte.\n" +"Veillez à laisser suffisamment d’espace entre les objets, car cette compensation est effectuée après les contrôles." msgid "Loading speed" msgstr "Vitesse de chargement" @@ -11386,43 +9527,26 @@ msgstr "Vitesse utilisée au tout début de la phase de chargement." msgid "Unloading speed" msgstr "Vitesse de déchargement" -msgid "" -"Speed used for unloading the filament on the wipe tower (does not affect " -"initial part of unloading just after ramming)." -msgstr "" -"Vitesse utilisée pour le déchargement du filament sur la tour d’essuyage " -"(n’affecte pas la partie initiale de retrait juste après le pilonnage)." +msgid "Speed used for unloading the filament on the wipe tower (does not affect initial part of unloading just after ramming)." +msgstr "Vitesse utilisée pour le déchargement du filament sur la tour d’essuyage (n’affecte pas la partie initiale de retrait juste après le pilonnage)." msgid "Unloading speed at the start" msgstr "Vitesse de déchargement au démarrage" -msgid "" -"Speed used for unloading the tip of the filament immediately after ramming." -msgstr "" -"Vitesse utilisée pour décharger la pointe du filament immédiatement après le " -"pilonnage." +msgid "Speed used for unloading the tip of the filament immediately after ramming." +msgstr "Vitesse utilisée pour décharger la pointe du filament immédiatement après le pilonnage." msgid "Delay after unloading" msgstr "Délai après déchargement" -msgid "" -"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." -msgstr "" -"Délai une fois le filament déchargé. Peut aider à obtenir des changements " -"d’outils fiables avec des matériaux flexibles qui peuvent nécessiter plus de " -"temps pour revenir aux dimensions d’origine." +msgid "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." +msgstr "Délai une fois le filament déchargé. Peut aider à obtenir des changements d’outils fiables avec des matériaux flexibles qui peuvent nécessiter plus de temps pour revenir aux dimensions d’origine." msgid "Number of cooling moves" msgstr "Nombre de mouvements de refroidissement" -msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." -msgstr "" -"Le filament est refroidi en étant déplacé d’avant en arrière dans les tubes " -"de refroidissement. Précisez le nombre souhaité de ces mouvements." +msgid "Filament is cooled by being moved back and forth in the cooling tubes. Specify desired number of these moves." +msgstr "Le filament est refroidi en étant déplacé d’avant en arrière dans les tubes de refroidissement. Précisez le nombre souhaité de ces mouvements." msgid "Stamping loading speed" msgstr "Vitesse de chargement du marquage" @@ -11431,77 +9555,40 @@ msgid "Speed used for stamping." msgstr "Vitesse utilisée pour le marquage." msgid "Stamping distance measured from the center of the cooling tube" -msgstr "" -"Distance de marquage mesurée à partir du centre du tube de refroidissement" +msgstr "Distance de marquage mesurée à partir du centre du tube de refroidissement" -msgid "" -"If set to nonzero value, filament is moved toward the nozzle between the " -"individual cooling moves (\"stamping\"). This option configures how long " -"this movement should be before the filament is retracted again." -msgstr "" -"Si la valeur est différente de zéro, le filament est déplacé vers la buse " -"entre les différents mouvements de refroidissement («  marquage »). Cette " -"option permet de configurer la durée de ce mouvement avant que le filament " -"ne soit à nouveau rétracté." +msgid "If set to nonzero value, filament is moved toward the nozzle between the individual cooling moves (\"stamping\"). This option configures how long this movement should be before the filament is retracted again." +msgstr "Si la valeur est différente de zéro, le filament est déplacé vers la buse entre les différents mouvements de refroidissement («  marquage »). Cette option permet de configurer la durée de ce mouvement avant que le filament ne soit à nouveau rétracté." msgid "Speed of the first cooling move" msgstr "Vitesse du premier mouvement de refroidissement" msgid "Cooling moves are gradually accelerating beginning at this speed." -msgstr "" -"Les mouvements de refroidissement s’accélèrent progressivement à partir de " -"cette vitesse." +msgstr "Les mouvements de refroidissement s’accélèrent progressivement à partir de cette vitesse." msgid "Minimal purge on wipe tower" msgstr "Purge minimale sur la tour d’essuyage" -msgid "" -"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, Orca Slicer will always prime this amount of material into the wipe " -"tower to produce successive infill or sacrificial object extrusions reliably." -msgstr "" -"Après un changement d’outil, la position exacte du filament nouvellement " -"chargé à l’intérieur de la buse peut ne pas être connue et la pression du " -"filament n’est probablement pas encore stable. Avant de purger la tête " -"d’impression dans un remplissage ou un objet, Orca Slicer amorcera toujours " -"cette quantité de matériau dans la tour d’essuyage pour purger dans les " -"remplissages ou objets de manière fiable." +msgid "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, Orca Slicer will always prime this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably." +msgstr "Après un changement d’outil, la position exacte du filament nouvellement chargé à l’intérieur de la buse peut ne pas être connue et la pression du filament n’est probablement pas encore stable. Avant de purger la tête d’impression dans un remplissage ou un objet, Orca Slicer amorcera toujours cette quantité de matériau dans la tour d’essuyage pour purger dans les remplissages ou objets de manière fiable." msgid "Speed of the last cooling move" msgstr "Vitesse du dernier mouvement de refroidissement" msgid "Cooling moves are gradually accelerating towards this speed." -msgstr "" -"Les mouvements de refroidissement s’accélèrent progressivement vers cette " -"vitesse." +msgstr "Les mouvements de refroidissement s’accélèrent progressivement vers cette vitesse." msgid "Ramming parameters" msgstr "Paramètres de pilonnage" -msgid "" -"This string is edited by RammingDialog and contains ramming specific " -"parameters." -msgstr "" -"Cette chaîne est éditée par RammingDialog et contient des paramètres " -"spécifiques au pilonnage." +msgid "This string is edited by RammingDialog and contains ramming specific parameters." +msgstr "Cette chaîne est éditée par RammingDialog et contient des paramètres spécifiques au pilonnage." msgid "Enable ramming for multitool setups" msgstr "Activer le pilonnage pour les configurations multi-outils" -msgid "" -"Perform ramming when using multitool printer (i.e. when the 'Single Extruder " -"Multimaterial' in Printer Settings is unchecked). When checked, a small " -"amount of filament is rapidly extruded on the wipe tower just before the " -"toolchange. This option is only used when the wipe tower is enabled." -msgstr "" -"Effectuez un pilonnage lorsque vous utilisez une imprimante multi-outils " -"(c’est-à-dire lorsque l’option ‘Multi-matériau à extrudeur unique’ dans les " -"paramètres de l’imprimante n’est pas cochée). Une fois vérifié, une petite " -"quantité de filament est rapidement extrudée sur la tour d’essuyage juste " -"avant le changement d’outil. Cette option n’est utilisée que lorsque la tour " -"d’essuyage est activée." +msgid "Perform ramming when using multitool printer (i.e. when the 'Single Extruder Multimaterial' in Printer Settings is unchecked). When checked, a small amount of filament is rapidly extruded on the wipe tower just before the toolchange. This option is only used when the wipe tower is enabled." +msgstr "Effectuez un pilonnage lorsque vous utilisez une imprimante multi-outils (c’est-à-dire lorsque l’option ‘Multi-matériau à extrudeur unique’ dans les paramètres de l’imprimante n’est pas cochée). Une fois vérifié, une petite quantité de filament est rapidement extrudée sur la tour d’essuyage juste avant le changement d’outil. Cette option n’est utilisée que lorsque la tour d’essuyage est activée." msgid "Multitool ramming volume" msgstr "Volume du pilonnage multi-outils" @@ -11530,33 +9617,20 @@ msgstr "Le type de matériau du filament" msgid "Soluble material" msgstr "Matériau soluble" -msgid "" -"Soluble material is commonly used to print support and support interface" -msgstr "" -"Le matériau soluble est couramment utilisé pour imprimer le support et " -"l'interface de support" +msgid "Soluble material is commonly used to print support and support interface" +msgstr "Le matériau soluble est couramment utilisé pour imprimer le support et l'interface de support" msgid "Support material" msgstr "Supports" -msgid "" -"Support material is commonly used to print support and support interface" -msgstr "" -"Le matériau de support est généralement utilisé pour imprimer le support et " -"les interfaces de support." +msgid "Support material is commonly used to print support and support interface" +msgstr "Le matériau de support est généralement utilisé pour imprimer le support et les interfaces de support." msgid "Softening temperature" msgstr "Température de vitrification" -msgid "" -"The material softens at this temperature, so when the bed temperature is " -"equal to or greater than it, it's highly recommended to open the front door " -"and/or remove the upper glass to avoid cloggings." -msgstr "" -"Température où le matériau se ramollit. Lorsque la température du plateau " -"est égale ou supérieure à celle-ci, il est fortement recommandé d’ouvrir la " -"porte avant et/ou de retirer la vitre supérieure pour éviter les problèmes " -"d’obstruction." +msgid "The material softens at this temperature, so when the bed temperature is equal to or greater than it, it's highly recommended to open the front door and/or remove the upper glass to avoid cloggings." +msgstr "Température où le matériau se ramollit. Lorsque la température du plateau est égale ou supérieure à celle-ci, il est fortement recommandé d’ouvrir la porte avant et/ou de retirer la vitre supérieure pour éviter les problèmes d’obstruction." msgid "Price" msgstr "Tarif" @@ -11579,40 +9653,27 @@ msgstr "(Indéfini)" msgid "Sparse infill direction" msgstr "Direction du remplissage" -msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" -msgstr "" -"Angle pour le motif de remplissage qui contrôle le début ou la direction " -"principale de la ligne" +msgid "Angle for sparse infill pattern, which controls the start or main direction of line" +msgstr "Angle pour le motif de remplissage qui contrôle le début ou la direction principale de la ligne" msgid "Solid infill direction" msgstr "Direction du remplissage" -msgid "" -"Angle for solid infill pattern, which controls the start or main direction " -"of line" -msgstr "" -"Angle pour le motif de remplissage, qui contrôle le début ou la direction " -"principale de la ligne" +msgid "Angle for solid infill pattern, which controls the start or main direction of line" +msgstr "Angle pour le motif de remplissage, qui contrôle le début ou la direction principale de la ligne" msgid "Rotate solid infill direction" msgstr "Faire pivoter la direction du remplissage solide" msgid "Rotate the solid infill direction by 90° for each layer." -msgstr "" -"Faire pivoter la direction du remplissage solide de 90° pour chaque couche." +msgstr "Faire pivoter la direction du remplissage solide de 90° pour chaque couche." msgid "Sparse infill density" msgstr "Densité de remplissage" #, no-c-format, no-boost-format -msgid "" -"Density of internal sparse infill, 100% turns all sparse infill into solid " -"infill and internal solid infill pattern will be used" -msgstr "" -"Densité du remplissage interne, 100% transforme tous les remplissages en " -"remplissages pleins et le modèle de remplissage interne sera utilisé." +msgid "Density of internal sparse infill, 100% turns all sparse infill into solid infill and internal solid infill pattern will be used" +msgstr "Densité du remplissage interne, 100% transforme tous les remplissages en remplissages pleins et le modèle de remplissage interne sera utilisé." msgid "Sparse infill pattern" msgstr "Motif de remplissage" @@ -11657,26 +9718,11 @@ msgid "Sparse infill anchor length" msgstr "Longueur de l’ancrage de remplissage interne" msgid "" -"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. Orca Slicer 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. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a " -"single infill line." +"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. Orca Slicer 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. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a single infill line." msgstr "" -"Connecter une ligne de remplissage à un périmètre interne avec un court " -"segment de périmètre supplémentaire. S’il est exprimé en pourcentage " -"(exemple : 15%), il est calculé sur la largeur de l’extrusion de " -"remplissage. Si aucun segment de périmètre plus court que infill_anchor_max " -"n’est trouvé, la ligne de remplissage est connectée à un segment de " -"périmètre d’un seul côté et la longueur du segment de périmètre pris est " -"limitée à ce paramètre, mais pas plus long que anchor_length_max.\n" -"Une valeur à 0 désactive les périmètres d’ancrage connectés à une seule " -"ligne de remplissage." +"Connecter une ligne de remplissage à un périmètre interne avec un court segment de périmètre supplémentaire. S’il est exprimé en pourcentage (exemple : 15%), il est calculé sur la largeur de l’extrusion de remplissage. Si aucun segment de périmètre plus court que infill_anchor_max n’est trouvé, la ligne de remplissage est connectée à un segment de périmètre d’un seul côté et la longueur du segment de périmètre pris est limitée à ce paramètre, mais pas plus long que anchor_length_max.\n" +"Une valeur à 0 désactive les périmètres d’ancrage connectés à une seule ligne de remplissage." msgid "0 (no open anchors)" msgstr "0 (aucune ancre ouverte)" @@ -11688,28 +9734,11 @@ msgid "Maximum length of the infill anchor" msgstr "Longueur maximale de l’ancrage de remplissage" msgid "" -"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. Orca Slicer 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. \n" -"If set to 0, the old algorithm for infill connection will be used, it should " -"create the same result as with 1000 & 0." +"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. Orca Slicer 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. \n" +"If set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0." msgstr "" -"Connecter une ligne de remplissage à un périmètre interne avec un court " -"segment de périmètre supplémentaire. S’il est exprimé en pourcentage " -"(exemple : 15 %), il est calculé sur la largeur de l’extrusion de " -"remplissage. Orca Slicer essaie de connecter deux lignes de remplissage " -"proches à un court segment de périmètre. Si aucun segment de périmètre plus " -"court que ce paramètre n’est trouvé, la ligne de remplissage est connectée à " -"un segment de périmètre sur un seul côté et la longueur du segment de " -"périmètre pris est limitée à infill_anchor, mais pas plus longue que ce " -"paramètre.\n" -"S’il est défini sur 0, l’ancien algorithme de connexion de remplissage sera " -"utilisé, il devrait créer le même résultat qu’avec 1000 et 0." +"Connecter une ligne de remplissage à un périmètre interne avec un court segment de périmètre supplémentaire. S’il est exprimé en pourcentage (exemple : 15 %), il est calculé sur la largeur de l’extrusion de remplissage. Orca Slicer essaie de connecter deux lignes de remplissage proches à un court segment de périmètre. Si aucun segment de périmètre plus court que ce paramètre n’est trouvé, la ligne de remplissage est connectée à un segment de périmètre sur un seul côté et la longueur du segment de périmètre pris est limitée à infill_anchor, mais pas plus longue que ce paramètre.\n" +"S’il est défini sur 0, l’ancien algorithme de connexion de remplissage sera utilisé, il devrait créer le même résultat qu’avec 1000 et 0." msgid "0 (Simple connect)" msgstr "0 (connexions simples)" @@ -11723,53 +9752,26 @@ msgstr "Accélération des parois intérieures" msgid "Acceleration of travel moves" msgstr "Accélération des déplacements" -msgid "" -"Acceleration of top surface infill. Using a lower value may improve top " -"surface quality" -msgstr "" -"Il s'agit de l'accélération de la surface supérieure du remplissage. " -"Utiliser une valeur plus petite pourrait améliorer la qualité de la surface " -"supérieure." +msgid "Acceleration of top surface infill. Using a lower value may improve top surface quality" +msgstr "Il s'agit de l'accélération de la surface supérieure du remplissage. Utiliser une valeur plus petite pourrait améliorer la qualité de la surface supérieure." msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "" -"Accélération de la paroi extérieur : l'utilisation d'une valeur inférieure " -"peut améliorer la qualité." +msgstr "Accélération de la paroi extérieur : l'utilisation d'une valeur inférieure peut améliorer la qualité." -msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. " -"50%), it will be calculated based on the outer wall acceleration." -msgstr "" -"Accélération des ponts. Si la valeur est exprimée en pourcentage (par " -"exemple 50%), elle sera calculée en fonction de l’accélération de la paroi " -"extérieure." +msgid "Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration." +msgstr "Accélération des ponts. Si la valeur est exprimée en pourcentage (par exemple 50%), elle sera calculée en fonction de l’accélération de la paroi extérieure." msgid "mm/s² or %" msgstr "mm/s² or %" -msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." -msgstr "" -"Accélération du remplissage interne. Si la valeur est exprimée en " -"pourcentage (par exemple 100%), elle sera calculée en fonction de " -"l’accélération par défaut." +msgid "Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." +msgstr "Accélération du remplissage interne. Si la valeur est exprimée en pourcentage (par exemple 100%), elle sera calculée en fonction de l’accélération par défaut." -msgid "" -"Acceleration of internal solid infill. If the value is expressed as a " -"percentage (e.g. 100%), it will be calculated based on the default " -"acceleration." -msgstr "" -"Accélération du remplissage interne. Si la valeur est exprimée en " -"pourcentage (par exemple 100%), elle sera calculée en fonction de " -"l’accélération par défaut." +msgid "Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." +msgstr "Accélération du remplissage interne. Si la valeur est exprimée en pourcentage (par exemple 100%), elle sera calculée en fonction de l’accélération par défaut." -msgid "" -"Acceleration of initial layer. Using a lower value can improve build plate " -"adhesive" -msgstr "" -"Accélération de la couche initiale. L'utilisation d'une valeur plus basse " -"peut améliorer l'adhérence sur le plateau" +msgid "Acceleration of initial layer. Using a lower value can improve build plate adhesive" +msgstr "Accélération de la couche initiale. L'utilisation d'une valeur plus basse peut améliorer l'adhérence sur le plateau" msgid "Enable accel_to_decel" msgstr "Activer l’accélération à la décélération" @@ -11781,10 +9783,8 @@ msgid "accel_to_decel" msgstr "Ajuster l’accélération à la décélération" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" -msgstr "" -"Le paramètre max_accel_to_decel de Klipper sera ajusté à %% d'accélération" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "Le paramètre max_accel_to_decel de Klipper sera ajusté à %% d'accélération" msgid "Jerk of outer walls" msgstr "Jerk des parois extérieures" @@ -11804,22 +9804,14 @@ msgstr "Jerk de la couche initiale" msgid "Jerk for travel" msgstr "Jerk des déplacements" -msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over " -"the nozzle diameter." -msgstr "" -"Largeur de la ligne de la couche initiale. Si elle est exprimée en %, elle " -"sera calculée sur le diamètre de la buse." +msgid "Line width of initial layer. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Largeur de la ligne de la couche initiale. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." msgid "Initial layer height" msgstr "Hauteur de couche initiale" -msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhesion" -msgstr "" -"Il s'agit de la hauteur de la première couche. L'augmentation de la hauteur " -"de la première couche peut améliorer l'adhérence sur le plateau." +msgid "Height of initial layer. Making initial layer height to be thick slightly can improve build plate adhesion" +msgstr "Il s'agit de la hauteur de la première couche. L'augmentation de la hauteur de la première couche peut améliorer l'adhérence sur le plateau." msgid "Speed of initial layer except the solid infill part" msgstr "Vitesse de la couche initiale à l'exception du remplissage" @@ -11839,38 +9831,20 @@ msgstr "Vitesse de déplacement de la couche initiale" msgid "Number of slow layers" msgstr "Nombre de couches lentes" -msgid "" -"The first few layers are printed slower than normal. The speed is gradually " -"increased in a linear fashion over the specified number of layers." -msgstr "" -"Les premières couches sont imprimées plus lentement que la normale. La " -"vitesse augmente progressivement de manière linéaire sur le nombre de " -"couches spécifié." +msgid "The first few layers are printed slower than normal. The speed is gradually increased in a linear fashion over the specified number of layers." +msgstr "Les premières couches sont imprimées plus lentement que la normale. La vitesse augmente progressivement de manière linéaire sur le nombre de couches spécifié." msgid "Initial layer nozzle temperature" msgstr "Température de la buse de couche initiale" msgid "Nozzle temperature to print initial layer when using this filament" -msgstr "" -"Température de la buse pour imprimer la couche initiale lors de " -"l'utilisation de ce filament" +msgstr "Température de la buse pour imprimer la couche initiale lors de l'utilisation de ce filament" msgid "Full fan speed at layer" msgstr "Ventilateur à pleine vitesse à la couche" -msgid "" -"Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." -msgstr "" -"La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " -"la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" sera ignoré s’il est " -"inférieur à \"close_fan_the_first_x_layers\", auquel cas le ventilateur " -"fonctionnera à la vitesse maximale autorisée à la couche " -"\"close_fan_the_first_x_layers\" + 1." +msgid "Fan speed will be ramped up linearly from zero at layer \"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower than \"close_fan_the_first_x_layers\", in which case the fan will be running at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +msgstr "La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche \"full_fan_speed_layer\". \"full_fan_speed_layer\" sera ignoré s’il est inférieur à \"close_fan_the_first_x_layers\", auquel cas le ventilateur fonctionnera à la vitesse maximale autorisée à la couche \"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "couche" @@ -11879,23 +9853,16 @@ msgid "Support interface fan speed" msgstr "Vitesse du ventilateur" msgid "" -"This fan speed is enforced during all support interfaces, to be able to " -"weaken their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to weaken their bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" -"Cette vitesse de ventilateur est appliquée pendant toutes les interfaces de " -"support, pour pouvoir affaiblir leur liaison avec une vitesse de ventilateur " -"élevée.\n" +"Cette vitesse de ventilateur est appliquée pendant toutes les interfaces de support, pour pouvoir affaiblir leur liaison avec une vitesse de ventilateur élevée.\n" "Réglez sur -1 pour désactiver ce remplacement.\n" "Ne peut être remplacé que par disable_fan_first_layers." -msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough " -"look. This setting controls the fuzzy position" -msgstr "" -"Gigue aléatoire lors de l'impression de la paroi, de sorte que la surface " -"ait un aspect rugueux. Ce réglage contrôle la position irrégulière" +msgid "Randomly jitter while printing the wall, so that the surface has a rough look. This setting controls the fuzzy position" +msgstr "Gigue aléatoire lors de l'impression de la paroi, de sorte que la surface ait un aspect rugueux. Ce réglage contrôle la position irrégulière" msgid "Contour" msgstr "Contour" @@ -11909,22 +9876,14 @@ msgstr "Toutes les parois" msgid "Fuzzy skin thickness" msgstr "Épaisseur de la surface Irrégulière" -msgid "" -"The width within which to jitter. It's adversed to be below outer wall line " -"width" -msgstr "" -"La largeur à l'intérieur de laquelle jitter. Il est déconseillé d'être en " -"dessous de la largeur de la ligne de la paroi extérieure" +msgid "The width within which to jitter. It's adversed to be below outer wall line width" +msgstr "La largeur à l'intérieur de laquelle jitter. Il est déconseillé d'être en dessous de la largeur de la ligne de la paroi extérieure" msgid "Fuzzy skin point distance" msgstr "Distance de point de la surface irrégulière" -msgid "" -"The average diatance between the random points introducded on each line " -"segment" -msgstr "" -"La distance moyenne entre les points aléatoires introduits sur chaque " -"segment de ligne" +msgid "The average diatance between the random points introducded on each line segment" +msgstr "La distance moyenne entre les points aléatoires introduits sur chaque segment de ligne" msgid "Apply fuzzy skin to first layer" msgstr "Appliquer la surface irrégulière sur la première couche" @@ -11938,81 +9897,47 @@ msgstr "Filtrer les petits espaces" msgid "Layers and Perimeters" msgstr "Couches et Périmètres" -msgid "" -"Don't print gap fill with a length is smaller than the threshold specified " -"(in mm). This setting applies to top, bottom and solid infill and, if using " -"the classic perimeter generator, to wall gap fill. " -msgstr "" +msgid "Don't print gap fill with a length is smaller than the threshold specified (in mm). This setting applies to top, bottom and solid infill and, if using the classic perimeter generator, to wall gap fill. " +msgstr "Ne pas imprimer le remplissage des espaces dont la longueur est inférieure au seuil spécifié (en mm). Ce paramètre s’applique aux remplissages supérieur, inférieur et solide et, si vous utilisez le générateur de périmètre classique, pour le remplissage de la paroi. " -msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be " -"printed more slowly" -msgstr "" -"Vitesse de remplissage des espaces. L’espace a généralement une largeur de " -"ligne irrégulière et doit être imprimé plus lentement" +msgid "Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" +msgstr "Vitesse de remplissage des espaces. L’espace a généralement une largeur de ligne irrégulière et doit être imprimé plus lentement" msgid "Precise Z height" msgstr "Hauteur précise du Z" -msgid "" -"Enable this to get precise z height of object after slicing. It will get the " -"precise object height by fine-tuning the layer heights of the last few " -"layers. Note that this is an experimental parameter." -msgstr "" -"Activez cette option pour obtenir une hauteur z précise de l’objet après la " -"découpe. La hauteur précise de l’objet sera obtenue en affinant les hauteurs " -"des dernières couches. Notez qu’il s’agit d’un paramètre expérimental." +msgid "Enable this to get precise z height of object after slicing. It will get the precise object height by fine-tuning the layer heights of the last few layers. Note that this is an experimental parameter." +msgstr "Activez cette option pour obtenir une hauteur z précise de l’objet après la découpe. La hauteur précise de l’objet sera obtenue en affinant les hauteurs des dernières couches. Notez qu’il s’agit d’un paramètre expérimental." msgid "Arc fitting" msgstr "Tracer des arcs" msgid "" -"Enable this to get a G-code file which has G2 and G3 moves. The fitting " -"tolerance is same as the resolution. \n" +"Enable this to get a G-code file which has G2 and G3 moves. The fitting tolerance is same as the resolution. \n" "\n" -"Note: For klipper machines, this option is recomended to be disabled. " -"Klipper does not benefit from arc commands as these are split again into " -"line segments by the firmware. This results in a reduction in surface " -"quality as line segments are converted to arcs by the slicer and then back " -"to line segments by the firmware." +"Note: For klipper machines, this option is recomended to be disabled. Klipper does not benefit from arc commands as these are split again into line segments by the firmware. This results in a reduction in surface quality as line segments are converted to arcs by the slicer and then back to line segments by the firmware." msgstr "" -"Activez cette option pour obtenir un fichier G-code contenant les " -"déplacements G2 et G3. La tolérance d’ajustement est la même que la " -"résolution. \n" +"Activez cette option pour obtenir un fichier G-code contenant les déplacements G2 et G3. La tolérance d’ajustement est la même que la résolution. \n" "\n" -"Note : Pour les machines Klipper, il est recommandé de désactiver cette " -"option. Klipper ne bénéficie pas des commandes d’arc car celles-ci sont à " -"nouveau divisées en segments de ligne par le micrologiciel. Il en résulte " -"une réduction de la qualité de la surface, car les segments de ligne sont " -"convertis en arcs par le slicer, puis à nouveau en segments par le firmware." +"Note : Pour les machines Klipper, il est recommandé de désactiver cette option. Klipper ne bénéficie pas des commandes d’arc car celles-ci sont à nouveau divisées en segments de ligne par le micrologiciel. Il en résulte une réduction de la qualité de la surface, car les segments de ligne sont convertis en arcs par le slicer, puis à nouveau en segments par le firmware." msgid "Add line number" msgstr "Ajouter un numéro de ligne" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" -msgstr "" -"Activez cette option pour ajouter un numéro de ligne (Nx) au début de chaque " -"ligne G-Code" +msgstr "Activez cette option pour ajouter un numéro de ligne (Nx) au début de chaque ligne G-Code" msgid "Scan first layer" msgstr "Analyser la première couche" -msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" -msgstr "" -"Activez cette option pour permettre à l'appareil photo de l'imprimante de " -"vérifier la qualité de la première couche" +msgid "Enable this to enable the camera on printer to check the quality of first layer" +msgstr "Activez cette option pour permettre à l'appareil photo de l'imprimante de vérifier la qualité de la première couche" msgid "Nozzle type" msgstr "Type de buse" -msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of " -"nozzle, and what kind of filament can be printed" -msgstr "" -"Le matériau métallique de la buse. Cela détermine la résistance à l'abrasion " -"de la buse et le type de filament pouvant être imprimé" +msgid "The metallic material of nozzle. This determines the abrasive resistance of nozzle, and what kind of filament can be printed" +msgstr "Le matériau métallique de la buse. Cela détermine la résistance à l'abrasion de la buse et le type de filament pouvant être imprimé" msgid "Undefine" msgstr "Non défini" @@ -12029,12 +9954,8 @@ msgstr "Laiton" msgid "Nozzle HRC" msgstr "Dureté HRC buse" -msgid "" -"The nozzle's hardness. Zero means no checking for nozzle's hardness during " -"slicing." -msgstr "" -"La dureté de la buse. Zéro signifie qu'il n'est pas nécessaire de vérifier " -"la dureté de la buse pendant la découpe." +msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." +msgstr "La dureté de la buse. Zéro signifie qu'il n'est pas nécessaire de vérifier la dureté de la buse pendant la découpe." msgid "HRC" msgstr "HRC" @@ -12061,37 +9982,20 @@ msgid "Best object position" msgstr "Meilleure position d’organisation automatique" msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." -msgstr "" -"Meilleure position d’organisation automatique dans la plage [0,1] par " -"rapport à forme du plateau." +msgstr "Meilleure position d’organisation automatique dans la plage [0,1] par rapport à forme du plateau." + +msgid "Enable this option if machine has auxiliary part cooling fan. G-code command: M106 P2 S(0-255)." +msgstr "Activer cette option si l’imprimante est équipée d'un ventilateur de refroidissement auxiliaire. Commande G-code : M106 P2 S (0-255)." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." -msgstr "" -"Activer cette option si l’imprimante est équipée d'un ventilateur de " -"refroidissement auxiliaire. Commande G-code : M106 P2 S (0-255)." - -msgid "" -"Start the fan this number of seconds earlier than its target start time (you " -"can use fractional seconds). It assumes infinite acceleration for this time " -"estimation, and will only take into account G1 and G0 moves (arc fitting is " -"unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of " -"'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start " -"gcode' is activated.\n" +"Start the fan this number of seconds earlier than its target start time (you can use fractional seconds). It assumes infinite acceleration for this time estimation, and will only take into account G1 and G0 moves (arc fitting is unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start gcode' is activated.\n" "Use 0 to deactivate." msgstr "" -"Démarrer le ventilateur plus tôt de ce nombre de secondes par rapport au " -"démarrage cible (vous pouvez utiliser des fractions de secondes). Cela " -"suppose une accélération infinie pour cette estimation de durée et ne prend " -"en compte que les mouvements G1 et G0 (l’ajustement arc n’est pas pris en " -"charge).\n" -"Cela ne déplacera pas les commandes de ventilateur des G-codes personnalisés " -"(ils agissent comme une sorte de \"barrière\").\n" -"Cela ne déplacera pas les commandes de ventilateur dans le G-code de " -"démarrage si seul le ‘G-code de démarrage personnalisé’ est activé.\n" +"Démarrer le ventilateur plus tôt de ce nombre de secondes par rapport au démarrage cible (vous pouvez utiliser des fractions de secondes). Cela suppose une accélération infinie pour cette estimation de durée et ne prend en compte que les mouvements G1 et G0 (l’ajustement arc n’est pas pris en charge).\n" +"Cela ne déplacera pas les commandes de ventilateur des G-codes personnalisés (ils agissent comme une sorte de \"barrière\").\n" +"Cela ne déplacera pas les commandes de ventilateur dans le G-code de démarrage si seul le ‘G-code de démarrage personnalisé’ est activé.\n" "Utiliser 0 pour désactiver." msgid "Only overhangs" @@ -12104,18 +10008,12 @@ msgid "Fan kick-start time" msgstr "Durée de démarrage du ventilateur" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to " -"target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the " -"fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to target speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" -"Émettre une commande de vitesse maximale du ventilateur pendant ce nombre de " -"secondes avant de réduire à la vitesse cible pour démarrer le ventilateur de " -"refroidissement.\n" -"Ceci est utile pour les ventilateurs où un faible PWM/puissance peut être " -"insuffisant pour redémarrer le ventilateur après un arrêt, ou pour faire " -"démarrer le ventilateur plus rapidement.\n" +"Émettre une commande de vitesse maximale du ventilateur pendant ce nombre de secondes avant de réduire à la vitesse cible pour démarrer le ventilateur de refroidissement.\n" +"Ceci est utile pour les ventilateurs où un faible PWM/puissance peut être insuffisant pour redémarrer le ventilateur après un arrêt, ou pour faire démarrer le ventilateur plus rapidement.\n" "Mettre à 0 pour désactiver." msgid "Time cost" @@ -12134,8 +10032,7 @@ msgid "" "This option is enabled if machine support controlling chamber temperature\n" "G-code command: M141 S(0-255)" msgstr "" -"Activez cette option si la machine prend en charge le contrôle de la " -"température du caisson\n" +"Activez cette option si la machine prend en charge le contrôle de la température du caisson\n" "Commande de G-code : M141 S(0-255)" msgid "Support air filtration" @@ -12161,105 +10058,57 @@ msgid "Pellet Modded Printer" msgstr "Imprimante à pellets" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "" -"Activez cette option si votre imprimante utilise des pellets au lieu de " -"filaments." +msgstr "Activez cette option si votre imprimante utilise des pellets au lieu de filaments." msgid "Support multi bed types" msgstr "Prise en charge de plusieurs types de plateaux" msgid "Enable this option if you want to use multiple bed types" -msgstr "" -"Activez cette option si vous souhaitez utiliser plusieurs types de plateaux." +msgstr "Activez cette option si vous souhaitez utiliser plusieurs types de plateaux." msgid "Label objects" msgstr "Label Objects" -msgid "" -"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." -msgstr "" -"Permet d’ajouter des commentaires dans le G-code sur les mouvements " -"d’impression de l’objet auquel ils appartiennent, ce qui est utile pour le " -"plug-in Octoprint CancelObject. Ce paramètre n’est PAS compatible avec la " -"configuration multi-matériaux avec un seul extrudeur et Essuyer dans " -"l’objet / Essuyer dans le remplissage." +msgid "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." +msgstr "Permet d’ajouter des commentaires dans le G-code sur les mouvements d’impression de l’objet auquel ils appartiennent, ce qui est utile pour le plug-in Octoprint CancelObject. Ce paramètre n’est PAS compatible avec la configuration multi-matériaux avec un seul extrudeur et Essuyer dans l’objet / Essuyer dans le remplissage." msgid "Exclude objects" msgstr "Exclure des objets" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" -"Activer cette option pour ajouter la commande EXCLUDE OBJECT dans le G-code" +msgstr "Activer cette option pour ajouter la commande EXCLUDE OBJECT dans le G-code" msgid "Verbose G-code" msgstr "G-code commenté" -msgid "" -"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." -msgstr "" -"Activez cette option pour obtenir un fichier G-code commenté, chaque ligne " -"étant expliquée par un texte descriptif. Si vous imprimez à partir d’une " -"carte SD, le poids supplémentaire du fichier pourrait ralentir le firmware." +msgid "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." +msgstr "Activez cette option pour obtenir un fichier G-code commenté, chaque ligne étant expliquée par un texte descriptif. Si vous imprimez à partir d’une carte SD, le poids supplémentaire du fichier pourrait ralentir le firmware." msgid "Infill combination" msgstr "Combinaison de remplissage" -msgid "" -"Automatically Combine sparse infill of several layers to print together to " -"reduce time. Wall is still printed with original layer height." -msgstr "" -"Combinez automatiquement le remplissage de plusieurs couches pour imprimer " -"ensemble afin de réduire le temps. La paroi est toujours imprimée avec la " -"hauteur de couche d'origine." +msgid "Automatically Combine sparse infill of several layers to print together to reduce time. Wall is still printed with original layer height." +msgstr "Combinez automatiquement le remplissage de plusieurs couches pour imprimer ensemble afin de réduire le temps. La paroi est toujours imprimée avec la hauteur de couche d'origine." msgid "Filament to print internal sparse infill." msgstr "Filament pour imprimer un remplissage interne." -msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be " -"computed over the nozzle diameter." -msgstr "" -"Largeur de ligne du remplissage interne. Si elle est exprimée en %, elle " -"sera calculée sur le diamètre de la buse." +msgid "Line width of internal sparse infill. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Largeur de ligne du remplissage interne. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." msgid "Infill/Wall overlap" msgstr "Chevauchement de remplissage/paroi" #, no-c-format, no-boost-format -msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill. Set this " -"value to ~10-15% to minimize potential over extrusion and accumulation of " -"material resulting in rough top surfaces." -msgstr "" -"La zone de remplissage est légèrement élargie pour chevaucher la paroi afin " -"d’améliorer l’adhérence. La valeur du pourcentage est relative à la largeur " -"de la ligne de remplissage. Réglez cette valeur à ~10-15% pour minimiser le " -"risque de sur-extrusion et d’accumulation de matériau, ce qui rendrait les " -"surfaces supérieures rugueuses." +msgid "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +msgstr "La zone de remplissage est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence. La valeur du pourcentage est relative à la largeur de la ligne de remplissage. Réglez cette valeur à ~10-15% pour minimiser le risque de sur-extrusion et d’accumulation de matériau, ce qui rendrait les surfaces supérieures rugueuses." msgid "Top/Bottom solid infill/wall overlap" msgstr "Chevauchement du remplissage ou de la paroi supérieur(e)/inférieur(e)" #, no-c-format, no-boost-format -msgid "" -"Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill " -"meets the walls. A value of 25-30% is a good starting point, minimising the " -"appearance of pinholes. The percentage value is relative to line width of " -"sparse infill" -msgstr "" -"La zone de remplissage solide supérieure est légèrement élargie pour " -"chevaucher la paroi afin d’améliorer l’adhérence et de minimiser " -"l’apparition de trous d’épingle à l’endroit où le remplissage supérieur " -"rencontre les parois. Une valeur de 25-30% est un bon point de départ, " -"minimisant l’apparition de trous d’épingle. La valeur en pourcentage est " -"relative à la largeur de ligne du remplissage." +msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30% is a good starting point, minimising the appearance of pinholes. The percentage value is relative to line width of sparse infill" +msgstr "La zone de remplissage solide supérieure est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence et de minimiser l’apparition de trous d’épingle à l’endroit où le remplissage supérieur rencontre les parois. Une valeur de 25-30% est un bon point de départ, minimisant l’apparition de trous d’épingle. La valeur en pourcentage est relative à la largeur de ligne du remplissage." msgid "Speed of internal sparse infill" msgstr "Vitesse de remplissage interne" @@ -12267,48 +10116,26 @@ msgstr "Vitesse de remplissage interne" msgid "Interface shells" msgstr "Coque des interfaces" -msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" -msgstr "" -"Forcer la génération de coques solides entre matériaux/volumes adjacents. " -"Utile pour les impressions multi-extrudeuses avec des matériaux translucides " -"ou un matériau de support soluble" +msgid "Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material" +msgstr "Forcer la génération de coques solides entre matériaux/volumes adjacents. Utile pour les impressions multi-extrudeuses avec des matériaux translucides ou un matériau de support soluble" msgid "Maximum width of a segmented region" msgstr "Largeur maximale d’une région segmentée" msgid "Maximum width of a segmented region. Zero disables this feature." -msgstr "" -"Largeur maximale d’une région segmentée. Zéro désactive cette fonction." +msgstr "Largeur maximale d’une région segmentée. Zéro désactive cette fonction." msgid "Interlocking depth of a segmented region" msgstr "Profondeur d’emboîtement d’une région segmentée" -msgid "" -"Interlocking depth of a segmented region. It will be ignored if " -"\"mmu_segmented_region_max_width\" is zero or if " -"\"mmu_segmented_region_interlocking_depth\"is bigger then " -"\"mmu_segmented_region_max_width\". Zero disables this feature." -msgstr "" -"Profondeur d’imbrication d’une région segmentée. Elle sera ignorée si " -"« mmu_segmented_region_max_width » est égal à zéro ou si " -"« mmu_segmented_region_interlocking_depth » est supérieur à " -"« mmu_segmented_region_max_width ». La valeur zéro désactive cette " -"fonctionnalité." +msgid "Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\"is bigger then \"mmu_segmented_region_max_width\". Zero disables this feature." +msgstr "Profondeur d’imbrication d’une région segmentée. Elle sera ignorée si « mmu_segmented_region_max_width » est égal à zéro ou si « mmu_segmented_region_interlocking_depth » est supérieur à « mmu_segmented_region_max_width ». La valeur zéro désactive cette fonctionnalité." msgid "Use beam interlocking" msgstr "Utiliser l’emboîtement des poutres" -msgid "" -"Generate interlocking beam structure at the locations where different " -"filaments touch. This improves the adhesion between filaments, especially " -"models printed in different materials." -msgstr "" -"Génère une structure de poutres imbriquées aux endroits où les différents " -"filaments se touchent. Cela améliore l’adhérence entre les filaments, en " -"particulier pour les modèles imprimés dans des matériaux différents." +msgid "Generate interlocking beam structure at the locations where different filaments touch. This improves the adhesion between filaments, especially models printed in different materials." +msgstr "Génère une structure de poutres imbriquées aux endroits où les différents filaments se touchent. Cela améliore l’adhérence entre les filaments, en particulier pour les modèles imprimés dans des matériaux différents." msgid "Interlocking beam width" msgstr "Largeur du faisceau d’emboîtement" @@ -12325,45 +10152,26 @@ msgstr "Orientation des poutres de verrouillage." msgid "Interlocking beam layers" msgstr "Couches de poutres emboîtées" -msgid "" -"The height of the beams of the interlocking structure, measured in number of " -"layers. Less layers is stronger, but more prone to defects." -msgstr "" -"La hauteur des poutres de la structure d’emboîtement, mesurée en nombre de " -"couches. Moins il y a de couches, plus la structure est solide, mais plus " -"elle est sujette à des défauts." +msgid "The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects." +msgstr "La hauteur des poutres de la structure d’emboîtement, mesurée en nombre de couches. Moins il y a de couches, plus la structure est solide, mais plus elle est sujette à des défauts." msgid "Interlocking depth" msgstr "Profondeur d’emboîtement" -msgid "" -"The distance from the boundary between filaments to generate interlocking " -"structure, measured in cells. Too few cells will result in poor adhesion." -msgstr "" -"La distance de la limite entre les filaments pour générer une structure " -"imbriquée, mesurée en cellules. Un nombre insuffisant de cellules entraîne " -"une mauvaise adhérence." +msgid "The distance from the boundary between filaments to generate interlocking structure, measured in cells. Too few cells will result in poor adhesion." +msgstr "La distance de la limite entre les filaments pour générer une structure imbriquée, mesurée en cellules. Un nombre insuffisant de cellules entraîne une mauvaise adhérence." msgid "Interlocking boundary avoidance" msgstr "Évitement des limites de l’imbrication" -msgid "" -"The distance from the outside of a model where interlocking structures will " -"not be generated, measured in cells." -msgstr "" -"La distance à partir de l’extérieur d’un modèle où les structures imbriquées " -"ne seront pas générées, mesurée en cellules." +msgid "The distance from the outside of a model where interlocking structures will not be generated, measured in cells." +msgstr "La distance à partir de l’extérieur d’un modèle où les structures imbriquées ne seront pas générées, mesurée en cellules." msgid "Ironing Type" msgstr "Type de lissage" -msgid "" -"Ironing is using small flow to print on same height of surface again to make " -"flat surface more smooth. This setting controls which layer being ironed" -msgstr "" -"Le lissage utilise un petit débit pour imprimer à nouveau sur la même " -"hauteur de surface pour rendre la surface plane plus lisse. Ce paramètre " -"contrôle quelle couche est repassée" +msgid "Ironing is using small flow to print on same height of surface again to make flat surface more smooth. This setting controls which layer being ironed" +msgstr "Le lissage utilise un petit débit pour imprimer à nouveau sur la même hauteur de surface pour rendre la surface plane plus lisse. Ce paramètre contrôle quelle couche est repassée" msgid "No ironing" msgstr "Pas de lissage" @@ -12384,15 +10192,10 @@ msgid "The pattern that will be used when ironing" msgstr "Motif qui sera utilisé lors du lissage" msgid "Ironing flow" -msgstr "Flux de lissage" +msgstr "Débit de lissage" -msgid "" -"The amount of material to extrude during ironing. Relative to flow of normal " -"layer height. Too high value results in overextrusion on the surface" -msgstr "" -"La quantité de matière à extruder lors du lissage. Relatif au débit de la " -"hauteur de couche normale. Une valeur trop élevée entraîne une surextrusion " -"en surface" +msgid "The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high value results in overextrusion on the surface" +msgstr "La quantité de matière à extruder lors du lissage. Relatif au débit de la hauteur de couche normale. Une valeur trop élevée entraîne une surextrusion en surface" msgid "Ironing line spacing" msgstr "Espacement des lignes de lissage" @@ -12409,27 +10212,17 @@ msgstr "Vitesse d'impression des lignes de lissage" msgid "Ironing angle" msgstr "Angle de lissage" -msgid "" -"The angle ironing is done at. A negative number disables this function and " -"uses the default method." -msgstr "" -"Angle auquel le lissage se fait. Un nombre négatif désactive cette fonction " -"et utilise la méthode par défaut." +msgid "The angle ironing is done at. A negative number disables this function and uses the default method." +msgstr "Angle auquel le lissage se fait. Un nombre négatif désactive cette fonction et utilise la méthode par défaut." msgid "This gcode part is inserted at every layer change after lift z" -msgstr "" -"Cette partie G-code est insérée à chaque changement de couche après le " -"levage du Z" +msgstr "Cette partie G-code est insérée à chaque changement de couche après le levage du Z" msgid "Supports silent mode" msgstr "Prend en charge le mode silencieux" -msgid "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" -msgstr "" -"Si la machine prend en charge le mode silencieux dans lequel la machine " -"utilise une accélération plus faible pour imprimer" +msgid "Whether the machine supports silent mode in which machine use lower acceleration to print" +msgstr "Si la machine prend en charge le mode silencieux dans lequel la machine utilise une accélération plus faible pour imprimer" msgid "Emit limits to G-code" msgstr "Emission des limites vers le G-code" @@ -12441,17 +10234,11 @@ msgid "" "If enabled, the machine limits will be emitted to G-code file.\n" "This option will be ignored if the g-code flavor is set to Klipper." msgstr "" -"Si cette option est activée, les limites de la machine seront émises dans un " -"fichier G-code.\n" +"Si cette option est activée, les limites de la machine seront émises dans un fichier G-code.\n" "Cette option sera ignorée si la version du G-code est définie sur Klipper." -msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" -msgstr "" -"Ce G-code sera utilisé comme code pour la pause d'impression. Les " -"utilisateurs peuvent insérer un G-code de pause dans la visionneuse de G-" -"code." +msgid "This G-code will be used as a code for the pause print. User can insert pause G-code in gcode viewer" +msgstr "Ce G-code sera utilisé comme code pour la pause d'impression. Les utilisateurs peuvent insérer un G-code de pause dans la visionneuse de G-code." msgid "This G-code will be used as a custom code" msgstr "Ce G-code sera utilisé comme code personnalisé" @@ -12460,23 +10247,13 @@ msgid "Small area flow compensation (beta)" msgstr "Compensation du débit des petites zones (beta)" msgid "Enable flow compensation for small infill areas" -msgstr "" -"Activer la compensation des débits pour les petites zones de remplissage" +msgstr "Activer la compensation des débits pour les petites zones de remplissage" msgid "Flow Compensation Model" msgstr "Modèle de compensation de débit" -msgid "" -"Flow Compensation Model, used to adjust the flow for small infill areas. The " -"model is expressed as a comma separated pair of values for extrusion length " -"and flow correction factors, one per line, in the following format: " -"\"1.234,5.678\"" -msgstr "" -"Modèle de compensation du débit, utilisé pour ajuster le débit pour les " -"petites zones de remplissage. Le modèle est exprimé sous la forme d’une " -"paire de valeurs séparées par des virgules pour la longueur d’extrusion et " -"les facteurs de correction du débit, une par ligne, dans le format suivant : " -"« 1.234,5.678 »" +msgid "Flow Compensation Model, used to adjust the flow for small infill areas. The model is expressed as a comma separated pair of values for extrusion length and flow correction factors, one per line, in the following format: \"1.234,5.678\"" +msgstr "Modèle de compensation du débit, utilisé pour ajuster le débit pour les petites zones de remplissage. Le modèle est exprimé sous la forme d’une paire de valeurs séparées par des virgules pour la longueur d’extrusion et les facteurs de correction du débit, une par ligne, dans le format suivant : « 1.234,5.678 »" msgid "Maximum speed X" msgstr "Vitesse maximale X" @@ -12578,87 +10355,46 @@ msgid "Maximum acceleration for travel" msgstr "Accélération maximale pour le déplacement" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" -msgstr "" -"Accélération maximale de déplacement (M204 T), cela ne s’applique qu’à " -"Marlin 2" +msgstr "Accélération maximale de déplacement (M204 T), cela ne s’applique qu’à Marlin 2" -msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" -msgstr "" -"La vitesse du ventilateur de refroidissement des pièces peut être augmentée " -"lorsque le refroidissement automatique est activé. Il s'agit de la " -"limitation de vitesse maximale du ventilateur de refroidissement partiel" +msgid "Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum speed limitation of part cooling fan" +msgstr "La vitesse du ventilateur de refroidissement des pièces peut être augmentée lorsque le refroidissement automatique est activé. Il s'agit de la limitation de vitesse maximale du ventilateur de refroidissement partiel" msgid "Max" msgstr "Maximum" -msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum " -"layer hight when enable adaptive layer height" -msgstr "" -"La plus grande hauteur de couche imprimable pour l'extrudeur. Utilisé tp " -"limite la hauteur de couche maximale lorsque la hauteur de couche adaptative " -"est activée" +msgid "The largest printable layer height for extruder. Used tp limits the maximum layer hight when enable adaptive layer height" +msgstr "La plus grande hauteur de couche imprimable pour l'extrudeur. Utilisé tp limite la hauteur de couche maximale lorsque la hauteur de couche adaptative est activée" msgid "Extrusion rate smoothing" msgstr "Lissage du taux d’extrusion" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " -"extrusion to a lower flow (lower speed/smaller width) extrusion and vice " -"versa.\n" +"This parameter smooths out sudden extrusion rate changes that happen when the printer transitions from printing a high flow (high speed/larger width) extrusion to a lower flow (lower speed/smaller width) extrusion and vice versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm3/sec " -"can change over time. Higher values mean higher extrusion rate changes are " -"allowed, resulting in faster speed transitions.\n" +"It defines the maximum rate by which the extruded volumetric flow in mm3/sec can change over time. Higher values mean higher extrusion rate changes are allowed, resulting in faster speed transitions.\n" "\n" "A value of 0 disables the feature. \n" "\n" -"For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some " -"marginal benefit in certain cases where feature speeds vary greatly. For " -"example, when there are aggressive slowdowns due to overhangs. In these " -"cases a high value of around 300-350mm3/s2 is recommended as this allows for " -"just enough smoothing to assist pressure advance achieve a smoother flow " -"transition.\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) this value is usually not needed. However it can provide some marginal benefit in certain cases where feature speeds vary greatly. For example, when there are aggressive slowdowns due to overhangs. In these cases a high value of around 300-350mm3/s2 is recommended as this allows for just enough smoothing to assist pressure advance achieve a smoother flow transition.\n" "\n" -"For slower printers without pressure advance, the value should be set much " -"lower. A value of 10-15mm3/s2 is a good starting point for direct drive " -"extruders and 5-10mm3/s2 for Bowden style. \n" +"For slower printers without pressure advance, the value should be set much lower. A value of 10-15mm3/s2 is a good starting point for direct drive extruders and 5-10mm3/s2 for Bowden style. \n" "\n" "This feature is known as Pressure Equalizer in Prusa slicer.\n" "\n" "Note: this parameter disables arc fitting." msgstr "" -"Ce paramètre atténue les changements soudains du taux d’extrusion qui se " -"produisent lorsque l’imprimante passe d’une impression à haut débit (vitesse " -"élevée / largeur de ligne plus grande) à une extrusion à débit plus faible " -"(vitesse plus faible / largeur de ligne plus petite) et vice versa.\n" +"Ce paramètre atténue les changements soudains du taux d’extrusion qui se produisent lorsque l’imprimante passe d’une impression à haut débit (vitesse élevée / largeur de ligne plus grande) à une extrusion à débit plus faible (vitesse plus faible / largeur de ligne plus petite) et vice versa.\n" "\n" -"Il définit le taux maximum auquel le débit volumétrique extrudé en mm3/sec " -"peut varier dans le temps. Des valeurs plus élevées signifient que des " -"changements du taux d’extrusion plus élevés sont autorisés, ce qui entraîne " -"des transitions de vitesse plus rapides.\n" +"Il définit le taux maximum auquel le débit volumétrique extrudé en mm3/sec peut varier dans le temps. Des valeurs plus élevées signifient que des changements du taux d’extrusion plus élevés sont autorisés, ce qui entraîne des transitions de vitesse plus rapides.\n" "\n" "Une valeur de 0 désactive la fonctionnalité.\n" "\n" -"Pour une imprimante direct drive à grande vitesse et à haut débit (comme " -"BambuLab ou Voron), cette valeur n’est généralement pas nécessaire. " -"Cependant, cela peut apporter un avantage marginal dans certains cas où les " -"vitesses varient considérablement. Par exemple, en cas de ralentissements " -"agressifs dus à des surplombs. Dans ces cas, une valeur élevée d’environ " -"300-350 mm3/s2 est recommandée car elle permet un lissage juste suffisant " -"pour aider l’augmentation de la pression pour obtenir une transition de " -"débit plus douce.\n" +"Pour une imprimante direct drive à grande vitesse et à haut débit (comme BambuLab ou Voron), cette valeur n’est généralement pas nécessaire. Cependant, cela peut apporter un avantage marginal dans certains cas où les vitesses varient considérablement. Par exemple, en cas de ralentissements agressifs dus à des surplombs. Dans ces cas, une valeur élevée d’environ 300-350 mm3/s2 est recommandée car elle permet un lissage juste suffisant pour aider l’augmentation de la pression pour obtenir une transition de débit plus douce.\n" "\n" -"Pour les imprimantes plus lentes sans fonction de pressure advance, la " -"valeur doit être réglée beaucoup plus bas. Une valeur de 10-15 mm3/s2 est un " -"bon point de départ en direct drive et de 5-10 mm3/s2 en Bowden.\n" +"Pour les imprimantes plus lentes sans fonction de pressure advance, la valeur doit être réglée beaucoup plus bas. Une valeur de 10-15 mm3/s2 est un bon point de départ en direct drive et de 5-10 mm3/s2 en Bowden.\n" "\n" -"Cette fonctionnalité est connue sous le nom de Pressure Equalizer dans Prusa " -"Slicer.\n" +"Cette fonctionnalité est connue sous le nom de Pressure Equalizer dans Prusa Slicer.\n" "\n" "Remarque : ce paramètre désactive la fonction Arc." @@ -12669,22 +10405,15 @@ msgid "Smoothing segment length" msgstr "Longueur du segment de lissage" msgid "" -"A lower value results in smoother extrusion rate transitions. However, this " -"results in a significantly larger gcode file and more instructions for the " -"printer to process. \n" +"A lower value results in smoother extrusion rate transitions. However, this results in a significantly larger gcode file and more instructions for the printer to process. \n" "\n" -"Default value of 3 works well for most cases. If your printer is stuttering, " -"increase this value to reduce the number of adjustments made\n" +"Default value of 3 works well for most cases. If your printer is stuttering, increase this value to reduce the number of adjustments made\n" "\n" "Allowed values: 1-5" msgstr "" -"Une valeur inférieure entraîne des transitions du taux d’extrusion plus " -"douces. Cependant, cela entraîne un fichier G-code beaucoup plus volumineux " -"et davantage d’instructions à traiter par l’imprimante.\n" +"Une valeur inférieure entraîne des transitions du taux d’extrusion plus douces. Cependant, cela entraîne un fichier G-code beaucoup plus volumineux et davantage d’instructions à traiter par l’imprimante.\n" "\n" -"La valeur 3 par défaut fonctionne bien dans la plupart des cas. Si votre " -"imprimante a du mal à suivre, augmentez cette valeur pour réduire le nombre " -"de réglages effectués\n" +"La valeur 3 par défaut fonctionne bien dans la plupart des cas. Si votre imprimante a du mal à suivre, augmentez cette valeur pour réduire le nombre de réglages effectués\n" "\n" "Valeurs autorisées : 1-5" @@ -12692,40 +10421,23 @@ msgid "Minimum speed for part cooling fan" msgstr "Vitesse minimale du ventilateur de refroidissement des pièces" msgid "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -"during printing except the first several layers which is defined by no " -"cooling layers.\n" -"Please enable auxiliary_fan in printer settings to use this feature. G-code " -"command: M106 P2 S(0-255)" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers which is defined by no cooling layers.\n" +"Please enable auxiliary_fan in printer settings to use this feature. G-code command: M106 P2 S(0-255)" msgstr "" -"Vitesse du ventilateur de refroidissement auxiliaire. Le ventilateur " -"auxiliaire fonctionnera à cette vitesse pendant l'impression, à l'exception " -"des premières couches définies sans refroidissement.\n" -"Veuillez activer auxiliaire_fan dans les paramètres de l’imprimante pour " -"utiliser cette fonctionnalité. Commande G-code : M106 P2 S(0-255)" +"Vitesse du ventilateur de refroidissement auxiliaire. Le ventilateur auxiliaire fonctionnera à cette vitesse pendant l'impression, à l'exception des premières couches définies sans refroidissement.\n" +"Veuillez activer auxiliaire_fan dans les paramètres de l’imprimante pour utiliser cette fonctionnalité. Commande G-code : M106 P2 S(0-255)" msgid "Min" msgstr "Minimum" -msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum " -"layer hight when enable adaptive layer height" -msgstr "" -"La hauteur de couche imprimable la plus basse pour l'extrudeur. Utilisé tp " -"limite la hauteur de couche minimale lorsque la hauteur de couche adaptative " -"est activée" +msgid "The lowest printable layer height for extruder. Used tp limits the minimum layer hight when enable adaptive layer height" +msgstr "La hauteur de couche imprimable la plus basse pour l'extrudeur. Utilisé tp limite la hauteur de couche minimale lorsque la hauteur de couche adaptative est activée" msgid "Min print speed" msgstr "Vitesse d'impression minimale" -msgid "" -"The minimum printing speed that the printer will slow down to to attempt to " -"maintain the minimum layer time above, when slow down for better layer " -"cooling is enabled." -msgstr "" -"Vitesse d’impression minimale à laquelle l’imprimante ralentira pour tenter " -"de maintenir le temps de couche minimal ci-dessus, lorsque la fonction de " -"ralentissement pour un meilleur refroidissement de la couche est activée." +msgid "The minimum printing speed that the printer will slow down to to attempt to maintain the minimum layer time above, when slow down for better layer cooling is enabled." +msgstr "Vitesse d’impression minimale à laquelle l’imprimante ralentira pour tenter de maintenir le temps de couche minimal ci-dessus, lorsque la fonction de ralentissement pour un meilleur refroidissement de la couche est activée." msgid "Diameter of nozzle" msgstr "Diamètre de la buse" @@ -12733,120 +10445,71 @@ msgstr "Diamètre de la buse" msgid "Configuration notes" msgstr "Notes de la configuration" -msgid "" -"You can put here your personal notes. This text will be added to the G-code " -"header comments." -msgstr "" -"Vous pouvez mettre ici vos notes personnelles. Ce texte sera ajouté aux " -"commentaires d’en-tête du G-code." +msgid "You can put here your personal notes. This text will be added to the G-code header comments." +msgstr "Vous pouvez mettre ici vos notes personnelles. Ce texte sera ajouté aux commentaires d’en-tête du G-code." msgid "Host Type" msgstr "Type d'hôte" -msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must " -"contain the kind of the host." -msgstr "" -"Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce " -"champ doit contenir le type d'hôte." +msgid "Orca Slicer can upload G-code files to a printer host. This field must contain the kind of the host." +msgstr "Orca Slicer peut téléverser des fichiers G-code sur une imprimante hôte. Ce champ doit contenir le type d'hôte." msgid "Nozzle volume" msgstr "Volume de la buse" msgid "Volume of nozzle between the cutter and the end of nozzle" -msgstr "" -"Volume de la buse entre le coupeur de filament et l'extrémité de la buse" +msgstr "Volume de la buse entre le coupeur de filament et l'extrémité de la buse" msgid "Cooling tube position" msgstr "Position du tube de refroidissement" msgid "Distance of the center-point of the cooling tube from the extruder tip." -msgstr "" -"Distance entre le point central du tube de refroidissement et la pointe de " -"l’extrudeur." +msgstr "Distance entre le point central du tube de refroidissement et la pointe de l’extrudeur." msgid "Cooling tube length" msgstr "Longueur du tube de refroidissement" msgid "Length of the cooling tube to limit space for cooling moves inside it." -msgstr "" -"Longueur du tube de refroidissement pour limiter l’espace à l’intérieur du " -"tube de refroidissement." +msgstr "Longueur du tube de refroidissement pour limiter l’espace à l’intérieur du tube de refroidissement." msgid "High extruder current on filament swap" msgstr "Courant de l’extrudeur élevé lors du changement de filament" -msgid "" -"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." -msgstr "" -"Il peut être avantageux d’augmenter le courant du moteur de l’extrudeur " -"pendant la séquence d’échange de filament pour permettre des vitesses " -"d’alimentation rapides et pour surmonter la résistance lors du chargement " -"d’un filament." +msgid "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." +msgstr "Il peut être avantageux d’augmenter le courant du moteur de l’extrudeur pendant la séquence d’échange de filament pour permettre des vitesses d’alimentation rapides et pour surmonter la résistance lors du chargement d’un filament." msgid "Filament parking position" msgstr "Position de stationnement du filament" -msgid "" -"Distance of the extruder tip from the position where the filament is parked " -"when unloaded. This should match the value in printer firmware." -msgstr "" -"Distance entre la pointe de l’extrudeur et la position où le filament est " -"parqué une fois déchargé. Cela doit correspondre à la valeur du firmware de " -"l’imprimante." +msgid "Distance of the extruder tip from the position where the filament is parked when unloaded. This should match the value in printer firmware." +msgstr "Distance entre la pointe de l’extrudeur et la position où le filament est parqué une fois déchargé. Cela doit correspondre à la valeur du firmware de l’imprimante." msgid "Extra loading distance" msgstr "Distance de chargement supplémentaire" -msgid "" -"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." -msgstr "" -"Lorsqu’il est réglé sur zéro, la distance à laquelle le filament est déplacé " -"depuis la position de stationnement pendant le chargement est exactement la " -"même que celle à laquelle il a été déplacé pendant le déchargement. " -"Lorsqu’il est positif, il est chargé davantage, s’il est négatif, le " -"mouvement de chargement est plus court que le déchargement." +msgid "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." +msgstr "Lorsqu’il est réglé sur zéro, la distance à laquelle le filament est déplacé depuis la position de stationnement pendant le chargement est exactement la même que celle à laquelle il a été déplacé pendant le déchargement. Lorsqu’il est positif, il est chargé davantage, s’il est négatif, le mouvement de chargement est plus court que le déchargement." msgid "Start end points" msgstr "Points de départ et d'arrivée" msgid "The start and end points which is from cutter area to garbage can." -msgstr "" -"Les points de départ et d'arrivée qui se situent entre la zone de coupe et " -"la goulotte d'évacuation." +msgstr "Les points de départ et d'arrivée qui se situent entre la zone de coupe et la goulotte d'évacuation." msgid "Reduce infill retraction" msgstr "Réduire la rétraction du remplissage" -msgid "" -"Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex " -"model and save printing time, but make slicing and G-code generating slower" -msgstr "" -"Ne pas effectuer de rétraction lors de déplacement en zone de remplissage " -"car même si l’extrudeur suinte, les coulures ne seraient pas visibles. Cela " -"peut réduire les rétractions pour les modèles complexes et économiser du " -"temps d’impression, mais ralentit la découpe et la génération du G-code." +msgid "Don't retract when the travel is in infill area absolutely. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower" +msgstr "Ne pas effectuer de rétraction lors de déplacement en zone de remplissage car même si l’extrudeur suinte, les coulures ne seraient pas visibles. Cela peut réduire les rétractions pour les modèles complexes et économiser du temps d’impression, mais ralentit la découpe et la génération du G-code." -msgid "" -"This option will drop the temperature of the inactive extruders to prevent " -"oozing." -msgstr "" -"Cette option permet d’abaisser la température des extrudeurs inactifs afin " -"d’éviter le suintement." +msgid "This option will drop the temperature of the inactive extruders to prevent oozing." +msgstr "Cette option permet d’abaisser la température des extrudeurs inactifs afin d’éviter le suintement." msgid "Filename format" msgstr "Format du nom de fichier" msgid "User can self-define the project file name when export" -msgstr "" -"L'utilisateur peut définir lui-même le nom du fichier de projet lors de " -"l'exportation" +msgstr "L'utilisateur peut définir lui-même le nom du fichier de projet lors de l'exportation" msgid "Make overhangs printable" msgstr "Rendre les surplombs imprimables" @@ -12857,26 +10520,14 @@ msgstr "Modifier la géométrie pour imprimer les surplombs sans support." msgid "Make overhangs printable - Maximum angle" msgstr "Rendre les surplombs imprimables - Angle maximal" -msgid "" -"Maximum angle of overhangs to allow after making more steep overhangs " -"printable.90° will not change the model at all and allow any overhang, while " -"0 will replace all overhangs with conical material." -msgstr "" -"Angle maximal des surplombs à autoriser après avoir rendu imprimables les " -"surplombs plus raides. Une valeur de 90° ne changera pas du tout le modèle " -"et n’autorisera aucun surplomb, tandis que 0 remplacera tous les surplombs " -"par un matériau conique." +msgid "Maximum angle of overhangs to allow after making more steep overhangs printable.90° will not change the model at all and allow any overhang, while 0 will replace all overhangs with conical material." +msgstr "Angle maximal des surplombs à autoriser après avoir rendu imprimables les surplombs plus raides. Une valeur de 90° ne changera pas du tout le modèle et n’autorisera aucun surplomb, tandis que 0 remplacera tous les surplombs par un matériau conique." msgid "Make overhangs printable - Hole area" msgstr "Rendre les surplombs imprimables - Zone de trous" -msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." -msgstr "" -"Aire maximale d’un trou dans la base du modèle avant qu’il ne soit rempli " -"par un matériau conique. Une valeur de 0 remplira tous les trous dans la " -"base du modèle." +msgid "Maximum area of a hole in the base of the model before it's filled by conical material.A value of 0 will fill all the holes in the model base." +msgstr "Aire maximale d’un trou dans la base du modèle avant qu’il ne soit rempli par un matériau conique. Une valeur de 0 remplira tous les trous dans la base du modèle." msgid "mm²" msgstr "mm²" @@ -12885,23 +10536,14 @@ msgid "Detect overhang wall" msgstr "Détecter une paroi en surplomb" #, c-format, boost-format -msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." -msgstr "" -"Détectez le pourcentage de surplomb par rapport à la largeur de la ligne et " -"utilisez une vitesse différente pour imprimer. Pour un surplomb de 100%% la " -"vitesse du pont est utilisée." +msgid "Detect the overhang percentage relative to line width and use different speed to print. For 100%% overhang, bridge speed is used." +msgstr "Détectez le pourcentage de surplomb par rapport à la largeur de la ligne et utilisez une vitesse différente pour imprimer. Pour un surplomb de 100%% la vitesse du pont est utilisée." msgid "Filament to print walls" msgstr "Filament pour imprimer les parois" -msgid "" -"Line width of inner wall. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Largeur de ligne de la paroi intérieure. Si elle est exprimée en %, elle " -"sera calculée sur le diamètre de la buse." +msgid "Line width of inner wall. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Largeur de ligne de la paroi intérieure. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." msgid "Speed of inner wall" msgstr "Vitesse de la paroi intérieure" @@ -12913,38 +10555,20 @@ msgid "Alternate extra wall" msgstr "Paroi supplémentaire alternée" msgid "" -"This setting adds an extra wall to every other layer. This way the infill " -"gets wedged vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option " -"needs to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option needs to be disabled. \n" "\n" -"Using lightning infill together with this option is not recommended as there " -"is limited infill to anchor the extra perimeters to." +"Using lightning infill together with this option is not recommended as there is limited infill to anchor the extra perimeters to." msgstr "" -"Ce paramètre ajoute une paroi supplémentaire à chaque couche. De cette " -"manière, le remplissage est coincé verticalement entre les parois, ce qui " -"permet d’obtenir des impressions plus solides. \n" +"Ce paramètre ajoute une paroi supplémentaire à chaque couche. De cette manière, le remplissage est coincé verticalement entre les parois, ce qui permet d’obtenir des impressions plus solides. \n" "\n" -"Lorsque cette option est activée, l’option « assurer l’épaisseur verticale " -"de la coque » doit être désactivée. \n" +"Lorsque cette option est activée, l’option « assurer l’épaisseur verticale de la coque » doit être désactivée. \n" "\n" -"Il n’est pas recommandé d’utiliser le remplissage par éclairs avec cette " -"option, car il y a peu de remplissage pour ancrer les périmètres " -"supplémentaires." +"Il n’est pas recommandé d’utiliser le remplissage par éclairs avec cette option, car il y a peu de remplissage pour ancrer les périmètres supplémentaires." -msgid "" -"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 Orca Slicer config settings by reading " -"environment variables." -msgstr "" -"Si vous souhaitez traiter le G-code de sortie via des scripts personnalisés, " -"indiquez simplement leurs chemins absolus ici. Séparez plusieurs scripts par " -"un point-virgule. Les scripts recevront le chemin absolu vers le fichier G-" -"code comme premier argument, et ils peuvent accéder aux paramètres de " -"configuration Orca Slicer en lisant les variables d’environnement." +msgid "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 Orca Slicer config settings by reading environment variables." +msgstr "Si vous souhaitez traiter le G-code de sortie via des scripts personnalisés, indiquez simplement leurs chemins absolus ici. Séparez plusieurs scripts par un point-virgule. Les scripts recevront le chemin absolu vers le fichier G-code comme premier argument, et ils peuvent accéder aux paramètres de configuration Orca Slicer en lisant les variables d’environnement." msgid "Printer type" msgstr "Type d’imprimante" @@ -12983,48 +10607,28 @@ msgid "Initial layer expansion" msgstr "Extension de la couche initiale" msgid "Expand the first raft or support layer to improve bed plate adhesion" -msgstr "" -"Développez le premier radeau ou couche de support pour améliorer l'adhérence " -"du plateau" +msgstr "Développez le premier radeau ou couche de support pour améliorer l'adhérence du plateau" msgid "Raft layers" msgstr "Couches du radeau" -msgid "" -"Object will be raised by this number of support layers. Use this function to " -"avoid wrapping when print ABS" -msgstr "" -"L'objet sera élevé par ce nombre de couches de support. Utilisez cette " -"fonction pour éviter l'emballage lors de l'impression ABS" +msgid "Object will be raised by this number of support layers. Use this function to avoid wrapping when print ABS" +msgstr "L'objet sera élevé par ce nombre de couches de support. Utilisez cette fonction pour éviter l'emballage lors de l'impression ABS" -msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too " -"much points and gcode lines in gcode file. Smaller value means higher " -"resolution and more time to slice" -msgstr "" -"Le chemin du G-code est généré après avoir simplifié le contour du modèle " -"pour éviter trop de points et de lignes G-code dans le fichier G-code. Une " -"valeur plus petite signifie une résolution plus élevée et plus de temps pour " -"découper" +msgid "G-code path is genereated after simplifing the contour of model to avoid too much points and gcode lines in gcode file. Smaller value means higher resolution and more time to slice" +msgstr "Le chemin du G-code est généré après avoir simplifié le contour du modèle pour éviter trop de points et de lignes G-code dans le fichier G-code. Une valeur plus petite signifie une résolution plus élevée et plus de temps pour découper" msgid "Travel distance threshold" msgstr "Seuil de distance parcourue" -msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" -msgstr "" -"Ne déclencher la rétraction que lorsque la distance parcourue est supérieure " -"à ce seuil" +msgid "Only trigger retraction when the travel distance is longer than this threshold" +msgstr "Ne déclencher la rétraction que lorsque la distance parcourue est supérieure à ce seuil" msgid "Retract amount before wipe" msgstr "Quantité de rétraction avant essuyage" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" -msgstr "" -"La longueur de la rétraction rapide avant l’essuyage, par rapport à la " -"longueur de la rétraction" +msgid "The length of fast retraction before wipe, relative to retraction length" +msgstr "La longueur de la rétraction rapide avant l’essuyage, par rapport à la longueur de la rétraction" msgid "Retract when change layer" msgstr "Rétracter lors de changement de couche" @@ -13035,71 +10639,38 @@ msgstr "Cela force une rétraction sur les changements de couche." msgid "Retraction Length" msgstr "Longueur de Rétraction" -msgid "" -"Some amount of material in extruder is pulled back to avoid ooze during long " -"travel. Set zero to disable retraction" -msgstr "" -"Une certaine quantité de matériau dans l'extrudeur est retirée pour éviter " -"le suintement pendant les longs trajets. Définir zéro pour désactiver la " -"rétraction" +msgid "Some amount of material in extruder is pulled back to avoid ooze during long travel. Set zero to disable retraction" +msgstr "Une certaine quantité de matériau dans l'extrudeur est retirée pour éviter le suintement pendant les longs trajets. Définir zéro pour désactiver la rétraction" msgid "Long retraction when cut(experimental)" msgstr "Longue rétraction lors de la coupe (expérimental)" -msgid "" -"Experimental feature.Retracting and cutting off the filament at a longer " -"distance during changes to minimize purge.While this reduces flush " -"significantly, it may also raise the risk of nozzle clogs or other printing " -"problems." -msgstr "" -"Fonction expérimentale : rétracter et couper le filament à une plus grande " -"distance pendant les changements pour minimiser la purge. Bien que cela " -"réduise considérablement la purge, cela peut également augmenter le risque " -"de bouchage des buses ou d’autres problèmes d’impression." +msgid "Experimental feature.Retracting and cutting off the filament at a longer distance during changes to minimize purge.While this reduces flush significantly, it may also raise the risk of nozzle clogs or other printing problems." +msgstr "Fonction expérimentale : rétracter et couper le filament à une plus grande distance pendant les changements pour minimiser la purge. Bien que cela réduise considérablement la purge, cela peut également augmenter le risque de bouchage des buses ou d’autres problèmes d’impression." msgid "Retraction distance when cut" msgstr "Distance de rétraction lors de la coupe" -msgid "" -"Experimental feature.Retraction length before cutting off during filament " -"change" -msgstr "" -"Fonction expérimentale : longueur de rétraction avant la coupure lors du " -"changement de filament." +msgid "Experimental feature.Retraction length before cutting off during filament change" +msgstr "Fonction expérimentale : longueur de rétraction avant la coupure lors du changement de filament." msgid "Z hop when retract" msgstr "Décalage du Z lors de la rétraction" -msgid "" -"Whenever the retraction is done, the nozzle is lifted a little to create " -"clearance between nozzle and the print. It prevents nozzle from hitting the " -"print when travel move. Using spiral line to lift z can prevent stringing" -msgstr "" -"Chaque fois que la rétraction est effectuée, la buse est légèrement soulevée " -"pour créer un espace entre la buse et l'impression. Il empêche la buse de " -"toucher l'impression lors du déplacement. L'utilisation d'une ligne en " -"spirale pour soulever z peut empêcher l'enfilage" +msgid "Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and the print. It prevents nozzle from hitting the print when travel move. Using spiral line to lift z can prevent stringing" +msgstr "Chaque fois que la rétraction est effectuée, la buse est légèrement soulevée pour créer un espace entre la buse et l'impression. Il empêche la buse de toucher l'impression lors du déplacement. L'utilisation d'une ligne en spirale pour soulever z peut empêcher l'enfilage" msgid "Z hop lower boundary" msgstr "Limite inférieure du saut de Z" -msgid "" -"Z hop will only come into effect when Z is above this value and is below the " -"parameter: \"Z hop upper boundary\"" -msgstr "" -"Le saut de Z ne sera effectif que si Z est supérieur à cette valeur et " -"inférieur au paramètre : « Limite supérieure du saut de Z »" +msgid "Z hop will only come into effect when Z is above this value and is below the parameter: \"Z hop upper boundary\"" +msgstr "Le saut de Z ne sera effectif que si Z est supérieur à cette valeur et inférieur au paramètre : « Limite supérieure du saut de Z »" msgid "Z hop upper boundary" msgstr "Limite supérieure du saut de Z" -msgid "" -"If this value is positive, Z hop will only come into effect when Z is above " -"the parameter: \"Z hop lower boundary\" and is below this value" -msgstr "" -"Si cette valeur est positive, le saut de Z ne sera effectif que si Z est " -"supérieur au paramètre : « Limite inférieure de Z hop » et qu’il est " -"inférieur à cette valeur." +msgid "If this value is positive, Z hop will only come into effect when Z is above the parameter: \"Z hop lower boundary\" and is below this value" +msgstr "Si cette valeur est positive, le saut de Z ne sera effectif que si Z est supérieur au paramètre : « Limite inférieure de Z hop » et qu’il est inférieur à cette valeur." msgid "Z hop type" msgstr "Type de décalage en Z" @@ -13113,42 +10684,26 @@ msgstr "Spirale" msgid "Traveling angle" msgstr "Angle de déplacement" -msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " -"in Normal Lift" -msgstr "" -"Angle de déplacement pour les sauts en Z en pente et en spirale. En le " -"réglant sur 90°, on obtient une levée normale." +msgid "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in Normal Lift" +msgstr "Angle de déplacement pour les sauts en Z en pente et en spirale. En le réglant sur 90°, on obtient une levée normale." msgid "Only lift Z above" msgstr "Décalage en Z au-dessus uniquement" -msgid "" -"If you set this to a positive value, Z lift will only take place above the " -"specified absolute Z." -msgstr "" -"Si définie sur une valeur positive, l’élévation Z n’aura lieu qu’au-dessus " -"du Z absolu spécifié." +msgid "If you set this to a positive value, Z lift will only take place above the specified absolute Z." +msgstr "Si définie sur une valeur positive, l’élévation Z n’aura lieu qu’au-dessus du Z absolu spécifié." msgid "Only lift Z below" msgstr "Décalage en Z en dessous uniquement" -msgid "" -"If you set this to a positive value, Z lift will only take place below the " -"specified absolute Z." -msgstr "" -"Si définie sur une valeur positive, l’élévation Z n’aura lieu qu’en dessous " -"du Z absolu spécifié." +msgid "If you set this to a positive value, Z lift will only take place below the specified absolute Z." +msgstr "Si définie sur une valeur positive, l’élévation Z n’aura lieu qu’en dessous du Z absolu spécifié." msgid "On surfaces" msgstr "Sur les surfaces" -msgid "" -"Enforce Z Hop behavior. This setting is impacted by the above settings (Only " -"lift Z above/below)." -msgstr "" -"Appliquer le comportement du décalage en Z. Ce paramètre est impacté par les " -"paramètres ci-dessus (décalage en Z au-dessus/en dessous uniquement)." +msgid "Enforce Z Hop behavior. This setting is impacted by the above settings (Only lift Z above/below)." +msgstr "Appliquer le comportement du décalage en Z. Ce paramètre est impacté par les paramètres ci-dessus (décalage en Z au-dessus/en dessous uniquement)." msgid "All Surfaces" msgstr "Toutes les surfaces" @@ -13165,20 +10720,11 @@ msgstr "Supérieures et Inférieures" msgid "Extra length on restart" msgstr "Longueur supplémentaire" -msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." -msgstr "" -"Lorsque la rétraction est compensée après le mouvement de déplacement, " -"l’extrudeuse poussera cette quantité supplémentaire de filament. Ce " -"paramètre est rarement nécessaire." +msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." +msgstr "Lorsque la rétraction est compensée après le mouvement de déplacement, l’extrudeuse poussera cette quantité supplémentaire de filament. Ce paramètre est rarement nécessaire." -msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." -msgstr "" -"Lorsque la rétraction est compensée après le changement d’outil, l’extrudeur " -"poussera cette quantité supplémentaire de filament." +msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." +msgstr "Lorsque la rétraction est compensée après le changement d’outil, l’extrudeur poussera cette quantité supplémentaire de filament." msgid "Retraction Speed" msgstr "Vitesse de Rétraction" @@ -13189,23 +10735,14 @@ msgstr "Vitesse de rétraction" msgid "Deretraction Speed" msgstr "Vitesse de réinsertion" -msgid "" -"Speed for reloading filament into extruder. Zero means same speed with " -"retraction" -msgstr "" -"Vitesse de rechargement du filament dans l'extrudeur. Zéro signifie même " -"vitesse avec rétraction" +msgid "Speed for reloading filament into extruder. Zero means same speed with retraction" +msgstr "Vitesse de rechargement du filament dans l'extrudeur. Zéro signifie même vitesse avec rétraction" msgid "Use firmware retraction" msgstr "Utiliser la rétraction firmware" -msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." -msgstr "" -"Ce paramètre expérimental utilise les commandes G10 et G11 pour que le " -"firmware gère la rétraction. Ceci n’est pris en charge que dans une version " -"de Marlin récente." +msgid "This experimental setting uses G10 and G11 commands to have the firmware handle the retraction. This is only supported in recent Marlin." +msgstr "Ce paramètre expérimental utilise les commandes G10 et G11 pour que le firmware gère la rétraction. Ceci n’est pris en charge que dans une version de Marlin récente." msgid "Show auto-calibration marks" msgstr "Afficher les marques de calibration" @@ -13213,18 +10750,14 @@ msgstr "Afficher les marques de calibration" msgid "Disable set remaining print time" msgstr "Désactiver le réglage du temps d’impression restant" -msgid "" -"Disable generating of the M73: Set remaining print time in the final gcode" -msgstr "" -"Désactiver la génération du M73 : Définir le temps d’impression restant dans " -"le gcode final" +msgid "Disable generating of the M73: Set remaining print time in the final gcode" +msgstr "Désactiver la génération du M73 : Définir le temps d’impression restant dans le gcode final" msgid "Seam position" msgstr "Position de la couture" msgid "The start position to print each part of outer wall" -msgstr "" -"La position de départ pour imprimer chaque partie de la paroi extérieure" +msgstr "La position de départ pour imprimer chaque partie de la paroi extérieure" msgid "Nearest" msgstr "La plus proche" @@ -13241,121 +10774,69 @@ msgstr "Aléatoire" msgid "Staggered inner seams" msgstr "Coutures intérieures décalées" -msgid "" -"This option causes the inner seams to be shifted backwards based on their " -"depth, forming a zigzag pattern." -msgstr "" -"Cette option entraîne le décalage des coutures intérieures vers l’arrière en " -"fonction de leur profondeur, formant un motif en zigzag." +msgid "This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern." +msgstr "Cette option entraîne le décalage des coutures intérieures vers l’arrière en fonction de leur profondeur, formant un motif en zigzag." msgid "Seam gap" msgstr "Écart de couture" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current extruder diameter. The default value for this parameter is 10%." msgstr "" -"Afin de réduire la visibilité de la couture dans une extrusion en boucle " -"fermée, la boucle est interrompue et raccourcie d’une valeur spécifiée.\n" -"Cette quantité peut être spécifiée en millimètres ou en pourcentage du " -"diamètre actuel de la buse. La valeur par défaut de ce paramètre est 10%." +"Afin de réduire la visibilité de la couture dans une extrusion en boucle fermée, la boucle est interrompue et raccourcie d’une valeur spécifiée.\n" +"Cette quantité peut être spécifiée en millimètres ou en pourcentage du diamètre actuel de la buse. La valeur par défaut de ce paramètre est 10%." msgid "Scarf joint seam (beta)" msgstr "Couture en biseau (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." -msgstr "" -"Utiliser une couture en biseau pour minimiser la visibilité de la couture et " -"augmenter sa solidité." +msgstr "Utiliser une couture en biseau pour minimiser la visibilité de la couture et augmenter sa solidité." msgid "Conditional scarf joint" msgstr "Couture en biseau conditionnelle" -msgid "" -"Apply scarf joints only to smooth perimeters where traditional seams do not " -"conceal the seams at sharp corners effectively." -msgstr "" -"N’appliquer les couture en biseau que sur les périmètres lisses, lorsque les " -"coutures traditionnelles ne permettent pas de dissimuler efficacement les " -"coutures dans les angles saillants." +msgid "Apply scarf joints only to smooth perimeters where traditional seams do not conceal the seams at sharp corners effectively." +msgstr "N’appliquer les couture en biseau que sur les périmètres lisses, lorsque les coutures traditionnelles ne permettent pas de dissimuler efficacement les coutures dans les angles saillants." msgid "Conditional angle threshold" msgstr "Seuil d’angle conditionnel" msgid "" -"This option sets the threshold angle for applying a conditional scarf joint " -"seam.\n" -"If the maximum angle within the perimeter loop exceeds this value " -"(indicating the absence of sharp corners), a scarf joint seam will be used. " -"The default value is 155°." +"This option sets the threshold angle for applying a conditional scarf joint seam.\n" +"If the maximum angle within the perimeter loop exceeds this value (indicating the absence of sharp corners), a scarf joint seam will be used. The default value is 155°." msgstr "" -"Cette option définit l’angle seuil pour l’application d’une couture en " -"biseau conditionnelle.\n" -"Si l’angle maximal à l’intérieur de la boucle périmétrique dépasse cette " -"valeur (indiquant l’absence d’angles vifs), une couture en biseau sera " -"utilisée. La valeur par défaut est de 155°." +"Cette option définit l’angle seuil pour l’application d’une couture en biseau conditionnelle.\n" +"Si l’angle maximal à l’intérieur de la boucle périmétrique dépasse cette valeur (indiquant l’absence d’angles vifs), une couture en biseau sera utilisée. La valeur par défaut est de 155°." msgid "Conditional overhang threshold" msgstr "Seuil de dépassement conditionnel" #, no-c-format, no-boost-format -msgid "" -"This option determines the overhang threshold for the application of scarf " -"joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set " -"at 40% of the external wall's width. Due to performance considerations, the " -"degree of overhang is estimated." -msgstr "" -"Cette option détermine le seuil de surplomb pour l’application des coutures " -"en écharpe. Si la partie non soutenue du périmètre est inférieure à ce " -"seuil, des coutures en biseau seront appliquées. Le seuil par défaut est " -"fixé à 40 % de la largeur de la paroi extérieure. Pour des raisons de " -"performance, le degré de surplomb est estimé." +msgid "This option determines the overhang threshold for the application of scarf joint seams. If the unsupported portion of the perimeter is less than this threshold, scarf joint seams will be applied. The default threshold is set at 40% of the external wall's width. Due to performance considerations, the degree of overhang is estimated." +msgstr "Cette option détermine le seuil de surplomb pour l’application des coutures en écharpe. Si la partie non soutenue du périmètre est inférieure à ce seuil, des coutures en biseau seront appliquées. Le seuil par défaut est fixé à 40 % de la largeur de la paroi extérieure. Pour des raisons de performance, le degré de surplomb est estimé." msgid "Scarf joint speed" msgstr "Vitesse de la couture en biseau" -msgid "" -"This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also " -"advisable to enable 'Extrusion rate smoothing' if the set speed varies " -"significantly from the speed of the outer or inner walls. If the speed " -"specified here is higher than the speed of the outer or inner walls, the " -"printer will default to the slower of the two speeds. When specified as a " -"percentage (e.g., 80%), the speed is calculated based on the respective " -"outer or inner wall speed. The default value is set to 100%." -msgstr "" -"Cette option définit la vitesse d’impression des coutures en biseau. Il est " -"recommandé d’imprimer les coutures en biseau à une vitesse lente (moins de " -"100 mm/s). Il est également conseillé d’activer l’option « Lissage de la " -"vitesse d’extrusion » si la vitesse définie varie de manière significative " -"par rapport à la vitesse des parois extérieures ou intérieures. Si la " -"vitesse spécifiée ici est supérieure à la vitesse des parois extérieures ou " -"intérieures, l’imprimante prendra par défaut la plus lente des deux " -"vitesses. Lorsqu’elle est spécifiée sous forme de pourcentage (par exemple, " -"80 %), la vitesse est calculée sur la base de la vitesse de la paroi " -"extérieure ou intérieure. La valeur par défaut est fixée à 100 %." +msgid "This option sets the printing speed for scarf joints. It is recommended to print scarf joints at a slow speed (less than 100 mm/s). It's also advisable to enable 'Extrusion rate smoothing' if the set speed varies significantly from the speed of the outer or inner walls. If the speed specified here is higher than the speed of the outer or inner walls, the printer will default to the slower of the two speeds. When specified as a percentage (e.g., 80%), the speed is calculated based on the respective outer or inner wall speed. The default value is set to 100%." +msgstr "Cette option définit la vitesse d’impression des coutures en biseau. Il est recommandé d’imprimer les coutures en biseau à une vitesse lente (moins de 100 mm/s). Il est également conseillé d’activer l’option « Lissage de la vitesse d’extrusion » si la vitesse définie varie de manière significative par rapport à la vitesse des parois extérieures ou intérieures. Si la vitesse spécifiée ici est supérieure à la vitesse des parois extérieures ou intérieures, l’imprimante prendra par défaut la plus lente des deux vitesses. Lorsqu’elle est spécifiée sous forme de pourcentage (par exemple, 80 %), la vitesse est calculée sur la base de la vitesse de la paroi extérieure ou intérieure. La valeur par défaut est fixée à 100 %." msgid "Scarf joint flow ratio" msgstr "Ratio de débit de la couture en biseau" msgid "This factor affects the amount of material for scarf joints." -msgstr "" -"Ce facteur influe sur la quantité de matériau pour les coutures en biseau." +msgstr "Ce facteur influe sur la quantité de matériau pour les coutures en biseau." msgid "Scarf start height" msgstr "Hauteur de départ du biseau" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the current layer height. The default value for this parameter is 0." msgstr "" "Hauteur de départ du biseau.\n" -"Cette hauteur peut être spécifiée en millimètres ou en pourcentage de la " -"hauteur de la couche actuelle. La valeur par défaut de ce paramètre est 0." +"Cette hauteur peut être spécifiée en millimètres ou en pourcentage de la hauteur de la couche actuelle. La valeur par défaut de ce paramètre est 0." msgid "Scarf around entire wall" msgstr "Biseau sur toute la paroi" @@ -13366,12 +10847,8 @@ msgstr "Le biseau s’étend sur toute la longueur de la paroi." msgid "Scarf length" msgstr "Longueur du biseau" -msgid "" -"Length of the scarf. Setting this parameter to zero effectively disables the " -"scarf." -msgstr "" -"Longueur du biseau. La mise à zéro de ce paramètre désactive automatiquement " -"le biseau." +msgid "Length of the scarf. Setting this parameter to zero effectively disables the scarf." +msgstr "Longueur du biseau. La mise à zéro de ce paramètre désactive automatiquement le biseau." msgid "Scarf steps" msgstr "Étapes du biseau" @@ -13388,66 +10865,32 @@ msgstr "Utiliser également un joint en biseau pour les parois intérieures." msgid "Role base wipe speed" msgstr "Vitesse d’essuyage basée sur la vitesse d’extrusion" -msgid "" -"The wipe speed is determined by the speed of the current extrusion role.e.g. " -"if a wipe action is executed immediately following an outer wall extrusion, " -"the speed of the outer wall extrusion will be utilized for the wipe action." -msgstr "" -"La vitesse d’essuyage est identique à la vitesse d’extrusion actuelle. Par " -"exemple, si l’action d’essuyage est suivie d’une extrusion de paroi " -"extérieure, la vitesse de la paroi extérieure sera utilisée pour cette " -"action d’essuyage." +msgid "The wipe speed is determined by the speed of the current extrusion role.e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action." +msgstr "La vitesse d’essuyage est identique à la vitesse d’extrusion actuelle. Par exemple, si l’action d’essuyage est suivie d’une extrusion de paroi extérieure, la vitesse de la paroi extérieure sera utilisée pour cette action d’essuyage." msgid "Wipe on loops" msgstr "Essuyer sur les boucles" -msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small " -"inward movement is executed before the extruder leaves the loop." -msgstr "" -"Pour minimiser la visibilité de la couture dans une extrusion en boucle " -"fermée, un petit mouvement vers l’intérieur est exécuté avant que la buse ne " -"quitte la boucle." +msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." +msgstr "Pour minimiser la visibilité de la couture dans une extrusion en boucle fermée, un petit mouvement vers l’intérieur est exécuté avant que la buse ne quitte la boucle." msgid "Wipe before external loop" msgstr "Essuyer avant la boucle externe" msgid "" -"To minimise visibility of potential overextrusion at the start of an " -"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order, the deretraction is performed slightly on the inside from the " -"start of the external perimeter. That way any potential over extrusion is " -"hidden from the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print order, the deretraction is performed slightly on the inside from the start of the external perimeter. That way any potential over extrusion is hidden from the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order as in these modes it is more likely an external perimeter is " -"printed immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order as in these modes it is more likely an external perimeter is printed immediately after a deretraction move." msgstr "" -"Pour minimiser la visibilité d’une éventuelle surextrusion au début d’un " -"périmètre extérieur lors de l’impression avec l’ordre d’impression de paroi " -"extérieure/intérieure ou intérieure/extérieure/intérieure, la dérétraction " -"est effectuée légèrement sur l’intérieur à partir du début du périmètre " -"extérieur. De cette manière, toute sur-extrusion potentielle est cachée de " -"la surface extérieure. \n" +"Pour minimiser la visibilité d’une éventuelle surextrusion au début d’un périmètre extérieur lors de l’impression avec l’ordre d’impression de paroi extérieure/intérieure ou intérieure/extérieure/intérieure, la dérétraction est effectuée légèrement sur l’intérieur à partir du début du périmètre extérieur. De cette manière, toute sur-extrusion potentielle est cachée de la surface extérieure. \n" "\n" -"Ceci est utile lors de l’impression avec l’ordre d’impression de la paroi " -"extérieure/intérieure ou intérieure/extérieure/intérieure, car dans ces " -"modes, il est plus probable qu’un périmètre extérieur soit imprimé " -"immédiatement après un mouvement de dérétraction." +"Ceci est utile lors de l’impression avec l’ordre d’impression de la paroi extérieure/intérieure ou intérieure/extérieure/intérieure, car dans ces modes, il est plus probable qu’un périmètre extérieur soit imprimé immédiatement après un mouvement de dérétraction." msgid "Wipe speed" msgstr "Vitesse d’essuyage" -msgid "" -"The wipe speed is determined by the speed setting specified in this " -"configuration.If the value is expressed as a percentage (e.g. 80%), it will " -"be calculated based on the travel speed setting above.The default value for " -"this parameter is 80%" -msgstr "" -"La vitesse d’essuyage est déterminée par le paramètre de vitesse spécifié " -"dans cette configuration. Si la valeur est exprimée en pourcentage (par " -"exemple 80%), elle sera calculée en fonction du paramètre de vitesse de " -"déplacement ci-dessus. La valeur par défaut de ce paramètre est 80%" +msgid "The wipe speed is determined by the speed setting specified in this configuration.If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above.The default value for this parameter is 80%" +msgstr "La vitesse d’essuyage est déterminée par le paramètre de vitesse spécifié dans cette configuration. Si la valeur est exprimée en pourcentage (par exemple 80%), elle sera calculée en fonction du paramètre de vitesse de déplacement ci-dessus. La valeur par défaut de ce paramètre est 80%" msgid "Skirt distance" msgstr "Distance de la jupe" @@ -13465,33 +10908,21 @@ msgid "Draft shield" msgstr "Paravent" msgid "" -"A draft shield is useful to protect an ABS or ASA print from warping and " -"detaching from print bed due to wind draft. It is usually needed only with " -"open frame printers, i.e. without an enclosure. \n" +"A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure. \n" "\n" "Options:\n" "Enabled = skirt is as tall as the highest printed object.\n" "Limited = skirt is as tall as specified by skirt height.\n" "\n" -"Note: With the draft shield active, the skirt will be printed at skirt " -"distance from the object. Therefore, if brims are active it may intersect " -"with them. To avoid this, increase the skirt distance value.\n" +"Note: With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value.\n" msgstr "" -"Un paravent est utile pour protéger une impression ABS ou ASA contre les " -"risques de déformation et de détachement du plateau d’impression en raison " -"des courants d’air. Il n’est généralement nécessaire que pour les " -"imprimantes à cadre ouvert, c’est-à-dire sans caisson. \n" +"Un paravent est utile pour protéger une impression ABS ou ASA contre les risques de déformation et de détachement du plateau d’impression en raison des courants d’air. Il n’est généralement nécessaire que pour les imprimantes à cadre ouvert, c’est-à-dire sans caisson. \n" "\n" "Options :\n" -"Activé = la hauteur de la jupe est égale à celle de l’objet imprimé le plus " -"haut.\n" -"Limité = la hauteur de la jupe est celle spécifiée par la hauteur de la " -"jupe.\n" +"Activé = la hauteur de la jupe est égale à celle de l’objet imprimé le plus haut.\n" +"Limité = la hauteur de la jupe est celle spécifiée par la hauteur de la jupe.\n" "\n" -"Remarque : lorsque le paravent est actif, la jupe est imprimée à la distance " -"de la jupe par rapport à l’objet. Par conséquent, si des bordures sont " -"actives, elle risque de les croiser. Pour éviter cela, augmentez la valeur " -"de la distance de la jupe.\n" +"Remarque : lorsque le paravent est actif, la jupe est imprimée à la distance de la jupe par rapport à l’objet. Par conséquent, si des bordures sont actives, elle risque de les croiser. Pour éviter cela, augmentez la valeur de la distance de la jupe.\n" msgid "Limited" msgstr "Limité" @@ -13509,43 +10940,28 @@ msgid "Skirt speed" msgstr "Vitesse de la jupe" msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." -msgstr "" -"Vitesse de la jupe, en mm/s. Une valeur à 0 signifie que la vitesse " -"d’extrusion par défaut est utilisée." +msgstr "Vitesse de la jupe, en mm/s. Une valeur à 0 signifie que la vitesse d’extrusion par défaut est utilisée." msgid "Skirt minimum extrusion length" msgstr "Longueur minimale d’extrusion de la jupe" msgid "" -"Minimum filament extrusion length in mm when printing the skirt. Zero means " -"this feature is disabled.\n" +"Minimum filament extrusion length in mm when printing the skirt. Zero means this feature is disabled.\n" "\n" -"Using a non zero value is useful if the printer is set up to print without a " -"prime line." +"Using a non zero value is useful if the printer is set up to print without a prime line." msgstr "" -"Longueur minimale d’extrusion du filament en mm lors de l’impression de la " -"jupe. Zéro signifie que cette fonction est désactivée.\n" +"Longueur minimale d’extrusion du filament en mm lors de l’impression de la jupe. Zéro signifie que cette fonction est désactivée.\n" "\n" -"L’utilisation d’une valeur non nulle est utile si l’imprimante est " -"configurée pour imprimer sans ligne d’amorce." +"L’utilisation d’une valeur non nulle est utile si l’imprimante est configurée pour imprimer sans ligne d’amorce." -msgid "" -"The printing speed in exported gcode will be slowed down, when the estimated " -"layer time is shorter than this value, to get better cooling for these layers" -msgstr "" -"La vitesse d'impression dans le G-code exporté sera ralentie, lorsque le " -"temps de couche estimé est plus court que cette valeur, pour obtenir un " -"meilleur refroidissement pour ces couches" +msgid "The printing speed in exported gcode will be slowed down, when the estimated layer time is shorter than this value, to get better cooling for these layers" +msgstr "La vitesse d'impression dans le G-code exporté sera ralentie, lorsque le temps de couche estimé est plus court que cette valeur, pour obtenir un meilleur refroidissement pour ces couches" msgid "Minimum sparse infill threshold" msgstr "Seuil minimum de remplissage" -msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " -"internal solid infill" -msgstr "" -"La zone de remplissage inférieure à la valeur seuil est remplacée par un " -"remplissage plein interne" +msgid "Sparse infill area which is smaller than threshold value is replaced by internal solid infill" +msgstr "La zone de remplissage inférieure à la valeur seuil est remplacée par un remplissage plein interne" msgid "Solid infill" msgstr "Remplissage solide" @@ -13553,67 +10969,29 @@ msgstr "Remplissage solide" msgid "Filament to print solid infill" msgstr "Filament pour l’impression de remplissage solide" -msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." -msgstr "" -"Largeur de ligne du remplissage plein interne. Si elle est exprimée en %, " -"elle sera calculée sur le diamètre de la buse." +msgid "Line width of internal solid infill. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Largeur de ligne du remplissage plein interne. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." msgid "Speed of internal solid infill, not the top and bottom surface" -msgstr "" -"Vitesse du remplissage plein interne, pas de la surface supérieure et " -"inférieure" +msgstr "Vitesse du remplissage plein interne, pas de la surface supérieure et inférieure" -msgid "" -"Spiralize smooths out the z moves of the outer contour. And turns a solid " -"model into a single walled print with solid bottom layers. The final " -"generated model has no seam" -msgstr "" -"Spiralize lisse les mouvements z du contour extérieur. Et transforme un " -"modèle plein en une impression à paroi unique avec des couches inférieures " -"solides. Le modèle généré final n'a pas de couture." +msgid "Spiralize smooths out the z moves of the outer contour. And turns a solid model into a single walled print with solid bottom layers. The final generated model has no seam" +msgstr "Spiralize lisse les mouvements z du contour extérieur. Et transforme un modèle plein en une impression à paroi unique avec des couches inférieures solides. Le modèle généré final n'a pas de couture." msgid "Smooth Spiral" msgstr "Spirale lisse" -msgid "" -"Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam " -"at all, even in the XY directions on walls that are not vertical" -msgstr "" -"« Spirale lisse » lisse également les mouvements X et Y, de sorte qu’aucune " -"couture n’est visible, même dans les directions XY sur des parois qui ne " -"sont pas verticales." +msgid "Smooth Spiral smoothes out X and Y moves as wellresulting in no visible seam at all, even in the XY directions on walls that are not vertical" +msgstr "« Spirale lisse » lisse également les mouvements X et Y, de sorte qu’aucune couture n’est visible, même dans les directions XY sur des parois qui ne sont pas verticales." msgid "Max XY Smoothing" msgstr "Lissage Max XY" -msgid "" -"Maximum distance to move points in XY to try to achieve a smooth spiralIf " -"expressed as a %, it will be computed over nozzle diameter" -msgstr "" -"Distance maximale pour déplacer les points dans l’axe XY afin d’obtenir une " -"spirale lisse. Si elle est exprimée en %, elle sera calculée par rapport au " -"diamètre de la buse." +msgid "Maximum distance to move points in XY to try to achieve a smooth spiralIf expressed as a %, it will be computed over nozzle diameter" +msgstr "Distance maximale pour déplacer les points dans l’axe XY afin d’obtenir une spirale lisse. Si elle est exprimée en %, elle sera calculée par rapport au diamètre de la buse." -msgid "" -"If smooth or traditional mode is selected, a timelapse video will be " -"generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a " -"timelapse video when printing completes. If smooth mode is selected, the " -"toolhead will move to the excess chute after each layer is printed and then " -"take a snapshot. Since the melt filament may leak from the nozzle during the " -"process of taking a snapshot, prime tower is required for smooth mode to " -"wipe nozzle." -msgstr "" -"Si le mode fluide ou traditionnel est sélectionné, une vidéo en timelapse " -"sera générée pour chaque impression. À chaque couche imprimée, un instantané " -"est pris avec la caméra intégrée. Tous ces instantanés seront assemblés dans " -"une vidéo timelapse une fois l'impression terminée. Si le mode lisse est " -"sélectionné, l'extrudeur se déplace vers la goulotte d'évacuation à chaque " -"couche imprimée, puis prend un cliché. Étant donné que le filament fondu " -"peut s'échapper de la buse pendant la prise de vue, une tour de purge est " -"requise en mode lisse pour essuyer la buse." +msgid "If smooth or traditional mode is selected, a timelapse video will be generated for each print. After each layer is printed, a snapshot is taken with the chamber camera. All of these snapshots are composed into a timelapse video when printing completes. If smooth mode is selected, the toolhead will move to the excess chute after each layer is printed and then take a snapshot. Since the melt filament may leak from the nozzle during the process of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." +msgstr "Si le mode fluide ou traditionnel est sélectionné, une vidéo en timelapse sera générée pour chaque impression. À chaque couche imprimée, un instantané est pris avec la caméra intégrée. Tous ces instantanés seront assemblés dans une vidéo timelapse une fois l'impression terminée. Si le mode lisse est sélectionné, l'extrudeur se déplace vers la goulotte d'évacuation à chaque couche imprimée, puis prend un cliché. Étant donné que le filament fondu peut s'échapper de la buse pendant la prise de vue, une tour de purge est requise en mode lisse pour essuyer la buse." msgid "Traditional" msgstr "Traditionnel" @@ -13622,40 +11000,20 @@ msgid "Temperature variation" msgstr "Variation de température" #. TRN PrintSettings : "Ooze prevention" > "Temperature variation" -msgid "" -"Temperature difference to be applied when an extruder is not active. The " -"value is not used when 'idle_temperature' in filament settings is set to non " -"zero value." -msgstr "" -"Différence de température à appliquer lorsqu’un extrudeur n’est pas actif. " -"La valeur n’est pas utilisée lorsque ‘idle_temperature’ dans les paramètres " -"du filament est réglé sur une valeur non nulle." +msgid "Temperature difference to be applied when an extruder is not active. The value is not used when 'idle_temperature' in filament settings is set to non zero value." +msgstr "Différence de température à appliquer lorsqu’un extrudeur n’est pas actif. La valeur n’est pas utilisée lorsque ‘idle_temperature’ dans les paramètres du filament est réglé sur une valeur non nulle." msgid "Preheat time" msgstr "Durée du préchauffage" -msgid "" -"To reduce the waiting time after tool change, Orca can preheat the next tool " -"while the current tool is still in use. This setting specifies the time in " -"seconds to preheat the next tool. Orca will insert a M104 command to preheat " -"the tool in advance." -msgstr "" -"Pour réduire le temps d’attente après un changement d’outil, Orca peut " -"préchauffer l’outil suivant pendant que l’outil actuel est encore en cours " -"d’utilisation. Ce paramètre spécifie le temps en secondes pour préchauffer " -"l’outil suivant. Orca insère une commande M104 pour préchauffer l’outil à " -"l’avance." +msgid "To reduce the waiting time after tool change, Orca can preheat the next tool while the current tool is still in use. This setting specifies the time in seconds to preheat the next tool. Orca will insert a M104 command to preheat the tool in advance." +msgstr "Pour réduire le temps d’attente après un changement d’outil, Orca peut préchauffer l’outil suivant pendant que l’outil actuel est encore en cours d’utilisation. Ce paramètre spécifie le temps en secondes pour préchauffer l’outil suivant. Orca insère une commande M104 pour préchauffer l’outil à l’avance." msgid "Preheat steps" msgstr "Étapes de préchauffage" -msgid "" -"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " -"other printers, please set it to 1." -msgstr "" -"Insérer plusieurs commandes de préchauffage (par exemple M104.1). Uniquement " -"utile pour la Prusa XL. Pour les autres imprimantes, veuillez le régler sur " -"1." +msgid "Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." +msgstr "Insérer plusieurs commandes de préchauffage (par exemple M104.1). Uniquement utile pour la Prusa XL. Pour les autres imprimantes, veuillez le régler sur 1." msgid "Start G-code" msgstr "G-code de démarrage" @@ -13675,18 +11033,8 @@ msgstr "Utiliser une seule buse pour imprimer plusieurs filaments" msgid "Manual Filament Change" msgstr "Changement manuel du filament" -msgid "" -"Enable this option to omit the custom Change filament G-code only at the " -"beginning of the print. The tool change command (e.g., T0) will be skipped " -"throughout the entire print. This is useful for manual multi-material " -"printing, where we use M600/PAUSE to trigger the manual filament change " -"action." -msgstr "" -"Activez cette option pour omettre le G-code de changement de filament " -"personnalisé uniquement au début de l’impression. La commande de changement " -"d’outil (par exemple, T0) sera ignorée tout au long de l’impression. Ceci " -"est utile pour l’impression manuelle multi-matériaux, où nous utilisons M600/" -"PAUSE pour déclencher l’action de changement manuel de filament." +msgid "Enable this option to omit the custom Change filament G-code only at the beginning of the print. The tool change command (e.g., T0) will be skipped throughout the entire print. This is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual filament change action." +msgstr "Activez cette option pour omettre le G-code de changement de filament personnalisé uniquement au début de l’impression. La commande de changement d’outil (par exemple, T0) sera ignorée tout au long de l’impression. Ceci est utile pour l’impression manuelle multi-matériaux, où nous utilisons M600/PAUSE pour déclencher l’action de changement manuel de filament." msgid "Purge in prime tower" msgstr "Purge dans la tour de purge" @@ -13700,50 +11048,26 @@ msgstr "Activer le pilonnage du filament" msgid "No sparse layers (beta)" msgstr "Pas de couches éparses (beta)" -msgid "" -"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." -msgstr "" -"Si cette option est activée, la tour d’essuyage ne sera pas imprimée sur les " -"couches sans changement d’outil. Sur les couches avec changement d’outil, " -"l’extrudeur se déplacera vers le bas pour imprimer la tour d’essuyage. " -"L’utilisateur est responsable de s’assurer qu’il n’y a pas de collision avec " -"l’impression." +msgid "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." +msgstr "Si cette option est activée, la tour d’essuyage ne sera pas imprimée sur les couches sans changement d’outil. Sur les couches avec changement d’outil, l’extrudeur se déplacera vers le bas pour imprimer la tour d’essuyage. L’utilisateur est responsable de s’assurer qu’il n’y a pas de collision avec l’impression." msgid "Prime all printing extruders" msgstr "Amorcer tous les extrudeurs d’impression" -msgid "" -"If enabled, all printing extruders will be primed at the front edge of the " -"print bed at the start of the print." -msgstr "" -"Si cette option est activée, tous les extrudeurs d’impression seront amorcés " -"sur le bord avant du plateau au début de l’impression." +msgid "If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print." +msgstr "Si cette option est activée, tous les extrudeurs d’impression seront amorcés sur le bord avant du plateau au début de l’impression." msgid "Slice gap closing radius" msgstr "Rayon de fermeture de l’écart des tranches" -msgid "" -"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." -msgstr "" -"Les fissures plus petites que 2x le rayon de fermeture de l’espace sont " -"remplies pendant la découpe du maillage. L’opération de fermeture de " -"l’espace peut réduire la résolution finale de l’impression, il est donc " -"conseillé de maintenir cette valeur à un niveau raisonnablement bas." +msgid "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." +msgstr "Les fissures plus petites que 2x le rayon de fermeture de l’espace sont remplies pendant la découpe du maillage. L’opération de fermeture de l’espace peut réduire la résolution finale de l’impression, il est donc conseillé de maintenir cette valeur à un niveau raisonnablement bas." msgid "Slicing Mode" msgstr "Mode de découpe" -msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." -msgstr "" -"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez " -"« Fermer les trous » pour fermer tous les trous du modèle." +msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." +msgstr "Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez « Fermer les trous » pour fermer tous les trous du modèle." msgid "Regular" msgstr "Standard" @@ -13757,16 +11081,8 @@ msgstr "Combler les trous" msgid "Z offset" msgstr "Décalage Z" -msgid "" -"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)." -msgstr "" -"Cette valeur sera ajoutée (ou soustraite) de toutes les coordonnées Z dans " -"le G-code de sortie. Il est utilisé pour compenser une mauvaise position de " -"la butée Z : par exemple, si votre zéro de butée laisse réellement la buse à " -"0,3 mm du plateau, réglez-le sur -0,3 (ou corrigez votre butée)." +msgid "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)." +msgstr "Cette valeur sera ajoutée (ou soustraite) de toutes les coordonnées Z dans le G-code de sortie. Il est utilisé pour compenser une mauvaise position de la butée Z : par exemple, si votre zéro de butée laisse réellement la buse à 0,3 mm du plateau, réglez-le sur -0,3 (ou corrigez votre butée)." msgid "Enable support" msgstr "Activer les supports" @@ -13774,14 +11090,8 @@ msgstr "Activer les supports" msgid "Enable support generation." msgstr "Activer la génération de support." -msgid "" -"normal(auto) and tree(auto) is used to generate support automatically. If " -"normal(manual) or tree(manual) is selected, only support enforcers are " -"generated" -msgstr "" -"Normaux (auto) et Arborescents (auto) sont utilisés pour générer " -"automatiquement un support. Si vous sélectionnez Normaux (manuel) ou " -"Arborescents (manuel), seuls les générateurs de support manuels sont générés" +msgid "normal(auto) and tree(auto) is used to generate support automatically. If normal(manual) or tree(manual) is selected, only support enforcers are generated" +msgstr "Normaux (auto) et Arborescents (auto) sont utilisés pour générer automatiquement un support. Si vous sélectionnez Normaux (manuel) ou Arborescents (manuel), seuls les générateurs de support manuels sont générés" msgid "normal(auto)" msgstr "Normaux (auto)" @@ -13805,33 +11115,25 @@ msgid "Pattern angle" msgstr "Angle du motif" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "" -"Utilisez ce paramètre pour faire pivoter le motif de support sur le plan " -"horizontal." +msgstr "Utilisez ce paramètre pour faire pivoter le motif de support sur le plan horizontal." msgid "On build plate only" msgstr "Sur plateau uniquement" msgid "Don't create support on model surface, only on build plate" -msgstr "" -"Ce paramètre génère uniquement les supports qui commencent sur le plateau." +msgstr "Ce paramètre génère uniquement les supports qui commencent sur le plateau." msgid "Support critical regions only" msgstr "Ne supporter que les régions critiques" -msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." -msgstr "" -"Créez un support uniquement pour les zones critiques notamment les pointes, " -"les surplombs, etc." +msgid "Only create support for critical regions including sharp tail, cantilever, etc." +msgstr "Créez un support uniquement pour les zones critiques notamment les pointes, les surplombs, etc." msgid "Remove small overhangs" msgstr "Supprimer les petits surplombs" msgid "Remove small overhangs that possibly need no supports." -msgstr "" -"Supprimer les petits surplombs qui n’ont peut-être pas besoin de supports." +msgstr "Supprimer les petits surplombs qui n’ont peut-être pas besoin de supports." msgid "Top Z distance" msgstr "Distance Z supérieure" @@ -13848,49 +11150,29 @@ msgstr "L'écart Z entre l'interface du support inférieur et l'objet" msgid "Support/raft base" msgstr "Support/base du radeau" -msgid "" -"Filament to print support base and raft. \"Default\" means no specific " -"filament for support and current filament is used" -msgstr "" -"Filament pour imprimer les supports et radeaux. « Par défaut » signifie " -"qu'aucun filament spécifique n'est utilisé comme support et que le filament " -"actuel est utilisé" +msgid "Filament to print support base and raft. \"Default\" means no specific filament for support and current filament is used" +msgstr "Filament pour imprimer les supports et radeaux. « Par défaut » signifie qu'aucun filament spécifique n'est utilisé comme support et que le filament actuel est utilisé" msgid "Avoid interface filament for base" msgstr "Réduire le filament d’interface pour la base" -msgid "" -"Avoid using support interface filament to print support base if possible." -msgstr "" -"Éviter d’utiliser le filament de l’interface du support pour imprimer la " -"base du support" +msgid "Avoid using support interface filament to print support base if possible." +msgstr "Éviter d’utiliser le filament de l’interface du support pour imprimer la base du support" -msgid "" -"Line width of support. If expressed as a %, it will be computed over the " -"nozzle diameter." -msgstr "" -"Largeur de ligne des supports. Si elle est exprimée en %, elle sera calculée " -"sur le diamètre de la buse." +msgid "Line width of support. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Largeur de ligne des supports. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." msgid "Interface use loop pattern" msgstr "Modèle de boucle d'utilisation d'interface" -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." -msgstr "" -"Recouvrir la couche de contact supérieure des supports avec des boucles. " -"Désactivé par défaut." +msgid "Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "Recouvrir la couche de contact supérieure des supports avec des boucles. Désactivé par défaut." msgid "Support/raft interface" msgstr "Support/base d'interface" -msgid "" -"Filament to print support interface. \"Default\" means no specific filament " -"for support interface and current filament is used" -msgstr "" -"Filament pour l'impression des interfaces de support. \"Défaut\" signifie " -"qu'il n'y a pas de filament spécifique pour l'interface de support et que le " -"filament actuel est utilisé." +msgid "Filament to print support interface. \"Default\" means no specific filament for support interface and current filament is used" +msgstr "Filament pour l'impression des interfaces de support. \"Défaut\" signifie qu'il n'y a pas de filament spécifique pour l'interface de support et que le filament actuel est utilisé." msgid "Top interface layers" msgstr "Couches d'interface supérieures" @@ -13917,9 +11199,7 @@ msgid "Bottom interface spacing" msgstr "Espacement de l'interface inférieure" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "" -"Espacement des lignes d'interface inférieures. Zéro signifie une interface " -"solide" +msgstr "Espacement des lignes d'interface inférieures. Zéro signifie une interface solide" msgid "Speed of support interface" msgstr "Vitesse pour l'interface des supports" @@ -13939,14 +11219,8 @@ msgstr "Creux" msgid "Interface pattern" msgstr "Motif d'interface" -msgid "" -"Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" -msgstr "" -"Modèle de ligne de l'interface de support. Le modèle par défaut pour " -"l'interface de support non soluble est rectiligne, tandis que le modèle par " -"défaut pour l'interface de support soluble est concentrique" +msgid "Line pattern of support interface. Default pattern for non-soluble support interface is Rectilinear, while default pattern for soluble support interface is Concentric" +msgstr "Modèle de ligne de l'interface de support. Le modèle par défaut pour l'interface de support non soluble est rectiligne, tandis que le modèle par défaut pour l'interface de support soluble est concentrique" msgid "Rectilinear Interlaced" msgstr "Rectiligne Entrelacé" @@ -13967,22 +11241,11 @@ msgid "Speed of support" msgstr "Vitesse pour les supports" msgid "" -"Style and shape of the support. For normal support, projecting the supports " -"into a regular grid will create more stable supports (default), while snug " -"support towers will save material and reduce object scarring.\n" -"For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid " -"style will create similar structure to normal support under large flat " -"overhangs." +"Style and shape of the support. For normal support, projecting the supports into a regular grid will create more stable supports (default), while snug support towers will save material and reduce object scarring.\n" +"For tree support, slim and organic style will merge branches more aggressively and save a lot of material (default organic), while hybrid style will create similar structure to normal support under large flat overhangs." msgstr "" -"Style et forme des supports. Pour les supports normaux, une grille régulière " -"créera des supports plus stables (par défaut), tandis que des tours de " -"supports bien ajustées économiseront du matériel et réduiront les marques " -"sur les objets.\n" -"Pour les supports arborescents, le style mince et organique fusionnera les " -"branches de manière plus agressive et économisera beaucoup de matière " -"(organique par défaut), tandis que le style hybride créera une structure " -"similaire aux supports normaux sous de grands surplombs plats." +"Style et forme des supports. Pour les supports normaux, une grille régulière créera des supports plus stables (par défaut), tandis que des tours de supports bien ajustées économiseront du matériel et réduiront les marques sur les objets.\n" +"Pour les supports arborescents, le style mince et organique fusionnera les branches de manière plus agressive et économisera beaucoup de matière (organique par défaut), tandis que le style hybride créera une structure similaire aux supports normaux sous de grands surplombs plats." msgid "Snug" msgstr "Ajusté" @@ -14002,106 +11265,58 @@ msgstr "Arborescents Organiques" msgid "Independent support layer height" msgstr "Hauteur de la couche de support indépendante" -msgid "" -"Support layer uses layer height independent with object layer. This is to " -"support customizing z-gap and save print time.This option will be invalid " -"when the prime tower is enabled." -msgstr "" -"La couche de support utilise la hauteur de la couche indépendamment de la " -"couche objet. Cela permet de personnaliser l’écart de Z et de gagner du " -"temps d'impression. Cette option ne sera pas valide lorsque la tour de purge " -"sera activée." +msgid "Support layer uses layer height independent with object layer. This is to support customizing z-gap and save print time.This option will be invalid when the prime tower is enabled." +msgstr "La couche de support utilise la hauteur de la couche indépendamment de la couche objet. Cela permet de personnaliser l’écart de Z et de gagner du temps d'impression. Cette option ne sera pas valide lorsque la tour de purge sera activée." msgid "Threshold angle" msgstr "Angle de seuil" -msgid "" -"Support will be generated for overhangs whose slope angle is below the " -"threshold." -msgstr "" -"Un support sera généré pour les surplombs dont l'angle de pente est " -"inférieur au seuil." +msgid "Support will be generated for overhangs whose slope angle is below the threshold." +msgstr "Un support sera généré pour les surplombs dont l'angle de pente est inférieur au seuil." msgid "Tree support branch angle" msgstr "Angle de branche support arborescent" -msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " -"printed more horizontally, allowing them to reach farther." -msgstr "" -"Ce paramètre détermine l'angle des surplombs maximum que les branches du " -"support arborescent peuvent faire. Si l'angle est augmenté, les branches " -"peuvent être imprimées plus horizontalement, ce qui leur permet d'aller plus " -"loin." +msgid "This setting determines the maximum overhang angle that t he branches of tree support allowed to make.If the angle is increased, the branches can be printed more horizontally, allowing them to reach farther." +msgstr "Ce paramètre détermine l'angle des surplombs maximum que les branches du support arborescent peuvent faire. Si l'angle est augmenté, les branches peuvent être imprimées plus horizontalement, ce qui leur permet d'aller plus loin." msgid "Preferred Branch Angle" msgstr "Angle des branches préféré" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" -msgid "" -"The preferred angle of the branches, when they do not have to avoid the " -"model. Use a lower angle to make them more vertical and more stable. Use a " -"higher angle for branches to merge faster." -msgstr "" -"Angle préféré des branches, lorsqu’elles ne doivent pas éviter le modèle. " -"Utilisez un angle inférieur pour les rendre plus verticaux et plus stables. " -"Utilisez un angle plus élevé pour que les branches fusionnent plus " -"rapidement." +msgid "The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster." +msgstr "Angle préféré des branches, lorsqu’elles ne doivent pas éviter le modèle. Utilisez un angle inférieur pour les rendre plus verticaux et plus stables. Utilisez un angle plus élevé pour que les branches fusionnent plus rapidement." msgid "Tree support branch distance" msgstr "Distance de branche de support arborescent" -msgid "" -"This setting determines the distance between neighboring tree support nodes." -msgstr "" -"Ce paramètre détermine la distance entre les nœuds de support arborescents " -"voisins." +msgid "This setting determines the distance between neighboring tree support nodes." +msgstr "Ce paramètre détermine la distance entre les nœuds de support arborescents voisins." msgid "Branch Density" msgstr "Densité des branches" #. TRN PrintSettings: "Organic supports" > "Branch Density" -msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." -msgstr "" -"Ajuste la densité de la structure des supports utilisée pour générer les " -"pointes des branches. Une valeur plus élevée donne de meilleurs surplombs, " -"mais les supports sont plus difficiles à supprimer. Il est donc recommandé " -"d’activer les interfaces de support supérieures au lieu d’une valeur de " -"densité de branches élevée si des interfaces denses sont nécessaires." +msgid "Adjusts the density of the support structure used to generate the tips of the branches. A higher value results in better overhangs but the supports are harder to remove, thus it is recommended to enable top support interfaces instead of a high branch density value if dense interfaces are needed." +msgstr "Ajuste la densité de la structure des supports utilisée pour générer les pointes des branches. Une valeur plus élevée donne de meilleurs surplombs, mais les supports sont plus difficiles à supprimer. Il est donc recommandé d’activer les interfaces de support supérieures au lieu d’une valeur de densité de branches élevée si des interfaces denses sont nécessaires." msgid "Adaptive layer height" msgstr "Hauteur de couche adaptative" -msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " -msgstr "" -"L’activation de cette option signifie que la hauteur de couche des supports " -"arborescents, à l’exception de la première, sera automatiquement calculée " +msgid "Enabling this option means the height of tree support layer except the first will be automatically calculated " +msgstr "L’activation de cette option signifie que la hauteur de couche des supports arborescents, à l’exception de la première, sera automatiquement calculée " msgid "Auto brim width" msgstr "Largeur de la bordure automatique" -msgid "" -"Enabling this option means the width of the brim for tree support will be " -"automatically calculated" -msgstr "" -"L’activation de cette option signifie que la largeur de la bordure des " -"supports arborescents sera automatiquement calculée" +msgid "Enabling this option means the width of the brim for tree support will be automatically calculated" +msgstr "L’activation de cette option signifie que la largeur de la bordure des supports arborescents sera automatiquement calculée" msgid "Tree support brim width" msgstr "Largeur de bordure du support arborescent" msgid "Distance from tree branch to the outermost brim line" -msgstr "" -"Distance entre la branche du support arborescent et la ligne la plus externe " -"de la bordure" +msgstr "Distance entre la branche du support arborescent et la ligne la plus externe de la bordure" msgid "Tip Diameter" msgstr "Diamètre de la pointe" @@ -14121,29 +11336,15 @@ msgid "Branch Diameter Angle" msgstr "Angle du diamètre des branches" #. TRN PrintSettings: "Organic supports" > "Branch Diameter Angle" -msgid "" -"The angle of the branches' diameter as they gradually become thicker towards " -"the bottom. An angle of 0 will cause the branches to have uniform thickness " -"over their length. A bit of an angle can increase stability of the organic " -"support." -msgstr "" -"Angle du diamètre des branches à mesure qu’elles deviennent progressivement " -"plus épaisses vers leurs bases. Un angle de 0 donnera aux branches une " -"épaisseur uniforme sur toute leur longueur. Un léger angle peut augmenter la " -"stabilité des supports organiques." +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the organic support." +msgstr "Angle du diamètre des branches à mesure qu’elles deviennent progressivement plus épaisses vers leurs bases. Un angle de 0 donnera aux branches une épaisseur uniforme sur toute leur longueur. Un léger angle peut augmenter la stabilité des supports organiques." msgid "Branch Diameter with double walls" msgstr "Diamètre des branches à double parois" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" -msgid "" -"Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." -msgstr "" -"Les branches dont la superficie est supérieure à la superficie d’un cercle " -"de ce diamètre seront imprimées avec des doubles parois pour plus de " -"stabilité. Définissez cette valeur sur zéro pour éviter la double paroi." +msgid "Branches with area larger than the area of a circle of this diameter will be printed with double walls for stability. Set this value to zero for no double walls." +msgstr "Les branches dont la superficie est supérieure à la superficie d’un cercle de ce diamètre seront imprimées avec des doubles parois pour plus de stabilité. Définissez cette valeur sur zéro pour éviter la double paroi." msgid "Support wall loops" msgstr "Boucles de paroi de support" @@ -14154,51 +11355,37 @@ msgstr "Ce paramètre spécifie le nombre de parois autour du support" msgid "Tree support with infill" msgstr "Support arborescent avec remplissage" -msgid "" -"This setting specifies whether to add infill inside large hollows of tree " -"support" -msgstr "" -"Ce paramètre spécifie s'il faut ajouter un remplissage à l'intérieur des " -"grands creux du support arborescent" +msgid "This setting specifies whether to add infill inside large hollows of tree support" +msgstr "Ce paramètre spécifie s'il faut ajouter un remplissage à l'intérieur des grands creux du support arborescent" msgid "Activate temperature control" msgstr "Activer le contrôle de la température" msgid "" -"Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" -" which sets the chamber temperature and waits until it is reached. In " -"addition, it emits an M141 command at the end of the print to turn off the " -"chamber heater, if present. \n" +"Enable this option for automated chamber temperature control. This option activates the emitting of an M191 command before the \"machine_start_gcode\"\n" +" which sets the chamber temperature and waits until it is reached. In addition, it emits an M141 command at the end of the print to turn off the chamber heater, if present. \n" "\n" -"This option relies on the firmware supporting the M191 and M141 commands " -"either via macros or natively and is usually used when an active chamber " -"heater is installed." +"This option relies on the firmware supporting the M191 and M141 commands either via macros or natively and is usually used when an active chamber heater is installed." msgstr "" +"Activer cette option pour le contrôle automatisé de la température du caisson. Cette option active le lancement d’une commande M191 avant le code « machine_start_gcode », qui fixe la température de la chambre et attend qu’elle soit atteinte. En outre, elle déclenche une commande M141 à la fin de l’impression pour éteindre le chauffage de la chambre, le cas échéant. \n" +"\n" +"Cette option repose sur la prise en charge des commandes M191 et M141 par le micrologiciel, soit via des macros, soit de manière native, et est généralement utilisée lorsqu’un chauffage de chambre actif est installé." msgid "Chamber temperature" msgstr "Température du caisson" msgid "" -"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " -"temperature can help suppress or reduce warping and potentially lead to " -"higher interlayer bonding strength. However, at the same time, a higher " -"chamber temperature will reduce the efficiency of air filtration for ABS and " -"ASA. \n" +"For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength. However, at the same time, a higher chamber temperature will reduce the efficiency of air filtration for ABS and ASA. \n" "\n" -"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " -"should be disabled (set to 0) as the chamber temperature should be low to " -"avoid extruder clogging caused by material softening at the heat break.\n" +"For PLA, PETG, TPU, PVA, and other low-temperature materials, this option should be disabled (set to 0) as the chamber temperature should be low to avoid extruder clogging caused by material softening at the heat break.\n" "\n" -"If enabled, this parameter also sets a gcode variable named " -"chamber_temperature, which can be used to pass the desired chamber " -"temperature to your print start macro, or a heat soak macro like this: " -"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " -"be useful if your printer does not support M141/M191 commands, or if you " -"desire to handle heat soaking in the print start macro if no active chamber " -"heater is installed." +"If enabled, this parameter also sets a gcode variable named chamber_temperature, which can be used to pass the desired chamber temperature to your print start macro, or a heat soak macro like this: PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may be useful if your printer does not support M141/M191 commands, or if you desire to handle heat soaking in the print start macro if no active chamber heater is installed." msgstr "" +"Pour les matériaux à haute température tels que l’ABS, l’ASA, le PC et le PA, une température de caisson plus élevée peut contribuer à supprimer ou à réduire la déformation et, éventuellement, à augmenter la force de liaison entre les couches. Cependant, dans le même temps, une température de chambre plus élevée réduira l’efficacité de la filtration de l’air pour l’ABS et l’ASA. \n" +"\n" +"Pour le PLA, le PETG, le TPU, le PVA et d’autres matériaux à basse température, cette option doit être désactivée (réglée sur 0) car la température de la chambre doit être basse pour éviter l’engorgement de l’extrudeuse causé par le ramollissement du matériau au niveau du heatbreak.\n" +"\n" +"S’il est activé, ce paramètre définit également une variable gcode nommée chamber_temperature, qui peut être utilisée pour transmettre la température de la chambre souhaitée à votre macro de démarrage de l’impression, ou à une macro de trempe thermique comme celle-ci : PRINT_START (autres variables) CHAMBER_TEMP=[chamber_temperature]. Cela peut être utile si votre imprimante ne prend pas en charge les commandes M141/M191, ou si vous souhaitez gérer le préchauffage dans la macro de démarrage de l’impression si aucun chauffage de chambre actif n’est installé." msgid "Nozzle temperature for layers after the initial one" msgstr "Température de la buse pour les couches après la première" @@ -14206,30 +11393,17 @@ msgstr "Température de la buse pour les couches après la première" msgid "Detect thin wall" msgstr "Détecter les parois fines" -msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop" -msgstr "" -"Détecte les parois fines qui ne peuvent pas contenir deux largeurs de ligne. " -"Et utilisez une seule ligne pour imprimer. Peut ne pas être très bien " -"imprimé, car ce n'est pas en boucle fermée" +msgid "Detect thin wall which can't contain two line width. And use single line to print. Maybe printed not very well, because it's not closed loop" +msgstr "Détecte les parois fines qui ne peuvent pas contenir deux largeurs de ligne. Et utilisez une seule ligne pour imprimer. Peut ne pas être très bien imprimé, car ce n'est pas en boucle fermée" -msgid "" -"This gcode is inserted when change filament, including T command to trigger " -"tool change" -msgstr "" -"Ce G-code est inséré lors du changement de filament, y compris la commande T " -"pour déclencher le changement d'outil" +msgid "This gcode is inserted when change filament, including T command to trigger tool change" +msgstr "Ce G-code est inséré lors du changement de filament, y compris la commande T pour déclencher le changement d'outil" msgid "This gcode is inserted when the extrusion role is changed" msgstr "Ce G-code est inséré lorsque le rôle d’extrusion est modifié" -msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over " -"the nozzle diameter." -msgstr "" -"Largeur de ligne pdes surfaces supérieures. Si elle est exprimée en %, elle " -"sera calculée sur le diamètre de la buse." +msgid "Line width for top surfaces. If expressed as a %, it will be computed over the nozzle diameter." +msgstr "Largeur de ligne pdes surfaces supérieures. Si elle est exprimée en %, elle sera calculée sur le diamètre de la buse." msgid "Speed of top surface infill which is solid" msgstr "Vitesse de remplissage de la surface supérieure qui est solide" @@ -14237,15 +11411,8 @@ msgstr "Vitesse de remplissage de la surface supérieure qui est solide" msgid "Top shell layers" msgstr "Couches de coque supérieures" -msgid "" -"This is the number of solid layers of top shell, including the top surface " -"layer. When the thickness calculated by this value is thinner than top shell " -"thickness, the top shell layers will be increased" -msgstr "" -"Il s'agit du nombre de couches solides de la coque supérieure, y compris la " -"couche de surface supérieure. Lorsque l'épaisseur calculée par cette valeur " -"est plus fine que l'épaisseur de la coque supérieure, les couches de la " -"coque supérieure seront augmentées" +msgid "This is the number of solid layers of top shell, including the top surface layer. When the thickness calculated by this value is thinner than top shell thickness, the top shell layers will be increased" +msgstr "Il s'agit du nombre de couches solides de la coque supérieure, y compris la couche de surface supérieure. Lorsque l'épaisseur calculée par cette valeur est plus fine que l'épaisseur de la coque supérieure, les couches de la coque supérieure seront augmentées" msgid "Top solid layers" msgstr "Couches solides supérieures" @@ -14253,19 +11420,8 @@ msgstr "Couches solides supérieures" msgid "Top shell thickness" msgstr "Épaisseur de la coque supérieure" -msgid "" -"The number of top solid layers is increased when slicing if the thickness " -"calculated by top shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" -msgstr "" -"Le nombre de couches solides supérieures est augmenté lors du découpage si " -"l'épaisseur calculée par les couches de coque supérieures est inférieure à " -"cette valeur. Cela peut éviter d'avoir une coque trop fine lorsque la " -"hauteur de couche est faible. 0 signifie que ce paramètre est désactivé et " -"que l'épaisseur de la coque supérieure est absolument déterminée par les " -"couches de coque supérieures" +msgid "The number of top solid layers is increased when slicing if the thickness calculated by top shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of top shell is absolutely determained by top shell layers" +msgstr "Le nombre de couches solides supérieures est augmenté lors du découpage si l'épaisseur calculée par les couches de coque supérieures est inférieure à cette valeur. Cela peut éviter d'avoir une coque trop fine lorsque la hauteur de couche est faible. 0 signifie que ce paramètre est désactivé et que l'épaisseur de la coque supérieure est absolument déterminée par les couches de coque supérieures" msgid "Speed of travel which is faster and without extrusion" msgstr "Vitesse de déplacement plus rapide et sans extrusion" @@ -14273,47 +11429,27 @@ msgstr "Vitesse de déplacement plus rapide et sans extrusion" msgid "Wipe while retracting" msgstr "Essuyer lors des rétractions" -msgid "" -"Move nozzle along the last extrusion path when retracting to clean leaked " -"material on nozzle. This can minimize blob when print new part after travel" -msgstr "" -"Déplacez la buse le long du dernier chemin d'extrusion lors de la rétraction " -"pour nettoyer la fuite de matériau sur la buse. Cela peut minimiser les " -"taches lors de l'impression d'une nouvelle pièce après le trajet" +msgid "Move nozzle along the last extrusion path when retracting to clean leaked material on nozzle. This can minimize blob when print new part after travel" +msgstr "Déplacez la buse le long du dernier chemin d'extrusion lors de la rétraction pour nettoyer la fuite de matériau sur la buse. Cela peut minimiser les taches lors de l'impression d'une nouvelle pièce après le trajet" msgid "Wipe Distance" msgstr "Distance d’essuyage" msgid "" -"Discribe how long the nozzle will move along the last path when " -"retracting. \n" +"Discribe how long the nozzle will move along the last path when retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the extruder/filament retraction settings are, a retraction move may be needed to retract the remaining filament. \n" "\n" -"Setting a value in the retract amount before wipe setting below will perform " -"any excess retraction before the wipe, else it will be performed after." +"Setting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after." msgstr "" -"Décrire la durée pendant laquelle la buse se déplacera le long de la " -"dernière trajectoire lors de la rétraction. \n" +"Décrire la durée pendant laquelle la buse se déplacera le long de la dernière trajectoire lors de la rétraction. \n" "\n" -"En fonction de la durée de l’opération d’essuyage, de la vitesse et de la " -"longueur des réglages de rétraction de l’extrudeuse/filament, un mouvement " -"de rétraction peut être nécessaire pour rétracter le filament restant. \n" +"En fonction de la durée de l’opération d’essuyage, de la vitesse et de la longueur des réglages de rétraction de l’extrudeuse/filament, un mouvement de rétraction peut être nécessaire pour rétracter le filament restant. \n" "\n" -"Le réglage d’une valeur dans le paramètre de quantité de rétraction avant " -"essuyage ci-dessous permet d’effectuer toute rétraction excédentaire avant " -"l’essuyage, sinon elle sera effectuée après l’essuyage." +"Le réglage d’une valeur dans le paramètre de quantité de rétraction avant essuyage ci-dessous permet d’effectuer toute rétraction excédentaire avant l’essuyage, sinon elle sera effectuée après l’essuyage." -msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and " -"stabilize the chamber pressure inside the nozzle, in order to avoid " -"appearance defects when printing objects." -msgstr "" -"La tour de purge peut être utilisée pour nettoyer les résidus sur la buse et " -"stabiliser la pression du caisson à l'intérieur de la buse afin d'éviter les " -"défauts d'apparence lors de l'impression d'objets." +msgid "The wiping tower can be used to clean up the residue on the nozzle and stabilize the chamber pressure inside the nozzle, in order to avoid appearance defects when printing objects." +msgstr "La tour de purge peut être utilisée pour nettoyer les résidus sur la buse et stabiliser la pression du caisson à l'intérieur de la buse afin d'éviter les défauts d'apparence lors de l'impression d'objets." msgid "Purging volumes" msgstr "Volumes de purge" @@ -14321,12 +11457,8 @@ msgstr "Volumes de purge" msgid "Flush multiplier" msgstr "Multiplicateur de purge" -msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." -msgstr "" -"Les volumes de purge actuels sont égaux à la valeur du multiplicateur de " -"purge multiplié par les volumes de purge dans le tableau." +msgid "The actual flushing volumes is equal to the flush multiplier multiplied by the flushing volumes in the table." +msgstr "Les volumes de purge actuels sont égaux à la valeur du multiplicateur de purge multiplié par les volumes de purge dans le tableau." msgid "Prime volume" msgstr "Premier volume" @@ -14346,109 +11478,50 @@ msgstr "Angle de rotation de la tour d’essuyage par rapport à l’axe X." msgid "Stabilization cone apex angle" msgstr "Angle au sommet du cône de stabilisation" -msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. " -"Larger angle means wider base." -msgstr "" -"Angle au sommet du cône utilisé pour stabiliser la tour d’essuyage. Un angle " -"plus grand signifie une base plus large." +msgid "Angle at the apex of the cone that is used to stabilize the wipe tower. Larger angle means wider base." +msgstr "Angle au sommet du cône utilisé pour stabiliser la tour d’essuyage. Un angle plus grand signifie une base plus large." msgid "Maximum wipe tower print speed" msgstr "Vitesse maximale d’impression de la tour d’essuyage" msgid "" -"The maximum print speed when purging in the wipe tower and printing the wipe " -"tower sparse layers. When purging, if the sparse infill speed or calculated " -"speed from the filament max volumetric speed is lower, the lowest will be " -"used instead.\n" +"The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or " -"calculated speed from the filament max volumetric speed is lower, the lowest " -"will be used instead.\n" +"When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead.\n" "\n" -"Increasing this speed may affect the tower's stability as well as increase " -"the force with which the nozzle collides with any blobs that may have formed " -"on the wipe tower.\n" +"Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower.\n" "\n" -"Before increasing this parameter beyond the default of 90mm/sec, make sure " -"your printer can reliably bridge at the increased speeds and that ooze when " -"tool changing is well controlled.\n" +"Before increasing this parameter beyond the default of 90mm/sec, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled.\n" "\n" -"For the wipe tower external perimeters the internal perimeter speed is used " -"regardless of this setting." +"For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting." msgstr "" -"Vitesse d'impression maximale lors de la purge dans la tour de raclage et de " -"l'impression des couches éparses de la tour d'essuyage. Lors de la purge, si " -"la vitesse de remplissage ou la vitesse calculée à partir de la vitesse " -"volumétrique maximale du filament est inférieure, c'est la vitesse la plus " -"faible qui sera utilisée.\n" +"Vitesse d'impression maximale lors de la purge dans la tour de raclage et de l'impression des couches éparses de la tour d'essuyage. Lors de la purge, si la vitesse de remplissage ou la vitesse calculée à partir de la vitesse volumétrique maximale du filament est inférieure, c'est la vitesse la plus faible qui sera utilisée.\n" "\n" -"Lors de l’impression des couches éparses, si la vitesse du périmètre interne " -"ou la vitesse calculée à partir de la vitesse volumétrique maximale du " -"filament est inférieure, c’est la vitesse la plus faible qui sera utilisée.\n" +"Lors de l’impression des couches éparses, si la vitesse du périmètre interne ou la vitesse calculée à partir de la vitesse volumétrique maximale du filament est inférieure, c’est la vitesse la plus faible qui sera utilisée.\n" "\n" -"L’augmentation de cette vitesse peut affecter la stabilité de la tour et " -"augmenter la force avec laquelle la buse entre en collision avec les blobs " -"qui peuvent s’être formés sur la tour d’essuyage.\n" +"L’augmentation de cette vitesse peut affecter la stabilité de la tour et augmenter la force avec laquelle la buse entre en collision avec les blobs qui peuvent s’être formés sur la tour d’essuyage.\n" "\n" -"Avant d’augmenter ce paramètre au-delà de la valeur par défaut de 90 mm/sec, " -"assurez-vous que votre imprimante peut effectuer un pontage fiable à des " -"vitesses élevées et que le suintement lors du changement d’outil est bien " -"contrôlé.\n" +"Avant d’augmenter ce paramètre au-delà de la valeur par défaut de 90 mm/sec, assurez-vous que votre imprimante peut effectuer un pontage fiable à des vitesses élevées et que le suintement lors du changement d’outil est bien contrôlé.\n" "\n" -"Pour les périmètres externes de la tour d’essuyage, la vitesse du périmètre " -"interne est utilisée indépendamment de ce paramètre." +"Pour les périmètres externes de la tour d’essuyage, la vitesse du périmètre interne est utilisée indépendamment de ce paramètre." -msgid "" -"The extruder to use when printing perimeter of the wipe tower. Set to 0 to " -"use the one that is available (non-soluble would be preferred)." -msgstr "" -"L’extrudeur à utiliser lors de l’impression du périmètre de la tour " -"d’essuyage. Réglez sur 0 pour utiliser celui qui est disponible (un non-" -"soluble serait préféré)." +msgid "The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that is available (non-soluble would be preferred)." +msgstr "L’extrudeur à utiliser lors de l’impression du périmètre de la tour d’essuyage. Réglez sur 0 pour utiliser celui qui est disponible (un non-soluble serait préféré)." msgid "Purging volumes - load/unload volumes" msgstr "Volumes de purge - Volume de Chargement/Déchargement" -msgid "" -"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." -msgstr "" -"Ce vecteur enregistre les volumes requis pour passer de/vers chaque outil " -"utilisé sur la tour d’essuyage. Ces valeurs sont utilisées pour simplifier " -"la création des volumes de purge complets ci-dessous." +msgid "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." +msgstr "Ce vecteur enregistre les volumes requis pour passer de/vers chaque outil utilisé sur la tour d’essuyage. Ces valeurs sont utilisées pour simplifier la création des volumes de purge complets ci-dessous." -msgid "" -"Purging after filament change will be done inside objects' infills. This may " -"lower the amount of waste and decrease the print time. If the walls are " -"printed with transparent filament, the mixed color infill will be seen " -"outside. It will not take effect, unless the prime tower is enabled." -msgstr "" -"La purge après le changement de filament sera effectuée à l'intérieur des " -"matériaux de remplissage des objets. Cela peut réduire la quantité de " -"déchets et le temps d'impression. Si les parois sont imprimées avec un " -"filament transparent, le remplissage de couleurs mélangées sera visible. " -"Cela ne prendra effet que si la tour de purge est activée." +msgid "Purging after filament change will be done inside objects' infills. This may lower the amount of waste and decrease the print time. If the walls are printed with transparent filament, the mixed color infill will be seen outside. It will not take effect, unless the prime tower is enabled." +msgstr "La purge après le changement de filament sera effectuée à l'intérieur des matériaux de remplissage des objets. Cela peut réduire la quantité de déchets et le temps d'impression. Si les parois sont imprimées avec un filament transparent, le remplissage de couleurs mélangées sera visible. Cela ne prendra effet que si la tour de purge est activée." -msgid "" -"Purging after filament change will be done inside objects' support. This may " -"lower the amount of waste and decrease the print time. It will not take " -"effect, unless the prime tower is enabled." -msgstr "" -"La purge après le changement de filament se fera à l'intérieur du support " -"des objets. Cela peut réduire la quantité de déchets et le temps " -"d'impression. Cela ne prendra effet que si une tour de purge est activée." +msgid "Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time. It will not take effect, unless the prime tower is enabled." +msgstr "La purge après le changement de filament se fera à l'intérieur du support des objets. Cela peut réduire la quantité de déchets et le temps d'impression. Cela ne prendra effet que si une tour de purge est activée." -msgid "" -"This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." -msgstr "" -"Cet objet sera utilisé pour purger la buse après un changement de filament " -"afin d'économiser du filament et de réduire le temps d'impression. Les " -"couleurs des objets seront mélangées en conséquence. Cela ne prendra effet " -"que si la tour de purge est activée." +msgid "This object will be used to purge the nozzle after a filament change to save filament and decrease the print time. Colours of the objects will be mixed as a result. It will not take effect, unless the prime tower is enabled." +msgstr "Cet objet sera utilisé pour purger la buse après un changement de filament afin d'économiser du filament et de réduire le temps d'impression. Les couleurs des objets seront mélangées en conséquence. Cela ne prendra effet que si la tour de purge est activée." msgid "Maximal bridging distance" msgstr "Distance de pont maximale" @@ -14465,67 +11538,35 @@ msgstr "Espacement des lignes de purge sur la tour d’essuyage." msgid "Extra flow for purging" msgstr "Débit supplémentaire pour purger" -msgid "" -"Extra flow used for the purging lines on the wipe tower. This makes the " -"purging lines thicker or narrower than they normally would be. The spacing " -"is adjusted automatically." -msgstr "" -"Débit supplémentaire utilisé pour les lignes de purge de la tour d’essuyage. " -"Cela rend les lignes de purge plus épaisses ou plus étroites qu’elles ne le " -"seraient normalement. L’espacement est ajusté automatiquement." +msgid "Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically." +msgstr "Débit supplémentaire utilisé pour les lignes de purge de la tour d’essuyage. Cela rend les lignes de purge plus épaisses ou plus étroites qu’elles ne le seraient normalement. L’espacement est ajusté automatiquement." msgid "Idle temperature" msgstr "Température au repos" -msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool setups." -"This is only used when 'Ooze prevention' is active in Print Settings. Set to " -"0 to disable." -msgstr "" -"Température de la buse lorsque l’outil n’est pas utilisé dans les " -"configurations multi-outils. Cette fonction n’est utilisée que lorsque la " -"fonction « Prévention des suintements » est activée dans les paramètres " -"d’impression. Régler à 0 pour désactiver." +msgid "Nozzle temperature when the tool is currently not used in multi-tool setups.This is only used when 'Ooze prevention' is active in Print Settings. Set to 0 to disable." +msgstr "Température de la buse lorsque l’outil n’est pas utilisé dans les configurations multi-outils. Cette fonction n’est utilisée que lorsque la fonction « Prévention des suintements » est activée dans les paramètres d’impression. Régler à 0 pour désactiver." msgid "X-Y hole compensation" msgstr "Compensation de trou X-Y" -msgid "" -"Holes of object will be grown or shrunk in XY plane by the configured value. " -"Positive value makes holes bigger. Negative value makes holes smaller. This " -"function is used to adjust size slightly when the object has assembling issue" -msgstr "" -"Les trous de l'objet seront agrandis ou rétrécis dans le plan XY par la " -"valeur configurée. Une valeur positive agrandit les trous. Une valeur " -"négative rend les trous plus petits. Cette fonction est utilisée pour " -"ajuster légèrement la taille lorsque l'objet a un problème d'assemblage" +msgid "Holes of object will be grown or shrunk in XY plane by the configured value. Positive value makes holes bigger. Negative value makes holes smaller. This function is used to adjust size slightly when the object has assembling issue" +msgstr "Les trous de l'objet seront agrandis ou rétrécis dans le plan XY par la valeur configurée. Une valeur positive agrandit les trous. Une valeur négative rend les trous plus petits. Cette fonction est utilisée pour ajuster légèrement la taille lorsque l'objet a un problème d'assemblage" msgid "X-Y contour compensation" msgstr "Compensation de contour X-Y" -msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured " -"value. Positive value makes contour bigger. Negative value makes contour " -"smaller. This function is used to adjust size slightly when the object has " -"assembling issue" -msgstr "" -"Le contour de l'objet sera agrandi ou rétréci dans le plan XY par la valeur " -"configurée. Une valeur positive agrandit le contour. Une valeur négative " -"rend le contour plus petit. Cette fonction est utilisée pour ajuster " -"légèrement la taille lorsque l'objet a un problème d'assemblage" +msgid "Contour of object will be grown or shrunk in XY plane by the configured value. Positive value makes contour bigger. Negative value makes contour smaller. This function is used to adjust size slightly when the object has assembling issue" +msgstr "Le contour de l'objet sera agrandi ou rétréci dans le plan XY par la valeur configurée. Une valeur positive agrandit le contour. Une valeur négative rend le contour plus petit. Cette fonction est utilisée pour ajuster légèrement la taille lorsque l'objet a un problème d'assemblage" msgid "Convert holes to polyholes" msgstr "Convertir les trous en trous polygones" msgid "" -"Search for almost-circular holes that span more than one layer and convert " -"the geometry to polyholes. Use the nozzle size and the (biggest) diameter to " -"compute the polyhole.\n" +"Search for almost-circular holes that span more than one layer and convert the geometry to polyholes. Use the nozzle size and the (biggest) diameter to compute the polyhole.\n" "See http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgstr "" -"Rechercher les trous presque circulaires qui s’étendent sur plusieurs " -"couches et convertir la géométrie en trous polygones. Utilise la taille de " -"la buse et le (plus grand) diamètre pour calculer le trou polygone.\n" +"Rechercher les trous presque circulaires qui s’étendent sur plusieurs couches et convertir la géométrie en trous polygones. Utilise la taille de la buse et le (plus grand) diamètre pour calculer le trou polygone.\n" "Voir http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgid "Polyhole detection margin" @@ -14534,15 +11575,11 @@ msgstr "Marge de détection des trous polygones" #, no-c-format, no-boost-format msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" -"As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to " -"broaden the detection.\n" +"As cylinders are often exported as triangles of varying size, points may not be on the circle circumference. This setting allows you some leway to broaden the detection.\n" "In mm or in % of the radius." msgstr "" "Défection maximale d’un point par rapport au rayon estimé du cercle.\n" -"Comme les cylindres sont souvent exportés sous forme de triangles de taille " -"variable, les points peuvent ne pas se trouver sur la circonférence du " -"cercle. Ce paramètre vous permet d’élargir la détection.\n" +"Comme les cylindres sont souvent exportés sous forme de triangles de taille variable, les points peuvent ne pas se trouver sur la circonférence du cercle. Ce paramètre vous permet d’élargir la détection.\n" "En mm ou en % du rayon." msgid "Polyhole twist" @@ -14554,47 +11591,23 @@ msgstr "Faites pivoter le trou polygone à chaque couche." msgid "G-code thumbnails" msgstr "Vignette G-code" -msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " -"following format: \"XxY, XxY, ...\"" -msgstr "" -"Tailles des images à stocker dans les fichiers .gcode et .sl1/.sl1s, au " -"format suivant : \"XxY, XxY, ...\"" +msgid "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: \"XxY, XxY, ...\"" +msgstr "Tailles des images à stocker dans les fichiers .gcode et .sl1/.sl1s, au format suivant : \"XxY, XxY, ...\"" msgid "Format of G-code thumbnails" msgstr "Format des vignettes G-code" -msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" -msgstr "" -"Format des vignettes G-code : PNG pour la meilleure qualité, JPG pour la " -"plus petite taille, QOI pour les firmwares à faible mémoire" +msgid "Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI for low memory firmware" +msgstr "Format des vignettes G-code : PNG pour la meilleure qualité, JPG pour la plus petite taille, QOI pour les firmwares à faible mémoire" msgid "Use relative E distances" msgstr "Utiliser l’extrusion relative" -msgid "" -"Relative extrusion is recommended when using \"label_objects\" option.Some " -"extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is recommended on most " -"printers. Default is checked" -msgstr "" -"L’extrusion relative est recommandée lors de l’utilisation de l’option " -"« label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " -"non verrouillée (mode d’extrusion absolu). La tour d’essuyage n’est " -"compatible qu’avec le mode relatif. Il est recommandé sur la plupart des " -"imprimantes. L’option par défaut est cochée" +msgid "Relative extrusion is recommended when using \"label_objects\" option.Some extruders work better with this option unckecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is recommended on most printers. Default is checked" +msgstr "L’extrusion relative est recommandée lors de l’utilisation de l’option « label_objects ». Certains extrudeurs fonctionnent mieux avec cette option non verrouillée (mode d’extrusion absolu). La tour d’essuyage n’est compatible qu’avec le mode relatif. Il est recommandé sur la plupart des imprimantes. L’option par défaut est cochée" -msgid "" -"Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" -msgstr "" -"Le générateur de paroi classique produit des parois avec une largeur " -"d’extrusion constante et, pour les zones très fines, il utilise le " -"remplissage d’espace. Le moteur Arachne produit des parois avec une largeur " -"d’extrusion variable." +msgid "Classic wall generator produces walls with constant extrusion width and for very thin areas is used gap-fill. Arachne engine produces walls with variable extrusion width" +msgstr "Le générateur de paroi classique produit des parois avec une largeur d’extrusion constante et, pour les zones très fines, il utilise le remplissage d’espace. Le moteur Arachne produit des parois avec une largeur d’extrusion variable." msgid "Classic" msgstr "Classique" @@ -14605,144 +11618,62 @@ msgstr "Arachné" msgid "Wall transition length" msgstr "Longueur de la paroi de transition" -msgid "" -"When transitioning between different numbers of walls as the part becomes " -"thinner, a certain amount of space is allotted to split or join the wall " -"segments. It's expressed as a percentage over nozzle diameter" -msgstr "" -"Lorsque vous passez d'un nombre différent de parois à un autre lorsque la " -"pièce s'amincit, un certain espace est alloué pour séparer ou joindre les " -"segments de la paroi. Exprimé en pourcentage par rapport au diamètre de la " -"buse." +msgid "When transitioning between different numbers of walls as the part becomes thinner, a certain amount of space is allotted to split or join the wall segments. It's expressed as a percentage over nozzle diameter" +msgstr "Lorsque vous passez d'un nombre différent de parois à un autre lorsque la pièce s'amincit, un certain espace est alloué pour séparer ou joindre les segments de la paroi. Exprimé en pourcentage par rapport au diamètre de la buse." msgid "Wall transitioning filter margin" msgstr "Marge du filtre de transition de paroi" -msgid "" -"Prevent transitioning back and forth between one extra wall and one less. " -"This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall 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. It's expressed as a " -"percentage over nozzle diameter" -msgstr "" -"Empêchez les allers-retours entre une paroi supplémentaire et une paroi de " -"moins. Cette marge étend la plage de largeurs d'extrusion qui suit jusqu'à " -"[Largeur de paroi minimale - marge, 2* Largeur de paroi minimale + marge]. " -"L'augmentation de cette marge réduit le nombre de transitions, ce qui réduit " -"le nombre de démarrages/arrêts d'extrusion et le temps de trajet. Cependant, " -"une variation importante de la largeur d'extrusion peut entraîner des " -"problèmes de sous-extrusion ou de surextrusion. Il est exprimé en " -"pourcentage par rapport au diamètre de la buse" +msgid "Prevent transitioning back and forth between one extra wall and one less. This margin extends the range of extrusion widths which follow to [Minimum wall width - margin, 2 * Minimum wall 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. It's expressed as a percentage over nozzle diameter" +msgstr "Empêchez les allers-retours entre une paroi supplémentaire et une paroi de moins. Cette marge étend la plage de largeurs d'extrusion qui suit jusqu'à [Largeur de paroi minimale - marge, 2* Largeur de paroi minimale + marge]. L'augmentation de cette marge réduit le nombre de transitions, ce qui réduit le nombre de démarrages/arrêts d'extrusion et le temps de trajet. Cependant, une variation importante de la largeur d'extrusion peut entraîner des problèmes de sous-extrusion ou de surextrusion. Il est exprimé en pourcentage par rapport au diamètre de la buse" msgid "Wall transitioning threshold angle" msgstr "Angle du seuil de transition de la paroi" -msgid "" -"When to create transitions between even and odd numbers of walls. A wedge " -"shape with an angle greater than this setting will not have transitions and " -"no walls will be printed in the center to fill the remaining space. Reducing " -"this setting reduces the number and length of these center walls, but may " -"leave gaps or overextrude" -msgstr "" -"Quand créer des transitions entre les nombres pairs et impairs de parois. " -"Une forme cunéiforme dont l'angle est supérieur à ce paramètre n'aura pas de " -"transitions et aucune paroi ne sera imprimé au centre pour remplir l'espace " -"restant. En réduisant ce paramètre, vous réduisez le nombre et la longueur " -"de ces parois centrales, mais vous risquez de laisser des espaces vides ou " -"de surextruder les parois." +msgid "When to create transitions between even and odd numbers of walls. A wedge shape with an angle greater than this setting will not have transitions and no walls will be printed in the center to fill the remaining space. Reducing this setting reduces the number and length of these center walls, but may leave gaps or overextrude" +msgstr "Quand créer des transitions entre les nombres pairs et impairs de parois. Une forme cunéiforme dont l'angle est supérieur à ce paramètre n'aura pas de transitions et aucune paroi ne sera imprimé au centre pour remplir l'espace restant. En réduisant ce paramètre, vous réduisez le nombre et la longueur de ces parois centrales, mais vous risquez de laisser des espaces vides ou de surextruder les parois." msgid "Wall distribution count" msgstr "Nombre de parois distribuées" -msgid "" -"The number of walls, counted from the center, over which the variation needs " -"to be spread. Lower values mean that the outer walls don't change in width" -msgstr "" -"Nombre de parois, comptées à partir du centre, sur lesquelles la variation " -"doit être répartie. Des valeurs plus faibles signifient que la largeur des " -"parois extérieures ne change pas" +msgid "The number of walls, counted from the center, over which the variation needs to be spread. Lower values mean that the outer walls don't change in width" +msgstr "Nombre de parois, comptées à partir du centre, sur lesquelles la variation doit être répartie. Des valeurs plus faibles signifient que la largeur des parois extérieures ne change pas" msgid "Minimum feature size" msgstr "Taille minimale de l'élément" -msgid "" -"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 wall width. It's expressed as a " -"percentage over nozzle diameter" -msgstr "" -"Épaisseur minimale des éléments fins. Les caractéristiques du modèle qui " -"sont plus fines que cette valeur ne seront pas imprimées, tandis que les " -"entités plus épaisses que la taille minimale seront élargies jusqu'à la " -"largeur de paroi minimale. Exprimée en pourcentage par rapport au diamètre " -"de la buse" +msgid "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 wall width. It's expressed as a percentage over nozzle diameter" +msgstr "Épaisseur minimale des éléments fins. Les caractéristiques du modèle qui sont plus fines que cette valeur ne seront pas imprimées, tandis que les entités plus épaisses que la taille minimale seront élargies jusqu'à la largeur de paroi minimale. Exprimée en pourcentage par rapport au diamètre de la buse" msgid "Minimum wall length" msgstr "Longueur minimale de la paroi" msgid "" -"Adjust this value to prevent short, unclosed walls from being printed, which " -"could increase print time. Higher values remove more and longer walls.\n" +"Adjust this value to prevent short, unclosed walls from being printed, which could increase print time. Higher values remove more and longer walls.\n" "\n" -"NOTE: Bottom and top surfaces will not be affected by this value to prevent " -"visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a " -"top-surface. 'One wall threshold' is only visibile if this setting is set " -"above the default value of 0.5, or if single-wall top surfaces is enabled." +"NOTE: Bottom and top surfaces will not be affected by this value to prevent visual gaps on the ouside of the model. Adjust 'One wall threshold' in the Advanced settings below to adjust the sensitivity of what is considered a top-surface. 'One wall threshold' is only visibile if this setting is set above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" -"Ajustez cette valeur pour éviter que des parois courtes et non fermées " -"soient imprimées, ce qui pourrait augmenter le temps d’impression. Des " -"valeurs plus élevées suppriment des parois plus nombreuses et plus longues.\n" +"Ajustez cette valeur pour éviter que des parois courtes et non fermées soient imprimées, ce qui pourrait augmenter le temps d’impression. Des valeurs plus élevées suppriment des parois plus nombreuses et plus longues.\n" "\n" -"REMARQUE : les surfaces inférieures et supérieures ne sont pas affectées par " -"cette valeur afin d’éviter les lacunes visuelles sur le côté du modèle. " -"Réglez le « seuil d’une paroi » dans les paramètres avancés ci-dessous pour " -"ajuster la sensibilité de ce qui est considéré comme une surface supérieure. " -"Le « seuil d’une paroi » n’est visible que si ce paramètre est supérieur à " -"la valeur par défaut de 0,5 ou si l’option « surfaces supérieures à une " -"paroi » est activée." +"REMARQUE : les surfaces inférieures et supérieures ne sont pas affectées par cette valeur afin d’éviter les lacunes visuelles sur le côté du modèle. Réglez le « seuil d’une paroi » dans les paramètres avancés ci-dessous pour ajuster la sensibilité de ce qui est considéré comme une surface supérieure. Le « seuil d’une paroi » n’est visible que si ce paramètre est supérieur à la valeur par défaut de 0,5 ou si l’option « surfaces supérieures à une paroi » est activée." msgid "First layer minimum wall width" msgstr "Largeur minimale de la paroi de la première couche" -msgid "" -"The minimum wall width that should be used for the first layer is " -"recommended to be set to the same size as the nozzle. This adjustment is " -"expected to enhance adhesion." -msgstr "" -"Il est recommandé de définir la largeur minimale de paroi à utiliser pour la " -"première couche sur la même taille que la buse. Cet ajustement devrait " -"améliorer l’adhérence." +msgid "The minimum wall width that should be used for the first layer is recommended to be set to the same size as the nozzle. This adjustment is expected to enhance adhesion." +msgstr "Il est recommandé de définir la largeur minimale de paroi à utiliser pour la première couche sur la même taille que la buse. Cet ajustement devrait améliorer l’adhérence." msgid "Minimum wall width" msgstr "Largeur minimale de la paroi" -msgid "" -"Width of the wall that will replace thin features (according to the Minimum " -"feature size) of the model. If the Minimum wall width is thinner than the " -"thickness of the feature, the wall will become as thick as the feature " -"itself. It's expressed as a percentage over nozzle diameter" -msgstr "" -"Largeur de la paroi qui remplacera les éléments fins (selon la taille " -"minimale des éléments) du modèle. Si la largeur minimale de la paroi est " -"inférieure à l'épaisseur de l'élément, la paroi deviendra aussi épaisse que " -"l'élément lui-même. Elle est exprimée en pourcentage par rapport au diamètre " -"de la buse" +msgid "Width of the wall that will replace thin features (according to the Minimum feature size) of the model. If the Minimum wall width is thinner than the thickness of the feature, the wall will become as thick as the feature itself. It's expressed as a percentage over nozzle diameter" +msgstr "Largeur de la paroi qui remplacera les éléments fins (selon la taille minimale des éléments) du modèle. Si la largeur minimale de la paroi est inférieure à l'épaisseur de l'élément, la paroi deviendra aussi épaisse que l'élément lui-même. Elle est exprimée en pourcentage par rapport au diamètre de la buse" msgid "Detect narrow internal solid infill" msgstr "Détecter un remplissage plein interne étroit" -msgid "" -"This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." -msgstr "" -"Cette option détectera automatiquement la zone de remplissage plein interne " -"étroite. S'il est activé, un motif concentrique sera utilisé pour la zone " -"afin d'accélérer l'impression. Sinon, le motif rectiligne est utilisé par " -"défaut." +msgid "This option will auto detect narrow internal solid infill area. If enabled, concentric pattern will be used for the area to speed printing up. Otherwise, rectilinear pattern is used defaultly." +msgstr "Cette option détectera automatiquement la zone de remplissage plein interne étroite. S'il est activé, un motif concentrique sera utilisé pour la zone afin d'accélérer l'impression. Sinon, le motif rectiligne est utilisé par défaut." msgid "invalid value " msgstr "Valeur invalide " @@ -14766,18 +11697,13 @@ msgid "No check" msgstr "Pas de vérification" msgid "Do not run any validity checks, such as gcode path conflicts check." -msgstr "" -"Ne pas effectuer de contrôle de validité, tel que le contrôle des conflits " -"de parcours de G-code." +msgstr "Ne pas effectuer de contrôle de validité, tel que le contrôle des conflits de parcours de G-code." msgid "Ensure on bed" msgstr "Assurer sur le plateau" -msgid "" -"Lift the object above the bed when it is partially below. Disabled by default" -msgstr "" -"Placer l’objet sur le plateau lorsqu’il est partiellement en dessous. " -"Désactivé par défaut" +msgid "Lift the object above the bed when it is partially below. Disabled by default" +msgstr "Placer l’objet sur le plateau lorsqu’il est partiellement en dessous. Désactivé par défaut" msgid "Orient Options" msgstr "Options d’orientation" @@ -14797,14 +11723,8 @@ msgstr "Angle de rotation autour de l’axe Y en degrés." msgid "Data directory" msgstr "Répertoire de données" -msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." -msgstr "" -"Charger et stocker les paramètres dans le répertoire donné. Ceci est utile " -"pour maintenir différents profils ou inclure des configurations à partir " -"d’un stockage réseau." +msgid "Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage." +msgstr "Charger et stocker les paramètres dans le répertoire donné. Ceci est utile pour maintenir différents profils ou inclure des configurations à partir d’un stockage réseau." msgid "Load custom gcode" msgstr "Charger un G-code personnalisé" @@ -14818,42 +11738,23 @@ msgstr "Saut en z actuel" msgid "Contains z-hop present at the beginning of the custom G-code block." msgstr "Contient le saut en z présent au début du bloc de G-code personnalisé." -msgid "" -"Position of the extruder at the beginning of the custom G-code block. If the " -"custom G-code travels somewhere else, it should write to this variable so " -"PrusaSlicer knows where it travels from when it gets control back." -msgstr "" -"Position de l’extrudeuse au début du bloc de G-code personnalisé. Si le G-" -"code personnalisé se déplace ailleurs, il doit écrire dans cette variable " -"afin que PrusaSlicer sache d’où il se déplace lorsqu’il reprend le contrôle." +msgid "Position of the extruder at the beginning of the custom G-code block. If the custom G-code travels somewhere else, it should write to this variable so PrusaSlicer knows where it travels from when it gets control back." +msgstr "Position de l’extrudeuse au début du bloc de G-code personnalisé. Si le G-code personnalisé se déplace ailleurs, il doit écrire dans cette variable afin que PrusaSlicer sache d’où il se déplace lorsqu’il reprend le contrôle." -msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom " -"G-code moves the extruder axis, it should write to this variable so " -"PrusaSlicer deretracts correctly when it gets control back." -msgstr "" -"État de rétraction au début du bloc de G-code personnalisé. Si le G-code " -"personnalisé déplace l’axe de l’extrudeuse, il doit écrire dans cette " -"variable pour que PrusaSlicer se rétracte correctement lorsqu’il reprend le " -"contrôle." +msgid "Retraction state at the beginning of the custom G-code block. If the custom G-code moves the extruder axis, it should write to this variable so PrusaSlicer deretracts correctly when it gets control back." +msgstr "État de rétraction au début du bloc de G-code personnalisé. Si le G-code personnalisé déplace l’axe de l’extrudeuse, il doit écrire dans cette variable pour que PrusaSlicer se rétracte correctement lorsqu’il reprend le contrôle." msgid "Extra deretraction" msgstr "Dérétraction supplémentaire" msgid "Currently planned extra extruder priming after deretraction." -msgstr "" -"L’amorçage supplémentaire de l’extrudeuse après la dérétraction est " -"actuellement prévu." +msgstr "L’amorçage supplémentaire de l’extrudeuse après la dérétraction est actuellement prévu." msgid "Absolute E position" msgstr "Position E absolue" -msgid "" -"Current position of the extruder axis. Only used with absolute extruder " -"addressing." -msgstr "" -"Position actuelle de l’axe de l’extrudeuse. Utilisé uniquement avec " -"l’adressage absolu de de I’extrudeur." +msgid "Current position of the extruder axis. Only used with absolute extruder addressing." +msgstr "Position actuelle de l’axe de l’extrudeuse. Utilisé uniquement avec l’adressage absolu de de I’extrudeur." msgid "Current extruder" msgstr "Extrudeur actuel" @@ -14864,12 +11765,8 @@ msgstr "Index à base zéro de l’extrudeur actuellement utilisé." msgid "Current object index" msgstr "Index de l’objet actuel" -msgid "" -"Specific for sequential printing. Zero-based index of currently printed " -"object." -msgstr "" -"Spécifique à l’impression séquentielle. Index basé sur zéro de l’objet en " -"cours d’impression." +msgid "Specific for sequential printing. Zero-based index of currently printed object." +msgstr "Spécifique à l’impression séquentielle. Index basé sur zéro de l’objet en cours d’impression." msgid "Has wipe tower" msgstr "Possède une tour d’essuyage" @@ -14880,46 +11777,32 @@ msgstr "Indique si la tour d’essuyage est générée ou non dans l’impressio msgid "Initial extruder" msgstr "Extrudeur initial" -msgid "" -"Zero-based index of the first extruder used in the print. Same as " -"initial_tool." -msgstr "" -"Index basé sur zéro du premier extrudeur utilisé dans l’impression. " -"Identique à initial_tool." +msgid "Zero-based index of the first extruder used in the print. Same as initial_tool." +msgstr "Index basé sur zéro du premier extrudeur utilisé dans l’impression. Identique à initial_tool." msgid "Initial tool" msgstr "Outil de départ" -msgid "" -"Zero-based index of the first extruder used in the print. Same as " -"initial_extruder." -msgstr "" -"Index basé sur zéro du premier extrudeur utilisé dans l’impression. " -"Identique à initial_extruder." +msgid "Zero-based index of the first extruder used in the print. Same as initial_extruder." +msgstr "Index basé sur zéro du premier extrudeur utilisé dans l’impression. Identique à initial_extruder." msgid "Is extruder used?" msgstr "L’extrudeur est-il utilisé ?" msgid "Vector of bools stating whether a given extruder is used in the print." -msgstr "" -"Vecteur de bools indiquant si un extrudeur donné est utilisé dans " -"l’impression." +msgstr "Vecteur de bools indiquant si un extrudeur donné est utilisé dans l’impression." msgid "Has single extruder MM priming" msgstr "Dispose d’un seul extrudeur MM d’amorçage" msgid "Are the extra multi-material priming regions used in this print?" -msgstr "" -"Les régions d’amorçage multimatériaux supplémentaires sont-elles utilisées " -"dans cette impression ?" +msgstr "Les régions d’amorçage multimatériaux supplémentaires sont-elles utilisées dans cette impression ?" msgid "Volume per extruder" msgstr "Volume par extrudeur" msgid "Total filament volume extruded per extruder during the entire print." -msgstr "" -"Volume total de filament extrudé par extrudeur pendant toute la durée de " -"l’impression." +msgstr "Volume total de filament extrudé par extrudeur pendant toute la durée de l’impression." msgid "Total toolchanges" msgstr "Nombre total de changements d’outils" @@ -14931,28 +11814,19 @@ msgid "Total volume" msgstr "Volume total" msgid "Total volume of filament used during the entire print." -msgstr "" -"Volume total de filament utilisé pendant toute la durée de l’impression." +msgstr "Volume total de filament utilisé pendant toute la durée de l’impression." msgid "Weight per extruder" msgstr "Poids par extrudeur" -msgid "" -"Weight per extruder extruded during the entire print. Calculated from " -"filament_density value in Filament Settings." -msgstr "" -"Poids par extrudeur extrudé pendant toute la durée de l’impression. Calculé " -"à partir de la valeur filament_density dans Filament Settings." +msgid "Weight per extruder extruded during the entire print. Calculated from filament_density value in Filament Settings." +msgstr "Poids par extrudeur extrudé pendant toute la durée de l’impression. Calculé à partir de la valeur filament_density dans Filament Settings." msgid "Total weight" msgstr "Poids total" -msgid "" -"Total weight of the print. Calculated from filament_density value in " -"Filament Settings." -msgstr "" -"Poids total de l’impression. Calculé à partir de la valeur filament_density " -"dans Filament Settings." +msgid "Total weight of the print. Calculated from filament_density value in Filament Settings." +msgstr "Poids total de l’impression. Calculé à partir de la valeur filament_density dans Filament Settings." msgid "Total layer count" msgstr "Nombre total de couches" @@ -14970,22 +11844,16 @@ msgid "Number of instances" msgstr "Nombre d’instances" msgid "Total number of object instances in the print, summed over all objects." -msgstr "" -"Nombre total d’instances d’objets dans l’impression, additionné à tous les " -"objets." +msgstr "Nombre total d’instances d’objets dans l’impression, additionné à tous les objets." msgid "Scale per object" msgstr "Mise à l’échelle par objet" msgid "" -"Contains a string with the information about what scaling was applied to the " -"individual objects. Indexing of the objects is zero-based (first object has " -"index 0).\n" +"Contains a string with the information about what scaling was applied to the individual objects. Indexing of the objects is zero-based (first object has index 0).\n" "Example: 'x:100% y:50% z:100'." msgstr "" -"Contient une chaîne de caractères contenant des informations sur la mise à " -"l’échelle appliquée aux différents objets. L’indexation des objets est basée " -"sur le zéro (le premier objet a l’index 0).\n" +"Contient une chaîne de caractères contenant des informations sur la mise à l’échelle appliquée aux différents objets. L’indexation des objets est basée sur le zéro (le premier objet a l’index 0).\n" "Exemple : « x:100% y:50% z:100 »." msgid "Input filename without extension" @@ -14994,32 +11862,20 @@ msgstr "Nom du fichier d’entrée sans extension" msgid "Source filename of the first object, without extension." msgstr "Nom du fichier source du premier objet, sans extension." -msgid "" -"The vector has two elements: x and y coordinate of the point. Values in mm." -msgstr "" -"Le vecteur a deux éléments : les coordonnées x et y du point. Valeurs en mm." +msgid "The vector has two elements: x and y coordinate of the point. Values in mm." +msgstr "Le vecteur a deux éléments : les coordonnées x et y du point. Valeurs en mm." -msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values " -"in mm." -msgstr "" -"Le vecteur a deux éléments : les dimensions x et y de la boîte de " -"délimitation. Valeurs en mm." +msgid "The vector has two elements: x and y dimension of the bounding box. Values in mm." +msgstr "Le vecteur a deux éléments : les dimensions x et y de la boîte de délimitation. Valeurs en mm." msgid "First layer convex hull" msgstr "Coque convexe de la première couche" -msgid "" -"Vector of points of the first layer convex hull. Each element has the " -"following format:'[x, y]' (x and y are floating-point numbers in mm)." -msgstr "" -"Vecteur de points de la première couche de la coque convexe. Chaque élément " -"a le format suivant : ‘[x, y]’ (x et y sont des nombres à virgule flottante " -"en mm)." +msgid "Vector of points of the first layer convex hull. Each element has the following format:'[x, y]' (x and y are floating-point numbers in mm)." +msgstr "Vecteur de points de la première couche de la coque convexe. Chaque élément a le format suivant : ‘[x, y]’ (x et y sont des nombres à virgule flottante en mm)." msgid "Bottom-left corner of first layer bounding box" -msgstr "" -"Coin inférieur gauche de la boîte de délimitation de la première couche" +msgstr "Coin inférieur gauche de la boîte de délimitation de la première couche" msgid "Top-right corner of first layer bounding box" msgstr "Coin supérieur droit de la boîte de délimitation de la première couche" @@ -15031,8 +11887,7 @@ msgid "Bottom-left corner of print bed bounding box" msgstr "Coin inférieur gauche de la boîte de délimitation du lit d’impression" msgid "Top-right corner of print bed bounding box" -msgstr "" -"Coin supérieur droit de la boîte de délimitation du plateau d’impression" +msgstr "Coin supérieur droit de la boîte de délimitation du plateau d’impression" msgid "Size of the print bed bounding box" msgstr "Taille du plateau d’impression" @@ -15061,12 +11916,8 @@ msgstr "Nom du préréglage d’impression utilisé pour le découpage." msgid "Filament preset name" msgstr "Nom du préréglage du filament" -msgid "" -"Names of the filament presets used for slicing. The variable is a vector " -"containing one name for each extruder." -msgstr "" -"Noms des préréglages de filaments utilisés pour le découpage. La variable " -"est un vecteur contenant un nom pour chaque extrudeur." +msgid "Names of the filament presets used for slicing. The variable is a vector containing one name for each extruder." +msgstr "Noms des préréglages de filaments utilisés pour le découpage. La variable est un vecteur contenant un nom pour chaque extrudeur." msgid "Printer preset name" msgstr "Nom du préréglage de l’imprimante" @@ -15083,30 +11934,20 @@ msgstr "Nom de l’imprimante physique utilisé pour la découpe." msgid "Number of extruders" msgstr "Nombre d’extrudeurs" -msgid "" -"Total number of extruders, regardless of whether they are used in the " -"current print." -msgstr "" -"Nombre total d’extrudeurs, qu’ils soient ou non utilisées dans l’impression " -"en cours." +msgid "Total number of extruders, regardless of whether they are used in the current print." +msgstr "Nombre total d’extrudeurs, qu’ils soient ou non utilisées dans l’impression en cours." msgid "Layer number" msgstr "Numéro de couche" msgid "Index of the current layer. One-based (i.e. first layer is number 1)." -msgstr "" -"Indice de la couche actuelle. Base unitaire (c’est-à-dire que la première " -"couche porte le numéro 1)." +msgstr "Indice de la couche actuelle. Base unitaire (c’est-à-dire que la première couche porte le numéro 1)." msgid "Layer z" msgstr "Couche z" -msgid "" -"Height of the current layer above the print bed, measured to the top of the " -"layer." -msgstr "" -"Hauteur de la couche actuelle au-dessus du plateau d’impression, mesurée " -"jusqu’au sommet de la couche." +msgid "Height of the current layer above the print bed, measured to the top of the layer." +msgstr "Hauteur de la couche actuelle au-dessus du plateau d’impression, mesurée jusqu’au sommet de la couche." msgid "Maximal layer z" msgstr "Couche maximale z" @@ -15151,12 +11992,8 @@ msgid "large overhangs" msgstr "grands surplombs" #, c-format, boost-format -msgid "" -"It seems object %s has %s. Please re-orient the object or enable support " -"generation." -msgstr "" -"Il semble que l'objet %s possède %s. Veuillez réorienter l'objet ou activer " -"la génération de support." +msgid "It seems object %s has %s. Please re-orient the object or enable support generation." +msgstr "Il semble que l'objet %s possède %s. Veuillez réorienter l'objet ou activer la génération de support." msgid "Optimizing toolpath" msgstr "Optimisation du parcours d'outil" @@ -15164,22 +12001,15 @@ msgstr "Optimisation du parcours d'outil" msgid "Slicing mesh" msgstr "Découpe du maillage" -msgid "" -"No layers were detected. You might want to repair your STL file(s) or check " -"their size or thickness and retry.\n" -msgstr "" -"Aucune couche n'a été détectée. Vous pouvez réparer vos STL, vérifier leur " -"taille ou leur épaisseur et réessayer.\n" +msgid "No layers were detected. You might want to repair your STL file(s) or check their size or thickness and retry.\n" +msgstr "Aucune couche n'a été détectée. Vous pouvez réparer vos STL, vérifier leur taille ou leur épaisseur et réessayer.\n" msgid "" -"An object's XY size compensation will not be used because it is also color-" -"painted.\n" +"An object's XY size compensation will not be used because it is also color-painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" -"La compensation de la taille XY d'un objet ne sera pas utilisée parce qu'il " -"est également peint en couleur.\n" -"La compensation de la taille XY ne peut pas être combinée avec la peinture " -"couleur." +"La compensation de la taille XY d'un objet ne sera pas utilisée parce qu'il est également peint en couleur.\n" +"La compensation de la taille XY ne peut pas être combinée avec la peinture couleur." #, c-format, boost-format msgid "Support: generate toolpath at layer %d" @@ -15212,11 +12042,8 @@ msgstr "Support : Correction des trous dans la couche %d" msgid "Support: propagate branches at layer %d" msgstr "Support : propagation des branches à la couche %d" -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter l'extension ." -"stl, .obj ou .amf (.xml)." +msgid "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "Format de fichier inconnu : le fichier d'entrée doit porter l'extension .stl, .obj ou .amf (.xml)." msgid "Loading of a model file failed." msgstr "Le chargement du fichier modèle a échoué." @@ -15225,9 +12052,7 @@ msgid "The supplied file couldn't be read because it's empty" msgstr "Le fichier fourni n'a pas pu être lu car il est vide." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." -msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter " -"l'extension .3mf, .zip ou .amf." +msgstr "Format de fichier inconnu : le fichier d'entrée doit porter l'extension .3mf, .zip ou .amf." msgid "Canceled" msgstr "Annulé" @@ -15286,18 +12111,14 @@ msgstr "Terminer" msgid "How to use calibration result?" msgstr "Comment utiliser le résultat de la calibration ?" -msgid "" -"You could change the Flow Dynamics Calibration Factor in material editing" -msgstr "" -"Vous pouvez modifier le facteur de calibration dynamique du débit dans les " -"paramètres du filament" +msgid "You could change the Flow Dynamics Calibration Factor in material editing" +msgstr "Vous pouvez modifier le facteur de calibration dynamique du débit dans les paramètres du filament" msgid "" "The current firmware version of the printer does not support calibration.\n" "Please upgrade the printer firmware." msgstr "" -"La version actuelle du firmware de l'imprimante ne prend pas en charge la " -"calibration.\n" +"La version actuelle du firmware de l'imprimante ne prend pas en charge la calibration.\n" "Veuillez mettre à jour le firmware de l'imprimante." msgid "Calibration not supported" @@ -15348,11 +12169,8 @@ msgstr "Le nom est le même qu’un autre nom de préréglage existant" msgid "create new preset failed." msgstr "La création d’un nouveau préréglage a échoué." -msgid "" -"Are you sure to cancel the current calibration and return to the home page?" -msgstr "" -"Voulez-vous vraiment annuler la calibration en cours et revenir à la page " -"d’accueil ?" +msgid "Are you sure to cancel the current calibration and return to the home page?" +msgstr "Voulez-vous vraiment annuler la calibration en cours et revenir à la page d’accueil ?" msgid "No Printer Connected!" msgstr "Aucune imprimante connectée !" @@ -15367,16 +12185,10 @@ msgid "The input value size must be 3." msgstr "La valeur saisie doit être 3." msgid "" -"This machine type can only hold 16 history results per nozzle. You can " -"delete the existing historical results and then start calibration. Or you " -"can continue the calibration, but you cannot create new calibration " -"historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can delete the existing historical results and then start calibration. Or you can continue the calibration, but you cannot create new calibration historical results. \n" "Do you still want to continue the calibration?" msgstr "" -"Ce type de machine ne peut contenir que 16 résultats historiques par buse. " -"Vous pouvez supprimer les résultats historiques existants, puis lancer " -"l’étalonnage. Vous pouvez également poursuivre l’étalonnage, mais vous ne " -"pouvez pas créer de nouveaux résultats historiques d’étalonnage. \n" +"Ce type de machine ne peut contenir que 16 résultats historiques par buse. Vous pouvez supprimer les résultats historiques existants, puis lancer l’étalonnage. Vous pouvez également poursuivre l’étalonnage, mais vous ne pouvez pas créer de nouveaux résultats historiques d’étalonnage. \n" "Souhaitez-vous toujours poursuivre le calibrage ?" msgid "Connecting to printer..." @@ -15386,27 +12198,15 @@ msgid "The failed test result has been dropped." msgstr "Le résultat du test ayant échoué a été supprimé." msgid "Flow Dynamics Calibration result has been saved to the printer" -msgstr "" -"Le résultat de la calibration dynamique du débit a été enregistré sur " -"l’imprimante" +msgstr "Le résultat de la calibration dynamique du débit a été enregistré sur l’imprimante" #, c-format, boost-format -msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to override the historical result?" -msgstr "" -"Il existe déjà un résultat d’étalonnage antérieur portant le même nom : %s. " -"Un seul des résultats portant le même nom est sauvegardé. Êtes-vous sûr de " -"vouloir remplacer le résultat antérieur ?" +msgid "There is already a historical calibration result with the same name: %s. Only one of the results with the same name is saved. Are you sure you want to override the historical result?" +msgstr "Il existe déjà un résultat d’étalonnage antérieur portant le même nom : %s. Un seul des résultats portant le même nom est sauvegardé. Êtes-vous sûr de vouloir remplacer le résultat antérieur ?" #, c-format, boost-format -msgid "" -"This machine type can only hold %d history results per nozzle. This result " -"will not be saved." -msgstr "" -"Ce type de machine ne peut contenir que %d résultats historiques par buse. " -"Ce résultat ne sera pas enregistré." +msgid "This machine type can only hold %d history results per nozzle. This result will not be saved." +msgstr "Ce type de machine ne peut contenir que %d résultats historiques par buse. Ce résultat ne sera pas enregistré." msgid "Internal Error" msgstr "Erreur interne" @@ -15415,36 +12215,24 @@ msgid "Please select at least one filament for calibration" msgstr "Veuillez sélectionner au moins un filament pour la calibration" msgid "Flow rate calibration result has been saved to preset" -msgstr "" -"Le résultat de la calibration du débit a été enregistré dans le préréglage" +msgstr "Le résultat de la calibration du débit a été enregistré dans le préréglage" msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "" -"Le résultat de la calibration de la vitesse volumétrique maximale a été " -"enregistré dans le préréglage" +msgstr "Le résultat de la calibration de la vitesse volumétrique maximale a été enregistré dans le préréglage" msgid "When do you need Flow Dynamics Calibration" msgstr "Nécessité de la calibration dynamique du débit" msgid "" -"We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is fully automated and the result will be saved into the printer for future use. You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the " -"filament setting." +"3. If the max volumetric speed or print temperature is changed in the filament setting." msgstr "" -"Nous avons maintenant ajouté l'auto-calibration pour différents filaments, " -"qui est entièrement automatisée et le résultat sera enregistré dans " -"l'imprimante pour une utilisation future. Vous n'avez besoin d'effectuer la " -"calibration que dans les cas limités suivants :\n" -"1. Si vous utilisez un nouveau filament de marques/modèles différents ou si " -"le filament est humide\n" +"Nous avons maintenant ajouté l'auto-calibration pour différents filaments, qui est entièrement automatisée et le résultat sera enregistré dans l'imprimante pour une utilisation future. Vous n'avez besoin d'effectuer la calibration que dans les cas limités suivants :\n" +"1. Si vous utilisez un nouveau filament de marques/modèles différents ou si le filament est humide\n" "2. Si la buse est usée ou remplacée par une neuve\n" -"3. Si la vitesse volumétrique maximale ou la température d'impression est " -"modifiée dans les préréglages du filament." +"3. Si la vitesse volumétrique maximale ou la température d'impression est modifiée dans les préréglages du filament." msgid "About this calibration" msgstr "À propos de cette calibration" @@ -15452,134 +12240,54 @@ msgstr "À propos de cette calibration" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/" -"material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/material print, with the \"flow dynamics calibration\" option checked in the print start menu, the printer will follow the old way, calibrate the filament before the print; When you start a multi color/material print, the printer will use the default compensation parameter for the filament during every filament switch which will have a good result in most cases.\n" "\n" -"Please note that there are a few cases that can make the calibration results " -"unreliable, such as insufficient adhesion on the build plate. Improving " -"adhesion can be achieved by washing the build plate or applying glue. For " -"more information on this topic, please refer to our Wiki.\n" +"Please note that there are a few cases that can make the calibration results unreliable, such as insufficient adhesion on the build plate. Improving adhesion can be achieved by washing the build plate or applying glue. For more information on this topic, please refer to our Wiki.\n" "\n" -"The calibration results have about 10 percent jitter in our test, which may " -"cause the result not exactly the same in each calibration. We are still " -"investigating the root cause to do improvements with new updates." +"The calibration results have about 10 percent jitter in our test, which may cause the result not exactly the same in each calibration. We are still investigating the root cause to do improvements with new updates." msgstr "" -"Vous trouverez les détails de l'étalonnage de la dynamique des flux dans " -"notre wiki.\n" +"Vous trouverez les détails de l'étalonnage de la dynamique des débits dans notre wiki.\n" "\n" -"En général, la calibration n’est pas nécessaire. Lorsque vous démarrez une " -"impression mono-couleur/matériau, avec l’option « calibration de la " -"dynamique de flux » cochée dans le menu de démarrage de l’impression, " -"l’imprimante suivra l’ancienne méthode, en calibrant le filament avant " -"l’impression ; Lorsque vous démarrez une impression multi-couleur/matériau, " -"l’imprimante utilisera le paramètre de compensation par défaut pour le " -"filament lors de chaque changement de filament, ce qui donnera un bon " -"résultat dans la plupart des cas.\n" +"En général, la calibration n’est pas nécessaire. Lorsque vous démarrez une impression mono-couleur/matériau, avec l’option « calibration de la dynamique de flux » cochée dans le menu de démarrage de l’impression, l’imprimante suivra l’ancienne méthode, en calibrant le filament avant l’impression ; Lorsque vous démarrez une impression multi-couleur/matériau, l’imprimante utilisera le paramètre de compensation par défaut pour le filament lors de chaque changement de filament, ce qui donnera un bon résultat dans la plupart des cas.\n" "\n" -"Veuillez noter qu’il existe quelques cas qui peuvent rendre les résultats de " -"la calibration peu fiables, tels qu’une adhérence insuffisante sur le " -"plateau. Il est possible d’améliorer l’adhérence en lavant la plaque de " -"construction ou en appliquant de la colle. Pour plus d’informations à ce " -"sujet, veuillez consulter notre Wiki.\n" +"Veuillez noter qu’il existe quelques cas qui peuvent rendre les résultats de la calibration peu fiables, tels qu’une adhérence insuffisante sur le plateau. Il est possible d’améliorer l’adhérence en lavant la plaque de construction ou en appliquant de la colle. Pour plus d’informations à ce sujet, veuillez consulter notre Wiki.\n" "\n" -"Les résultats de la calibration présentent une fluctuation d’environ 10 % " -"dans notre test, ce qui peut entraîner une différence entre les résultats de " -"chaque calibration. Nous continuons d’étudier la cause première afin " -"d’apporter des améliorations lors des nouvelles mises à jour." +"Les résultats de la calibration présentent une fluctuation d’environ 10 % dans notre test, ce qui peut entraîner une différence entre les résultats de chaque calibration. Nous continuons d’étudier la cause première afin d’apporter des améliorations lors des nouvelles mises à jour." msgid "When to use Flow Rate Calibration" msgstr "Nécessité de la calibration du débit" msgid "" -"After using Flow Dynamics Calibration, there might still be some extrusion " -"issues, such as:\n" -"1. Over-Extrusion: Excess material on your printed object, forming blobs or " -"zits, or the layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " -"top layer of the model, even when printing slowly.\n" +"After using Flow Dynamics Calibration, there might still be some extrusion issues, such as:\n" +"1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the layers seem thicker than expected and not uniform.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" -"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " -"they should be." +"4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be." msgstr "" -"Après avoir utilisé la calibration dynamique du débit, il peut encore y " -"avoir des problèmes d'extrusion, tels que :\n" -"1. Sur-extrusion : Excès de matière sur votre objet imprimé, formant des " -"gouttes ou des boutons, ou si les couches semblent plus épaisses que prévu " -"et non uniformes.\n" -"2. Sous-extrusion : Couches très fines, une faible solidité du remplissage " -"ou des espaces dans la couche supérieure du modèle, même si l'impression est " -"lente\n" -"3. Mauvaise qualité de surface : Si la surface de vos impressions semble " -"rugueuse ou inégale.\n" -"4. Faible intégrité structurelle : Impressions qui cassent facilement ou ne " -"semblent pas aussi solides qu'elles le devraient." +"Après avoir utilisé la calibration dynamique du débit, il peut encore y avoir des problèmes d'extrusion, tels que :\n" +"1. Sur-extrusion : Excès de matière sur votre objet imprimé, formant des gouttes ou des boutons, ou si les couches semblent plus épaisses que prévu et non uniformes.\n" +"2. Sous-extrusion : Couches très fines, une faible solidité du remplissage ou des espaces dans la couche supérieure du modèle, même si l'impression est lente\n" +"3. Mauvaise qualité de surface : Si la surface de vos impressions semble rugueuse ou inégale.\n" +"4. Faible intégrité structurelle : Impressions qui cassent facilement ou ne semblent pas aussi solides qu'elles le devraient." + +msgid "In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC planes. These materials expand greatly when heated, and calibration provides a useful reference flow rate." +msgstr "De plus, la calibration du débit est cruciale pour les matériaux dotés de la technologie de mousse active comme le LW-PLA utilisés dans les avions RC. Ces matériaux se dilatent considérablement lorsqu'ils sont chauffés et la calibration fournit un débit de référence utile." + +msgid "Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. The default setting works well in Bambu Lab printers and official filaments as they were pre-calibrated and fine-tuned. For a regular filament, you usually won't need to perform a Flow Rate Calibration unless you still see the listed defects after you have done other calibrations. For more details, please check out the wiki article." +msgstr "La calibration du débit mesure le ratio entre les volumes d’extrusion attendus et réels. Le réglage par défaut fonctionne bien sur les imprimantes Bambu Lab et les filaments officiels car ils ont été pré-calibrés et affinés. Pour un filament ordinaire, vous n’aurez généralement pas besoin d’effectuer une calibration du débit à moins que vous ne voyiez toujours les défauts répertoriés après avoir effectué d’autres calibrations. Pour plus de détails, veuillez consulter l’article du wiki." msgid "" -"In addition, Flow Rate Calibration is crucial for foaming materials like LW-" -"PLA used in RC planes. These materials expand greatly when heated, and " -"calibration provides a useful reference flow rate." +"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring the calibration patterns. However, please be advised that the efficacy and accuracy of this method may be compromised with specific types of materials. Particularly, filaments that are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish may not be suitable for this calibration and can produce less-than-desirable results.\n" +"\n" +"The calibration results may vary between each calibration or filament. We are still improving the accuracy and compatibility of this calibration through firmware updates over time.\n" +"\n" +"Caution: Flow Rate Calibration is an advanced process, to be attempted only by those who fully understand its purpose and implications. Incorrect usage can lead to sub-par prints or printer damage. Please make sure to carefully read and understand the process before doing it." msgstr "" -"De plus, la calibration du débit est cruciale pour les matériaux dotés de la " -"technologie de mousse active comme le LW-PLA utilisés dans les avions RC. " -"Ces matériaux se dilatent considérablement lorsqu'ils sont chauffés et la " -"calibration fournit un débit de référence utile." - -msgid "" -"Flow Rate Calibration measures the ratio of expected to actual extrusion " -"volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." -msgstr "" -"La calibration du débit mesure le ratio entre les volumes d’extrusion " -"attendus et réels. Le réglage par défaut fonctionne bien sur les imprimantes " -"Bambu Lab et les filaments officiels car ils ont été pré-calibrés et " -"affinés. Pour un filament ordinaire, vous n’aurez généralement pas besoin " -"d’effectuer une calibration du débit à moins que vous ne voyiez toujours les " -"défauts répertoriés après avoir effectué d’autres calibrations. Pour plus de " -"détails, veuillez consulter l’article du wiki." - -msgid "" -"Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, " -"directly measuring the calibration patterns. However, please be advised that " -"the efficacy and accuracy of this method may be compromised with specific " -"types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"La calibration automatique du débit utilise la technologie Micro-Lidar de Bambu Lab, mesurant directement les modèles de calibration. Cependant, veuillez noter que l’efficacité et la précision de cette méthode peuvent être compromises avec des types de matériaux spécifiques. En particulier, les filaments qui sont transparents ou semi-transparents, à particules scintillantes ou qui ont une finition hautement réfléchissante peuvent ne pas convenir à cette calibration et peuvent produire des résultats moins que souhaitables.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"Les résultats d’étalonnage peuvent varier entre chaque calibration ou filament. Nous améliorons toujours la précision et la compatibilité de cette calibration grâce aux mises à jour du firmware au fil du temps.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only " -"by those who fully understand its purpose and implications. Incorrect usage " -"can lead to sub-par prints or printer damage. Please make sure to carefully " -"read and understand the process before doing it." -msgstr "" -"La calibration automatique du débit utilise la technologie Micro-Lidar de " -"Bambu Lab, mesurant directement les modèles de calibration. Cependant, " -"veuillez noter que l’efficacité et la précision de cette méthode peuvent " -"être compromises avec des types de matériaux spécifiques. En particulier, " -"les filaments qui sont transparents ou semi-transparents, à particules " -"scintillantes ou qui ont une finition hautement réfléchissante peuvent ne " -"pas convenir à cette calibration et peuvent produire des résultats moins que " -"souhaitables.\n" -"\n" -"Les résultats d’étalonnage peuvent varier entre chaque calibration ou " -"filament. Nous améliorons toujours la précision et la compatibilité de cette " -"calibration grâce aux mises à jour du firmware au fil du temps.\n" -"\n" -"Attention : la calibration du débit est un processus avancé, qui ne doit " -"être tenté que par ceux qui comprennent parfaitement son objectif et ses " -"implications. Une utilisation incorrecte peut entraîner des impressions de " -"qualité inférieure ou endommager l’imprimante. Assurez-vous de lire " -"attentivement et de comprendre le processus avant de le faire." +"Attention : la calibration du débit est un processus avancé, qui ne doit être tenté que par ceux qui comprennent parfaitement son objectif et ses implications. Une utilisation incorrecte peut entraîner des impressions de qualité inférieure ou endommager l’imprimante. Assurez-vous de lire attentivement et de comprendre le processus avant de le faire." msgid "When you need Max Volumetric Speed Calibration" msgstr "Nécessité de la calibration de la vitesse volumétrique maximale" @@ -15588,9 +12296,7 @@ msgid "Over-extrusion or under extrusion" msgstr "Sur-extrusion ou sous-extrusion" msgid "Max Volumetric Speed calibration is recommended when you print with:" -msgstr "" -"La calibration de la vitesse volumétrique maximale est recommandée lorsque " -"vous imprimez avec :" +msgstr "La calibration de la vitesse volumétrique maximale est recommandée lorsque vous imprimez avec :" msgid "material with significant thermal shrinkage/expansion, such as..." msgstr "un matériau avec un retrait/dilatation thermique important, tel que…" @@ -15599,39 +12305,25 @@ msgid "materials with inaccurate filament diameter" msgstr "des matériaux avec un diamètre de filament imprécis" msgid "We found the best Flow Dynamics Calibration Factor" -msgstr "" -"Nous avons trouvé le meilleur facteur de calibration dynamique du débit" +msgstr "Nous avons trouvé le meilleur facteur de calibration dynamique du débit" -msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." -msgstr "" -"Une partie de la calibration a échoué ! Vous pouvez nettoyer le plateau et " -"réessayer. Le résultat du test échoué serai abandonné." +msgid "Part of the calibration failed! You may clean the plate and retry. The failed test result would be dropped." +msgstr "Une partie de la calibration a échoué ! Vous pouvez nettoyer le plateau et réessayer. Le résultat du test échoué serai abandonné." -msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" -msgstr "" -"*Nous vous recommandons d’ajouter la marque, la matière, le type et même le " -"niveau d’humidité dans le nom" +msgid "*We recommend you to add brand, materia, type, and even humidity level in the Name" +msgstr "*Nous vous recommandons d’ajouter la marque, la matière, le type et même le niveau d’humidité dans le nom" msgid "Failed" msgstr "Échoué" msgid "Please enter the name you want to save to printer." -msgstr "" -"Veuillez saisir le nom que vous souhaitez enregistrer sur l’imprimante." +msgstr "Veuillez saisir le nom que vous souhaitez enregistrer sur l’imprimante." msgid "The name cannot exceed 40 characters." msgstr "Le nom ne peut pas dépasser 40 caractères." -msgid "" -"Only one of the results with the same name will be saved. Are you sure you " -"want to override the other results?" -msgstr "" -"Seul un des résultats portant le même nom sera enregistré. Êtes-vous sûr de " -"vouloir annuler les autres résultats ?" +msgid "Only one of the results with the same name will be saved. Are you sure you want to override the other results?" +msgstr "Seul un des résultats portant le même nom sera enregistré. Êtes-vous sûr de vouloir annuler les autres résultats ?" msgid "Please find the best line on your plate" msgstr "Veuillez trouver la meilleure ligne sur votre plateau" @@ -15673,9 +12365,7 @@ msgid "Please find the best object on your plate" msgstr "Veuillez trouver le meilleur objet sur votre plateau" msgid "Fill in the value above the block with smoothest top surface" -msgstr "" -"Remplissez la valeur au-dessus du bloc avec la surface supérieure la plus " -"lisse" +msgstr "Remplissez la valeur au-dessus du bloc avec la surface supérieure la plus lisse" msgid "Skip Calibration2" msgstr "Ignorer la Calibration 2" @@ -15691,8 +12381,7 @@ msgid "Please choose a block with smoothest top surface." msgstr "Veuillez choisir un bloc avec la surface supérieure la plus lisse." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" -msgstr "" -"Veuillez entrer une valeur valide (0 <= Vitesse volumétrique max <= 60)" +msgstr "Veuillez entrer une valeur valide (0 <= Vitesse volumétrique max <= 60)" msgid "Calibration Type" msgstr "Type de calibration" @@ -15706,12 +12395,8 @@ msgstr "Calibration précise basée sur le ratio du débit" msgid "Title" msgstr "Titre" -msgid "" -"A test model will be printed. Please clear the build plate and place it back " -"to the hot bed before calibration." -msgstr "" -"Un modèle de test sera imprimé. Veuillez nettoyer le plateau avant la " -"calibration." +msgid "A test model will be printed. Please clear the build plate and place it back to the hot bed before calibration." +msgstr "Un modèle de test sera imprimé. Veuillez nettoyer le plateau avant la calibration." msgid "Printing Parameters" msgstr "Paramètres d’impression" @@ -15735,8 +12420,7 @@ msgid "" msgstr "" "Conseils pour le matériau de calibration :\n" "- Matériaux pouvant partager la même température du plateau\n" -"- Différentes marques et familles de filaments (Marque = Bambu, Famille = " -"Basique, Mat)" +"- Différentes marques et familles de filaments (Marque = Bambu, Famille = Basique, Mat)" msgid "Pattern" msgstr "Motif" @@ -15764,9 +12448,7 @@ msgid "Step value" msgstr "Intervalle" msgid "The nozzle diameter has been synchronized from the printer Settings" -msgstr "" -"Le diamètre de la buse a été synchronisé à partir des paramètres de " -"l’imprimante" +msgstr "Le diamètre de la buse a été synchronisé à partir des paramètres de l’imprimante" msgid "From Volumetric Speed" msgstr "Depuis la vitesse volumétrique" @@ -15794,8 +12476,7 @@ msgstr "Action" #, c-format, boost-format msgid "This machine type can only hold %d history results per nozzle." -msgstr "" -"Ce type de machine ne peut contenir que %d résultats historiques par buse." +msgstr "Ce type de machine ne peut contenir que %d résultats historiques par buse." msgid "Edit Flow Dynamics Calibration" msgstr "Editer la calibration dynamique du débit" @@ -15991,9 +12672,7 @@ msgid "Upload to Printer Host with the following filename:" msgstr "Envoyer vers l’imprimante avec le nom de fichier suivant :" msgid "Use forward slashes ( / ) as a directory separator if needed." -msgstr "" -"Utilisez des barres obliques ( / ) comme séparateur de répertoire si " -"nécessaire." +msgstr "Utilisez des barres obliques ( / ) comme séparateur de répertoire si nécessaire." msgid "Upload to storage" msgstr "Envoyer vers le stockage" @@ -16003,9 +12682,7 @@ msgstr "Passer à l’onglet Appareil après le téléchargement." #, c-format, boost-format msgid "Upload filename doesn't end with \"%s\". Do you wish to continue?" -msgstr "" -"Le nom du fichier envoyé ne se termine pas par \"%s\". Souhaitez-vous " -"continuer ?" +msgstr "Le nom du fichier envoyé ne se termine pas par \"%s\". Souhaitez-vous continuer ?" msgid "Upload" msgstr "Envoyer" @@ -16048,8 +12725,7 @@ msgid "Error uploading to print host" msgstr "Erreur lors de l’envoi vers l’hôte d’impression" msgid "Unable to perform boolean operation on selected parts" -msgstr "" -"Impossible d’effectuer une opération booléenne sur les pièces sélectionnées" +msgstr "Impossible d’effectuer une opération booléenne sur les pièces sélectionnées" msgid "Mesh Boolean" msgstr "Opérations booléennes" @@ -16142,9 +12818,7 @@ msgid "Add Filament Preset under this filament" msgstr "Ajouter un préréglage de filament sous ce filament" msgid "We could create the filament presets for your following printer:" -msgstr "" -"Nous pourrions créer les préréglages de filaments pour votre imprimante " -"suivante :" +msgstr "Nous pourrions créer les préréglages de filaments pour votre imprimante suivante :" msgid "Select Vendor" msgstr "Sélectionner le fournisseur" @@ -16174,60 +12848,39 @@ msgid "Create" msgstr "Créer" msgid "Vendor is not selected, please reselect vendor." -msgstr "" -"Le fournisseur n’est pas sélectionné, veuillez le sélectionner à nouveau." +msgstr "Le fournisseur n’est pas sélectionné, veuillez le sélectionner à nouveau." msgid "Custom vendor is not input, please input custom vendor." -msgstr "" -"Le fournisseur personnalisé n’est pas saisi, veuillez saisir le fournisseur " -"personnalisé." +msgstr "Le fournisseur personnalisé n’est pas saisi, veuillez saisir le fournisseur personnalisé." -msgid "" -"\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." -msgstr "" -"« Bambu » ou « Générique » ne peuvent pas être utilisés comme fournisseur de " -"filaments personnalisés." +msgid "\"Bambu\" or \"Generic\" can not be used as a Vendor for custom filaments." +msgstr "« Bambu » ou « Générique » ne peuvent pas être utilisés comme fournisseur de filaments personnalisés." msgid "Filament type is not selected, please reselect type." -msgstr "" -"Le type de filament n’est pas sélectionné, veuillez resélectionner le type." +msgstr "Le type de filament n’est pas sélectionné, veuillez resélectionner le type." msgid "Filament serial is not inputed, please input serial." -msgstr "" -"Le numéro de série du filament n’est pas saisi, veuillez saisir le numéro de " -"série." +msgstr "Le numéro de série du filament n’est pas saisi, veuillez saisir le numéro de série." -msgid "" -"There may be escape characters in the vendor or serial input of filament. " -"Please delete and re-enter." -msgstr "" -"Il peut y avoir des caractères d’échappement dans l’entrée du fournisseur ou " -"du numéro de série du filament. Veuillez les supprimer et les saisir à " -"nouveau." +msgid "There may be escape characters in the vendor or serial input of filament. Please delete and re-enter." +msgstr "Il peut y avoir des caractères d’échappement dans l’entrée du fournisseur ou du numéro de série du filament. Veuillez les supprimer et les saisir à nouveau." msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." -msgstr "" -"Toutes les entrées dans le vendeur ou le numéro de série personnalisé sont " -"des espaces. Veuillez les saisir à nouveau." +msgstr "Toutes les entrées dans le vendeur ou le numéro de série personnalisé sont des espaces. Veuillez les saisir à nouveau." msgid "The vendor can not be a number. Please re-enter." msgstr "Le vendeur ne peut pas être un numéro. Veuillez le saisir à nouveau." -msgid "" -"You have not selected a printer or preset yet. Please select at least one." -msgstr "" -"Vous n’avez pas encore sélectionné d’imprimante ou de préréglage. Veuillez " -"en sélectionner au moins un." +msgid "You have not selected a printer or preset yet. Please select at least one." +msgstr "Vous n’avez pas encore sélectionné d’imprimante ou de préréglage. Veuillez en sélectionner au moins un." #, c-format, boost-format msgid "" "The Filament name %s you created already exists. \n" -"If you continue creating, the preset created will be displayed with its full " -"name. Do you want to continue?" +"If you continue creating, the preset created will be displayed with its full name. Do you want to continue?" msgstr "" "Le nom de filament %s que vous avez créé existe déjà. \n" -"Si vous continuez la création, le réglage créé sera affiché avec son nom " -"complet. Voulez-vous continuer ?" +"Si vous continuez la création, le réglage créé sera affiché avec son nom complet. Voulez-vous continuer ?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Certains préréglages existants n’ont pas été créés, comme suit :\n" @@ -16240,14 +12893,11 @@ msgstr "" "Voulez-vous le réécrire ?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" -"Nous renommerions les préréglages en « Vendor Type Serial @printer you " -"selected ». \n" -"Pour ajouter des préréglages pour d’autres imprimantes, veuillez aller à la " -"sélection de l’imprimante." +"Nous renommerions les préréglages en « Vendor Type Serial @printer you selected ». \n" +"Pour ajouter des préréglages pour d’autres imprimantes, veuillez aller à la sélection de l’imprimante." msgid "Create Printer/Nozzle" msgstr "Créer une imprimante/buse" @@ -16311,14 +12961,10 @@ msgid "The file exceeds %d MB, please import again." msgstr "Le fichier dépasse %d MB, veuillez réimporter." msgid "Exception in obtaining file size, please import again." -msgstr "" -"Exception dans l’obtention de la taille du fichier, veuillez importer à " -"nouveau." +msgstr "Exception dans l’obtention de la taille du fichier, veuillez importer à nouveau." msgid "Preset path is not find, please reselect vendor." -msgstr "" -"Le chemin d’accès prédéfini n’est pas trouvé, veuillez resélectionner le " -"vendeur." +msgstr "Le chemin d’accès prédéfini n’est pas trouvé, veuillez resélectionner le vendeur." msgid "The printer model was not found, please reselect." msgstr "Le modèle d’imprimante n’a pas été trouvé, veuillez resélectionner." @@ -16344,40 +12990,24 @@ msgstr "Modèle de préréglage de traitement" msgid "Back Page 1" msgstr "Retour à la page 1" -msgid "" -"You have not yet chosen which printer preset to create based on. Please " -"choose the vendor and model of the printer" -msgstr "" -"Vous n’avez pas encore choisi le préréglage de l’imprimante sur lequel " -"créer. Veuillez choisir le fournisseur et le modèle de l’imprimante" +msgid "You have not yet chosen which printer preset to create based on. Please choose the vendor and model of the printer" +msgstr "Vous n’avez pas encore choisi le préréglage de l’imprimante sur lequel créer. Veuillez choisir le fournisseur et le modèle de l’imprimante" -msgid "" -"You have entered an illegal input in the printable area section on the first " -"page. Please check before creating it." -msgstr "" -"Vous avez introduit une donnée illégale dans la section « zone imprimable » " -"de la première page. Veuillez vérifier avant de la créer." +msgid "You have entered an illegal input in the printable area section on the first page. Please check before creating it." +msgstr "Vous avez introduit une donnée illégale dans la section « zone imprimable » de la première page. Veuillez vérifier avant de la créer." msgid "The custom printer or model is not inputed, place input." -msgstr "" -"L’imprimante ou le modèle personnalisé n’est pas saisi, placer la saisie." +msgstr "L’imprimante ou le modèle personnalisé n’est pas saisi, placer la saisie." msgid "" -"The printer preset you created already has a preset with the same name. Do " -"you want to overwrite it?\n" -"\tYes: Overwrite the printer preset with the same name, and filament and " -"process presets with the same preset name will be recreated \n" -"and filament and process presets without the same preset name will be " -"reserve.\n" +"The printer preset you created already has a preset with the same name. Do you want to overwrite it?\n" +"\tYes: Overwrite the printer preset with the same name, and filament and process presets with the same preset name will be recreated \n" +"and filament and process presets without the same preset name will be reserve.\n" "\tCancel: Do not create a preset, return to the creation interface." msgstr "" -"Le préréglage d’imprimante que vous avez créé possède déjà un préréglage " -"portant le même nom. Voulez-vous l’écraser ?\n" -"\tOui : écraser le préréglage d’imprimante portant le même nom, et les " -"préréglages de filament et de traitement portant le même nom de préréglage " -"seront recréés. \n" -"et les préréglages de filament et de processus sans le même nom de " -"préréglage seront réservés.\n" +"Le préréglage d’imprimante que vous avez créé possède déjà un préréglage portant le même nom. Voulez-vous l’écraser ?\n" +"\tOui : écraser le préréglage d’imprimante portant le même nom, et les préréglages de filament et de traitement portant le même nom de préréglage seront recréés. \n" +"et les préréglages de filament et de processus sans le même nom de préréglage seront réservés.\n" "\tAnnuler : Ne pas créer de préréglage, revenir à l’interface de création." msgid "You need to select at least one filament preset." @@ -16398,36 +13028,20 @@ msgstr "Le vendeur n’est pas trouvé, veuillez resélectionner." msgid "Current vendor has no models, please reselect." msgstr "Le vendeur actuel n’a pas de modèle, veuillez resélectionner." -msgid "" -"You have not selected the vendor and model or inputed the custom vendor and " -"model." -msgstr "" -"Vous n’avez pas sélectionné le fournisseur et le modèle ou introduit le " -"fournisseur et le modèle personnalisés." +msgid "You have not selected the vendor and model or inputed the custom vendor and model." +msgstr "Vous n’avez pas sélectionné le fournisseur et le modèle ou introduit le fournisseur et le modèle personnalisés." -msgid "" -"There may be escape characters in the custom printer vendor or model. Please " -"delete and re-enter." -msgstr "" -"Il peut y avoir des caractères d’échappement dans le fournisseur ou le " -"modèle de l’imprimante personnalisée. Veuillez les supprimer et les saisir à " -"nouveau." +msgid "There may be escape characters in the custom printer vendor or model. Please delete and re-enter." +msgstr "Il peut y avoir des caractères d’échappement dans le fournisseur ou le modèle de l’imprimante personnalisée. Veuillez les supprimer et les saisir à nouveau." -msgid "" -"All inputs in the custom printer vendor or model are spaces. Please re-enter." -msgstr "" -"Toutes les entrées dans le modèle ou le fournisseur de l’imprimante " -"personnalisée sont des espaces. Veuillez les saisir à nouveau." +msgid "All inputs in the custom printer vendor or model are spaces. Please re-enter." +msgstr "Toutes les entrées dans le modèle ou le fournisseur de l’imprimante personnalisée sont des espaces. Veuillez les saisir à nouveau." msgid "Please check bed printable shape and origin input." -msgstr "" -"Veuillez vérifier la forme imprimable du plateau et l’entrée de l’origine." +msgstr "Veuillez vérifier la forme imprimable du plateau et l’entrée de l’origine." -msgid "" -"You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" -"Vous n’avez pas encore sélectionné l’imprimante pour remplacer la buse, " -"veuillez choisir." +msgid "You have not yet selected the printer to replace the nozzle, please choose." +msgstr "Vous n’avez pas encore sélectionné l’imprimante pour remplacer la buse, veuillez choisir." msgid "Create Printer Successful" msgstr "Création d’une imprimante réussie" @@ -16439,40 +13053,28 @@ msgid "Printer Created" msgstr "Imprimante créée" msgid "Please go to printer settings to edit your presets" -msgstr "" -"Veuillez aller dans les paramètres de l’imprimante pour modifier vos " -"préréglages." +msgstr "Veuillez aller dans les paramètres de l’imprimante pour modifier vos préréglages." msgid "Filament Created" msgstr "Filament créé" msgid "" "Please go to filament setting to edit your presets if you need.\n" -"Please note that nozzle temperature, hot bed temperature, and maximum " -"volumetric speed has a significant impact on printing quality. Please set " -"them carefully." +"Please note that nozzle temperature, hot bed temperature, and maximum volumetric speed has a significant impact on printing quality. Please set them carefully." msgstr "" -"Si vous le souhaitez, vous pouvez modifier vos préréglages dans les " -"paramètres du filament.\n" -"Veuillez noter que la température de la buse, la température du plateau " -"chaud et la vitesse volumétrique maximale ont un impact significatif sur la " -"qualité d’impression. Veuillez les régler avec soin." +"Si vous le souhaitez, vous pouvez modifier vos préréglages dans les paramètres du filament.\n" +"Veuillez noter que la température de la buse, la température du plateau chaud et la vitesse volumétrique maximale ont un impact significatif sur la qualité d’impression. Veuillez les régler avec soin." msgid "" "\n" "\n" -"Orca has detected that your user presets synchronization function is not " -"enabled, which may result in unsuccessful Filament settings on the Device " -"page. \n" +"Orca has detected that your user presets synchronization function is not enabled, which may result in unsuccessful Filament settings on the Device page. \n" "Click \"Sync user presets\" to enable the synchronization function." msgstr "" "\n" "\n" -"Studio a détecté que la fonction de synchronisation des réglages utilisateur " -"n’est pas activée, ce qui peut entraîner l’échec des réglages du filament " -"sur la page Device. \n" -"Cliquez sur «  Synchroniser les réglages prédéfinis de l’utilisateur «  pour " -"activer la fonction de synchronisation." +"Studio a détecté que la fonction de synchronisation des réglages utilisateur n’est pas activée, ce qui peut entraîner l’échec des réglages du filament sur la page Device. \n" +"Cliquez sur «  Synchroniser les réglages prédéfinis de l’utilisateur «  pour activer la fonction de synchronisation." msgid "Printer Setting" msgstr "Réglage de l’imprimante" @@ -16512,22 +13114,17 @@ msgstr "Exportation réussie" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" -"If not, a time suffix will be added, and you can modify the name after " -"creation." +"The '%s' folder already exists in the current directory. Do you want to clear it and rebuild it.\n" +"If not, a time suffix will be added, and you can modify the name after creation." msgstr "" -"Le dossier ‘%s’ existe déjà dans le répertoire actuel. Voulez-vous l’effacer " -"et le reconstruire ?\n" -"Si ce n’est pas le cas, un suffixe temporel sera ajouté, et vous pourrez " -"modifier le nom après la création." +"Le dossier ‘%s’ existe déjà dans le répertoire actuel. Voulez-vous l’effacer et le reconstruire ?\n" +"Si ce n’est pas le cas, un suffixe temporel sera ajouté, et vous pourrez modifier le nom après la création." msgid "" "Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" -"Imprimante et tous les préréglages de filament et de traitement qui " -"appartiennent à l’imprimante. \n" +"Imprimante et tous les préréglages de filament et de traitement qui appartiennent à l’imprimante. \n" "Peut être partagé avec d’autres." msgid "" @@ -16537,45 +13134,28 @@ msgstr "" "Préréglage du remplissage par l’utilisateur. \n" "Peut être partagé avec d’autres." -msgid "" -"Only display printer names with changes to printer, filament, and process " -"presets." -msgstr "" -"N’afficher que les noms d’imprimantes avec les modifications apportées aux " -"préréglages de l’imprimante, du filament et du traitement." +msgid "Only display printer names with changes to printer, filament, and process presets." +msgstr "N’afficher que les noms d’imprimantes avec les modifications apportées aux préréglages de l’imprimante, du filament et du traitement." msgid "Only display the filament names with changes to filament presets." -msgstr "" -"N’affichez que les noms des filaments lorsque vous modifiez les préréglages " -"des filaments." +msgstr "N’affichez que les noms des filaments lorsque vous modifiez les préréglages des filaments." -msgid "" -"Only printer names with user printer presets will be displayed, and each " -"preset you choose will be exported as a zip." -msgstr "" -"Seuls les noms d’imprimantes avec des préréglages d’imprimante utilisateur " -"seront affichés, et chaque préréglage que vous choisissez sera exporté sous " -"forme de fichier zip." +msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip." +msgstr "Seuls les noms d’imprimantes avec des préréglages d’imprimante utilisateur seront affichés, et chaque préréglage que vous choisissez sera exporté sous forme de fichier zip." msgid "" "Only the filament names with user filament presets will be displayed, \n" -"and all user filament presets in each filament name you select will be " -"exported as a zip." +"and all user filament presets in each filament name you select will be exported as a zip." msgstr "" -"Seuls les noms de filaments contenant des préréglages de filaments " -"utilisateur seront affichés, \n" -"et tous les préréglages de filament d’utilisateur dans chaque nom de " -"filament que vous sélectionnez seront exportés sous forme de fichier zip." +"Seuls les noms de filaments contenant des préréglages de filaments utilisateur seront affichés, \n" +"et tous les préréglages de filament d’utilisateur dans chaque nom de filament que vous sélectionnez seront exportés sous forme de fichier zip." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be " -"exported as a zip." +"and all user process presets in each printer name you select will be exported as a zip." msgstr "" -"Seuls les noms d’imprimantes dont les préréglages de traitement ont été " -"modifiés seront affichés, \n" -"et tous les préréglages de processus de l’utilisateur dans chaque nom " -"d’imprimante que vous sélectionnez seront exportés sous forme de fichier zip." +"Seuls les noms d’imprimantes dont les préréglages de traitement ont été modifiés seront affichés, \n" +"et tous les préréglages de processus de l’utilisateur dans chaque nom d’imprimante que vous sélectionnez seront exportés sous forme de fichier zip." msgid "Please select at least one printer or filament." msgstr "Veuillez sélectionner au moins une imprimante ou un filament." @@ -16584,9 +13164,7 @@ msgid "Please select a type you want to export" msgstr "Veuillez sélectionner le type de produit que vous souhaitez exporter" msgid "Failed to create temporary folder, please try Export Configs again." -msgstr "" -"Échec de la création d’un dossier temporaire, veuillez réessayer d’exporter " -"les configurations." +msgstr "Échec de la création d’un dossier temporaire, veuillez réessayer d’exporter les configurations." msgid "Edit Filament" msgstr "Modifier le filament" @@ -16594,16 +13172,11 @@ msgstr "Modifier le filament" msgid "Filament presets under this filament" msgstr "Préréglages du filament sous ce filament" -msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." -msgstr "" -"Remarque : si le seul préréglage sous ce filament est supprimé, le filament " -"sera supprimé après avoir quitté la boîte de dialogue." +msgid "Note: If the only preset under this filament is deleted, the filament will be deleted after exiting the dialog." +msgstr "Remarque : si le seul préréglage sous ce filament est supprimé, le filament sera supprimé après avoir quitté la boîte de dialogue." msgid "Presets inherited by other presets can not be deleted" -msgstr "" -"Les préréglages hérités d’autres préréglages ne peuvent pas être supprimés." +msgstr "Les préréglages hérités d’autres préréglages ne peuvent pas être supprimés." msgid "The following presets inherits this preset." msgid_plural "The following preset inherits this preset." @@ -16627,13 +13200,10 @@ msgstr "Supprimer le filament" msgid "" "All the filament presets belong to this filament would be deleted. \n" -"If you are using this filament on your printer, please reset the filament " -"information for that slot." +"If you are using this filament on your printer, please reset the filament information for that slot." msgstr "" -"Tous les préréglages de filaments appartenant à ce filament seront " -"supprimés. \n" -"Si vous utilisez ce filament sur votre imprimante, veuillez réinitialiser " -"les informations relatives au filament pour cet emplacement." +"Tous les préréglages de filaments appartenant à ce filament seront supprimés. \n" +"Si vous utilisez ce filament sur votre imprimante, veuillez réinitialiser les informations relatives au filament pour cet emplacement." msgid "Delete filament" msgstr "Supprimer le filament" @@ -16648,9 +13218,7 @@ msgid "Copy preset from filament" msgstr "Copier le préréglage du filament" msgid "The filament choice not find filament preset, please reselect it" -msgstr "" -"Le choix du filament ne correspond pas à la présélection du filament, " -"veuillez le resélectionner." +msgstr "Le choix du filament ne correspond pas à la présélection du filament, veuillez le resélectionner." msgid "[Delete Required]" msgstr "[Suppression requise]" @@ -16671,12 +13239,8 @@ msgstr "Astuces quotidiennes" msgid "nozzle memorized: %.1f %s" msgstr "buse mémorisée : %.1f %s" -msgid "" -"Your nozzle diameter in preset is not consistent with memorized nozzle " -"diameter. Did you change your nozzle lately?" -msgstr "" -"Le diamètre de la buse dans le préréglage ne correspond pas au diamètre de " -"la buse mémorisé. Avez-vous changé de buse récemment ?" +msgid "Your nozzle diameter in preset is not consistent with memorized nozzle diameter. Did you change your nozzle lately?" +msgstr "Le diamètre de la buse dans le préréglage ne correspond pas au diamètre de la buse mémorisé. Avez-vous changé de buse récemment ?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" @@ -16688,12 +13252,8 @@ msgstr "Nécessité de sélectionner une imprimante" msgid "The start, end or step is not valid value." msgstr "Le début, la fin ou l’intervalle n’est pas une valeur valide." -msgid "" -"Unable to calibrate: maybe because the set calibration value range is too " -"large, or the step is too small" -msgstr "" -"Impossible de calibrer : il est possible que la plage de valeurs de " -"calibrage définie est trop grande ou que l’intervalle est trop petit" +msgid "Unable to calibrate: maybe because the set calibration value range is too large, or the step is too small" +msgstr "Impossible de calibrer : il est possible que la plage de valeurs de calibrage définie est trop grande ou que l’intervalle est trop petit" msgid "Physical Printer" msgstr "Imprimante Physique" @@ -16714,47 +13274,32 @@ msgid "Refresh Printers" msgstr "Actualiser les imprimantes" msgid "View print host webui in Device tab" -msgstr "" -"Afficher l’interface web de l’hôte d’impression dans l’onglet Périphérique" +msgstr "Afficher l’interface web de l’hôte d’impression dans l’onglet Périphérique" msgid "Replace the BambuLab's device tab with print host webui" msgstr "Remplacer l’onglet device de BambuLab par print host webui" -msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." -msgstr "" -"Le fichier CA HTTPS est facultatif. Il n'est nécessaire que si vous utilisez " -"HTTPS avec un certificat auto-signé." +msgid "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed certificate." +msgstr "Le fichier CA HTTPS est facultatif. Il n'est nécessaire que si vous utilisez HTTPS avec un certificat auto-signé." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "" -"Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" +msgstr "Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" msgid "Open CA certificate file" msgstr "Ouvrir le fichier de certificat CA" #, c-format, boost-format -msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." -msgstr "" -"Sur ce système, %s utilise les certificats HTTPS du magasin de certificats " -"du système ou du trousseau." +msgid "On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." +msgstr "Sur ce système, %s utilise les certificats HTTPS du magasin de certificats du système ou du trousseau." -msgid "" -"To use a custom CA file, please import your CA file into Certificate Store / " -"Keychain." -msgstr "" -"Pour utiliser un certificat personnalisé, veuillez importer votre fichier " -"dans magasin de certificats / trousseau." +msgid "To use a custom CA file, please import your CA file into Certificate Store / Keychain." +msgstr "Pour utiliser un certificat personnalisé, veuillez importer votre fichier dans magasin de certificats / trousseau." msgid "Login/Test" msgstr "Connexion/Test" msgid "Connection to printers connected via the print host failed." -msgstr "" -"La connexion aux imprimantes connectées via l’hôte d’impression a échoué." +msgstr "La connexion aux imprimantes connectées via l’hôte d’impression a échoué." #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -16788,19 +13333,13 @@ msgid "Upload not enabled on FlashAir card." msgstr "Le téléchargement n’est pas activé sur la carte FlashAir." msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "" -"La connexion à FlashAir fonctionne correctement et le téléchargement est " -"activé." +msgstr "La connexion à FlashAir fonctionne correctement et le téléchargement est activé." msgid "Could not connect to FlashAir" msgstr "Impossible de se connecter à FlashAir" -msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " -"is required." -msgstr "" -"Note : FlashAir avec le firmware 2.00.02 ou plus récent et la fonction de " -"téléchargement activée sont nécessaires." +msgid "Note: FlashAir with firmware 2.00.02 or newer and activated upload function is required." +msgstr "Note : FlashAir avec le firmware 2.00.02 ou plus récent et la fonction de téléchargement activée sont nécessaires." msgid "Connection to MKS works correctly." msgstr "La connexion à MKS fonctionne correctement." @@ -16845,9 +13384,7 @@ msgstr "%1% : pas d’espace libre" #. TRN %1% = host #, boost-format msgid "Upload has failed. There is no suitable storage found at %1%." -msgstr "" -"Le téléchargement a échoué. Aucun espace de stockage approprié n’a été " -"trouvé à %1%." +msgstr "Le téléchargement a échoué. Aucun espace de stockage approprié n’a été trouvé à %1%." msgid "Connection to Prusa Connect works correctly." msgstr "La connexion à Prusa Connect fonctionne correctement." @@ -16892,285 +13429,89 @@ msgstr "" "Corps du message : « %1% »\n" "Erreur : « %2% »" -msgid "" -"It has a small layer height, and results in almost negligible layer lines " -"and high printing quality. It is suitable for most general printing cases." -msgstr "" -"Sa faible hauteur de couche permet d’obtenir des lignes de couche presque " -"négligeables et une grande qualité d’impression. Il convient à la plupart " -"des cas d’impression générale." +msgid "It has a small layer height, and results in almost negligible layer lines and high printing quality. It is suitable for most general printing cases." +msgstr "Sa faible hauteur de couche permet d’obtenir des lignes de couche presque négligeables et une grande qualité d’impression. Il convient à la plupart des cas d’impression générale." -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " -"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " -"much higher printing quality, but a much longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,2 mm, la vitesse et " -"l’accélération sont plus faibles, et le motif de remplissage épars est " -"gyroïde. Il en résulte donc une qualité d’impression nettement supérieure, " -"mais un temps d’impression beaucoup plus long." +msgid "Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in much higher printing quality, but a much longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,2 mm, la vitesse et l’accélération sont plus faibles, et le motif de remplissage épars est gyroïde. Il en résulte donc une qualité d’impression nettement supérieure, mais un temps d’impression beaucoup plus long." -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " -"bigger layer height, and results in almost negligible layer lines, and " -"slightly shorter printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,2 mm, il présente une " -"hauteur de couche légèrement supérieure, ce qui se traduit par des lignes de " -"couche presque négligeables et un temps d’impression légèrement plus court." +msgid "Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer height, and results in almost negligible layer lines, and slightly shorter printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,2 mm, il présente une hauteur de couche légèrement supérieure, ce qui se traduit par des lignes de couche presque négligeables et un temps d’impression légèrement plus court." -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " -"height, and results in slightly visible layer lines, but shorter printing " -"time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,2 mm, il présente une " -"hauteur de couche plus importante, ce qui se traduit par des lignes de " -"couche légèrement visibles, mais un temps d’impression plus court." +msgid "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height, and results in slightly visible layer lines, but shorter printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,2 mm, il présente une hauteur de couche plus importante, ce qui se traduit par des lignes de couche légèrement visibles, mais un temps d’impression plus court." -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"height, and results in almost invisible layer lines and higher printing " -"quality, but shorter printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,2 mm, il présente une " -"hauteur de couche plus petite, ce qui permet d’obtenir des lignes de couche " -"presque invisibles et une qualité d’impression supérieure, mais aussi un " -"temps d’impression plus court." +msgid "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height, and results in almost invisible layer lines and higher printing quality, but shorter printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,2 mm, il présente une hauteur de couche plus petite, ce qui permet d’obtenir des lignes de couche presque invisibles et une qualité d’impression supérieure, mais aussi un temps d’impression plus court." -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in almost invisible layer lines and much higher " -"printing quality, but much longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,2 mm, il présente des " -"lignes de couche plus petites, des vitesses et des accélérations plus " -"faibles, et le motif de remplissage clairsemé est gyroïde. Il en résulte " -"donc des lignes de couche presque invisibles et une qualité d’impression " -"bien supérieure, mais un temps d’impression bien plus long." +msgid "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in almost invisible layer lines and much higher printing quality, but much longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,2 mm, il présente des lignes de couche plus petites, des vitesses et des accélérations plus faibles, et le motif de remplissage clairsemé est gyroïde. Il en résulte donc des lignes de couche presque invisibles et une qualité d’impression bien supérieure, mais un temps d’impression bien plus long." -msgid "" -"Compared with the default profile of 0.2 mm nozzle, it has a smaller layer " -"height, and results in minimal layer lines and higher printing quality, but " -"shorter printing time." -msgstr "" -"Par rapport au profil par défaut de la buse de 0,2 mm, il présente une " -"hauteur de couche plus petite, ce qui se traduit par des lignes de couche " -"minimales et une qualité d’impression supérieure, mais aussi par un temps " -"d’impression plus court." +msgid "Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height, and results in minimal layer lines and higher printing quality, but shorter printing time." +msgstr "Par rapport au profil par défaut de la buse de 0,2 mm, il présente une hauteur de couche plus petite, ce qui se traduit par des lignes de couche minimales et une qualité d’impression supérieure, mais aussi par un temps d’impression plus court." -msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in minimal layer lines and much higher printing " -"quality, but much longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,2 mm, il présente des " -"lignes de couche plus petites, des vitesses et des accélérations plus " -"faibles, et le motif de remplissage clairsemé est gyroïde. Il en résulte " -"donc des lignes de couche minimales et une qualité d’impression nettement " -"supérieure, mais un temps d’impression beaucoup plus long." +msgid "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer lines, lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in minimal layer lines and much higher printing quality, but much longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,2 mm, il présente des lignes de couche plus petites, des vitesses et des accélérations plus faibles, et le motif de remplissage clairsemé est gyroïde. Il en résulte donc des lignes de couche minimales et une qualité d’impression nettement supérieure, mais un temps d’impression beaucoup plus long." -msgid "" -"It has a general layer height, and results in general layer lines and " -"printing quality. It is suitable for most general printing cases." -msgstr "" -"Il présente une hauteur de couche générale, ce qui se traduit par des lignes " -"de couche et une qualité d’impression générales. Il convient à la plupart " -"des cas d’impression générale." +msgid "It has a general layer height, and results in general layer lines and printing quality. It is suitable for most general printing cases." +msgstr "Il présente une hauteur de couche générale, ce qui se traduit par des lignes de couche et une qualité d’impression générales. Il convient à la plupart des cas d’impression générale." -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has more wall loops " -"and a higher sparse infill density. So, it results in higher strength of the " -"prints, but more filament consumption and longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,4 mm, il présente plus de " -"boucles de paroi et une densité de remplissage clairsemée plus élevée. Il en " -"résulte donc une plus grande solidité des impressions, mais une plus grande " -"consommation de filament et un temps d’impression plus long." +msgid "Compared with the default profile of a 0.4 mm nozzle, it has more wall loops and a higher sparse infill density. So, it results in higher strength of the prints, but more filament consumption and longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,4 mm, il présente plus de boucles de paroi et une densité de remplissage clairsemée plus élevée. Il en résulte donc une plus grande solidité des impressions, mais une plus grande consommation de filament et un temps d’impression plus long." -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " -"height, and results in more apparent layer lines and lower printing quality, " -"but slightly shorter printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une " -"hauteur de couche plus importante, ce qui se traduit par des lignes de " -"couche plus apparentes et une qualité d’impression moindre, mais un temps " -"d’impression légèrement plus court." +msgid "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but slightly shorter printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une hauteur de couche plus importante, ce qui se traduit par des lignes de couche plus apparentes et une qualité d’impression moindre, mais un temps d’impression légèrement plus court." -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " -"height, and results in more apparent layer lines and lower printing quality, " -"but shorter printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une " -"hauteur de couche plus importante, ce qui se traduit par des lignes de " -"couche plus apparentes et une qualité d’impression moindre, mais un temps " -"d’impression plus court." +msgid "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une hauteur de couche plus importante, ce qui se traduit par des lignes de couche plus apparentes et une qualité d’impression moindre, mais un temps d’impression plus court." -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une " -"hauteur de couche plus petite, ce qui se traduit par des lignes de couche " -"moins apparentes et une meilleure qualité d’impression, mais un temps " -"d’impression plus long." +msgid "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une hauteur de couche plus petite, ce qui se traduit par des lignes de couche moins apparentes et une meilleure qualité d’impression, mais un temps d’impression plus long." -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in less apparent layer lines and much higher printing " -"quality, but much longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une " -"hauteur de couche plus petite, des vitesses et des accélérations plus " -"faibles, et le motif de remplissage clairsemé est gyroïde. Il en résulte " -"donc des lignes de couche moins apparentes et une qualité d’impression " -"beaucoup plus élevée, mais un temps d’impression beaucoup plus long." +msgid "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in less apparent layer lines and much higher printing quality, but much longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une hauteur de couche plus petite, des vitesses et des accélérations plus faibles, et le motif de remplissage clairsemé est gyroïde. Il en résulte donc des lignes de couche moins apparentes et une qualité d’impression beaucoup plus élevée, mais un temps d’impression beaucoup plus long." -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and higher printing " -"quality, but longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une " -"hauteur de couche plus petite, ce qui permet d’obtenir des lignes de couche " -"presque négligeables et une meilleure qualité d’impression, mais un temps " -"d’impression plus long." +msgid "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and higher printing quality, but longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une hauteur de couche plus petite, ce qui permet d’obtenir des lignes de couche presque négligeables et une meilleure qualité d’impression, mais un temps d’impression plus long." -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in almost negligible layer lines and much higher " -"printing quality, but much longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une " -"hauteur de couche plus petite, des vitesses et des accélérations plus " -"faibles, et le motif de remplissage clairsemé est gyroïde. Il en résulte " -"donc des lignes de couche presque négligeables et une qualité d’impression " -"bien supérieure, mais un temps d’impression bien plus long." +msgid "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, lower speeds and acceleration, and the sparse infill pattern is Gyroid. So, it results in almost negligible layer lines and much higher printing quality, but much longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une hauteur de couche plus petite, des vitesses et des accélérations plus faibles, et le motif de remplissage clairsemé est gyroïde. Il en résulte donc des lignes de couche presque négligeables et une qualité d’impression bien supérieure, mais un temps d’impression bien plus long." -msgid "" -"Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing " -"time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une " -"hauteur de couche plus petite, ce qui se traduit par des lignes de couche " -"presque négligeables et un temps d’impression plus long." +msgid "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,4 mm, il présente une hauteur de couche plus petite, ce qui se traduit par des lignes de couche presque négligeables et un temps d’impression plus long." -msgid "" -"It has a big layer height, and results in apparent layer lines and ordinary " -"printing quality and printing time." -msgstr "" -"La hauteur de couche est importante, ce qui se traduit par des lignes de " -"couche apparentes et une qualité et un temps d’impression ordinaires." +msgid "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time." +msgstr "La hauteur de couche est importante, ce qui se traduit par des lignes de couche apparentes et une qualité et un temps d’impression ordinaires." -msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has more wall loops " -"and a higher sparse infill density. So, it results in higher strength of the " -"prints, but more filament consumption and longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,6 mm, il présente plus de " -"boucles de paroi et une densité de remplissage clairsemée plus élevée. Il en " -"résulte donc une plus grande solidité des impressions, mais une plus grande " -"consommation de filament et un temps d’impression plus long." +msgid "Compared with the default profile of a 0.6 mm nozzle, it has more wall loops and a higher sparse infill density. So, it results in higher strength of the prints, but more filament consumption and longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,6 mm, il présente plus de boucles de paroi et une densité de remplissage clairsemée plus élevée. Il en résulte donc une plus grande solidité des impressions, mais une plus grande consommation de filament et un temps d’impression plus long." -msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in more apparent layer lines and lower printing quality, " -"but shorter printing time in some printing cases." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,6 mm, il présente une " -"hauteur de couche plus importante, ce qui se traduit par des lignes de " -"couche plus apparentes et une qualité d’impression moindre, mais un temps " -"d’impression plus court dans certains cas d’impression." +msgid "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases." +msgstr "Par rapport au profil par défaut d’une buse de 0,6 mm, il présente une hauteur de couche plus importante, ce qui se traduit par des lignes de couche plus apparentes et une qualité d’impression moindre, mais un temps d’impression plus court dans certains cas d’impression." -msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower " -"printing quality, but shorter printing time in some printing cases." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,6 mm, il présente une " -"hauteur de couche plus importante, ce qui se traduit par des lignes de " -"couche beaucoup plus apparentes et une qualité d’impression beaucoup plus " -"faible, mais un temps d’impression plus court dans certains cas d’impression." +msgid "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases." +msgstr "Par rapport au profil par défaut d’une buse de 0,6 mm, il présente une hauteur de couche plus importante, ce qui se traduit par des lignes de couche beaucoup plus apparentes et une qualité d’impression beaucoup plus faible, mais un temps d’impression plus court dans certains cas d’impression." -msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and slight higher printing " -"quality, but longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,6 mm, il présente une " -"hauteur de couche plus petite, ce qui se traduit par des lignes de couche " -"moins apparentes et une qualité d’impression légèrement supérieure, mais un " -"temps d’impression plus long." +msgid "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,6 mm, il présente une hauteur de couche plus petite, ce qui se traduit par des lignes de couche moins apparentes et une qualité d’impression légèrement supérieure, mais un temps d’impression plus long." -msgid "" -"Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,6 mm, il présente une " -"hauteur de couche plus petite, ce qui se traduit par des lignes de couche " -"moins apparentes et une meilleure qualité d’impression, mais un temps " -"d’impression plus long." +msgid "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time." +msgstr "Par rapport au profil par défaut d’une buse de 0,6 mm, il présente une hauteur de couche plus petite, ce qui se traduit par des lignes de couche moins apparentes et une meilleure qualité d’impression, mais un temps d’impression plus long." -msgid "" -"It has a very big layer height, and results in very apparent layer lines, " -"low printing quality and general printing time." -msgstr "" -"La hauteur des couches est très importante, ce qui se traduit par des lignes " -"de couche très apparentes, une qualité d’impression médiocre et un temps " -"d’impression général." +msgid "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time." +msgstr "La hauteur des couches est très importante, ce qui se traduit par des lignes de couche très apparentes, une qualité d’impression médiocre et un temps d’impression général." -msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " -"height, and results in very apparent layer lines and much lower printing " -"quality, but shorter printing time in some printing cases." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,8 mm, il présente une " -"hauteur de couche plus importante, ce qui se traduit par des lignes de " -"couche très apparentes et une qualité d’impression nettement inférieure, " -"mais un temps d’impression plus court dans certains cas d’impression." +msgid "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases." +msgstr "Par rapport au profil par défaut d’une buse de 0,8 mm, il présente une hauteur de couche plus importante, ce qui se traduit par des lignes de couche très apparentes et une qualité d’impression nettement inférieure, mais un temps d’impression plus court dans certains cas d’impression." -msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " -"layer height, and results in extremely apparent layer lines and much lower " -"printing quality, but much shorter printing time in some printing cases." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,8 mm, il présente une " -"hauteur de couche beaucoup plus importante, ce qui se traduit par des lignes " -"de couche extrêmement apparentes et une qualité d’impression beaucoup plus " -"faible, mais un temps d’impression beaucoup plus court dans certains cas " -"d’impression." +msgid "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer height, and results in extremely apparent layer lines and much lower printing quality, but much shorter printing time in some printing cases." +msgstr "Par rapport au profil par défaut d’une buse de 0,8 mm, il présente une hauteur de couche beaucoup plus importante, ce qui se traduit par des lignes de couche extrêmement apparentes et une qualité d’impression beaucoup plus faible, mais un temps d’impression beaucoup plus court dans certains cas d’impression." -msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a slightly " -"smaller layer height, and results in slightly less but still apparent layer " -"lines and slightly higher printing quality, but longer printing time in some " -"printing cases." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,8 mm, il présente une " -"hauteur de couche légèrement inférieure, ce qui se traduit par des lignes de " -"couche légèrement moins nombreuses mais toujours apparentes et par une " -"qualité d’impression légèrement supérieure, mais par un temps d’impression " -"plus long dans certains cas d’impression." +msgid "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases." +msgstr "Par rapport au profil par défaut d’une buse de 0,8 mm, il présente une hauteur de couche légèrement inférieure, ce qui se traduit par des lignes de couche légèrement moins nombreuses mais toujours apparentes et par une qualité d’impression légèrement supérieure, mais par un temps d’impression plus long dans certains cas d’impression." -msgid "" -"Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " -"height, and results in less but still apparent layer lines and slightly " -"higher printing quality, but longer printing time in some printing cases." -msgstr "" -"Par rapport au profil par défaut d’une buse de 0,8 mm, il présente une " -"hauteur de couche plus petite, ce qui se traduit par des lignes de couche " -"moins nombreuses mais toujours apparentes et une qualité d’impression " -"légèrement supérieure, mais un temps d’impression plus long dans certains " -"cas d’impression." +msgid "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and results in less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases." +msgstr "Par rapport au profil par défaut d’une buse de 0,8 mm, il présente une hauteur de couche plus petite, ce qui se traduit par des lignes de couche moins nombreuses mais toujours apparentes et une qualité d’impression légèrement supérieure, mais un temps d’impression plus long dans certains cas d’impression." msgid "Connected to Obico successfully!" msgstr "Connexion à Obico réussie !" @@ -17191,9 +13532,7 @@ msgid "Unknown error" msgstr "Erreur inconnue" msgid "SimplyPrint account not linked. Go to Connect options to set it up." -msgstr "" -"Le compte SimplyPrint n’est pas lié. Allez dans les options de connexion " -"pour le configurer." +msgstr "Le compte SimplyPrint n’est pas lié. Allez dans les options de connexion pour le configurer." msgid "Connection to Flashforge works correctly." msgstr "La connexion à Flashforge fonctionne correctement." @@ -17205,14 +13544,10 @@ msgid "The provided state is not correct." msgstr "L’état communiqué n’est pas correct." msgid "Please give the required permissions when authorizing this application." -msgstr "" -"Veuillez donner les autorisations nécessaires lorsque vous autorisez cette " -"application." +msgstr "Veuillez donner les autorisations nécessaires lorsque vous autorisez cette application." msgid "Something unexpected happened when trying to log in, please try again." -msgstr "" -"Un événement inattendu s’est produit lors de la connexion, veuillez " -"réessayer." +msgstr "Un événement inattendu s’est produit lors de la connexion, veuillez réessayer." msgid "User cancelled." msgstr "L’utilisateur a annulé." @@ -17220,24 +13555,18 @@ msgstr "L’utilisateur a annulé." #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" -"Did you know that turning on precise wall can improve precision and layer " -"consistency?" +"Did you know that turning on precise wall can improve precision and layer consistency?" msgstr "" "Paroi précise\n" -"Saviez-vous que l’activation de la paroi précise peut améliorer la précision " -"et l’homogénéité des couches ?" +"Saviez-vous que l’activation de la paroi précise peut améliorer la précision et l’homogénéité des couches ?" #: resources/data/hints.ini: [hint:Sandwich mode] msgid "" "Sandwich mode\n" -"Did you know that you can use sandwich mode (inner-outer-inner) to improve " -"precision and layer consistency if your model doesn't have very steep " -"overhangs?" +"Did you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" msgstr "" "Mode sandwich\n" -"Saviez-vous que vous pouvez utiliser le mode sandwich (intérieur-extérieur-" -"intérieur) pour améliorer la précision et la cohérence des couches si votre " -"modèle n’a pas de porte-à-faux très prononcés ?" +"Saviez-vous que vous pouvez utiliser le mode sandwich (intérieur-extérieur-intérieur) pour améliorer la précision et la cohérence des couches si votre modèle n’a pas de porte-à-faux très prononcés ?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -17250,12 +13579,10 @@ msgstr "" #: resources/data/hints.ini: [hint:Calibration] msgid "" "Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our " -"beloved calibration solution in OrcaSlicer." +"Did you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." msgstr "" "Calibrage\n" -"Saviez-vous que le calibrage de votre imprimante peut faire des merveilles ? " -"Découvrez notre solution de calibrage bien-aimée dans OrcaSlicer." +"Saviez-vous que le calibrage de votre imprimante peut faire des merveilles ? Découvrez notre solution de calibrage bien-aimée dans OrcaSlicer." #: resources/data/hints.ini: [hint:Auxiliary fan] msgid "" @@ -17263,8 +13590,7 @@ msgid "" "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" msgstr "" "Ventilateur auxiliaire\n" -"Saviez-vous qu’OrcaSlicer prend en charge le ventilateur auxiliaire de " -"refroidissement des pièces ?" +"Saviez-vous qu’OrcaSlicer prend en charge le ventilateur auxiliaire de refroidissement des pièces ?" #: resources/data/hints.ini: [hint:Air filtration] msgid "" @@ -17272,8 +13598,7 @@ msgid "" "Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" msgstr "" "Filtration de l’air/ventilateur d’extraction\n" -"Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/le " -"ventilateur d’extraction ?" +"Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/le ventilateur d’extraction ?" #: resources/data/hints.ini: [hint:G-code window] msgid "" @@ -17281,59 +13606,47 @@ msgid "" "You can turn on/off the G-code window by pressing the C key." msgstr "" "Fenêtre de G-code\n" -"Vous pouvez activer/désactiver la fenêtre G-code en appuyant sur la touche " -"C." +"Vous pouvez activer/désactiver la fenêtre G-code en appuyant sur la touche C." #: resources/data/hints.ini: [hint:Switch workspaces] msgid "" "Switch workspaces\n" -"You can switch between Prepare and Preview workspaces by " -"pressing the Tab key." +"You can switch between Prepare and Preview workspaces by pressing the Tab key." msgstr "" "Changer les espaces de travail\n" -"Vous pouvez alterner entre l’espace de travail Préparer et Aperçu en appuyant sur la touche Tab." +"Vous pouvez alterner entre l’espace de travail Préparer et Aperçu en appuyant sur la touche Tab." #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " -"3D scene operations." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." msgstr "" "Comment utiliser les raccourcis clavier\n" -"Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " -"d’opérations sur les scènes 3D." +"Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et d’opérations sur les scènes 3D." #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" msgstr "" "Parois inversées sur couches impaires\n" -"Saviez-vous que la fonction Parois inversées sur couches impaires " -"peut améliorer de manière significative la qualité de la surface de vos " -"surplombs ?" +"Saviez-vous que la fonction Parois inversées sur couches impaires peut améliorer de manière significative la qualité de la surface de vos surplombs ?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" +"Did you know that you can cut a model at any angle and position with the cutting tool?" msgstr "" "Outil de découpe\n" -"Saviez-vous que vous pouvez découper un modèle à n'importe quel angle et " -"dans n'importe quelle position avec l'outil de découpe ?" +"Saviez-vous que vous pouvez découper un modèle à n'importe quel angle et dans n'importe quelle position avec l'outil de découpe ?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" "Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -"problems on the Windows system?" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" msgstr "" "Réparer un modèle\n" -"Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " -"nombreux problèmes de découpage sur le système Windows ?" +"Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de nombreux problèmes de découpage sur le système Windows ?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -17341,8 +13654,7 @@ msgid "" "Did you know that you can generate a timelapse video during each print?" msgstr "" "Timelapse\n" -"Saviez-vous que vous pouvez générer une vidéo en timelapse à chaque " -"impression ?" +"Saviez-vous que vous pouvez générer une vidéo en timelapse à chaque impression ?" #: resources/data/hints.ini: [hint:Auto-Arrange] msgid "" @@ -17350,214 +13662,153 @@ msgid "" "Did you know that you can auto-arrange all objects in your project?" msgstr "" "Agencement Automatique\n" -"Saviez-vous que vous pouvez agencement automatiquement tous les objets de " -"votre projet ?" +"Saviez-vous que vous pouvez agencement automatiquement tous les objets de votre projet ?" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for printing by a simple click?" msgstr "" "Orientation Automatique\n" -"Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " -"optimale pour l'impression d'un simple clic ?" +"Saviez-vous que vous pouvez faire pivoter des objets dans une orientation optimale pour l'impression d'un simple clic ?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." +"Did you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." msgstr "" "Poser sur une face\n" -"Saviez-vous qu'il est possible d'orienter rapidement un modèle de manière à " -"ce que l'une de ses faces repose sur le plateau d'impression ? Sélectionnez " -"la fonction « Placer sur la face » ou appuyez sur la touche F." +"Saviez-vous qu'il est possible d'orienter rapidement un modèle de manière à ce que l'une de ses faces repose sur le plateau d'impression ? Sélectionnez la fonction « Placer sur la face » ou appuyez sur la touche F." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts in a list and change settings for each object/part?" msgstr "" "Liste d'objets\n" -"Saviez-vous que vous pouvez afficher tous les objets/pièces dans une liste " -"et modifier les paramètres de chaque objet/pièce ?" +"Saviez-vous que vous pouvez afficher tous les objets/pièces dans une liste et modifier les paramètres de chaque objet/pièce ?" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" "Search Functionality\n" -"Did you know that you use the Search tool to quickly find a specific Orca " -"Slicer setting?" +"Did you know that you use the Search tool to quickly find a specific Orca Slicer setting?" msgstr "" "Fonctionnalité de recherche\n" -"Saviez-vous que vous pouvez utiliser l’outil de recherche pour trouver " -"rapidement un paramètre spécifique de l’Orca Slicer ?" +"Saviez-vous que vous pouvez utiliser l’outil de recherche pour trouver rapidement un paramètre spécifique de l’Orca Slicer ?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the " -"Simplify mesh feature? Right-click the model and select Simplify model." +"Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." msgstr "" "Simplifier le modèle\n" -"Saviez-vous que vous pouviez réduire le nombre de triangles dans un maillage " -"à l’aide de la fonction Simplifier le maillage ? Cliquez avec le bouton " -"droit de la souris sur le modèle et sélectionnez Simplifier le modèle." +"Saviez-vous que vous pouviez réduire le nombre de triangles dans un maillage à l’aide de la fonction Simplifier le maillage ? Cliquez avec le bouton droit de la souris sur le modèle et sélectionnez Simplifier le modèle." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts on a table and change settings for each object/part?" msgstr "" "Tableau des paramètres de découpe\n" -"Saviez-vous que vous pouvez afficher tous les objets/pièces sur un tableau " -"et modifier les paramètres de chaque objet/pièce ?" +"Saviez-vous que vous pouvez afficher tous les objets/pièces sur un tableau et modifier les paramètres de chaque objet/pièce ?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" +"Did you know that you can split a big object into small ones for easy colorizing or printing?" msgstr "" "Séparer en objets/parties\n" -"Saviez-vous que vous pouvez séparer un gros objet en petits objets pour les " -"colorier ou les imprimer facilement ?" +"Saviez-vous que vous pouvez séparer un gros objet en petits objets pour les colorier ou les imprimer facilement ?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer." +"Did you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." msgstr "" "Soustraire une pièce\n" -"Saviez-vous que vous pouviez soustraire un maillage d’un autre à l’aide du " -"modificateur de partie négative ? De cette façon, vous pouvez, par exemple, " -"créer des trous facilement redimensionnables directement dans Orca Slicer." +"Saviez-vous que vous pouviez soustraire un maillage d’un autre à l’aide du modificateur de partie négative ? De cette façon, vous pouvez, par exemple, créer des trous facilement redimensionnables directement dans Orca Slicer." #: resources/data/hints.ini: [hint:STEP] msgid "" "STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file " -"instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" +"Did you know that you can improve your print quality by slicing a STEP file instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" msgstr "" "STEP\n" -"Saviez-vous que vous pouvez améliorer votre qualité d'impression en " -"découpant un fichier .step au lieu d'un .stl ?\n" -"Orca Slicer prend en charge le découpage des fichiers .step, offrant des " -"résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" +"Saviez-vous que vous pouvez améliorer votre qualité d'impression en découpant un fichier .step au lieu d'un .stl ?\n" +"Orca Slicer prend en charge le découpage des fichiers .step, offrant des résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" msgstr "" "Emplacement de la couture Z\n" -"Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, et " -"même la peindre manuelle sur votre impression pour le placer dans un endroit " -"moins visible ? Cela améliore l'aspect général de votre modèle. Jetez-y un " -"coup d'œil !" +"Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, et même la peindre manuelle sur votre impression pour le placer dans un endroit moins visible ? Cela améliore l'aspect général de votre modèle. Jetez-y un coup d'œil !" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." msgstr "" "Réglage fin du débit\n" -"Saviez-vous que le débit peut être réglé avec précision pour obtenir des " -"impressions encore plus belles ? En fonction du matériau, vous pouvez " -"améliorer la finition générale du modèle imprimé en procédant à un réglage " -"fin." +"Saviez-vous que le débit peut être réglé avec précision pour obtenir des impressions encore plus belles ? En fonction du matériau, vous pouvez améliorer la finition générale du modèle imprimé en procédant à un réglage fin." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." +"Did you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." msgstr "" "Divisez vos impressions en plateaux\n" -"Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " -"pièces en plateaux individuels prêts à être imprimés ? Cela simplifie le " -"processus de suivi de toutes les pièces." +"Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses pièces en plateaux individuels prêts à être imprimés ? Cela simplifie le processus de suivi de toutes les pièces." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" msgstr "" "Accélérez votre impression grâce à la Hauteur de Couche Adaptative\n" -"Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " -"utilisant l'option Adaptive Layer Height ? Jetez-y un coup d'œil !" +"Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en utilisant l'option Adaptive Layer Height ? Jetez-y un coup d'œil !" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." +"Did you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." msgstr "" "Peinture de support\n" -"Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " -"caractéristique permet de placer facilement le matériau de support " -"uniquement sur les sections du modèle qui en ont réellement besoin." +"Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette caractéristique permet de placer facilement le matériau de support uniquement sur les sections du modèle qui en ont réellement besoin." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" msgstr "" "Différents types de supports\n" -"Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? Les " -"supports arborescents fonctionnent parfaitement pour les modèles organiques " -"tout en économisant du filament et en améliorant la vitesse d'impression. " -"Découvrez-les !" +"Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? Les supports arborescents fonctionnent parfaitement pour les modèles organiques tout en économisant du filament et en améliorant la vitesse d'impression. Découvrez-les !" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." +"Did you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." msgstr "" "Impression de filament Soie\n" -"Saviez-vous que le filament soie nécessite une attention particulière pour " -"une impression réussie ? Une température plus élevée et une vitesse plus " -"faible sont toujours recommandées pour obtenir les meilleurs résultats." +"Saviez-vous que le filament soie nécessite une attention particulière pour une impression réussie ? Une température plus élevée et une vitesse plus faible sont toujours recommandées pour obtenir les meilleurs résultats." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" msgstr "" "Bordure pour une meilleure adhésion\n" -"Saviez-vous que lorsque les modèles imprimés ont une faible interface de " -"contact avec la surface d'impression, il est recommandé d'utiliser une " -"bordure ?" +"Saviez-vous que lorsque les modèles imprimés ont une faible interface de contact avec la surface d'impression, il est recommandé d'utiliser une bordure ?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" +"Did you know that you can set slicing parameters for all selected objects at one time?" msgstr "" "Définir les paramètres de plusieurs objets\n" -"Saviez-vous que vous pouvez définir des paramètres de découpe pour tous les " -"objets sélectionnés en une seule fois ?" +"Saviez-vous que vous pouvez définir des paramètres de découpe pour tous les objets sélectionnés en une seule fois ?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" @@ -17570,55 +13821,37 @@ msgstr "" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" msgstr "" "Purger dans les supports/les objets/le remplissage\n" -"Saviez-vous que vous pouvez réduire le filament gaspillé en le purgeant dans " -"les supports/les objets/le remplissage lors des changements de filament ?" +"Saviez-vous que vous pouvez réduire le filament gaspillé en le purgeant dans les supports/les objets/le remplissage lors des changements de filament ?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" msgstr "" "Améliorer la solidité\n" -"Saviez-vous que vous pouvez définir un plus grand nombre de périmètre et une " -"densité de remplissage plus élevée pour améliorer la résistance du modèle ?" +"Saviez-vous que vous pouvez définir un plus grand nombre de périmètre et une densité de remplissage plus élevée pour améliorer la résistance du modèle ?" -#: resources/data/hints.ini: [hint:When need to print with the printer door -#: opened] +#: resources/data/hints.ini: [hint:When need to print with the printer door opened] msgid "" "When need to print with the printer door opened\n" -"Did you know that opening the printer door can reduce the probability of " -"extruder/hotend clogging when printing lower temperature filament with a " -"higher enclosure temperature. More info about this in the Wiki." +"Did you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." msgstr "" "Quand il faut imprimer avec la porte de l’imprimante ouverte\n" -"Saviez-vous que l’ouverture de la porte de l’imprimante peut réduire la " -"probabilité de blocage de l’extrudeuse/du réchauffeur lors de l’impression " -"de filament à basse température avec une température de boîtier plus élevée. " -"Plus d’informations à ce sujet dans le Wiki." +"Saviez-vous que l’ouverture de la porte de l’imprimante peut réduire la probabilité de blocage de l’extrudeuse/du réchauffeur lors de l’impression de filament à basse température avec une température de boîtier plus élevée. Plus d’informations à ce sujet dans le Wiki." #: resources/data/hints.ini: [hint:Avoid warping] msgid "" "Avoid warping\n" -"Did you know that when printing materials that are prone to warping such as " -"ABS, appropriately increasing the heatbed temperature can reduce the " -"probability of warping." +"Did you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping." msgstr "" "Éviter la déformation\n" -"Saviez-vous que lors de l’impression de matériaux susceptibles de se " -"déformer, tels que l’ABS, une augmentation appropriée de la température du " -"plateau chauffant peut réduire la probabilité de déformation." +"Saviez-vous que lors de l’impression de matériaux susceptibles de se déformer, tels que l’ABS, une augmentation appropriée de la température du plateau chauffant peut réduire la probabilité de déformation." -#~ msgid "" -#~ "Your object appears to be too large. It will be scaled down to fit the " -#~ "heat bed automatically." -#~ msgstr "" -#~ "Votre objet est trop grand. Il sera automatiquement réduit pour s’adapter " -#~ "au plateau." +#~ msgid "Your object appears to be too large. It will be scaled down to fit the heat bed automatically." +#~ msgstr "Votre objet est trop grand. Il sera automatiquement réduit pour s’adapter au plateau." #~ msgid "Shift+G" #~ msgstr "Shift+G" @@ -17627,181 +13860,65 @@ msgstr "" #~ msgstr "Toutes les flèches" #~ msgid "" -#~ "Enables gap fill for the selected surfaces. The minimum gap length that " -#~ "will be filled can be controlled from the filter out tiny gaps option " -#~ "below.\n" +#~ "Enables gap fill for the selected surfaces. The minimum gap length that will be filled can be controlled from the filter out tiny gaps option below.\n" #~ "\n" #~ "Options:\n" -#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " -#~ "surfaces\n" -#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -#~ "only\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" +#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" #~ "3. Nowhere: Disables gap fill\n" #~ msgstr "" -#~ "Active le remplissage des trous pour les surfaces sélectionnées. La " -#~ "longueur minimale du trou qui sera comblé peut être contrôlée à l’aide de " -#~ "l’option « Filtrer les petits trous » ci-dessous.\n" +#~ "Active le remplissage des trous pour les surfaces sélectionnées. La longueur minimale du trou qui sera comblé peut être contrôlée à l’aide de l’option « Filtrer les petits trous » ci-dessous.\n" #~ "\n" #~ "Options :\n" -#~ "1. Partout : Applique le remplissage des trous aux surfaces pleines " -#~ "supérieures, inférieures et internes.\n" -#~ "2. Surfaces supérieure et inférieure : Remplissage des trous uniquement " -#~ "sur les surfaces supérieures et inférieures.\n" +#~ "1. Partout : Applique le remplissage des trous aux surfaces pleines supérieures, inférieures et internes.\n" +#~ "2. Surfaces supérieure et inférieure : Remplissage des trous uniquement sur les surfaces supérieures et inférieures.\n" #~ "3. Nulle part : Désactive le remplissage des trous\n" -#~ msgid "" -#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " -#~ "material for bridge, to improve sag" -#~ msgstr "" -#~ "Diminuez légèrement cette valeur (par exemple 0,9) pour réduire la " -#~ "quantité de matériaux pour le pont, pour améliorer l'affaissement" +#~ msgid "Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, to improve sag" +#~ msgstr "Diminuez légèrement cette valeur (par exemple 0,9) pour réduire la quantité de matériaux pour le pont, pour améliorer l'affaissement" -#~ msgid "" -#~ "This value governs the thickness of the internal bridge layer. This is " -#~ "the first layer over sparse infill. Decrease this value slightly (for " -#~ "example 0.9) to improve surface quality over sparse infill." -#~ msgstr "" -#~ "Cette valeur détermine l’épaisseur de la couche des ponts internes. Il " -#~ "s’agit de la première couche sur le remplissage. Diminuez légèrement " -#~ "cette valeur (par exemple 0.9) pour améliorer la qualité de la surface " -#~ "sur le remplissage." +#~ msgid "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill." +#~ msgstr "Cette valeur détermine l’épaisseur de la couche des ponts internes. Il s’agit de la première couche sur le remplissage. Diminuez légèrement cette valeur (par exemple 0.9) pour améliorer la qualité de la surface sur le remplissage." -#~ msgid "" -#~ "This factor affects the amount of material for top solid infill. You can " -#~ "decrease it slightly to have smooth surface finish" -#~ msgstr "" -#~ "Ce facteur affecte la quantité de matériau pour le remplissage plein " -#~ "supérieur. Vous pouvez le diminuer légèrement pour avoir une finition de " -#~ "surface lisse" +#~ msgid "This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish" +#~ msgstr "Ce facteur affecte la quantité de matériau pour le remplissage plein supérieur. Vous pouvez le diminuer légèrement pour avoir une finition de surface lisse" #~ msgid "This factor affects the amount of material for bottom solid infill" -#~ msgstr "" -#~ "Ce facteur affecte la quantité de matériau pour le remplissage plein du " -#~ "dessous" +#~ msgstr "Ce facteur affecte la quantité de matériau pour le remplissage plein du dessous" -#~ msgid "" -#~ "Enable this option to slow printing down in areas where potential curled " -#~ "perimeters may exist" -#~ msgstr "" -#~ "Activer cette option pour ralentir l’impression dans les zones où des " -#~ "périmètres potentiellement courbées peuvent exister." +#~ msgid "Enable this option to slow printing down in areas where potential curled perimeters may exist" +#~ msgstr "Activer cette option pour ralentir l’impression dans les zones où des périmètres potentiellement courbées peuvent exister." #~ msgid "Speed of bridge and completely overhang wall" -#~ msgstr "" -#~ "Il s'agit de la vitesse pour les ponts et les parois en surplomb à 100 %." +#~ msgstr "Il s'agit de la vitesse pour les ponts et les parois en surplomb à 100 %." -#~ msgid "" -#~ "Speed of internal bridge. If the value is expressed as a percentage, it " -#~ "will be calculated based on the bridge_speed. Default value is 150%." -#~ msgstr "" -#~ "Vitesse des ponts internes. Si la valeur est exprimée en pourcentage, " -#~ "elle sera calculée en fonction de bridge_speed. La valeur par défaut est " -#~ "150%." - -#, c-format, boost-format -#~ msgid "" -#~ "With increasing print speeds (and hence increasing volumetric flow " -#~ "through the nozzle) and increasing accelerations, it has been observed " -#~ "that the effective PA value typically decreases. This means that a single " -#~ "PA value is not always 100%% optimal for all features and a compromise " -#~ "value is usually used that does not cause too much bulging on features " -#~ "with lower flow speed and accelerations while also not causing gaps on " -#~ "faster features.\n" -#~ "\n" -#~ "This feature aims to address this limitation by modeling the response of " -#~ "your printer's extrusion system depending on the volumetric flow speed " -#~ "and acceleration it is printing at. Internally, it generates a fitted " -#~ "model that can extrapolate the needed pressure advance for any given " -#~ "volumetric flow speed and acceleration, which is then emmited to the " -#~ "printer depending on the current print conditions.\n" -#~ "\n" -#~ "When enabled, the pressure advance value above is overriden. However, a " -#~ "reasonable default value above is strongly recomended to act as a " -#~ "fallback and for when tool changing.\n" -#~ "\n" -#~ msgstr "" -#~ "Avec l’augmentation des vitesses d’impression (et donc du débit " -#~ "volumétrique à travers la buse) et des accélérations, il a été observé " -#~ "que la valeur effective de PA diminue généralement. Cela signifie qu’une " -#~ "valeur PA unique n’est pas toujours optimale à 100%% pour toutes les " -#~ "caractéristiques et qu’une valeur de compromis est généralement utilisée " -#~ "pour éviter de trop gonfler les caractéristiques avec une vitesse " -#~ "d’écoulement et des accélérations plus faibles, tout en évitant de créer " -#~ "des interstices sur les traits plus rapides.\n" -#~ "\n" -#~ "Cette fonction vise à remédier à cette limitation en modélisant la " -#~ "réponse du système d’extrusion de votre imprimante en fonction de la " -#~ "vitesse du flux volumétrique et de l’accélération de l’impression. En " -#~ "interne, elle génère un modèle ajusté qui peut extrapoler l’avance de " -#~ "pression nécessaire pour une vitesse de débit volumétrique et une " -#~ "accélération données, qui est ensuite émise à l’imprimante en fonction " -#~ "des conditions d’impression actuelles.\n" -#~ "\n" -#~ "Lorsqu’elle est activée, la valeur de l’avance de pression ci-dessus est " -#~ "annulée. Cependant, une valeur par défaut raisonnable est fortement " -#~ "recommandée pour servir de solution de secours et en cas de changement " -#~ "d’outil.\n" +#~ msgid "Speed of internal bridge. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." +#~ msgstr "Vitesse des ponts internes. Si la valeur est exprimée en pourcentage, elle sera calculée en fonction de bridge_speed. La valeur par défaut est 150%." #~ msgid "Time to load new filament when switch filament. For statistics only" -#~ msgstr "" -#~ "Il est temps de charger un nouveau filament lors du changement de " -#~ "filament. Pour les statistiques uniquement" +#~ msgstr "Il est temps de charger un nouveau filament lors du changement de filament. Pour les statistiques uniquement" -#~ msgid "" -#~ "Time to unload old filament when switch filament. For statistics only" -#~ msgstr "" -#~ "Il est temps de décharger l'ancien filament lorsque vous changez de " -#~ "filament. Pour les statistiques uniquement" +#~ msgid "Time to unload old filament when switch filament. For statistics only" +#~ msgstr "Il est temps de décharger l'ancien filament lorsque vous changez de filament. Pour les statistiques uniquement" -#~ msgid "" -#~ "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." -#~ msgstr "" -#~ "Temps nécessaire au firmware de l’imprimante (ou au Multi Material Unit " -#~ "2.0) pour charger un nouveau filament lors d’un changement d’outil (lors " -#~ "de l’exécution du code T). Ce temps est ajouté au temps d’impression " -#~ "total par l’estimateur de temps du G-code." +#~ msgid "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." +#~ msgstr "Temps nécessaire au firmware de l’imprimante (ou au Multi Material Unit 2.0) pour charger un nouveau filament lors d’un changement d’outil (lors de l’exécution du code T). Ce temps est ajouté au temps d’impression total par l’estimateur de temps du G-code." -#~ msgid "" -#~ "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." -#~ msgstr "" -#~ "Temps nécessaire au firmware de l’imprimante (ou au Multi Material Unit " -#~ "2.0) pour décharger un filament lors d’un changement d’outil (lors de " -#~ "l’exécution du code T). Ce temps est ajouté au temps d’impression total " -#~ "par l’estimateur de temps du G-code." +#~ msgid "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." +#~ msgstr "Temps nécessaire au firmware de l’imprimante (ou au Multi Material Unit 2.0) pour décharger un filament lors d’un changement d’outil (lors de l’exécution du code T). Ce temps est ajouté au temps d’impression total par l’estimateur de temps du G-code." #~ msgid "Filter out gaps smaller than the threshold specified" #~ msgstr "Filtrer les petits espaces au seuil spécifié." #~ msgid "" -#~ "Enable this option for chamber temperature control. An M191 command will " -#~ "be added before \"machine_start_gcode\"\n" +#~ "Enable this option for chamber temperature control. An M191 command will be added before \"machine_start_gcode\"\n" #~ "G-code commands: M141/M191 S(0-255)" #~ msgstr "" -#~ "Activez cette option pour le contrôle de la température du caisson. Une " -#~ "commande M191 sera ajoutée avant \"machine_start_gcode\"\n" +#~ "Activez cette option pour le contrôle de la température du caisson. Une commande M191 sera ajoutée avant \"machine_start_gcode\"\n" #~ "Commandes G-code : M141/M191 S(0-255)" -#~ msgid "" -#~ "Higher chamber temperature can help suppress or reduce warping and " -#~ "potentially lead to higher interlayer bonding strength for high " -#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " -#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " -#~ "TPU, PVA and other low temperature materials,the actual chamber " -#~ "temperature should not be high to avoid cloggings, so 0 which stands for " -#~ "turning off is highly recommended" -#~ msgstr "" -#~ "Une température de caisson plus élevée peut aider à supprimer ou à " -#~ "réduire la déformation et potentiellement conduire à une force de liaison " -#~ "intercouche plus élevée pour les matériaux à haute température comme " -#~ "l’ABS, l’ASA, le PC, le PA, etc. Dans le même temps, la filtration de " -#~ "l’air de l’ABS et de l’ASA s’aggravera. Pour le PLA, le PETG, le TPU, le " -#~ "PVA et d’autres matériaux à basse température, la température réelle du " -#~ "caisson ne doit pas être élevée pour éviter les bouchages, donc la valeur " -#~ "0 qui signifie éteindre est fortement recommandé." +#~ msgid "Higher chamber temperature can help suppress or reduce warping and potentially lead to higher interlayer bonding strength for high temperature materials like ABS, ASA, PC, PA and so on.At the same time, the air filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and other low temperature materials,the actual chamber temperature should not be high to avoid cloggings, so 0 which stands for turning off is highly recommended" +#~ msgstr "Une température de caisson plus élevée peut aider à supprimer ou à réduire la déformation et potentiellement conduire à une force de liaison intercouche plus élevée pour les matériaux à haute température comme l’ABS, l’ASA, le PC, le PA, etc. Dans le même temps, la filtration de l’air de l’ABS et de l’ASA s’aggravera. Pour le PLA, le PETG, le TPU, le PVA et d’autres matériaux à basse température, la température réelle du caisson ne doit pas être élevée pour éviter les bouchages, donc la valeur 0 qui signifie éteindre est fortement recommandé." #~ msgid "Current association: " #~ msgstr "Association actuelle : " @@ -17812,49 +13929,32 @@ msgstr "" #~ msgid "Not associated to any application" #~ msgstr "N’est associé à aucune application" -#~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "models from Printable.com" -#~ msgstr "" -#~ "Associer OrcaSlicer aux liens prusaslicer:// afin qu’Orca puisse ouvrir " -#~ "des modèles provenant de Printable.com" +#~ msgid "Associate OrcaSlicer with prusaslicer:// links so that Orca can open models from Printable.com" +#~ msgstr "Associer OrcaSlicer aux liens prusaslicer:// afin qu’Orca puisse ouvrir des modèles provenant de Printable.com" #~ msgid "Associate bambustudio://" #~ msgstr "Associer bambustudio://" -#~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " -#~ "models from makerworld.com" -#~ msgstr "" -#~ "Associer OrcaSlicer aux liens bambustudio:// afin qu’Orca puisse ouvrir " -#~ "des modèles provenant de makerworld.com" +#~ msgid "Associate OrcaSlicer with bambustudio:// links so that Orca can open models from makerworld.com" +#~ msgstr "Associer OrcaSlicer aux liens bambustudio:// afin qu’Orca puisse ouvrir des modèles provenant de makerworld.com" #~ msgid "Associate cura://" #~ msgstr "Associer cura://" -#~ msgid "" -#~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " -#~ "thingiverse.com" -#~ msgstr "" -#~ "Associer OrcaSlicer aux liens cura:// pour qu’Orca puisse ouvrir les " -#~ "modèles de thingiverse.com" +#~ msgid "Associate OrcaSlicer with cura:// links so that Orca can open models from thingiverse.com" +#~ msgstr "Associer OrcaSlicer aux liens cura:// pour qu’Orca puisse ouvrir les modèles de thingiverse.com" #~ msgid "Internel error" #~ msgstr "Erreur interne" -#~ msgid "" -#~ "File size exceeds the 100MB upload limit. Please upload your file through " -#~ "the panel." -#~ msgstr "" -#~ "La taille du fichier dépasse la limite de téléchargement de 100 Mo. " -#~ "Veuillez télécharger votre fichier via le panneau." +#~ msgid "File size exceeds the 100MB upload limit. Please upload your file through the panel." +#~ msgstr "La taille du fichier dépasse la limite de téléchargement de 100 Mo. Veuillez télécharger votre fichier via le panneau." #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Veuillez saisir une valeur valide (K entre 0 et 0,3)" #~ msgid "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" -#~ msgstr "" -#~ "Veuillez saisir une valeur valide (K entre 0 et 0,3, N entre 0,6 et 2,0)." +#~ msgstr "Veuillez saisir une valeur valide (K entre 0 et 0,3, N entre 0,6 et 2,0)." #~ msgid "Select connected printetrs (0/6)" #~ msgstr "Sélectionner les imprimantes connectées (0/6)" @@ -17872,71 +13972,28 @@ msgstr "" #~ msgid "" #~ "Please find the details of Flow Dynamics Calibration from our wiki.\n" #~ "\n" -#~ "Usually the calibration is unnecessary. When you start a single color/" -#~ "material print, with the \"flow dynamics calibration\" option checked in " -#~ "the print start menu, the printer will follow the old way, calibrate the " -#~ "filament before the print; When you start a multi color/material print, " -#~ "the printer will use the default compensation parameter for the filament " -#~ "during every filament switch which will have a good result in most " -#~ "cases.\n" +#~ "Usually the calibration is unnecessary. When you start a single color/material print, with the \"flow dynamics calibration\" option checked in the print start menu, the printer will follow the old way, calibrate the filament before the print; When you start a multi color/material print, the printer will use the default compensation parameter for the filament during every filament switch which will have a good result in most cases.\n" #~ "\n" -#~ "Please note there are a few cases that will make the calibration result " -#~ "not reliable: using a texture plate to do the calibration; the build " -#~ "plate does not have good adhesion (please wash the build plate or apply " -#~ "gluestick!) ...You can find more from our wiki.\n" +#~ "Please note there are a few cases that will make the calibration result not reliable: using a texture plate to do the calibration; the build plate does not have good adhesion (please wash the build plate or apply gluestick!) ...You can find more from our wiki.\n" #~ "\n" -#~ "The calibration results have about 10 percent jitter in our test, which " -#~ "may cause the result not exactly the same in each calibration. We are " -#~ "still investigating the root cause to do improvements with new updates." +#~ "The calibration results have about 10 percent jitter in our test, which may cause the result not exactly the same in each calibration. We are still investigating the root cause to do improvements with new updates." #~ msgstr "" -#~ "Veuillez trouver les détails de la calibration dynamique du débit sur " -#~ "notre Wiki.\n" +#~ "Veuillez trouver les détails de la calibration dynamique du débit sur notre Wiki.\n" #~ "\n" -#~ "Habituellement, la calibration est inutile. Lorsque vous démarrez une " -#~ "impression d'une seule couleur/matériau, avec l'option \"Calibration du " -#~ "débit\" cochée dans le menu de démarrage de l'impression, l'imprimante " -#~ "suivra l'ancienne méthode de calibration du filament avant l'impression.\n" -#~ "Lorsque vous démarrez une impression multi-couleurs/matériaux, " -#~ "l'imprimante utilise le paramètre de compensation par défaut pour le " -#~ "filament lors de chaque changement de filament, ce qui donne un bon " -#~ "résultat dans la plupart des cas.\n" +#~ "Habituellement, la calibration est inutile. Lorsque vous démarrez une impression d'une seule couleur/matériau, avec l'option \"Calibration du débit\" cochée dans le menu de démarrage de l'impression, l'imprimante suivra l'ancienne méthode de calibration du filament avant l'impression.\n" +#~ "Lorsque vous démarrez une impression multi-couleurs/matériaux, l'imprimante utilise le paramètre de compensation par défaut pour le filament lors de chaque changement de filament, ce qui donne un bon résultat dans la plupart des cas.\n" #~ "\n" -#~ "Veuillez noter qu'il y a quelques cas qui rendront le résultat de " -#~ "calibration non fiable : utiliser un plateau texturé pour faire la " -#~ "calibration, utiliser un plateau qui n'a pas une bonne adhérence " -#~ "(veuillez dans ce cas laver la plaque de construction ou appliquer de la " -#~ "colle)… Vous pouvez trouver d'autres cas sur notre Wiki.\n" -#~ "Veuillez noter qu'il y a quelques cas qui rendront le résultat de " -#~ "calibration non fiable : utiliser un plateau texturé pour faire la " -#~ "calibration, utiliser un plateau qui n'a pas une bonne adhérence " -#~ "(veuillez dans ce cas laver la plaque de construction ou appliquer de la " -#~ "colle)… Vous pouvez trouver d'autres cas sur notre Wiki.\n" +#~ "Veuillez noter qu'il y a quelques cas qui rendront le résultat de calibration non fiable : utiliser un plateau texturé pour faire la calibration, utiliser un plateau qui n'a pas une bonne adhérence (veuillez dans ce cas laver la plaque de construction ou appliquer de la colle)… Vous pouvez trouver d'autres cas sur notre Wiki.\n" +#~ "Veuillez noter qu'il y a quelques cas qui rendront le résultat de calibration non fiable : utiliser un plateau texturé pour faire la calibration, utiliser un plateau qui n'a pas une bonne adhérence (veuillez dans ce cas laver la plaque de construction ou appliquer de la colle)… Vous pouvez trouver d'autres cas sur notre Wiki.\n" #~ "\n" -#~ "Les résultats de calibration ont environ 10 % d'écart dans nos tests, ce " -#~ "qui peut faire en sorte que le résultat ne soit pas exactement le même à " -#~ "chaque calibration. Nous enquêtons toujours sur la cause première pour " -#~ "apporter des améliorations avec de nouvelles mises à jour.Les résultats " -#~ "de calibration ont environ 10 % d'écart dans nos tests, ce qui peut faire " -#~ "en sorte que le résultat ne soit pas exactement le même à chaque " -#~ "calibration. Nous enquêtons toujours sur la cause première pour apporter " -#~ "des améliorations avec de nouvelles mises à jour." +#~ "Les résultats de calibration ont environ 10 % d'écart dans nos tests, ce qui peut faire en sorte que le résultat ne soit pas exactement le même à chaque calibration. Nous enquêtons toujours sur la cause première pour apporter des améliorations avec de nouvelles mises à jour.Les résultats de calibration ont environ 10 % d'écart dans nos tests, ce qui peut faire en sorte que le résultat ne soit pas exactement le même à chaque calibration. Nous enquêtons toujours sur la cause première pour apporter des améliorations avec de nouvelles mises à jour." -#~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure " -#~ "you want to overrides the other results?" -#~ msgstr "" -#~ "Un seul des résultats portant le même nom sera enregistré. Voulez-vous " -#~ "vraiment remplacer les autres résultats ?" +#~ msgid "Only one of the results with the same name will be saved. Are you sure you want to overrides the other results?" +#~ msgstr "Un seul des résultats portant le même nom sera enregistré. Voulez-vous vraiment remplacer les autres résultats ?" #, c-format, boost-format -#~ msgid "" -#~ "There is already a historical calibration result with the same name: %s. " -#~ "Only one of the results with the same name is saved. Are you sure you " -#~ "want to overrides the historical result?" -#~ msgstr "" -#~ "Il existe déjà un résultat de calibration portant le même nom : %s. Un " -#~ "seul des résultats portant le même nom est enregistré. Voulez-vous " -#~ "vraiment remplacer le résultat précédent ?" +#~ msgid "There is already a historical calibration result with the same name: %s. Only one of the results with the same name is saved. Are you sure you want to overrides the historical result?" +#~ msgstr "Il existe déjà un résultat de calibration portant le même nom : %s. Un seul des résultats portant le même nom est enregistré. Voulez-vous vraiment remplacer le résultat précédent ?" #~ msgid "Please find the cornor with perfect degree of extrusion" #~ msgstr "Veuillez trouver le coin avec un degré d’extrusion parfait" @@ -17947,33 +14004,17 @@ msgstr "" #~ msgid "Y" #~ msgstr "Y" -#~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "PrusaSlicer links from Printable.com" -#~ msgstr "" -#~ "Associer OrcaSlicer aux liens prusaslicer:// pour qu’Orca puisse ouvrir " -#~ "les liens PrusaSlicer de Printable.com" +#~ msgid "Associate OrcaSlicer with prusaslicer:// links so that Orca can open PrusaSlicer links from Printable.com" +#~ msgstr "Associer OrcaSlicer aux liens prusaslicer:// pour qu’Orca puisse ouvrir les liens PrusaSlicer de Printable.com" #~ msgid "" -#~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " -#~ "first, which works best in most cases.\n" +#~ "Order of wall/infill. When the tickbox is unchecked the walls are printed first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have " -#~ "the neighbouring infill to adhere to. However, the infill will slighly " -#~ "push out the printed walls where it is attached to them, resulting in a " -#~ "worse external surface finish. It can also cause the infill to shine " -#~ "through the external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have the neighbouring infill to adhere to. However, the infill will slighly push out the printed walls where it is attached to them, resulting in a worse external surface finish. It can also cause the infill to shine through the external surfaces of the part." #~ msgstr "" -#~ "Ordre des parois/remplissages. Lorsque la case n’est pas cochée, les " -#~ "parois sont imprimées en premier, ce qui fonctionne le mieux dans la " -#~ "plupart des cas.\n" +#~ "Ordre des parois/remplissages. Lorsque la case n’est pas cochée, les parois sont imprimées en premier, ce qui fonctionne le mieux dans la plupart des cas.\n" #~ "\n" -#~ "L’impression des parois en premier peut s’avérer utile en cas de " -#~ "surplombs extrêmes, car les parois ont le remplissage voisin auquel " -#~ "adhérer. Cependant, le remplissage repoussera légèrement les parois " -#~ "imprimées à l’endroit où il est fixé, ce qui se traduira par une moins " -#~ "bonne finition de la surface extérieure. Cela peut également faire " -#~ "briller le remplissage à travers les surfaces externes de la pièce." +#~ "L’impression des parois en premier peut s’avérer utile en cas de surplombs extrêmes, car les parois ont le remplissage voisin auquel adhérer. Cependant, le remplissage repoussera légèrement les parois imprimées à l’endroit où il est fixé, ce qui se traduira par une moins bonne finition de la surface extérieure. Cela peut également faire briller le remplissage à travers les surfaces externes de la pièce." #~ msgid "V" #~ msgstr "V" @@ -17982,69 +14023,27 @@ msgstr "" #~ msgstr "Vitesse d’impression maximale lors de la purge" #~ msgid "" -#~ "The maximum print speed when purging in the wipe tower. If the sparse " -#~ "infill speed or calculated speed from the filament max volumetric speed " -#~ "is lower, the lowest speed will be used instead.\n" -#~ "Increasing this speed may affect the tower's stability, as purging can be " -#~ "performed over sparse layers. Before increasing this parameter beyond the " -#~ "default of 90mm/sec, make sure your printer can reliably bridge at the " -#~ "increased speeds." +#~ "The maximum print speed when purging in the wipe tower. If the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest speed will be used instead.\n" +#~ "Increasing this speed may affect the tower's stability, as purging can be performed over sparse layers. Before increasing this parameter beyond the default of 90mm/sec, make sure your printer can reliably bridge at the increased speeds." #~ msgstr "" -#~ "Vitesse d’impression maximale lors de la purge dans la tour d’essuyage. " -#~ "Si la vitesse de remplissage ou la vitesse calculée à partir de la " -#~ "vitesse volumétrique maximale du filament est inférieure, c’est la " -#~ "vitesse la plus basse qui sera utilisée.\n" -#~ "L’augmentation de cette vitesse peut affecter la stabilité de la tour, " -#~ "car la purge peut être effectuée sur des couches peu épaisses. Avant " -#~ "d’augmenter ce paramètre au-delà de la valeur par défaut de 90 mm/sec, " -#~ "assurez-vous que votre imprimante peut effectuer un pontage fiable aux " -#~ "vitesses accrues." +#~ "Vitesse d’impression maximale lors de la purge dans la tour d’essuyage. Si la vitesse de remplissage ou la vitesse calculée à partir de la vitesse volumétrique maximale du filament est inférieure, c’est la vitesse la plus basse qui sera utilisée.\n" +#~ "L’augmentation de cette vitesse peut affecter la stabilité de la tour, car la purge peut être effectuée sur des couches peu épaisses. Avant d’augmenter ce paramètre au-delà de la valeur par défaut de 90 mm/sec, assurez-vous que votre imprimante peut effectuer un pontage fiable aux vitesses accrues." -#~ msgid "" -#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from " -#~ "PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro " -#~ "Ranellucci and the RepRap community" -#~ msgstr "" -#~ "Orca Slicer est basé sur Bambu Studio de Bambulab qui a été développé sur " -#~ "la base de PrusaSlicer de Prusa Research, qui est lui même développé sur " -#~ "la base de Slic3r par Alessandro Ranelucci et la communauté RepRap" +#~ msgid "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and the RepRap community" +#~ msgstr "Orca Slicer est basé sur Bambu Studio de Bambulab qui a été développé sur la base de PrusaSlicer de Prusa Research, qui est lui même développé sur la base de Slic3r par Alessandro Ranelucci et la communauté RepRap" #~ msgid "Export &Configs" #~ msgstr "Exportation & Configs" -#~ msgid "" -#~ "Over 4 systems/handy are using remote access, you can close some and try " -#~ "again." -#~ msgstr "" -#~ "Plus de 4 orca/handy utilisent l’accès à distance, vous pouvez en fermer " -#~ "certains et réessayer." +#~ msgid "Over 4 systems/handy are using remote access, you can close some and try again." +#~ msgstr "Plus de 4 orca/handy utilisent l’accès à distance, vous pouvez en fermer certains et réessayer." #, c-format, boost-format -#~ msgid "" -#~ "Infill area is enlarged slightly to overlap with wall for better bonding. " -#~ "The percentage value is relative to line width of sparse infill. Set this " -#~ "value to ~10-15%% to minimize potential over extrusion and accumulation " -#~ "of material resulting in rough top surfaces." -#~ msgstr "" -#~ "La zone de remplissage est légèrement élargie pour chevaucher la paroi " -#~ "afin d’améliorer l’adhérence. La valeur du pourcentage est relative à la " -#~ "largeur de la ligne de remplissage clairsemée. Réglez cette valeur à " -#~ "~10-15%% pour minimiser le risque de sur-extrusion et d’accumulation de " -#~ "matériau, ce qui rendrait les surfaces supérieures rugueuses." +#~ msgid "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15%% to minimize potential over extrusion and accumulation of material resulting in rough top surfaces." +#~ msgstr "La zone de remplissage est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence. La valeur du pourcentage est relative à la largeur de la ligne de remplissage clairsemée. Réglez cette valeur à ~10-15%% pour minimiser le risque de sur-extrusion et d’accumulation de matériau, ce qui rendrait les surfaces supérieures rugueuses." -#~ msgid "" -#~ "Top solid infill area is enlarged slightly to overlap with wall for " -#~ "better bonding and to minimize the appearance of pinholes where the top " -#~ "infill meets the walls. A value of 25-30%% is a good starting point, " -#~ "minimising the appearance of pinholes. The percentage value is relative " -#~ "to line width of sparse infill" -#~ msgstr "" -#~ "La zone de remplissage solide supérieure est légèrement élargie pour " -#~ "chevaucher la paroi afin d’améliorer l’adhérence et de minimiser " -#~ "l’apparition de trous d’épingle à l’endroit où le remplissage supérieur " -#~ "rencontre les parois. Une valeur de 25-30%% est un bon point de départ, " -#~ "minimisant l’apparition de trous d’épingle. La valeur en pourcentage est " -#~ "relative à la largeur de ligne d’un remplissage peu dense." +#~ msgid "Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the top infill meets the walls. A value of 25-30%% is a good starting point, minimising the appearance of pinholes. The percentage value is relative to line width of sparse infill" +#~ msgstr "La zone de remplissage solide supérieure est légèrement élargie pour chevaucher la paroi afin d’améliorer l’adhérence et de minimiser l’apparition de trous d’épingle à l’endroit où le remplissage supérieur rencontre les parois. Une valeur de 25-30%% est un bon point de départ, minimisant l’apparition de trous d’épingle. La valeur en pourcentage est relative à la largeur de ligne d’un remplissage peu dense." #~ msgid "Export Configs" #~ msgstr "Exporter les configurations" @@ -18052,21 +14051,11 @@ msgstr "" #~ msgid "Infill direction" #~ msgstr "Sens de remplissage" -#~ msgid "" -#~ "Enable this to get a G-code file which has G2 and G3 moves. And the " -#~ "fitting tolerance is same with resolution" -#~ msgstr "" -#~ "Activez cette option pour obtenir un fichier G-code contenant des " -#~ "mouvements G2 et G3. Et la tolérance d'ajustement est la même avec la " -#~ "résolution" +#~ msgid "Enable this to get a G-code file which has G2 and G3 moves. And the fitting tolerance is same with resolution" +#~ msgstr "Activez cette option pour obtenir un fichier G-code contenant des mouvements G2 et G3. Et la tolérance d'ajustement est la même avec la résolution" -#~ msgid "" -#~ "Infill area is enlarged slightly to overlap with wall for better bonding. " -#~ "The percentage value is relative to line width of sparse infill" -#~ msgstr "" -#~ "La zone de remplissage est légèrement agrandie pour chevaucher la paroi " -#~ "afin d'améliorer l'adhérence. La valeur en pourcentage est relative à la " -#~ "largeur de ligne de remplissage." +#~ msgid "Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill" +#~ msgstr "La zone de remplissage est légèrement agrandie pour chevaucher la paroi afin d'améliorer l'adhérence. La valeur en pourcentage est relative à la largeur de ligne de remplissage." #~ msgid "Actions For Unsaved Changes" #~ msgstr "Actions pour les changements non enregistrés" @@ -18095,28 +14084,20 @@ msgstr "" #~ msgid "" #~ "\n" -#~ "Would you like to keep these changed settings(modified value) after " -#~ "switching preset?" +#~ "Would you like to keep these changed settings(modified value) after switching preset?" #~ msgstr "" #~ "\n" -#~ "Souhaitez-vous conserver ces paramètres modifiés (valeur modifiée) après " -#~ "avoir changé de préréglage ?" +#~ "Souhaitez-vous conserver ces paramètres modifiés (valeur modifiée) après avoir changé de préréglage ?" -#~ msgid "" -#~ "You have previously modified your settings and are about to overwrite " -#~ "them with new ones." -#~ msgstr "" -#~ "Vous avez précédemment modifié vos paramètres et vous êtes sur le point " -#~ "de les remplacer par de nouveaux." +#~ msgid "You have previously modified your settings and are about to overwrite them with new ones." +#~ msgstr "Vous avez précédemment modifié vos paramètres et vous êtes sur le point de les remplacer par de nouveaux." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset " -#~ "settings?" +#~ "Do you want to keep your current modified settings, or use preset settings?" #~ msgstr "" #~ "\n" -#~ "Souhaitez-vous conserver vos paramètres modifiés actuels ou utiliser des " -#~ "paramètres prédéfinis ?" +#~ "Souhaitez-vous conserver vos paramètres modifiés actuels ou utiliser des paramètres prédéfinis ?" #~ msgid "" #~ "\n" @@ -18128,12 +14109,8 @@ msgstr "" #~ msgid "Unload Filament" #~ msgstr "Déchargement" -#~ msgid "" -#~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " -#~ "automatically load or unload filiament." -#~ msgstr "" -#~ "Choisissez un emplacement AMS puis appuyez sur le bouton correspondant " -#~ "pour Charger ou Décharger le filament." +#~ msgid "Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload filiament." +#~ msgstr "Choisissez un emplacement AMS puis appuyez sur le bouton correspondant pour Charger ou Décharger le filament." #~ msgid "MC" #~ msgstr "MC" @@ -18162,12 +14139,8 @@ msgstr "" #~ msgid "New Flow Dynamics Calibration" #~ msgstr "Nouvelle calibration de la dynamique du flux" -#~ msgid "" -#~ "The 3mf file version is in Beta and it is newer than the current " -#~ "OrcaSlicer version." -#~ msgstr "" -#~ "La version du fichier 3mf est en Beta et est plus récente que la version " -#~ "actuelle d’OrcaSlicer." +#~ msgid "The 3mf file version is in Beta and it is newer than the current OrcaSlicer version." +#~ msgstr "La version du fichier 3mf est en Beta et est plus récente que la version actuelle d’OrcaSlicer." #~ msgid "active" #~ msgstr "actif" @@ -18178,43 +14151,20 @@ msgstr "" #~ msgid "Cabin humidity" #~ msgstr "Humidité dans l'AMS" -#~ msgid "" -#~ "Green means that AMS humidity is normal, orange represent humidity is " -#~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" -#~ msgstr "" -#~ "Le vert signifie que l'humidité de l'AMS est normale, l'orange signifie " -#~ "que l'humidité est élevée et le rouge signifie que l'humidité est trop " -#~ "élevée. (Hygromètre : plus c'est bas, mieux c'est.)" +#~ msgid "Green means that AMS humidity is normal, orange represent humidity is high, red represent humidity is too high.(Hygrometer: lower the better.)" +#~ msgstr "Le vert signifie que l'humidité de l'AMS est normale, l'orange signifie que l'humidité est élevée et le rouge signifie que l'humidité est trop élevée. (Hygromètre : plus c'est bas, mieux c'est.)" #~ msgid "Desiccant status" #~ msgstr "État du déshydratant" -#~ msgid "" -#~ "A desiccant status lower than two bars indicates that desiccant may be " -#~ "inactive. Please change the desiccant.(The bars: higher the better.)" -#~ msgstr "" -#~ "Un état du dessicateur inférieur à deux barres indique que le dessicateur " -#~ "est peut-être inactif. Veuillez changer le déshydratant. (Plus c'est " -#~ "élevé, mieux c'est.)" +#~ msgid "A desiccant status lower than two bars indicates that desiccant may be inactive. Please change the desiccant.(The bars: higher the better.)" +#~ msgstr "Un état du dessicateur inférieur à deux barres indique que le dessicateur est peut-être inactif. Veuillez changer le déshydratant. (Plus c'est élevé, mieux c'est.)" -#~ msgid "" -#~ "Note: When the lid is open or the desiccant pack is changed, it can take " -#~ "hours or a night to absorb the moisture. Low temperatures also slow down " -#~ "the process. During this time, the indicator may not represent the " -#~ "chamber accurately." -#~ msgstr "" -#~ "Remarque: Lorsque le couvercle est ouvert ou que le sachet de dessicateur " -#~ "est changé, cela peut prendre plusieurs heures ou une nuit pour absorber " -#~ "l'humidité. Les basses températures ralentissent également le processus. " -#~ "Pendant ce temps, l'indicateur pourrait ne pas représenter l'humidité " -#~ "dans l'AMS avec précision." +#~ msgid "Note: When the lid is open or the desiccant pack is changed, it can take hours or a night to absorb the moisture. Low temperatures also slow down the process. During this time, the indicator may not represent the chamber accurately." +#~ msgstr "Remarque: Lorsque le couvercle est ouvert ou que le sachet de dessicateur est changé, cela peut prendre plusieurs heures ou une nuit pour absorber l'humidité. Les basses températures ralentissent également le processus. Pendant ce temps, l'indicateur pourrait ne pas représenter l'humidité dans l'AMS avec précision." -#~ msgid "" -#~ "Note: if new filament is inserted during printing, the AMS will not " -#~ "automatically read any information until printing is completed." -#~ msgstr "" -#~ "Remarque : si un nouveau filament est inséré pendant l'impression, l'AMS " -#~ "ne lira automatiquement aucune information avant la fin de l'impression." +#~ msgid "Note: if new filament is inserted during printing, the AMS will not automatically read any information until printing is completed." +#~ msgstr "Remarque : si un nouveau filament est inséré pendant l'impression, l'AMS ne lira automatiquement aucune information avant la fin de l'impression." #, boost-format #~ msgid "Succeed to export G-code to %1%" @@ -18226,22 +14176,17 @@ msgstr "" #~ msgid "Initialize failed (No Camera Device)!" #~ msgstr "L'initialisation a échoué (Pas de caméra)!" -#~ msgid "" -#~ "Printer is busy downloading, Please wait for the downloading to finish." -#~ msgstr "" -#~ "L'imprimante est occupée à télécharger, veuillez attendre la fin du " -#~ "téléchargement." +#~ msgid "Printer is busy downloading, Please wait for the downloading to finish." +#~ msgstr "L'imprimante est occupée à télécharger, veuillez attendre la fin du téléchargement." #~ msgid "Initialize failed (Not supported on the current printer version)!" -#~ msgstr "" -#~ "Échec de l'initialisation (non pris en charge par l'imprimante actuelle) !" +#~ msgstr "Échec de l'initialisation (non pris en charge par l'imprimante actuelle) !" #~ msgid "Initialize failed (Not accessible in LAN-only mode)!" #~ msgstr "L'initialisation a échoué (Non accessible en mode LAN uniquement) !" #~ msgid "Initialize failed (Missing LAN ip of printer)!" -#~ msgstr "" -#~ "Échec de l'initialisation (adresse IP réseau manquante de l'imprimante) !" +#~ msgstr "Échec de l'initialisation (adresse IP réseau manquante de l'imprimante) !" #, c-format, boost-format #~ msgid "Stopped [%d]!" @@ -18260,8 +14205,7 @@ msgstr "" #~ msgstr "Échec du chargement [%d]" #~ msgid "Failed to fetching model infomations from printer." -#~ msgstr "" -#~ "Impossible de récupérer les informations du modèle depuis l'imprimante." +#~ msgstr "Impossible de récupérer les informations du modèle depuis l'imprimante." #~ msgid "Failed to parse model infomations." #~ msgstr "Impossible d'analyser les informations du modèle." @@ -18272,46 +14216,33 @@ msgstr "" #~ msgid "File not exists." #~ msgstr "Le fichier n'existe pas." -#~ msgid "" -#~ "Unable to perform boolean operation on model meshes. Only positive parts " -#~ "will be exported." -#~ msgstr "" -#~ "Impossible d'effectuer une opération booléenne sur les maillages du " -#~ "modèle. Seules les parties positives seront exportées." +#~ msgid "Unable to perform boolean operation on model meshes. Only positive parts will be exported." +#~ msgstr "Impossible d'effectuer une opération booléenne sur les maillages du modèle. Seules les parties positives seront exportées." #, boost-format #~ msgid "" #~ "You have changed some settings of preset \"%1%\". \n" -#~ "Would you like to keep these changed settings (new value) after switching " -#~ "preset?" +#~ "Would you like to keep these changed settings (new value) after switching preset?" #~ msgstr "" #~ "Vous avez modifié certains paramètres du préréglage \"%1%\". \n" -#~ "Souhaitez-vous conserver ces paramètres modifiés (nouvelle valeur) après " -#~ "avoir changé de préréglage ?" +#~ "Souhaitez-vous conserver ces paramètres modifiés (nouvelle valeur) après avoir changé de préréglage ?" #~ msgid "" #~ "You have changed some preset settings. \n" -#~ "Would you like to keep these changed settings (new value) after switching " -#~ "preset?" +#~ "Would you like to keep these changed settings (new value) after switching preset?" #~ msgstr "" #~ "Vous avez modifié certains paramètres prédéfinis. \n" -#~ "Souhaitez-vous conserver ces paramètres modifiés (nouvelle valeur) après " -#~ "avoir changé de préréglage ?" +#~ "Souhaitez-vous conserver ces paramètres modifiés (nouvelle valeur) après avoir changé de préréglage ?" #~ msgid " ℃" #~ msgstr " ℃" #~ msgid "" #~ "Please go to filament setting to edit your presets if you need.\n" -#~ "Please note that nozzle temperature, hot bed temperature, and maximum " -#~ "volumetric speed have a significant impact on printing quality. Please " -#~ "set them carefully." +#~ "Please note that nozzle temperature, hot bed temperature, and maximum volumetric speed have a significant impact on printing quality. Please set them carefully." #~ msgstr "" -#~ "Si vous le souhaitez, vous pouvez modifier vos préréglages dans les " -#~ "paramètres du filament.\n" -#~ "Veuillez noter que la température de la buse, la température du plateau " -#~ "et la vitesse volumétrique maximale ont un impact significatif sur la " -#~ "qualité de l’impression. Veuillez les régler avec soin." +#~ "Si vous le souhaitez, vous pouvez modifier vos préréglages dans les paramètres du filament.\n" +#~ "Veuillez noter que la température de la buse, la température du plateau et la vitesse volumétrique maximale ont un impact significatif sur la qualité de l’impression. Veuillez les régler avec soin." #~ msgid "Studio Version:" #~ msgstr "Version de Studio :" @@ -18353,64 +14284,40 @@ msgstr "" #~ msgstr "Test de l’envoi du stockage" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed " -#~ "(machine_max_speed_x/machine_max_speed_y).\n" -#~ "Orca will automatically cap the print speed to ensure it doesn't surpass " -#~ "the printer's capabilities.\n" -#~ "You can adjust the maximum speed setting in your printer's configuration " -#~ "to get higher speeds." +#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/machine_max_speed_y).\n" +#~ "Orca will automatically cap the print speed to ensure it doesn't surpass the printer's capabilities.\n" +#~ "You can adjust the maximum speed setting in your printer's configuration to get higher speeds." #~ msgstr "" -#~ "Le réglage de la vitesse dépasse la vitesse maximale de l’imprimante " -#~ "(machine_max_speed_x/machine_max_speed_y).\n" -#~ "Orca plafonne automatiquement la vitesse d’impression pour s’assurer " -#~ "qu’elle ne dépasse pas les capacités de l’imprimante.\n" -#~ "Vous pouvez ajuster le paramètre de vitesse maximale dans la " -#~ "configuration de votre imprimante pour obtenir des vitesses plus élevées." +#~ "Le réglage de la vitesse dépasse la vitesse maximale de l’imprimante (machine_max_speed_x/machine_max_speed_y).\n" +#~ "Orca plafonne automatiquement la vitesse d’impression pour s’assurer qu’elle ne dépasse pas les capacités de l’imprimante.\n" +#~ "Vous pouvez ajuster le paramètre de vitesse maximale dans la configuration de votre imprimante pour obtenir des vitesses plus élevées." -#~ msgid "" -#~ "Alternate extra wall only works with ensure vertical shell thickness " -#~ "disabled. " -#~ msgstr "" -#~ "La paroi supplémentaire alternée ne fonctionne que si « Assurer " -#~ "l’épaisseur verticale de la coque » est désactivé. " +#~ msgid "Alternate extra wall only works with ensure vertical shell thickness disabled. " +#~ msgstr "La paroi supplémentaire alternée ne fonctionne que si « Assurer l’épaisseur verticale de la coque » est désactivé. " #~ msgid "" #~ "Change these settings automatically? \n" -#~ "Yes - Disable ensure vertical shell thickness and enable alternate extra " -#~ "wall\n" +#~ "Yes - Disable ensure vertical shell thickness and enable alternate extra wall\n" #~ "No - Dont use alternate extra wall" #~ msgstr "" #~ "Modifier ces paramètres automatiquement ? \n" -#~ "Oui - Désactiver « Assurer l’épaisseur verticale de la coque » et activer " -#~ "« Paroi supplémentaire alternée »\n" +#~ "Oui - Désactiver « Assurer l’épaisseur verticale de la coque » et activer « Paroi supplémentaire alternée »\n" #~ "Non - Ne pas utiliser « Paroi supplémentaire alternée »" -#~ msgid "" -#~ "Add solid infill near sloping surfaces to guarantee the vertical shell " -#~ "thickness (top+bottom solid layers)" -#~ msgstr "" -#~ "Ajoutez du remplissage solide à proximité des surfaces inclinées pour " -#~ "garantir l'épaisseur verticale de la coque (couches solides " -#~ "supérieure+inférieure)." +#~ msgid "Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers)" +#~ msgstr "Ajoutez du remplissage solide à proximité des surfaces inclinées pour garantir l'épaisseur verticale de la coque (couches solides supérieure+inférieure)." #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Réduire davantage le remplissage solide des parois (expérimental)" #~ msgid "" -#~ "Further reduces any solid infill applied to walls. As there will be very " -#~ "limited infill supporting solid surfaces, make sure that you are using " -#~ "adequate number of walls to support the part on sloping surfaces.\n" +#~ "Further reduces any solid infill applied to walls. As there will be very limited infill supporting solid surfaces, make sure that you are using adequate number of walls to support the part on sloping surfaces.\n" #~ "\n" -#~ "For heavily sloped surfaces this option is not suitable as it will " -#~ "generate too thin of a top layer and should be disabled." +#~ "For heavily sloped surfaces this option is not suitable as it will generate too thin of a top layer and should be disabled." #~ msgstr "" -#~ "Réduit encore davantage les remplissages solides appliqués aux parois. " -#~ "Étant donné que le remplissage des surfaces solides sera très limité, " -#~ "assurez-vous que vous utilisez un nombre suffisant de parois pour " -#~ "soutenir la partie sur les surfaces inclinées.\n" +#~ "Réduit encore davantage les remplissages solides appliqués aux parois. Étant donné que le remplissage des surfaces solides sera très limité, assurez-vous que vous utilisez un nombre suffisant de parois pour soutenir la partie sur les surfaces inclinées.\n" #~ "\n" -#~ "Pour les surfaces fortement inclinées, cette option n’est pas adaptée car " -#~ "elle génère une couche supérieure trop fine et doit être désactivée." +#~ "Pour les surfaces fortement inclinées, cette option n’est pas adaptée car elle génère une couche supérieure trop fine et doit être désactivée." #~ msgid "Text-Rotate" #~ msgstr "Rotation du texte" @@ -18424,29 +14331,17 @@ msgstr "" #~ msgid "Configuration package updated to " #~ msgstr "Package de configuration mis à jour en " -#~ msgid "" -#~ "The minimum printing speed for the filament when slow down for better " -#~ "layer cooling is enabled, when printing overhangs and when feature speeds " -#~ "are not specified explicitly." -#~ msgstr "" -#~ "La vitesse d’impression minimale lors du ralentissement pour un meilleur " -#~ "refroidissement des couches est activée, lors de l’impression des " -#~ "surplombs et lorsque les fonctionnalités de vitesses ne sont pas " -#~ "spécifiées explicitement." +#~ msgid "The minimum printing speed for the filament when slow down for better layer cooling is enabled, when printing overhangs and when feature speeds are not specified explicitly." +#~ msgstr "La vitesse d’impression minimale lors du ralentissement pour un meilleur refroidissement des couches est activée, lors de l’impression des surplombs et lorsque les fonctionnalités de vitesses ne sont pas spécifiées explicitement." #~ msgid " " #~ msgstr " " #~ msgid "Small Area Infill Flow Compensation (beta)" -#~ msgstr "" -#~ "Compensation des débits de remplissage des petites zones (expérimental)" +#~ msgstr "Compensation des débits de remplissage des petites zones (expérimental)" -#~ msgid "" -#~ "Improve shell precision by adjusting outer wall spacing. This also " -#~ "improves layer consistency." -#~ msgstr "" -#~ "Améliorer la précision de la coque en ajustant l’espacement des parois " -#~ "extérieures. Cela améliore également la consistance des couches." +#~ msgid "Improve shell precision by adjusting outer wall spacing. This also improves layer consistency." +#~ msgstr "Améliorer la précision de la coque en ajustant l’espacement des parois extérieures. Cela améliore également la consistance des couches." #~ msgid "Enable Flow Compensation" #~ msgstr "Activer la compensation de débit" @@ -18464,21 +14359,10 @@ msgstr "" #~ msgstr "La configuration ne peut pas être chargée." #~ msgid "The 3mf is generated by old Orca Slicer, load geometry data only." -#~ msgstr "" -#~ "Le fichier 3mf a été généré par une ancienne version de Orca Slicer, " -#~ "chargement des données de géométrie uniquement." +#~ msgstr "Le fichier 3mf a été généré par une ancienne version de Orca Slicer, chargement des données de géométrie uniquement." -#~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option." -#~ "Some extruders work better with this option unckecked (absolute extrusion " -#~ "mode). Wipe tower is only compatible with relative mode. It is always " -#~ "enabled on BambuLab printers. Default is checked" -#~ msgstr "" -#~ "L’extrusion relative est recommandée lors de l’utilisation de l’option " -#~ "\"label_objects\". Certains extrudeurs fonctionnent mieux avec cette " -#~ "option décochée (mode d’extrusion absolu). La tour d’essuyage n’est " -#~ "compatible qu’avec le mode relatif. Il est toujours activé sur les " -#~ "imprimantes BambuLab. La valeur par défaut est cochée" +#~ msgid "Relative extrusion is recommended when using \"label_objects\" option.Some extruders work better with this option unckecked (absolute extrusion mode). Wipe tower is only compatible with relative mode. It is always enabled on BambuLab printers. Default is checked" +#~ msgstr "L’extrusion relative est recommandée lors de l’utilisation de l’option \"label_objects\". Certains extrudeurs fonctionnent mieux avec cette option décochée (mode d’extrusion absolu). La tour d’essuyage n’est compatible qu’avec le mode relatif. Il est toujours activé sur les imprimantes BambuLab. La valeur par défaut est cochée" #~ msgid "Movement:" #~ msgstr "Mouvement:" @@ -18517,26 +14401,14 @@ msgstr "" #~ msgid "Recalculate" #~ msgstr "Recalculer" -#~ msgid "" -#~ "Orca recalculates your flushing volumes everytime the filament colors " -#~ "change. You can change this behavior in Preferences." -#~ msgstr "" -#~ "Orca recalcule vos volumes de purge à chaque fois que les couleurs des " -#~ "filaments changent. Vous pouvez modifier ce comportement dans les " -#~ "préférences." +#~ msgid "Orca recalculates your flushing volumes everytime the filament colors change. You can change this behavior in Preferences." +#~ msgstr "Orca recalcule vos volumes de purge à chaque fois que les couleurs des filaments changent. Vous pouvez modifier ce comportement dans les préférences." -#~ msgid "" -#~ "The printer timed out while receiving a print job. Please check if the " -#~ "network is functioning properly and send the print again." -#~ msgstr "" -#~ "L'imprimante s'est arrêtée pendant la réception d'un travail " -#~ "d'impression. Vérifiez que le réseau fonctionne correctement et relancez " -#~ "l'impression." +#~ msgid "The printer timed out while receiving a print job. Please check if the network is functioning properly and send the print again." +#~ msgstr "L'imprimante s'est arrêtée pendant la réception d'un travail d'impression. Vérifiez que le réseau fonctionne correctement et relancez l'impression." #~ msgid "The beginning of the vendor can not be a number. Please re-enter." -#~ msgstr "" -#~ "Le début du nom du vendeur ne peut pas être un numéro. Veuillez les " -#~ "saisir à nouveau." +#~ msgstr "Le début du nom du vendeur ne peut pas être un numéro. Veuillez les saisir à nouveau." #~ msgid "Edit Text" #~ msgstr "Modifier texte" @@ -18571,43 +14443,29 @@ msgstr "" #~ msgid "Quick" #~ msgstr "Rapide" -#~ msgid "" -#~ "Discribe how long the nozzle will move along the last path when retracting" -#~ msgstr "" -#~ "Décrire combien de temps la buse se déplacera le long du dernier chemin " -#~ "lors de la rétraction" +#~ msgid "Discribe how long the nozzle will move along the last path when retracting" +#~ msgstr "Décrire combien de temps la buse se déplacera le long du dernier chemin lors de la rétraction" #~ msgid "" #~ "Simplify Model\n" -#~ "Did you know that you can reduce the number of triangles in a mesh using " -#~ "the Simplify mesh feature? Right-click the model and select Simplify " -#~ "model. Read more in the documentation." +#~ "Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model. Read more in the documentation." #~ msgstr "" #~ "Simplifier le modèle\n" -#~ "Saviez-vous que vous pouvez réduire le nombre de triangles dans un " -#~ "maillage à l'aide de la fonction Simplifier le maillage ? Cliquez avec le " -#~ "bouton droit sur le modèle et sélectionnez Simplifier le modèle. Pour en " -#~ "savoir plus, consultez la documentation." +#~ "Saviez-vous que vous pouvez réduire le nombre de triangles dans un maillage à l'aide de la fonction Simplifier le maillage ? Cliquez avec le bouton droit sur le modèle et sélectionnez Simplifier le modèle. Pour en savoir plus, consultez la documentation." #~ msgid "" #~ "Subtract a Part\n" -#~ "Did you know that you can subtract one mesh from another using the " -#~ "Negative part modifier? That way you can, for example, create easily " -#~ "resizable holes directly in Orca Slicer. Read more in the documentation." +#~ "Did you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer. Read more in the documentation." #~ msgstr "" #~ "Soustraire une partie\n" -#~ "Saviez-vous que vous pouvez soustraire un maillage d'un autre à l'aide du " -#~ "modificateur de partie négative ? De cette façon, vous pouvez, par " -#~ "exemple, créer des trous facilement redimensionnables directement dans " -#~ "Orca Slicer. Plus d'informations dans la documentation." +#~ "Saviez-vous que vous pouvez soustraire un maillage d'un autre à l'aide du modificateur de partie négative ? De cette façon, vous pouvez, par exemple, créer des trous facilement redimensionnables directement dans Orca Slicer. Plus d'informations dans la documentation." #~ msgid "Filling bed " #~ msgstr "Remplir le plateau" #, boost-format #~ msgid "%1% infill pattern doesn't support 100%% density." -#~ msgstr "" -#~ "Le motif de remplissage %1% ne prend pas en charge une densité de 100%%." +#~ msgstr "Le motif de remplissage %1% ne prend pas en charge une densité de 100%%." #~ msgid "" #~ "Switch to rectilinear pattern?\n" @@ -18619,9 +14477,7 @@ msgstr "" #~ "Non - Réinitialise automatiquement la densité à la valeur par défaut" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." -#~ msgstr "" -#~ "Veuillez chauffer la buse à plus de 170 degrés avant de charger le " -#~ "filament." +#~ msgstr "Veuillez chauffer la buse à plus de 170 degrés avant de charger le filament." #~ msgid "Show g-code window" #~ msgstr "Afficher la fenêtre G-code" @@ -18637,8 +14493,7 @@ msgstr "" #~ msgstr "Nombre de parois support arborescent" #~ msgid "This setting specify the count of walls around tree support" -#~ msgstr "" -#~ "Ce paramètre spécifie le nombre de murs autour du support arborescent" +#~ msgstr "Ce paramètre spécifie le nombre de murs autour du support arborescent" #, c-format, boost-format #~ msgid " doesn't work at 100%% density " @@ -18660,16 +14515,13 @@ msgstr "" #~ msgstr "Veuillez saisir une valeur valide (K entre 0 et 0,5)" #~ msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" -#~ msgstr "" -#~ "Veuillez saisir une valeur valide (K entre 0 et 0,5, N entre 0,6 et 2,0)" +#~ msgstr "Veuillez saisir une valeur valide (K entre 0 et 0,5, N entre 0,6 et 2,0)" #~ msgid "Export all objects as STL" #~ msgstr "Exporter tous les objets au format STL" #~ msgid "The 3mf is not compatible, load geometry data only!" -#~ msgstr "" -#~ "Le 3mf n'est pas compatible, chargement des données géométriques " -#~ "uniquement!" +#~ msgstr "Le 3mf n'est pas compatible, chargement des données géométriques uniquement!" #~ msgid "Incompatible 3mf" #~ msgstr "Fichier 3mf incompatible" @@ -18691,9 +14543,7 @@ msgstr "" #~ msgstr "Ordre de mur intérieur/extérieur/remplissage" #~ msgid "Print sequence of inner wall, outer wall and infill. " -#~ msgstr "" -#~ "Séquence d'impression du mur intérieur, du mur extérieur et du " -#~ "remplissage." +#~ msgstr "Séquence d'impression du mur intérieur, du mur extérieur et du remplissage." #~ msgid "inner/outer/infill" #~ msgstr "intérieur/extérieur/remplissage" @@ -18726,15 +14576,13 @@ msgstr "" #~ msgstr "Charger les données de tranchage" #~ msgid "Load cached slicing data from directory" -#~ msgstr "" -#~ "Charger les données de tranchage mises en cache à partir du répertoire" +#~ msgstr "Charger les données de tranchage mises en cache à partir du répertoire" #~ msgid "Slice" #~ msgstr "Découper" #~ msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" -#~ msgstr "" -#~ "Trancher toutes les plaques : 0-toutes, i-plaque i, autres-invalides" +#~ msgstr "Trancher toutes les plaques : 0-toutes, i-plaque i, autres-invalides" #~ msgid "Show command help." #~ msgstr "Afficher l'aide de la commande." @@ -18743,9 +14591,7 @@ msgstr "" #~ msgstr "À jour" #~ msgid "Update the configs values of 3mf to latest." -#~ msgstr "" -#~ "Mettez à jour les valeurs de configuration 3mf à la version la plus " -#~ "récente." +#~ msgstr "Mettez à jour les valeurs de configuration 3mf à la version la plus récente." #~ msgid "mtcpp" #~ msgstr "mtcpp" @@ -18802,16 +14648,13 @@ msgstr "" #~ msgstr "Charger les paramètres généraux" #~ msgid "Load process/machine settings from the specified file" -#~ msgstr "" -#~ "Charger les paramètres de processus/machine à partir du fichier spécifié" +#~ msgstr "Charger les paramètres de processus/machine à partir du fichier spécifié" #~ msgid "Load Filament Settings" #~ msgstr "Charger les paramètres de filament" #~ msgid "Load filament settings from the specified file list" -#~ msgstr "" -#~ "Charger les paramètres de filament à partir de la liste de fichiers " -#~ "spécifiée" +#~ msgstr "Charger les paramètres de filament à partir de la liste de fichiers spécifiée" #~ msgid "Skip Objects" #~ msgstr "Ignorer les Objets" @@ -18828,120 +14671,71 @@ msgstr "" #~ msgid "Debug level" #~ msgstr "Niveau de débogage" -#~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -#~ "trace\n" -#~ msgstr "" -#~ "Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, 2 :" -#~ "avertissement, 3 :info, 4 :débogage, 5 :trace\n" +#~ msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" +#~ msgstr "Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, 2 :avertissement, 3 :info, 4 :débogage, 5 :trace\n" #~ msgid "" #~ "3D Scene Operations\n" -#~ "Did you know how to control view and object/part selection with mouse and " -#~ "touchpanel in the 3D scene?" +#~ "Did you know how to control view and object/part selection with mouse and touchpanel in the 3D scene?" #~ msgstr "" #~ "Opérations dans une scène 3D\n" -#~ "Savez-vous comment contrôler la vue et la sélection des objets/pièces " -#~ "avec la souris et l'écran tactile dans la scène 3D ?" +#~ "Savez-vous comment contrôler la vue et la sélection des objets/pièces avec la souris et l'écran tactile dans la scène 3D ?" #~ msgid "" #~ "Fix Model\n" -#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " -#~ "slicing problems?" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" #~ msgstr "" #~ "Réparer le Modèle\n" -#~ "Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " -#~ "nombreux problèmes de découpage ?" +#~ "Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de nombreux problèmes de découpage ?" #~ msgid "Embeded" #~ msgstr "Intégré" -#~ msgid "" -#~ "OrcaSlicer configuration file may be corrupted and is not abled to be " -#~ "parsed.Please delete the file and try again." -#~ msgstr "" -#~ "Le fichier de configuration de Orca Slicer est peut-être corrompu et ne " -#~ "peut pas être analysé. Veuillez supprimer le fichier et réessayer." +#~ msgid "OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please delete the file and try again." +#~ msgstr "Le fichier de configuration de Orca Slicer est peut-être corrompu et ne peut pas être analysé. Veuillez supprimer le fichier et réessayer." #~ msgid "Online Models" #~ msgstr "Modèles en ligne" #~ msgid "Show online staff-picked models on the home page" -#~ msgstr "" -#~ "Afficher les modèles en ligne sélectionnés par le staff sur la page " -#~ "d'accueil" +#~ msgstr "Afficher les modèles en ligne sélectionnés par le staff sur la page d'accueil" #~ msgid "The minimum printing speed when slow down for cooling" -#~ msgstr "" -#~ "La vitesse d'impression minimale lors du ralentissement pour le " -#~ "refroidissement" +#~ msgstr "La vitesse d'impression minimale lors du ralentissement pour le refroidissement" #~ msgid "" -#~ "There are currently no identical spare consumables available, and " -#~ "automatic replenishment is currently not possible. \n" -#~ "(Currently supporting automatic supply of consumables with the same " -#~ "brand, material type, and color)" +#~ "There are currently no identical spare consumables available, and automatic replenishment is currently not possible. \n" +#~ "(Currently supporting automatic supply of consumables with the same brand, material type, and color)" #~ msgstr "" -#~ "Il n'existe actuellement aucun consommable de rechange identique, et le " -#~ "réapprovisionnement automatique n'est actuellement pas possible. \n" -#~ "(Prise en charge actuelle de la fourniture automatique de consommables de " -#~ "la même marque, du même type de matériau et de la même couleur)" +#~ "Il n'existe actuellement aucun consommable de rechange identique, et le réapprovisionnement automatique n'est actuellement pas possible. \n" +#~ "(Prise en charge actuelle de la fourniture automatique de consommables de la même marque, du même type de matériau et de la même couleur)" #~ msgid "Invalid nozzle diameter" #~ msgstr "Diamètre de la buse non valide" -#~ msgid "" -#~ "The bed temperature exceeds filament's vitrification temperature. Please " -#~ "open the front door of printer before printing to avoid nozzle clog." -#~ msgstr "" -#~ "La température du plateau dépasse la température de vitrification du " -#~ "filament. Veuillez ouvrir la porte avant de l'imprimante avant " -#~ "l'impression pour éviter le bouchage de la buse." +#~ msgid "The bed temperature exceeds filament's vitrification temperature. Please open the front door of printer before printing to avoid nozzle clog." +#~ msgstr "La température du plateau dépasse la température de vitrification du filament. Veuillez ouvrir la porte avant de l'imprimante avant l'impression pour éviter le bouchage de la buse." #~ msgid "Temperature of vitrificaiton" #~ msgstr "Température de vitrification" -#~ msgid "" -#~ "Material becomes soft at this temperature. Thus the heatbed cannot be " -#~ "hotter than this tempature" -#~ msgstr "" -#~ "Le matériau devient mou à cette température. Ainsi, le lit chauffant ne " -#~ "peut pas être plus chaud que cette température" +#~ msgid "Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this tempature" +#~ msgstr "Le matériau devient mou à cette température. Ainsi, le lit chauffant ne peut pas être plus chaud que cette température" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "" -#~ "Activez cette option si la machine est équipée d'un ventilateur de " -#~ "refroidissement de pièce auxiliaire" +#~ msgstr "Activez cette option si la machine est équipée d'un ventilateur de refroidissement de pièce auxiliaire" -#~ msgid "" -#~ "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -#~ "during printing except the first several layers which is defined by no " -#~ "cooling layers" -#~ msgstr "" -#~ "Vitesse du ventilateur de refroidissement de la partie auxiliaire. Le " -#~ "ventilateur auxiliaire fonctionnera à cette vitesse pendant l'impression, " -#~ "à l'exception des premières couches qui sont définies par aucune couche " -#~ "de refroidissement" +#~ msgid "Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers which is defined by no cooling layers" +#~ msgstr "Vitesse du ventilateur de refroidissement de la partie auxiliaire. Le ventilateur auxiliaire fonctionnera à cette vitesse pendant l'impression, à l'exception des premières couches qui sont définies par aucune couche de refroidissement" -#~ msgid "" -#~ "Bed temperature for layers except the initial one. Value 0 means the " -#~ "filament does not support to print on the High Temp" -#~ msgstr "" -#~ "Température du plateau de toutes les couches à l'exception de la " -#~ "première. La valeur 0 signifie que le filament ne prend pas en charge " -#~ "l'impression sur le plateau High Temperature" +#~ msgid "Bed temperature for layers except the initial one. Value 0 means the filament does not support to print on the High Temp" +#~ msgstr "Température du plateau de toutes les couches à l'exception de la première. La valeur 0 signifie que le filament ne prend pas en charge l'impression sur le plateau High Temperature" -#~ msgid "" -#~ "Filter out gaps smaller than the threshold specified. This setting won't " -#~ "affect top/bottom layers" -#~ msgstr "" -#~ "Filtrer les petits espaces au seuil spécifié. Ce paramètre n’affectera " -#~ "pas les couches supérieures/inférieures" +#~ msgid "Filter out gaps smaller than the threshold specified. This setting won't affect top/bottom layers" +#~ msgstr "Filtrer les petits espaces au seuil spécifié. Ce paramètre n’affectera pas les couches supérieures/inférieures" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "" -#~ "Les couches vides situées en bas sont remplacées par les couches normales " -#~ "les plus proches." +#~ msgstr "Les couches vides situées en bas sont remplacées par les couches normales les plus proches." #~ msgid "The model has too many empty layers." #~ msgstr "Le modèle a trop de couches vides." @@ -18957,28 +14751,18 @@ msgstr "" #, c-format, boost-format #~ msgid "" -#~ "Bed temperature of other layer is lower than bed temperature of initial " -#~ "layer for more than %d degree centigrade.\n" +#~ "Bed temperature of other layer is lower than bed temperature of initial layer for more than %d degree centigrade.\n" #~ "This may cause model broken free from build plate during printing" -#~ msgstr "" -#~ "La température du plateau des autres couches est inférieure à la " -#~ "température du plateau de la couche initiale de plus de %d degrés. Cela " -#~ "peut entraîner la séparation du modèle du plateau pendant l'impression" +#~ msgstr "La température du plateau des autres couches est inférieure à la température du plateau de la couche initiale de plus de %d degrés. Cela peut entraîner la séparation du modèle du plateau pendant l'impression" #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this " -#~ "filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this filament.\n" #~ "This may cause nozzle blocked and printing failure\n" -#~ "Please keep the printer open during the printing process to ensure air " -#~ "circulation or reduce the temperature of the hot bed" +#~ "Please keep the printer open during the printing process to ensure air circulation or reduce the temperature of the hot bed" #~ msgstr "" -#~ "La température du lit est supérieure à la température de vitrification de " -#~ "ce filament.\n" -#~ "Cela peut provoquer un blocage de la buse et une défaillance de " -#~ "l'impression.\n" -#~ "Veuillez laisser l'imprimante ouverte pendant le processus d'impression " -#~ "afin de garantir la circulation de l'air ou de réduire la température du " -#~ "plateau." +#~ "La température du lit est supérieure à la température de vitrification de ce filament.\n" +#~ "Cela peut provoquer un blocage de la buse et une défaillance de l'impression.\n" +#~ "Veuillez laisser l'imprimante ouverte pendant le processus d'impression afin de garantir la circulation de l'air ou de réduire la température du plateau." #~ msgid "Total Time Estimation" #~ msgstr "Estimation du temps total" @@ -19007,40 +14791,22 @@ msgstr "" #~ msgid "High Temp Plate" #~ msgstr "Plaque haute température" -#~ msgid "" -#~ "Bed temperature when high temperature plate is installed. Value 0 means " -#~ "the filament does not support to print on the High Temp Plate" -#~ msgstr "" -#~ "Il s'agit de la température du plateau lorsque le plateau haute " -#~ "température (\"Cool plate\") est installé. Une valeur à 0 signifie que ce " -#~ "filament ne peut pas être imprimé sur le plateau haute température." +#~ msgid "Bed temperature when high temperature plate is installed. Value 0 means the filament does not support to print on the High Temp Plate" +#~ msgstr "Il s'agit de la température du plateau lorsque le plateau haute température (\"Cool plate\") est installé. Une valeur à 0 signifie que ce filament ne peut pas être imprimé sur le plateau haute température." #~ msgid "Internal bridge support thickness" #~ msgstr "Épaisseur du support interne du pont" #, fuzzy, c-format, boost-format -#~ msgid "" -#~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -#~ msgstr "" -#~ "Le paramètre max_accel_to_decel de Klipper sera ajusté à ce pourcentage " -#~ "d’accélération" +#~ msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +#~ msgstr "Le paramètre max_accel_to_decel de Klipper sera ajusté à ce pourcentage d’accélération" #~ msgid "" -#~ "Style and shape of the support. For normal support, projecting the " -#~ "supports into a regular grid will create more stable supports (default), " -#~ "while snug support towers will save material and reduce object scarring.\n" -#~ "For tree support, slim style will merge branches more aggressively and " -#~ "save a lot of material (default), while hybrid style will create similar " -#~ "structure to normal support under large flat overhangs." +#~ "Style and shape of the support. For normal support, projecting the supports into a regular grid will create more stable supports (default), while snug support towers will save material and reduce object scarring.\n" +#~ "For tree support, slim style will merge branches more aggressively and save a lot of material (default), while hybrid style will create similar structure to normal support under large flat overhangs." #~ msgstr "" -#~ "Style et forme du support. Pour un support normal, la projection des " -#~ "supports sur une grille régulière créera des supports plus stables (par " -#~ "défaut), tandis que des tours de support bien ajustées permettront " -#~ "d'économiser du matériau et de réduire les cicatrices sur les objets.\n" -#~ "Pour les supports Arborescent, le style mince fusionnera les branches de " -#~ "manière plus agressive et économisera beaucoup de matière (par défaut), " -#~ "tandis que le style hybride créera une structure similaire à celle d'un " -#~ "support normal placé sous de grands surplombs plats." +#~ "Style et forme du support. Pour un support normal, la projection des supports sur une grille régulière créera des supports plus stables (par défaut), tandis que des tours de support bien ajustées permettront d'économiser du matériau et de réduire les cicatrices sur les objets.\n" +#~ "Pour les supports Arborescent, le style mince fusionnera les branches de manière plus agressive et économisera beaucoup de matière (par défaut), tandis que le style hybride créera une structure similaire à celle d'un support normal placé sous de grands surplombs plats." #~ msgid "Target chamber temperature" #~ msgstr "Température cible de la chambre" @@ -19048,15 +14814,8 @@ msgstr "" #~ msgid "Bed temperature difference" #~ msgstr "Différence de température du lit" -#~ msgid "" -#~ "Do not recommend bed temperature of other layer to be lower than initial " -#~ "layer for more than this threshold. Too low bed temperature of other " -#~ "layer may cause the model broken free from build plate" -#~ msgstr "" -#~ "Il n'est pas recommandé que la température du plateau des autres couches " -#~ "soit inférieure à celle de la première couche d'un niveau supérieur à ce " -#~ "seuil. Une température de base trop basse de l'autre couche peut " -#~ "provoquer le détachement du modèle." +#~ msgid "Do not recommend bed temperature of other layer to be lower than initial layer for more than this threshold. Too low bed temperature of other layer may cause the model broken free from build plate" +#~ msgstr "Il n'est pas recommandé que la température du plateau des autres couches soit inférieure à celle de la première couche d'un niveau supérieur à ce seuil. Une température de base trop basse de l'autre couche peut provoquer le détachement du modèle." #~ msgid "Orient the model" #~ msgstr "Orienter le modèle" From 91fca76e0f07cffd7d83482129e41d37bb5fd91c Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Wed, 28 Aug 2024 16:15:39 +0100 Subject: [PATCH 150/151] Ported filament shrinkage compensation for XY and independent Z from Prusa Slicer (fixing MMU painting, seam painting, support painting issues) (#6507) * Ported filament shrinkage compensation from Prusa Slicer. Updated logic to be 100 = no shrinkage to be consistent with orca definitions * Code comments update * Merge branch 'main' into Filament-Shrinkage-compension---port-from-Prusa-slicer * Merge remote-tracking branch 'upstream/main' into Filament-Shrinkage-compension---port-from-Prusa-slicer * Merge branch 'main' into Filament-Shrinkage-compension---port-from-Prusa-slicer --- src/libslic3r/Geometry.cpp | 16 +++++++ src/libslic3r/Geometry.hpp | 3 ++ src/libslic3r/Model.cpp | 18 ++++++++ src/libslic3r/Model.hpp | 4 ++ src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 67 ++++++++++++++++++++++++++++-- src/libslic3r/Print.hpp | 9 +++- src/libslic3r/PrintApply.cpp | 11 +++-- src/libslic3r/PrintConfig.cpp | 12 +++++- src/libslic3r/PrintConfig.hpp | 1 + src/libslic3r/PrintObject.cpp | 15 ++++--- src/libslic3r/PrintObjectSlice.cpp | 16 ------- src/libslic3r/Slicing.cpp | 40 +++++++++++------- src/libslic3r/Slicing.hpp | 21 ++++++++-- src/slic3r/GUI/GLCanvas3D.cpp | 8 +++- src/slic3r/GUI/GLCanvas3D.hpp | 6 +++ src/slic3r/GUI/Tab.cpp | 1 + 17 files changed, 198 insertions(+), 52 deletions(-) diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 54dcb14cca..49e50a671d 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -640,6 +640,22 @@ Transform3d Transformation::get_matrix_no_scaling_factor() const return copy.get_matrix(); } +// Orca: Implement prusa's filament shrink compensation approach +Transform3d Transformation::get_matrix_with_applied_shrinkage_compensation(const Vec3d &shrinkage_compensation) const { + const Transform3d shrinkage_trafo = Geometry::scale_transform(shrinkage_compensation); + const Vec3d trafo_offset = this->get_offset(); + const Vec3d trafo_offset_xy = Vec3d(trafo_offset.x(), trafo_offset.y(), 0.); + + Transformation copy(*this); + copy.set_offset(Axis::X, 0.); + copy.set_offset(Axis::Y, 0.); + + Transform3d trafo_after_shrinkage = (shrinkage_trafo * copy.get_matrix()); + trafo_after_shrinkage.translation() += trafo_offset_xy; + + return trafo_after_shrinkage; + } + Transformation Transformation::operator * (const Transformation& other) const { return Transformation(get_matrix() * other.get_matrix()); diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index 67b27dd293..2b027a231a 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -466,6 +466,9 @@ public: Transform3d get_matrix_no_offset() const; Transform3d get_matrix_no_scaling_factor() const; + // Orca: Implement prusa's filament shrink compensation approach + Transform3d get_matrix_with_applied_shrinkage_compensation(const Vec3d &shrinkage_compensation) const; + void set_matrix(const Transform3d& transform) { m_matrix = transform; } Transformation operator * (const Transformation& other) const; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 63be317b6d..fe8ff61018 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -2779,6 +2779,24 @@ void ModelVolume::convert_from_meters() this->source.is_converted_from_meters = true; } +// Orca: Implement prusa's filament shrink compensation approach +// Returns 0-based indices of extruders painted by multi-material painting gizmo. +std::vector ModelVolume::get_extruders_from_multi_material_painting() const { + if (!this->is_mm_painted()) + return {}; + + assert(static_cast(TriangleStateType::Extruder1) - 1 == 0); + const TriangleSelector::TriangleSplittingData &data = this->mmu_segmentation_facets.get_data(); + + std::vector extruders; + for (size_t state_idx = static_cast(EnforcerBlockerType::Extruder1); state_idx < data.used_states.size(); ++state_idx) { + if (data.used_states[state_idx]) + extruders.emplace_back(state_idx - 1); + } + + return extruders; + } + void ModelInstance::transform_mesh(TriangleMesh* mesh, bool dont_translate) const { mesh->transform(dont_translate ? get_matrix_no_offset() : get_matrix()); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 9fc315778f..56f1f7afed 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -991,6 +991,10 @@ public: bool is_fdm_support_painted() const { return !this->supported_facets.empty(); } bool is_seam_painted() const { return !this->seam_facets.empty(); } bool is_mm_painted() const { return !this->mmu_segmentation_facets.empty(); } + + // Orca: Implement prusa's filament shrink compensation approach + // Returns 0-based indices of extruders painted by multi-material painting gizmo. + std::vector get_extruders_from_multi_material_painting() const; protected: friend class Print; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index cbab85b88a..c9328821be 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -840,7 +840,7 @@ static std::vector s_Preset_filament_options { "filament_wipe_distance", "additional_cooling_fan_speed", "nozzle_temperature_range_low", "nozzle_temperature_range_high", //SoftFever - "enable_pressure_advance", "pressure_advance","adaptive_pressure_advance","adaptive_pressure_advance_model","adaptive_pressure_advance_overhangs", "adaptive_pressure_advance_bridges","chamber_temperature", "filament_shrink", "support_material_interface_fan_speed", "filament_notes" /*,"filament_seam_gap"*/, + "enable_pressure_advance", "pressure_advance","adaptive_pressure_advance","adaptive_pressure_advance_model","adaptive_pressure_advance_overhangs", "adaptive_pressure_advance_bridges","chamber_temperature", "filament_shrink","filament_shrinkage_compensation_z", "support_material_interface_fan_speed", "filament_notes" /*,"filament_seam_gap"*/, "filament_loading_speed", "filament_loading_speed_start", "filament_unloading_speed", "filament_unloading_speed_start", "filament_toolchange_delay", "filament_cooling_moves", "filament_stamping_loading_speed", "filament_stamping_distance", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 03f76fe3a3..532875434b 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -234,6 +234,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n opt_key == "initial_layer_print_height" || opt_key == "nozzle_diameter" || opt_key == "filament_shrink" + || opt_key == "filament_shrinkage_compensation_z" || opt_key == "resolution" || opt_key == "precise_z_height" // Spiral Vase forces different kind of slicing than the normal model: @@ -1120,13 +1121,29 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* const PrintObject &print_object = *m_objects[print_object_idx]; //FIXME It is quite expensive to generate object layers just to get the print height! if (auto layers = generate_object_layers(print_object.slicing_parameters(), layer_height_profile(print_object_idx), print_object.config().precise_z_height.value); - ! layers.empty() && layers.back() > this->config().printable_height + EPSILON) { - return + !layers.empty()) { + + Vec3d test =this->shrinkage_compensation(); + const double shrinkage_compensation_z = this->shrinkage_compensation().z(); + + if (shrinkage_compensation_z != 1. && layers.back() > (this->config().printable_height / shrinkage_compensation_z + EPSILON)) { + // The object exceeds the maximum build volume height because of shrinkage compensation. + return StringObjectException{ + Slic3r::format(_u8L("While the object %1% itself fits the build volume, it exceeds the maximum build volume height because of material shrinkage compensation."), print_object.model_object()->name), + print_object.model_object(), + "" + }; + } else if (layers.back() > this->config().printable_height + EPSILON) { // Test whether the last slicing plane is below or above the print volume. - { 0.5 * (layers[layers.size() - 2] + layers.back()) > this->config().printable_height + EPSILON ? + return StringObjectException{ + 0.5 * (layers[layers.size() - 2] + layers.back()) > this->config().printable_height + EPSILON ? Slic3r::format(_u8L("The object %1% exceeds the maximum build volume height."), print_object.model_object()->name) : Slic3r::format(_u8L("While the object %1% itself fits the build volume, its last layer exceeds the maximum build volume height."), print_object.model_object()->name) + - " " + _u8L("You might want to reduce the size of your model or change current print settings and retry.") }; + " " + _u8L("You might want to reduce the size of your model or change current print settings and retry."), + print_object.model_object(), + "" + }; + } } } @@ -1568,6 +1585,10 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* BOOST_LOG_TRIVIAL(warning) << "Orca: validate motion ability failed: " << e.what() << std::endl; } } + if (!this->has_same_shrinkage_compensations()){ + warning->string = L("Filament shrinkage will not be used because filament shrinkage for the used filaments differs significantly."); + warning->opt_key = ""; + } return {}; } @@ -2949,6 +2970,44 @@ std::string PrintStatistics::finalize_output_path(const std::string &path_in) co return final_path; } +// Orca: Implement prusa's filament shrink compensation approach +// Returns if all used filaments have same shrinkage compensations. + bool Print::has_same_shrinkage_compensations() const { + const std::vector extruders = this->extruders(); + if (extruders.empty()) + return false; + + const double filament_shrinkage_compensation_xy = m_config.filament_shrink.get_at(extruders.front()); + const double filament_shrinkage_compensation_z = m_config.filament_shrinkage_compensation_z.get_at(extruders.front()); + + for (unsigned int extruder : extruders) { + if (filament_shrinkage_compensation_xy != m_config.filament_shrink.get_at(extruder) || + filament_shrinkage_compensation_z != m_config.filament_shrinkage_compensation_z.get_at(extruder)) { + return false; + } + } + + return true; + } + +// Orca: Implement prusa's filament shrink compensation approach, but amended so 100% from the user is the equivalent to 0 in orca. + // Returns scaling for each axis representing shrinkage compensations in each axis. +Vec3d Print::shrinkage_compensation() const +{ + if (!this->has_same_shrinkage_compensations()) + return Vec3d::Ones(); + + const unsigned int first_extruder = this->extruders().front(); + + const double xy_shrinkage_percent = m_config.filament_shrink.get_at(first_extruder); + const double z_shrinkage_percent = m_config.filament_shrinkage_compensation_z.get_at(first_extruder); + + const double xy_compensation = 100.0 / xy_shrinkage_percent; + const double z_compensation = 100.0 / z_shrinkage_percent; + + return { xy_compensation, xy_compensation, z_compensation }; +} + const std::string PrintStatistics::FilamentUsedG = "filament used [g]"; const std::string PrintStatistics::FilamentUsedGMask = "; filament used [g] ="; diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index aebb46899f..9d5217e534 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -401,7 +401,8 @@ public: // The slicing parameters are dependent on various configuration values // (layer height, first layer height, raft settings, print nozzle diameter etc). const SlicingParameters& slicing_parameters() const { return m_slicing_params; } - static SlicingParameters slicing_parameters(const DynamicPrintConfig &full_config, const ModelObject &model_object, float object_max_z); + // Orca: XYZ shrinkage compensation has introduced the const Vec3d &object_shrinkage_compensation parameter to the function below + static SlicingParameters slicing_parameters(const DynamicPrintConfig &full_config, const ModelObject &model_object, float object_max_z, const Vec3d &object_shrinkage_compensation); size_t num_printing_regions() const throw() { return m_shared_regions->all_regions.size(); } const PrintRegion& printing_region(size_t idx) const throw() { return *m_shared_regions->all_regions[idx].get(); } @@ -981,6 +982,12 @@ public: bool is_all_objects_are_short() const { return std::all_of(this->objects().begin(), this->objects().end(), [&](PrintObject* obj) { return obj->height() < scale_(this->config().nozzle_height.value); }); } + + // Orca: Implement prusa's filament shrink compensation approach + // Returns if all used filaments have same shrinkage compensations. + bool has_same_shrinkage_compensations() const; + // Returns scaling for each axis representing shrinkage compensations in each axis. + Vec3d shrinkage_compensation() const; protected: // Invalidates the step, and its depending steps in Print. diff --git a/src/libslic3r/PrintApply.cpp b/src/libslic3r/PrintApply.cpp index 232c86b9ec..3767ccd2a9 100644 --- a/src/libslic3r/PrintApply.cpp +++ b/src/libslic3r/PrintApply.cpp @@ -131,7 +131,8 @@ struct PrintObjectTrafoAndInstances }; // Generate a list of trafos and XY offsets for instances of a ModelObject -static std::vector print_objects_from_model_object(const ModelObject &model_object) +// Orca: Updated to include XYZ filament shrinkage compensation +static std::vector print_objects_from_model_object(const ModelObject &model_object, const Vec3d &shrinkage_compensation) { std::set trafos; PrintObjectTrafoAndInstances trafo; @@ -139,7 +140,10 @@ static std::vector print_objects_from_model_object int index = 0; for (ModelInstance *model_instance : model_object.instances) { if (model_instance->is_printable()) { - trafo.trafo = model_instance->get_matrix(); + // Orca: Updated with XYZ filament shrinkage compensation + Geometry::Transformation model_instance_transformation = model_instance->get_transformation(); + trafo.trafo = model_instance_transformation.get_matrix_with_applied_shrinkage_compensation(shrinkage_compensation); + auto shift = Point::new_scale(trafo.trafo.data()[12], trafo.trafo.data()[13]); // Reset the XY axes of the transformation. trafo.trafo.data()[12] = 0; @@ -1358,7 +1362,8 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ // Walk over all new model objects and check, whether there are matching PrintObjects. for (ModelObject *model_object : m_model.objects) { ModelObjectStatus &model_object_status = const_cast(model_object_status_db.reuse(*model_object)); - model_object_status.print_instances = print_objects_from_model_object(*model_object); + // Orca: Updated for XYZ filament shrink compensation + model_object_status.print_instances = print_objects_from_model_object(*model_object, this->shrinkage_compensation()); std::vector old; old.reserve(print_object_status_db.count(*model_object)); for (const PrintObjectStatus &print_object_status : print_object_status_db.get_range(*model_object)) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index d3c3554a58..4803ba3b88 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1907,7 +1907,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloats{ 0.4157 }); def = this->add("filament_shrink", coPercents); - def->label = L("Shrinkage"); + def->label = L("Shrinkage (XY)"); // xgettext:no-c-format, no-boost-format def->tooltip = L("Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm)." " The part will be scaled in xy to compensate." @@ -1918,6 +1918,16 @@ void PrintConfigDef::init_fff_params() def->min = 10; def->mode = comAdvanced; def->set_default_value(new ConfigOptionPercents{ 100 }); + + def = this->add("filament_shrinkage_compensation_z", coPercents); + def->label = L("Shrinkage (Z)"); + def->tooltip = L("Enter the shrinkage percentage that the filament will get after cooling (94% if you measure 94mm instead of 100mm)." + " The part will be scaled in Z to compensate."); + def->sidetext = L("%"); + def->ratio_over = ""; + def->min = 10; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionPercents{ 100 }); def = this->add("filament_loading_speed", coFloats); def->label = L("Loading speed"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 015befbd9f..c191e7ff57 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1274,6 +1274,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionBool, independent_support_layer_height)) // SoftFever ((ConfigOptionPercents, filament_shrink)) + ((ConfigOptionPercents, filament_shrinkage_compensation_z)) ((ConfigOptionBool, gcode_label_objects)) ((ConfigOptionBool, exclude_object)) ((ConfigOptionBool, gcode_comments)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 8674c1a4ea..7b16f8a697 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -2966,12 +2966,15 @@ void PrintObject::generate_support_preview() void PrintObject::update_slicing_parameters() { - if (!m_slicing_params.valid) - m_slicing_params = SlicingParameters::create_from_config( - this->print()->config(), m_config, this->model_object()->max_z(), this->object_extruders()); + // Orca: updated function call for XYZ shrinkage compensation + if (!m_slicing_params.valid) { + m_slicing_params = SlicingParameters::create_from_config(this->print()->config(), m_config, this->model_object()->max_z(), + this->object_extruders(), this->print()->shrinkage_compensation()); + } } -SlicingParameters PrintObject::slicing_parameters(const DynamicPrintConfig& full_config, const ModelObject& model_object, float object_max_z) +// Orca: XYZ shrinkage compensation has introduced the const Vec3d &object_shrinkage_compensation parameter to the function below +SlicingParameters PrintObject::slicing_parameters(const DynamicPrintConfig &full_config, const ModelObject &model_object, float object_max_z, const Vec3d &object_shrinkage_compensation) { PrintConfig print_config; PrintObjectConfig object_config; @@ -3006,7 +3009,7 @@ SlicingParameters PrintObject::slicing_parameters(const DynamicPrintConfig& full if (object_max_z <= 0.f) object_max_z = (float)model_object.raw_bounding_box().size().z(); - return SlicingParameters::create_from_config(print_config, object_config, object_max_z, object_extruders); + return SlicingParameters::create_from_config(print_config, object_config, object_max_z, object_extruders, object_shrinkage_compensation); } // returns 0-based indices of extruders used to print the object (without brim, support and other helper extrusions) @@ -3049,7 +3052,7 @@ bool PrintObject::update_layer_height_profile(const ModelObject &model_object, c // Must not be of even length. ((layer_height_profile.size() & 1) != 0 || // Last entry must be at the top of the object. - std::abs(layer_height_profile[layer_height_profile.size() - 2] - slicing_parameters.object_print_z_max + slicing_parameters.object_print_z_min) > 1e-3)) + std::abs(layer_height_profile[layer_height_profile.size() - 2] - slicing_parameters.object_print_z_uncompensated_max + slicing_parameters.object_print_z_min) > 1e-3)) layer_height_profile.clear(); if (layer_height_profile.empty() || layer_height_profile[1] != slicing_parameters.first_object_layer_height) { diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 98f7d8b20e..21c9770663 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -449,22 +449,6 @@ static std::vector> slices_to_regions( }); } - // SoftFever: ported from SuperSlicer - // filament shrink - for (const std::unique_ptr& pr : print_object_regions.all_regions) { - if (pr.get()) { - std::vector& region_polys = slices_by_region[pr->print_object_region_id()]; - const size_t extruder_id = pr->extruder(FlowRole::frPerimeter) - 1; - double scale = print_config.filament_shrink.values[extruder_id] * 0.01; - if (scale != 1) { - scale = 1 / scale; - for (ExPolygons& polys : region_polys) - for (ExPolygon& poly : polys) - poly.scale(scale); - } - } - } - return slices_by_region; } diff --git a/src/libslic3r/Slicing.cpp b/src/libslic3r/Slicing.cpp index 636a3c471f..290871b914 100644 --- a/src/libslic3r/Slicing.cpp +++ b/src/libslic3r/Slicing.cpp @@ -60,10 +60,11 @@ coordf_t Slicing::max_layer_height_from_nozzle(const DynamicPrintConfig &print_c } SlicingParameters SlicingParameters::create_from_config( - const PrintConfig &print_config, - const PrintObjectConfig &object_config, - coordf_t object_height, - const std::vector &object_extruders) + const PrintConfig &print_config, + const PrintObjectConfig &object_config, + coordf_t object_height, + const std::vector &object_extruders, + const Vec3d &object_shrinkage_compensation) { coordf_t initial_layer_print_height = (print_config.initial_layer_print_height.value <= 0) ? object_config.layer_height.value : print_config.initial_layer_print_height.value; @@ -81,7 +82,10 @@ SlicingParameters SlicingParameters::create_from_config( params.first_print_layer_height = initial_layer_print_height; params.first_object_layer_height = initial_layer_print_height; params.object_print_z_min = 0.; - params.object_print_z_max = object_height; + // Orca: XYZ filament compensation + params.object_print_z_max = object_height * object_shrinkage_compensation.z(); + params.object_print_z_uncompensated_max = object_height; + params.object_shrinkage_compensation_z = object_shrinkage_compensation.z(); params.base_raft_layers = object_config.raft_layers.value; params.soluble_interface = soluble_interface; @@ -153,6 +157,7 @@ SlicingParameters SlicingParameters::create_from_config( coordf_t print_z = params.raft_contact_top_z + params.gap_raft_object; params.object_print_z_min = print_z; params.object_print_z_max += print_z; + params.object_print_z_uncompensated_max += print_z; } params.valid = true; @@ -225,10 +230,10 @@ std::vector layer_height_profile_from_ranges( lh_append(hi, height); } - if (coordf_t z = last_z(); z < slicing_params.object_print_z_height()) { + if (coordf_t z = last_z(); z < slicing_params.object_print_z_uncompensated_height()) { // Insert a step of normal layer height up to the object top. lh_append(z, slicing_params.layer_height); - lh_append(slicing_params.object_print_z_height(), slicing_params.layer_height); + lh_append(slicing_params.object_print_z_uncompensated_height(), slicing_params.layer_height); } return layer_height_profile; @@ -450,12 +455,12 @@ void adjust_layer_height_profile( std::pair z_span_variable = std::pair( slicing_params.first_object_layer_height_fixed() ? slicing_params.first_object_layer_height : 0., - slicing_params.object_print_z_height()); + slicing_params.object_print_z_uncompensated_height()); if (z < z_span_variable.first || z > z_span_variable.second) return; assert(layer_height_profile.size() >= 2); - assert(std::abs(layer_height_profile[layer_height_profile.size() - 2] - slicing_params.object_print_z_height()) < EPSILON); + assert(std::abs(layer_height_profile[layer_height_profile.size() - 2] - slicing_params.object_print_z_uncompensated_height()) < EPSILON); // 1) Get the current layer thickness at z. coordf_t current_layer_height = slicing_params.layer_height; @@ -616,7 +621,7 @@ void adjust_layer_height_profile( assert(layer_height_profile.size() > 2); assert(layer_height_profile.size() % 2 == 0); assert(layer_height_profile[0] == 0.); - assert(std::abs(layer_height_profile[layer_height_profile.size() - 2] - slicing_params.object_print_z_height()) < EPSILON); + assert(std::abs(layer_height_profile[layer_height_profile.size() - 2] - slicing_params.object_print_z_uncompensated_height()) < EPSILON); #ifdef _DEBUG for (size_t i = 2; i < layer_height_profile.size(); i += 2) assert(layer_height_profile[i - 2] <= layer_height_profile[i]); @@ -739,6 +744,8 @@ std::vector generate_object_layers( out.push_back(print_z); } + // Orca: XYZ shrinkage compensation + const coordf_t shrinkage_compensation_z = slicing_params.object_shrinkage_compensation_z; size_t idx_layer_height_profile = 0; // loop until we have at least one layer and the max slice_z reaches the object height coordf_t slice_z = print_z + 0.5 * slicing_params.min_layer_height; @@ -747,17 +754,20 @@ std::vector generate_object_layers( if (idx_layer_height_profile < layer_height_profile.size()) { size_t next = idx_layer_height_profile + 2; for (;;) { - if (next >= layer_height_profile.size() || slice_z < layer_height_profile[next]) + // Orca: XYZ shrinkage compensation + if (next >= layer_height_profile.size() || slice_z < layer_height_profile[next] * shrinkage_compensation_z) break; idx_layer_height_profile = next; next += 2; } - coordf_t z1 = layer_height_profile[idx_layer_height_profile]; - coordf_t h1 = layer_height_profile[idx_layer_height_profile + 1]; + // Orca: XYZ shrinkage compensation + const coordf_t z1 = layer_height_profile[idx_layer_height_profile] * shrinkage_compensation_z; + const coordf_t h1 = layer_height_profile[idx_layer_height_profile + 1]; height = h1; if (next < layer_height_profile.size()) { - coordf_t z2 = layer_height_profile[next]; - coordf_t h2 = layer_height_profile[next + 1]; + // Orca: XYZ shrinkage compensation + const coordf_t z2 = layer_height_profile[next] * shrinkage_compensation_z; + const coordf_t h2 = layer_height_profile[next + 1]; height = lerp(h1, h2, (slice_z - z1) / (z2 - z1)); assert(height >= slicing_params.min_layer_height - EPSILON && height <= slicing_params.max_layer_height + EPSILON); } diff --git a/src/libslic3r/Slicing.hpp b/src/libslic3r/Slicing.hpp index c519a3d194..d6cd7dcb41 100644 --- a/src/libslic3r/Slicing.hpp +++ b/src/libslic3r/Slicing.hpp @@ -28,11 +28,13 @@ struct SlicingParameters { SlicingParameters() = default; + // Orca: XYZ filament compensation introduced object_shrinkage_compensation static SlicingParameters create_from_config( - const PrintConfig &print_config, - const PrintObjectConfig &object_config, - coordf_t object_height, - const std::vector &object_extruders); + const PrintConfig &print_config, + const PrintObjectConfig &object_config, + coordf_t object_height, + const std::vector &object_extruders, + const Vec3d &object_shrinkage_compensation); // Has any raft layers? bool has_raft() const { return raft_layers() > 0; } @@ -43,6 +45,10 @@ struct SlicingParameters // Height of the object to be printed. This value does not contain the raft height. coordf_t object_print_z_height() const { return object_print_z_max - object_print_z_min; } + + // Height of the object to be printed. This value does not contain the raft height. + // This value isn't scaled by shrinkage compensation in the Z-axis. + coordf_t object_print_z_uncompensated_height() const { return object_print_z_uncompensated_max - object_print_z_min; } bool valid { false }; @@ -95,7 +101,14 @@ struct SlicingParameters coordf_t raft_contact_top_z { 0 }; // In case of a soluble interface, object_print_z_min == raft_contact_top_z, otherwise there is a gap between the raft and the 1st object layer. coordf_t object_print_z_min { 0 }; + // This value of maximum print Z is scaled by shrinkage compensation in the Z-axis. coordf_t object_print_z_max { 0 }; + + // Orca: XYZ shrinkage compensation + // This value of maximum print Z isn't scaled by shrinkage compensation. + coordf_t object_print_z_uncompensated_max { 0 }; + // Scaling factor for compensating shrinkage in Z-axis. + coordf_t object_shrinkage_compensation_z { 0 }; }; static_assert(IsTriviallyCopyable::value, "SlicingParameters class is not POD (and it should be - see constructor)."); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 5f45d9b1c5..551697e26f 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -666,8 +666,9 @@ void GLCanvas3D::LayersEditing::update_slicing_parameters() { if (m_slicing_parameters == nullptr) { m_slicing_parameters = new SlicingParameters(); - *m_slicing_parameters = PrintObject::slicing_parameters(*m_config, *m_model_object, m_object_max_z); + *m_slicing_parameters = PrintObject::slicing_parameters(*m_config, *m_model_object, m_object_max_z, m_shrinkage_compensation); } + } float GLCanvas3D::LayersEditing::thickness_bar_width(const GLCanvas3D & canvas) @@ -1489,6 +1490,11 @@ void GLCanvas3D::set_config(const DynamicPrintConfig* config) { m_config = config; m_layers_editing.set_config(config); + + // Orca: Filament shrinkage compensation + const Print *print = fff_print(); + if (print != nullptr) + m_layers_editing.set_shrinkage_compensation(fff_print()->shrinkage_compensation()); } void GLCanvas3D::set_process(BackgroundSlicingProcess *process) diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 023e95a976..2d67401d5f 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -216,6 +216,9 @@ class GLCanvas3D }; static const float THICKNESS_BAR_WIDTH; + + // Orca: Shrinkage compensation + void set_shrinkage_compensation(const Vec3d &shrinkage_compensation) { m_shrinkage_compensation = shrinkage_compensation; }; private: bool m_enabled{ false }; @@ -229,6 +232,9 @@ class GLCanvas3D // Owned by LayersEditing. SlicingParameters* m_slicing_parameters{ nullptr }; std::vector m_layer_height_profile; + + // Orca: Shrinkage compensation to apply when we need to use object_max_z with Z compensation. + Vec3d m_shrinkage_compensation{ Vec3d::Ones() }; mutable float m_adaptive_quality{ 0.5f }; mutable HeightProfileSmoothingParams m_smooth_params; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 077a095993..8b6477fc4b 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3245,6 +3245,7 @@ void TabFilament::build() optgroup->append_single_option_line("filament_density"); optgroup->append_single_option_line("filament_shrink"); + optgroup->append_single_option_line("filament_shrinkage_compensation_z"); optgroup->append_single_option_line("filament_cost"); //BBS optgroup->append_single_option_line("temperature_vitrification"); From 686ceb8d8bd69721400bc51367ce842a8fff8fd6 Mon Sep 17 00:00:00 2001 From: Cyril Guislain Date: Wed, 28 Aug 2024 17:17:25 +0200 Subject: [PATCH 151/151] Fixes for FLSUN S1/T1 (#6574) --- resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json | 4 ++-- resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json | 4 ++-- resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json | 4 ++-- resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json b/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json index 0fe334a390..6f5d0adff5 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json +++ b/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json @@ -15,8 +15,8 @@ "full_fan_speed_layer": ["3"], "hot_plate_temp": ["60"], "hot_plate_temp_initial_layer": ["60"], - "nozzle_temperature": ["240"], - "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], "nozzle_temperature_range_low": ["190"], "nozzle_temperature_range_high": ["240"], "overhang_fan_speed": ["35"], diff --git a/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json b/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json index 2a08316092..ecd49291a8 100644 --- a/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json +++ b/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json @@ -15,8 +15,8 @@ "full_fan_speed_layer": ["3"], "hot_plate_temp": ["60"], "hot_plate_temp_initial_layer": ["60"], - "nozzle_temperature": ["240"], - "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], "nozzle_temperature_range_low": ["190"], "nozzle_temperature_range_high": ["240"], "overhang_fan_speed": ["35"], diff --git a/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json b/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json index 2c418b2401..4f70bbd87b 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json +++ b/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json @@ -15,8 +15,8 @@ "full_fan_speed_layer": ["3"], "hot_plate_temp": ["60"], "hot_plate_temp_initial_layer": ["60"], - "nozzle_temperature": ["240"], - "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], "nozzle_temperature_range_low": ["190"], "nozzle_temperature_range_high": ["240"], "overhang_fan_speed": ["35"], diff --git a/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json b/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json index 56fa05286c..55c4c60a84 100644 --- a/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json +++ b/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json @@ -15,8 +15,8 @@ "full_fan_speed_layer": ["3"], "hot_plate_temp": ["60"], "hot_plate_temp_initial_layer": ["60"], - "nozzle_temperature": ["240"], - "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], "nozzle_temperature_range_low": ["190"], "nozzle_temperature_range_high": ["240"], "overhang_fan_speed": ["35"],

      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 z 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 I%z}aaAL55o$p8QV literal 0 HcmV?d00001 diff --git a/resources/calib/filament_flow/flowrate-test-pass1.3mf b/resources/calib/filament_flow/flowrate-test-pass1.3mf index 8f1a1b5e6132490f94cef99abbd364df5f25cb31..20c997da020fc8b4d0b3481c04efa44454049c6e 100644 GIT binary patch literal 151525 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

    %Gk&~MWv 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¨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

2+D2SC#tW&8r*o z?wH^z_87XoO|B;W0piN?aD^2nR$yJYm7;{MNs=*(^$+w6V}h&LW5}r<*i!lj#DnMo z3M)+9x{xjpO-l4{=XQJG*x`iEsJr+R4i3xd~ThqMN% z)2uKtx5{DJmO3qDq)s!zRl{B%maWw3p*hb8xA3ke#WqW3g^93thh-~uy4#ZvLIB<- z-tTX2Be*JbdYWvdPM11xT4;qg7VoZkl38IQC^SvBQm6lF_(AAV0`F1T^V$fm`uACy zY^6@G&3j(Bu*M9sXp3%?-iYJyu@WMm+{}m9=TU2 zhiglcG0IsOdsoKZZM(0zA1h24$LaHm`mU(`2Jvv^CUG~eKBp#m2uyHQVBIu%#Kroq zn2*N0+MK+b#GN4iN%R(2VZyjdjBFC*D(fZ=o7a*T#l!3bRT)=|fZ0JVrMi(WzuUZC z-7U3IV1@r(^N#9T?IxUfvK)*j%Za-$*$A#OpEzB4+=*q-pR+w1v;-HKyY*%JC zaY^ciq~_ORkxi0~;Hp=J56QpuN^t$*zH_cV+EtQ4%sUdo>xE-X^i^$v{aw zxmC;^Kfp$CmCtESMv}5?q5H`)s>&ad1mbhmX(B63L^O5D$R;<5o%2RYlj8%$qWxyt z2(DVy(Iwx>d(ZW1Ry$<4Rh%_k>II^2xy2$YOpIFZlxybxXc9ZWKO-2K_j5Nk^J9k_ zS0CSLo!sXKyHeNvJ>CkfDmbL5mXrNhVZyxfxfUfF=STh@Hi;|X_JDof0ux-tuGICj zxH}ufV07AGg$d&x+}9Q6iuz!jQ3LQ~Sqb;rQKdK92(DsR>iXY!daVE=Ez==^6(-C# zGS_7H`9UKSHiE0zmAd|iIr=eZb^(zUCfcQ-hj6|G*D?3`G3A$LQUd096`bpBBe;rP ziEVstBJBb(tZZYE6($PJ)8vR*$6YV)8s81trFE4i9Cc7f=NGI_X`5N5L1Xr;ub$xAv{?cs_vwO}HSz%)CLZ|He z?+4c`_Zd}o_Hd~P=4A|o+nL}hyW8X150&0WV=O~kC$hpsvvfsH8I)c7c1G>`?t)MW zPXHam{_{k8eB0EAU8(B}>OB=2;3?yB@5O$sFkwD@nCC|sxP2eoe(vON z0ux-tu0-EKJntGr4)m2_g$eT=&OASgm?IMp&{u{Du3}f>-M}3EsEkemstk#Otgs`S`ZG=K0aTLKi6&-7i|L9cd%Did~7Zj1HZo z9Ux9uoguQq#JjOhxyRWL=J_$!r@zz&GvXzt>N zJ+f4~EuJT811Xmd&7C#S+cZJ3q_m5uB&Ik)JUQ)P!k{>Hf7~?2` zeUi*=T(A2=IEV4X@7_MM5nN@C8oDO!F}ATH@|Z9MW0uQro%Lgd33DvdmAQRKAEZb8 z@Jh&m=fwEZ9s(0wWsLPd+jz&^#?iOwLQy=6>OG$OvBHG$J;5XRg}IF^Vb6tT$b&5R zpn$*xS8W`v%H5~EH@6XT_=s?BwL>~m-a}x8iTB%+<-4=9Y2SXwkvI2+*7Y3H@3}o~ z1Xm4?OqP)csrB7q>?_~KCxsW&9a8Hf#ROKEFus_4?~`AV#Rbh{0VKjcZFt&kU ze7hN(v#MJ$zZGfe_lEfx-;lcPuBElwVr-)^zDI4q-u*dmUx5`S%r9Fe(X!Z5QNT4( zd{<0lf~)d%+9f0PO`H49cxDK{vPi_LaOuQ2FOd}{%nqPRYou47H!h|_%!6X`BE>1U$U;TSjc{j@8 z1^SxAjjO)WM$9CC>G{z{a8;g~8|6=8U(Lh)%y6PX18FsgsGFH3R+#wVRF+yUn&e@-N1YjD@^2^9wmo=9%B-{ z5`UH=FjuX*T*O9jmFL1JSt>AA)7($t?>aS+E`vD!yrjem6JNhX$~_8CF^S^%Ui%B4 z!W)Xs1a`Rjy;h4aIL?P%sp|o&FA2x+O?c&m!2&Bxm|vI8^JC!UMPe}Ao;cP^WP+>M zmFTK6ae+7j#KKEeL{^wE<~e-G-`YGs);D<|I`B-r8E$8StJsz3%-!{l7z(1#Z*xRe zm@sF(nde6w=5p4?J7?9p2{wYO*p*m`6!U{r5=87|Rb+(;W7c%?wLa$gQTE3w(nYLG z?c40Ojo>PFCB9%?tsq?mu@h^=Sz)4{Gg_W7c8Ga?tb^M-W5g>IZfAn4*p<5eVR&7s zEeKb^>=G+XJU>>$?OE}C@C4k>1Xr;u@kF-QPdbU&(W%!9ORO*5m;fuoHea2bKh|~!0nab_LXou6I{iv#Jr4~xg{g}?CPq+A}dV1Tox@45{76G z=Nh9pN!Kb!Z86vR_T?uwf~(k-y1s05S*aC>Z4KXutT1u!*C;uA+!)Q_zT?ywQCAv- zyTNU^oe8dDSL*t+X|<%WAP#!xmRMop$dyRB+*OD6zR2o!kDXiczlqSwm$^h5Dpv> zI$_TCmwNMT1Xr0ev(0Vn#k}z6cy2%ZdW^sd6Xtwza~nOdZXyZmCTi(RYy?*st0TPT z1Z$OIjD0l%YcnojZN{mF!2p|8# z9N|$51y-0aS8ZwWPiA8q-$ic`ruGJre}#?Us%hbiF~M z7-JcaBmc7zTxG1(Jd|g#Hr;&{EkEpmo5&uWNn(Wwb1kV!49TBeI)Jh8nZZSE1XmfW znmc7%uKnu1iqc9wfscW?QqO&ydB5QbS7xg)6srLfuqu!hCd_q(+7IgtUtJQ1iAEM( z9UK=XxQh21-XJ><5RJUMr*DHrR+w0|Bvk$@VUhOrwQi{tn`|9ey!6Fk}#lH!w zof`KNXMvbBev-%v6OpY$^?t5w7mI36KW7Klu6Ro!|`#|no)gb~eQYDRs$3smIp3^Z+OBHG z$V7!4BgGUD(P7U-R+vbwT3hZ?ey>SfcB~R#pnL25g~cT%xTv8ZN#Uvi0AF?<%P`v+q zkd5FfqbqpzLy8veeop-8S|=6)@u0&{i4`VR7XKK~Im&4g-ewQF>thcH>~OOmo%{S? zS7JS9T7Tg$WPo;QcTQl1iP}#a$peb*GS81L7?ChW?*7Jj91~o{uGDqqO)>Y#-42ZT zvBJddH?`y$&-R$-$BOSpif3?zTRG#Ijo>PFC1&;y>?@uF@%+XMkrgHeovbKlU6Ej( zABSTWiG?r@7oJp7VuGvKmFVxYYnE6T#ErwHBvzQnHpx@|z2tuL{5baOdhrUz8CIn> zv=LmzuEe`q)N=7Ih-TUSBvzO(I%Ad|nWW`%pHXdQ#ECIjSJeD+8ymq@>`LS)hOQQu zf%v<6JBbx0jIPIC%N6td$Y*x{_D}0=Be;rPiShQ)-#Uy3;X4Q`Oc;IkN6mAZ=SQ4# zo%lQ6qZ;F@9}`?S6(%Zs-V1R2<}%L@-;phZ8&mPda_x}74mUeF zy3Y@GC5}gtHbVCxyc_&u@V=ssRdl}hUf2k(Vpr<=(+wR&BV&D0jyEDJOyDI* zj(D`sJU^E2o+Y-&T(uQxr6eY}id~8CYU`$nZ9r7mT}EPs38RzigT_hb`B8Mkw|=iP za{1W^u3}drhxgK4aU(j!CRY$8R+uom9-HUK%<$D>Yji27T&tap;3{^du5bKffj9<4 zwyqr{R+uol=3g7-G|!KUVU5Sdfk2Dt4u=&omP%F5^2oD@>IA{$9Z70GD}w z^e?+uY_Jw{Iq@Bx39hoceSOeOF%O7`5hEp5m}v9jc)-s$H1quEUFT=vYdeROROy_+ z?qjzb-B8PvPta~HH=eItbsGxp(I<6Nxm1A_CXAk`n+7Df&o0d5Xx2nnfnKclf4*fS zxXSG6YHp*^)r!I&==VBspeC@wgxUMm+(xcAU*Rfx%2u!W$VPCL*_~E9zts30dY)p! zLOdalDt=I4g$c8Vtu~|gTD)yjZ(JL}Rc4o6a~sruS73z+vlp+q4eIf0Be=@!7Hn=~ z^SR8z+6aeK3KOHu&aQ^>(5e#A-R*ta3#EFvq0u~fcGl`TOdBiW6LH9nYhmGK>wLkX@2=`CZ zM!TP>Cysya=a`JS25l}1e4Ncb>uxXcvC;K${T}+=L6Shu<&Oncm@xAKOqcwQWBvih z{N{}HA`@K2$41v>WOKX+aSrPzSYg74YslElA9>ou&Trg6Land1t68(bjgc1Uj!qSeZsJx zZ3I{G(Zm@wCEc$Ja>EB?JuUDtFmoZ?N09fMt```6)-Mvd;Tx~N5?EovNJJSa9Wsw# zr-l*2XgtZ3#p*34xQh21W*a7r7mV+mTjs@xtT16FYMDoHHI7F|oVA-UBajKM;{Ap> zUYJwc9)uTW9kRm2j155nw{{&ik6@lXmxP+eOea5dOQU1URlKK>W%_-bUmCi%=3jq8 z;QeE!(zy37|0aB|y|B-3GDfyD=lxe;g$Xl{$=th}&0Ml65iueYT*bdh*Ap>E&B#8R z)qA7J3KP4#2L&K?+T6QYi*6J)VH~bkk*pFET*Z3<$?sN1mB4?ynOEih<-9#zrwliN z6(-E2HuIOCI{TY&3+MTVz8gg*xQhQmTe6(M|E`%b=l-jh#+qs?=}$0|_uN%x(x3ak z%>+R6uc9^ymmMO``c>B$qu_7x>n0c2b zadPUn6xSX7vPn#Em6`5px_!{|Z%MHm3S^U5VZuy5Hi=j(1>8n(m6`QzUawx7N#l*N z-is9`;`Ro)tSel@0;iR%xWdg3XkjC`>hHgUT-IG}|JyH$aZMbHYa%O56ssKWvhJK= zIrFIX&`noZ*TY6|)f+k7^=sF|=6$f_z>2C2!auCL#0nGFuSdD!TBe#rpU1V;PnbzQ z=Hd_=!Br36M7fF%NHw4IQ}6zwWhXgmR+xw#p5Q7}S8ozoVZuy5HqVdJ|9ndU-&HW1!~|Ed zD>3V(SeSAN@6JEOU_IoA`mXmw)7<9)6YGP6T-N>LB~~+*!~J9Ci>fw)tJsy8v%Tw* zQVE1N?l`P4@!2EXWj!Z$diO<{jie{PSevJ?c^G zivlZ5oSA&rg}f?r8yCL5NzR0fsw#NfW`e8aRd-y-s4};);$coD8E^FY@J7!H6KBW1 zcVRlJNhIb@Q|jOlNiE5RXPjiL5X&B*{ZdzmRMa z^`vU*uXwVofH|a0aFy`DLqkTDIRfby+E6ue0UpPH5Lsa&czu5D&mWRZV*A4p>PK|` z8j3sTH1!pT@jJ>$tT2&#xTj`~>4&UcuHM54y(dQKnc%7mi#;`D zRGD9}dIhdmjjsTc@fCm-CMFlJq*-6d-t>uAhoUpyv5tW@f~$UNR7pcdl{o^5aUUgP z+=q|z$|j#($c%E2C-JetSD9y}6eB;XRpKLo6(+9D^U#nVWxAwa&nrq#Jc~{oA0;xu zReWr8J$cICN?#C@uC5kYVWREW{MyV52TYedozqb5i+gQp=LZ|XReWsFiEUeRwGW7V z`a6*oCYm<()U1*1#I@5@W1PAH#;KX$Dn2&4{^#ylsxcNGg|To}n5goqqGo*=-P~rq zS|8szZ{s^B6I{hdQ`a*+$)$XVc1TYvr3ritI^W5uA(6{{1bM%?M<5k5ol9VaiF(cQ zYe?rZk6`x6e=E;$Jmy|nEi%DXyx;JxXz&-s=n=oE*ea0~Ce9b|)cm*aGrvvzy0N+X z6lZO=x9@BOSMh$+^+KyVsDFcq%k)NMg^5vGMa}wl_s_0bs_`Z6628PS!BxDc-Q&AT z#`rGppR?nNYRDpUj~nxELT9`%h|4yy4T=On)4Fu_&47tn|PYDFbu^ql|poOjD< z8Kd&NJzYQFw287BBlPE*-x641Vq2$*n)Man^TOQ0a{C z29ae`1^##Yc-GR8spdW&OzZj&H-eR_$p0w!c!x0hb`K4iIPMuD1>X)n4TJf-j>I-5Xx;3-H#H`D~8uC9(qDtW?wLHF5zYIBVBe*K0{1^>sH`*KbsB@Jf zF=`nQ*Y2JYSz)4T8Hd)of227#s!*?s>SWC1@c7R|VuGtW_jhO)7DSqJ)r#vk)EOY! zU(YJB!bHtwAsX^OOd{LPEY3rCo2cqv(nfIA`-Bk9n%x$XKfBYI4>t<);aFi}R;Dm* zdhNyLe7I)c6>%E*AIln4wh>%axn!6Y8n{?Xb&pefA1vWC@;_GGEGMzTM1>Y}G~|Dn zgdSYMITbTG!fK;OF8y0v)xG;1?bL|*S_}8wkA=wn7zbi;zp4@|OvDVEug&Q>$0Wuf za22~!*Gmt1pb8*T*JhGfVIuKXsAkO< z-43^RgWI>l?M!eLyHeLDcFg6R24ZP=L5US65~|P9kQkzMchCLk3AgXTcbpq=I}=>R zu0+R0B!#R3F{n=&i4`U;cbTstF+{uIKBKxLDdZn?P~OwOs*T_(cBQU&LXu9V<6Fhb z<0?q3Fp=7OvG%D}m^thI4czX%5H6`PtCjwh z@x>%6$wqKhz0x6?HEVKe_i!Z&b0F7dT`RD{gxAsO8gfkBvov*m^Y0rKBgf?BtOGWJ zt4{O@)vP(G!?(?KKl>D^u~J}#i6IBWHRPC>GszoQ*`g$1-s|ta@iv01yk^hVkYi%b zDsDeG$@Sz+Sk+cjF@Dq~E- z>%E7w2(ECodR(*-Ts6)sO4Ejp(Nf*BKf^xcaOMM{A&rj}CjMOztywFPW+H3SSXXo% z>x!7*D&PIlnzimuxmLkxtX;Z}wM(opu@Fy!)=E~jVFTwH^bxLnE3?D|SLLs=QL|RE zKDp-WTmZsV>Z8aC6Wuz-X|A; zgYq7$IkJylD6p60eakeY>$q2m@bP!A7*R4-jIhGQflQGaGI-2YDJO1DRolT=SwD6b zncylu{utSQ8ltubQEFyekrgJk9bBU!gGUQ>dp8e!6$f8+hp(96Dn9;56P%7zM-Z)x zMv1I2F)k=tYyD}k>BPGK=5Suem`u{VlQx2@`1tGk;j6iw4?uV;$x%h`PTp7bb%;2K^0kH;*Z>Mnzi!Y z=f^6}rx>~W2kYpW;3__v=>2&xMmdSG@M>+Q3VaMsS6!og<-nXBj~T$!oP#__26u!YD3SMh#Bzol*A>Rb@5kZ;Kf6G@I34aq>} z5ghyRvKof7_K$bVZ3I{Ge$(}j{&<4~5wvHa$O;oBZp3Ox1~S)%W2Lv#Sm_;ywXaNY z74Kb%Hm!~O8)}4kJ`J?MsOAH1*|4-vRk>f z)FCZvH(cPqy~*888WKakt@@< zeg_j=#eX5Xn4eP=BiW&L%n*V9-A}<=w2YPBOk-b#A62w4h9?bRdz3@6&#{U()Pf(znJX<<~9_DPUU-ffXjsFFBxfX_en33Kv_Y>KKh0Kje#z z;HuT<4rpU1<<}PdYdn#?y|~&c&DsinuR+tDnm7*0Nch~IDH2+3`b3*}7sc`ym8^Ki{zNBbY zzoivZ8av}ac!zfpSz)4hn5J1B%$`;3;>?}$TI{}Vq>bRJ>f1HV>eqMdNLS~7825=z z>MXLt#QPr(X;x3b;g1J8>!Ek_Q*`)af~y*MAJP_0OmIcIpU5J{4R$sG(e3^(A}dS? z{Zh5pU!zQ7qaN&Bl@uths@cIta8>NsR4regwXUqQ+o8kX&cS1y8$kG!YACY8#GILj zwH(93UAf)FfEt&TLp>Z)zb0M+yN}&IVo9<_{e8rfN|qT&s7Ng)u)@TDvB{d%L+HTs z`^q2aA#^Xhr;XsM%|lhq>Qgi+?TB&;eTrUG@DNyGV$@Mpvw9)DnDbnzgI-7%9~H0> zT;)|dMYH-XE&hnr8K;^8V?CauvO)4!n70Be<%c$3e~Ne|7Qc8D-fL z5dD(;SYe|1&4b#^tn1AFS1Z~*R&JojmS>ftHiD~`3WqfG3pe|Cb(wix88gNq?LQIY z#|jgPrBbzwo_D&QrNs@!iC$sl{5IMMt~${wRYRBNj6RTco+{0nV`QS|Vn0@xI9=Zp9#oX0_oeAZ52g^8tK)3jSda=31~uhh9GRde3Lb7Jt) za2vr@tLvw0-52F>1%B(S`mmbw4v6#dO$1h$7!sAP6^%$t`9{xdbM-ijO}s)*rWYo&|AtP(wdfn7Cf<+cE#vVZ3UO-p+8$XPEfv zR~x}q>=zn!Uah~(yu$IvYnvadHzj*jTX@wqiwd0%nvBJb`N1A5! zj&8GhliCc=yC)}m2uyGl9~-Qd@rZR37n-H`vBE_4D(TwevWY2`|1+KwkM_;xT#c(w zmnlUBCb)`^4H63@zY&A($NRCuM7fRW+U;RJrb{Z-@^;2x9ByXKXEuVX_}J*WS9@>g zMiAq|O8K$EMEf`C?(=-O`wI8d-z}X-(3i94l!i8ftN3W@dVBS>BH(`R(KC-9AA>>D z(lm4~clY(?{if^X+fULyEtp>wMwxOT*doM z*PFKfMx4Lh-;Wh0-r^kmzP?Y&7WWa{vMQU?SXWg4NxY5VD&BACV74!tGZBRUhS$EV zFi|||+ur?lo*!%H?R<;l5j(S#9}`@~dm3vq@}F0ZqksE%`L_D<{?RX|Y3SLWV)Rqz z--PUeYOj^<=->Wpk&V7Kg@|nx(zTHv>!&0t#`p7ezs9Q7aDF_z*58i_uHxUM>&HfX zBa%L?@MVRG`;))@@^5?h1@=`h?5o~!uWbZZ@m|pN%U!Q257AY=T+Qc=_}A9^H_h!= zW~Ys3l@OB;Rrs}4GiUw&bDtZL*HCB0wa%LG^PUx+>vp{4wc zBWN7S_90H+s_)X}uM38&#(%#^PM7D^%App_+Q7fY?Qj1-Mka8qXM+%NF0#VJu2Vk# zA2)rYkpWu!nVV>W^PLH<`aUJmUtX87jheNd`32(su?}|yR+!i_C(*ymz>IC&T>sj) zH;#vKT=*|B{`-Ig|ud0f3FA-PKY`8YE!o;O^iT+uUKk#iE&KaeW|G(o=GoMdN#vbM0r|XAeUMCrU z)qnUMtT55>QvDR`ca&Q7I_dx0S6sz=LDx^eT#*z5U*#JX>vl%Q9%aH@7b5R@Y&fyj zhZRYN6Aef5zr|I?|33t&A>W7*uUGi~e*{qWCQztsd zg6Myun!p5CRW5WyL*i7*9{1Dhdl1`@AJzSAHGvf-?pHXXAzv-U)4h!r#U?uUfjH$E zVI#Pz*p_sy|GgZpZ`&wYbfUB3{y?#5@d$wxCQc-$Yx7^^a20ZIL!LOnSscWgs_8a@ zt11*r*N{c$+Vbrwe9{Exy*Q*5R8JRJVd6NRWST2J<~H(e9`Aev;?}H8A`@IS@ORwX z+w^m-cW)!dmhsMFO9RE_b25pnF!2TNYO8|!nWG;+ZXD;V0OH<5PaDBixyBsUp7ahk zw~;SqoKxQtDBig5DYC+ZeS~G$kg?9PTLZ=9(hY3{SMm4^I+)=dr!d}e`Zn%nb0Ry2 z-+sH*3(xJN*AB1||Hsu?hi7qgQ5<&(ULX{=LJI*3L9&~7 zu^d4XP4!9&wPK8hkJkT?9SX- znZ0uld-2<=X>Nbq%*YPnbNUGBEtQGS>yL`zS{+AYX9wg$cgKV9e7EF@6G3C$+G`1bdAMI3mjU&vM%E$S}nC z3)OUgJYHB~3ln^eG0jcq1{ngxpO3vHg1t`p9TpECgeU)IpT__YRnWVmK(K`g`RcO_ z>(nJc^u;`P_wrpZ#2@c8o###iK~-HrJm^1j~Z!xkp$oINV` z52=$}+Fo1g@T8eh1uA1^h6ssZFP_1s`JL9x_#T93p+9}t!ow@@L-} z7xDDkC~mhzuour@TubVGXIuku3Yti4VPeR!!vcz)j*3!`Vi}D}c;1~*a-&4B7tdhR zd@w45VJXpsr$6Mw7A6)=JS3n@>Zo}@t5LVq9VaG_l?e8duM8DdZLo=0)Hh%Y6TG&J z{C20w8+-dY z6?@>r7AAP6ndX``U5$$%+UCfuFu`71ypD**HD@_(gn_sZ!XE@%nBcjI-Tl+L7|%eQ z?_WV8*sD&N!@{jm6%V2%h@1l|C~RSZXPRkFQaT$AK|G06C4#+HKRPJfs#d@FbT(pf zckZ}BRoKFWJZlT2bTX1aWRDAw2=?OdUwHFs*v!a=e9?%)e@Y|BJ;BQFyiaglQ2*cCTF4SY;v*q69m^RIShcz{pTTf)D`N9Ny zMZP>FpttQPvfT!;9YhZhY+-_98rmGqn;5%5l%7*nBG~Ka0|$j$)#@#X1YD`pL&J?N zOmIw_=Ck*WjC~;1lxipu>{T&P2)8m&R}f=yR2NG&RM^6V9PM?cG&BZ-SUD$9BG`++ zL7Qe$zedPztmSuaEzJei$0Z&5D;lo zKl|`+u@{f5X{O(o-nfeUN8h+xKJ3M9aEzfs?1gm3H4uK9>BAN#!tN)FgEx;Sd)oSH z=ccZ=v+kRGSSJzeCCBcu77=<$+@szskMdy)6a0CNSg;vlq5EhK`yIDf)4$74M9U_9PnJowD{oVedib8@n&TWiR( zTI5mK!i3Q!Nv!?%R`Lovza#|XVPzF>!gw&jUh;TEzF4bQ1o2y*qte%KCivSulmv8B zKa5qirp@vw?8QgLeQ272VW0FA5c|)0N(6hwZP!JcGjE;qSPNngh{qt}_03@K@d(O;y;!M5$?UqWo!3n>Nj6ZTlHFK%8He zAQ9{}!H5^7YvvbE>`EaUR(3YV;{Bt|^JIm+xDBsjF~VD|C@R|TI8l0_(F4T6k*5^4 zFrlxH60ah>9OCn~7DjpO+PYsnSt8i0|Kup~<76+f%ij5N`>dZ)1jO1cClt0Yk$iWL zxRg-eA-eoo%eahZpH2;9C4#-q#_bXFLh1`YJDVz>XAR>Fi1EQfVG9#`-t80%BN~f} zHt|U-Vl>0`s;5_^M6lO^l%1mCz{XAvWU~tejpiV-AKIa?g^8~IFGpMefqp2jRD12N@A3lm*6Ev*eiG2K*Xc6YBdmS z;ix=tGD_4v;UzBHQIgoFn=uJQ{FXZs!CnnY?-koW)_2-C1>*Q_f8{C&wlMLk`d;D6 z-N0$1Ti(vb0T90JUq}RdP3pEw%qi4F^taFBM-aK7u==Fk3xzFAydAPjWU1Ih{B57d znppuxTM#Ete3S_GD)ZZRku!5^r;V*M1B|+-{gorfJ}PWsqVvq{qIZ$jP8-(~1C7t9 zU$Sh(DQP^Uo|fjv#HgQ**B}m^xU6u5GqEJ=Ua|aEeP>3wFh6c0=Pq^g35j4Yj$>4A zIn&rU2%>k+iwawqcvE(lX#RI&XGS$EUc+8b9QKEh2=?MQhRU(4n(;556PK+#p|FLC z%!Rg#mUCM<+D_)Vg2sNV4*H2562V>^`N(wI|Fh8_Yh<%eURL=GH@H5P^KE8HKG+8MrB_nG+qzQPtJINnUNM2Xf$8xV>Aq1qJv7JL2F zeY+^|pp~=7KH#`KD6krxC*OmVWQ;RaN$<3YZ%bTxCCMV)a#gFFYR%d za4UfA1F;u(gX~ZMV+#`*)53&X@2=3FsxbvbFK8k$!Cnu33>9t_rQp-55hwhW8K}d; z7AEA~nctVJZ}=bdSK@9}kO=nTy`A{Ra^BCFil>ai-({AfgvX!vW|?M|*Nu#6AY9NN zWD64oE=35pVqxEU-bNs*y(M8U858Wqd(2SRd3Y^jJct^FvP!$pn0U}MT)369ejioF zSc|8OCG}rPJKWfd_sW@O*yC@F`5@}_|0wOEV?qxJ6PE`}bav`hOv_@NL0-5=_wy3L zUc5^Xdyy|^H2wrp$h;=)24o`VzU5;1s9o4&Ad~VuSiC{0@?TFn@rH|;( zK?LpFE$wP#qHEM*abe*MM;T}X_F7iMb9)l@TJmqP7w^GDF3yWlb`DFopZiL?GnwGM zq*#-A)yS|^Dyt$&c+@ybc>d#y$wObmQmI@5-99GRt6<-7;a2+l_K~l#8#Mt35Aaag z!UWG|)9i_qiA5krT`MFJ>~-Qym~gA5o!i&I{$dh+rI5-NCU`cZ8cBe+F%@4-_Ejq` z5$yH8WT^P~cd(<#wjcrQ9~afa10EcLqkP_N?=5w=qdbB`IwgDW62J zSKSPuqGnvMGv@n1{EIdMK(K`go;T24s#D4M3?eymVToX`plVBmkzuCO#tjg!@FrX} zOJS8QOz^yczQMJ!#%&Na4i%FK_FC<;K-{S|*J&g6YFVSfp_fX*gT+*~Fd@&VjNMBb ze}H(|y`)627uTFH&6$Yy>A0)q-IGD;UG6uIO04gWEMm+9F)@Eul`Tw!=UgJ5-b>3v#EiX96}B+(+shDf>;4=^S?>DBBz-F0&yyNQ zO9XpyRGQ|XsCb(Qgx(!nnCK8UN4OR8o+H{V4L46{xG}+AaoUWs6@+d1co|2!8sb&8IIu&M$_Ow6mYg$X$l4|m9Ee8hEk z_sjwk!CqXG1(j|SUg_)b&8xEhO5ry4+?^x7suc41nP!E=SNc>Cfgsqz1dl)VTCRAn zPXJMF*HejLFCHh;gpQ*ARY#G%xD6hE)7;P~TDNo*UqDBZElfm&%n)v+zk40}>V@z` z_T$S@62V?_T>YhVx4&(d88u#E3lm%k1(gbSJk^)u%vY{_ukev@Pw$JHA>8VY-F83K zqcCg#TK!&O3ls7PP8xboPXO`SQg@`^VlS@sgZ&2RtM2G4zt2h1Q8CTuWSaMP?$$el zI1b%DwlERiELgae{+{@B*R3j>nMaP72=Qtj!BRtm#QruL#X5Vf zuOSHk9sWvw5Nu&0?=L|jXTyy)jfz=gJd8acdOdF`5$sj!!XS~BZoSjS@k*JEOL#YU zbKXy7FK#1yWT5CCutjXJ>n(XDe%9}S_${QR$`&U4Z?_W7dv14#5{;khp$A_ow>qd2 z!CsMZt;8bV?V_svEb3D4=usdxZPrw_Ffr<6WARVfku8CE&Y7)U-F{>Mk zZ69_D&AzrjnJo0vARZR4p|XXEjkD{E)c8G){$Pz-k$O4I!TwE)NCbOT{kgtyt0FF% zv`Y5`(R*=Gl`Tx1_|{9fRT0N#8Lo#S61}EBRhVF}hYzX?w-())8JUbhh^xjI+p9bV z9Ak~swHD>ZZ+D_(Hi(Q7{>oesY++(`{??+??Co}hVqNsuN8Ln@aL}9pnINwyk0#=` z9=n`20ze$Vn#{J@0V-SgcfT*wM7$ifODwdbeOsFsdK8GV9-SqEy^g%CFRGW_D=OKm z=bb@J!P-*)yq#6HFwr?%1M#rNUZ;)ro9^iIK*aRvCK2ov8sjD6j3}p#;UMScOnni1e~&Yx;wK8dQvpx4 zPth6@!CoB4sF|t6>Rmx>JXuR+3ljrddkMFqXUN1=dULGe)Px2o6YRy2k6l}@U+S0e zeqQq1)+!%6_Z7z*@{r%%*Ux~cHMyNcu-D$J^~K!md!61r@czDDPi$9W{%EJNg$a%~ z(>!_dvi>M}yW$b|vqVTJ%MG)n`ZfD^q9nR)1<+Q3ThHvFBR89u>uoCNcIbDsaqGPcF%Tct7)#E?DyN-3yRvW1Cl>E9*0HCdmPUZS@L5ek(`CfKX? zi`&U=rN7r8_N?|-HbUu-ElkMT1FfJ|kPITnky9*MxOexso_X z%!GZOqQjs#r^5JE5FL+gSK?N6R@uS?M-TQW`tH}i1F@ueH;G`cT)Fa#(@W!>HUiZB z`b<<-eeBmwWeXD=3&?dIxLKbEqBwMTnP9KtO|lBNmg#s9Nf)*&zd*~BElhAMpnB4% zFg*&yZ_qMjg1s&uO-pv`K_-BBjCIjq=s~iD362HqOYJ&ee+l9=^dOmFuW6@mC$BD_ z?DUlfh%WeQnGpnAnBeF^HIhnG^gbX4Rq7`Z?DglS6UjMt3#W}R5Lg9-Lxoetccd+pb^q2@q4=sR;Ha*T1+eA8StV~f57L{{iKvxSLq|Kt;H zjoi}fL-iuqz1#~rqfD?D*YbxP91`yMrGs+ewvgFJvIyO#pv`oVv4bxX6kL<~~ z(h|X5tVw_!xm~;J)-LRy%9NGV3YgekC@nelk?!al?1qLyHmsy(Z1_P^L|`x0R=_*w z8BaYkh|?=SNvaD>e7Jurd0n?8M<3^>JVz5B$nrdg}? z)>!5Ah3+d`nBdtA4W51r^-&=5K=+ji_WEIYT5|uN45tmV??OF4^1_P-c2L>E1kYyV za(*{W&jzB-&mAR#y(+E0oqWMea@sfw;s-?gk&YczwlKl-A3I;x4%e%I$Xh8;BG~KL zq!Y<+X9=f`jO&K$QTS>Z2ZAk3@NCAK{(%5J3B`W-7fp`0Q`36EwLY1T$R{zE?n;$dN5 zl`TwE`z0;eRnl46%0QBxM^lttlzAB$B_b$&HeDgXsRG$Z8$}N{fu-B+Tx04(F zmGo6ZI%TN74ePrVZ@5&pFv0T%*Y??gHc@&?Ly2IoLH;L_v;HESHnPnP)XUU@z7WGtCB@Tj;qJI`=^h(f%3H9uGBICfG}k_LcQR5qT4nsGqV_Q29vs%sJjn(|=!iy%Y%FrWGZEy^jCAKY7TsgHB)l9#dWq!x}(? zpDL{ivCH2!m?A z>ED4mFdx+m@9^ZolMmUE!F>qzq3BzQmWFf(5Nu(B#~&+2zGmWn5YwPj%>;XKEMT6; zk4+qfHT^B~BNbLl<5=SMO!G$Fki?N7ibIE&ElhBG*hTmGVB#-0sx?s6WrBO5X7tSD zkMj>Z^J52y79iq4u!RZkb$mZBzA>>mhGL z(W^EotXRnH$wY=?y%W|UJGy1mIMu2Sa&dgBttV>zU0^_}_y+67>-9QGfA;zE|LEN^ zy%Qel{>oqb#;I&!qR-AcNx3?Fp`lQ5rb^;{5Thr_1bel(5|b2L@oO9D>UB==MyBla z*TYoy;x_ERe@b;UCqwF@TAf3%g^7OcynXX}e<`zysEK4;D8vk>?5J_*ewg1ww7K8~txhgE%j zLO?|KZLYF~i6YyxyGD4UUYM;%uSYfVxruzATlcF-1bc-}%kCPOF2%XFdz9_nU@gYH zg)`<~$Jy$uujBuCu(z*!1Q!Mi}7%LI9G#NZjuv%F79tSya58m98^@_Fz$;jL)KET4DC#?9AxnAE#X9%grC zUGU{>W#aGYvwXfq8`pjrCXG20+_q`<$C(eung4||m%QjaWJ0^+sl=cIk11I7Vd)6R(S|b^S5+u+v6~?>i`mKpZtk zNd$X^&WLuoHKeyy@1O)hajG{oq}js6p5@Ulw}$k0g@-G@gQyD)X(rgqb?t=9t;0L1 z;Be*KX6Rr+hnFo(wEpLW%dI+HzSneR7l0RS!VP)?%%)xX+RJJg|BMTkg`(8=}h?{2yNd$Wxe;w{} ztALk9y^s2*w=3sXRs5feeUXtU9xW33<$~cA2j%1mT6Xa3xmOLA&dIOr#@pQ}ysI(6UI!lUce&pOGsKlw_JYWc_d&KWQSJK^ zF8AAZheoE)61+Qiz`HXO?Dh27ahH2-=^*wwF9XpA@8@h`;_>HOF88YQm1R*rFYtu? zu4RNouvhh{TQ0ZCaS!ZsehK34ziSn?Fp)g}t;?-){Bz$5N^`8eUWJ-D_b87b&or#6 ztydLG%{&}x=1j0xWV2|OdzEtvDump_nx(0BR@uS?&otEDLA{T+AatyYGQnQ4%TKu6 ztF<={1Sq)f; z^ROnv1bcDhqt;}+w{jQ6&si&|Y+)jEEG zff$K3WVSF7bMvjst?At_*HIr!1$+)vz?on#c}CR_yyRo$Cw_nmI9r%Fvoee3){s7c z3LyosE}9POqI|a8yBwjYEiyMyvDRJhg|mv7wtl8>cL-Ur&`Ot6<6iESr8@v*eYhd`U0ElhmhHlOBJ&)y4Fm2>!x zvmf7aq$8o|9$C{o@MxHF z2gEXbcV>dU2JgzJO~@PXd_^8~f0(ild#Vp(cP3kykfY@6nkmXg5a)K4lnD0nY2~T8 zHP-XYtE(Kq6TscXG=V~5+oPd-)^sBem{Qhs<+T>Gls&Ew4NnP%bNpZHt`@g9olY+-`iLv{R}O%1<&_?%f=#Iw+Q6`YkA?Gr?YQD=TPj-SDu* zSrtoZyc?9p*9TS5zG`=KFYqtnnmFW>kELcF1vPWFFu^@ynpGENRnCC;x31g<)ACU* zZ0Dhz1L0XORQV;Yx|Vs*KJjGb*aSX8nV3H#liF_s-cpfUyZBC^_BG49%b$VT*DUX) z-?rA=xwVHud`2GGG7xNGLdn%ybLa2+9sj754F8gi%LIE>_@RmB&aEx3e^#s-DHD;i z&0gF_`aOY~JIniFrOfItAZlIkQ`y3VUy~rMXqAmlmUo?E@01F77WKPQUn1D+Y|$WX zMUIW4ft}@D`&xRn7KkQwy;ZhI#Dqaw)A$I7=z8Ii@+We(6R(z+h_mE%u+bnbePIxmMh z-Wqe{>2v?^_-E=Hq`C9-i-8z}N+BQ9TB~efqVV`2&Ak`kyD=W>M-bhR+0O)f{dj7S zw&G=k@V2v~4}e&)9xK}**uq4SJA*X$UVs$r>YoB4AkI%B*y~NkFw8NCd-3?AZdAdnYBsFHMUJSYvW1DEyGLv9nuR;c?~@T%R}fdD z5LZmF7e|a~&O4t&9e{O)imw}~{JVS}JWj|d>gS;zM_-9YzEbZ_zd2f~*gsrEAs1XG z{_5+YHbEQv9{Nfn$ON}-nwhaTaUAwR)*4nzWiLJtnRtr|2%j+KB}>;=;~xcUnY}}W zFCwnXn_z8t<4~~$+5Do`OzlC?68ryAxdlW5GEC!3)mPcV#1Y?_+UH?QY}z!hSFEaL zL$w~CX0;`Py*dTW)!dr*O)6DYU0bk14}vXB#1EaT&7H8|tAc%VFSRy^^DVq2g1y#_ zTAG+?b63Cc?O94)jD7S|FVs}y z&j)Ko%7lu;h$SA)vZZHgGyIp>{||L}5R*|aygvxGFu@~>y#OQ2t4l#lsa{PY*sDyd zxmxkR{WXewRs;07q2_9L~T-@tB^;Zy!dw(Yp>~*Hw0?n-zUkaYdxR$)d zzieTG$H_D^;b@+L_-#yiiD0iDZI@{7dH_vv#;0-T{D|{m3lluDsM3sHJqY3-R1jc- zz21}$)!cOrB0*SfJOjZNCgd@%80f94Sb+?$UR)yBEA>*C=C04M0z15aLG7K_-j&ps z3Bg*&OriF*k0WMUmYLdAuO-eku|A0Ju>X7=2(~c6(F1)0?AQJW8I60dmz4h&lnC}(-f)5D-c8=ATS+zT=u4#; zNVYJ+(PNs%m9pvy5Yad~CfKXnk4rT7uK3;8%Bt2L_lk##scd0_V*%=1btIF2P?u^vKCg^!URVT6pn^fRmXrxuAEOI*sE21nC7k;5j?c2 zs$x~GBM7!IA;;CNKdP(kKm>lDOCs3o&QIZ*y8=x=+@n4q*LlR~B2pxBjP1KOLpzjv ziL!{!Cu=R&(Xf_mPXD*!Yjqv zQ{4hPq}js6=(G^cz4Ja{Z@f|yZ$%gP#Y+TxT{s@1x$8`P_aRB~22mB2DcHh9rvr;M zcLkbd*ynr`Z!E6^`bq?QO_{Y=%g}pS*4}09RVgEUwE%z?ZO{|gqo>%=9#6#?gXM(*_N-fabJMU*q%Bx!WiG?TURoTJ> z&oq3;nN>io1fpg@PKjWz)%lia?rICa;rO>=#cMpGg)L0*Ohbmy$Rg@K5Y-ToOt9DV zJIgh9#gjZEil`fK=4U;!s%&9`=cZ{c@F}kD2C;fq28m#=_@!Z*yLwW7rMP+*tAlAE z*un(QO{|eU`d0l1L};In3KQ%#qGGrv29I_sQ=9CBg?2wLF}pf zN+Q_n#qtPkfX^Ut-+uG@G5(bjj+LTom{}YpJpLT{P_JA5URevGA7(FGn5gz}vF5H0 zV`4YFmEG2>X|zPJ7e~Hnx=J2VVnNK?vs+;c6B%bO*RHe(7MWgKntGElqpWNy53RdI zu$Mfe&fJ`A6N5hnC~RROI!l=LZt?_CG18i~^On9>{zab5qHRwVJ`z52j!^8QUz1LK z0^;+4dlJE3S>u*#?uuF8uT7^0pm$3QzNfH-365!~L0!tI27-9}@tQ=iSIq%o+P1P2 zovK_DKx6>X>C-iZElhBPA}`}@7Bv@$Z@QkB2=;pNevMYB@@S`xY9I=O$OVEeOmIx& zyK`E0)dNH<)&iJduTcXcv{oMmI&BQWYJn&223HrKQrN(;3vfy#Wg)cuzZ?-Dz#Ye@l zfIOL7rk01bb~xU85DhHcHH}=U}NjrSMtuy+J<8RBF7u+dNt$fbmbndSA8Eh zla6X!h6t@euYscGrm+d!hxq<+WxA3VW8UpiGpVnbkjFd{QDPB!5heUv?8UKQnnQQb zQY^*Wi={P%f0uju<4=*ASI(aH5u(26u31WDv{AK`rm%$x?n5XR_L-|#Rm_+EP){P* z>)n{m+N(bToHjy0lmhW52(~aG_ij+S5Ty)=u);MYg1wIazD=8Q(qE`stZRFx1wGYi zk^ai>sBRqFJVyIkXFH@`jP|w8_WmZqzmS1_WD}NIn>)xhp6)LZb+%RP#9ad7?|+gNwlL9a zSezCT>nZBkb!+c*^jFK`T`f=V{Sv`mrCP>m4_A1KKkfIyUoN#)OM~bzYm34bCTfn3 z*Vewy=MdGhHBcX8<*w!WP>Eo#w5IV|-@o#S*>=_J<=A)r2gc)MYO2D=&SUfKoH)&0 z#XR%u-s*4I@B9!1TbLLZ7N@x@rT^WoA8OY6EAN&kNCbO5jf&UmSI95^uvepkvA2Cb z@?K*>u!V{7hvPMOrSxknI;#b-_jNrgrSp045pusFYqDuK^?ML$>VAbSOx#`(uT{&J zU-;Q0_~~+M^$s#Q>doFF5$wf1jrVi3F%xb4i#FJc+u-xVmmlnNPQzNpurXoE?3hID zRM)I_pS&4kXkGtKOAf%1)LE6NwQiBsIjZW|F}VTnoSOzLRM^7A)Ha5;e_dMgO*^g% zB7@_6(o5xs|0CF|%&&>srRrIoxGG!FSFMca_K)}~&K4#*l{K`O-f78O?YMeY$X7j# zw~4DyWP-g0HcQm%dt`MYu?N1o4#jiHn(kc{wlHz?nXc6=m6lx3)|+?&;u)SYs`roy z_8L<#Q5*U=i}*sk#W!tB-(WNJ4cNj&)Lvb4YbdmD{6VP?Vt^(S>~;N8f)<{XMHIHx zBestYSFYgNejREBY++*KNL}kP9`a3>x(DNt={T}2C>ogPelAHX`s?lFEn54JEdI6O&nD~6%{?u~aZZ&dUUQ@z_8k7dbeVnukx`qdsh5;@fgb z+S84CyP~C~~SU4|G;r`+ADA!GBZq=UrIV-4^x=IJA ztMJ(}Eh-7kt@-jQdj-`CZ$$%yx55@C&nmsgr%(%~o>M>+;4DjsTz?}5u zw=5lJCb&K1q}J@Arr=BU!qLSNt-f0R5<2AQlN;w!w88N)zSh}ZDVVCQK2^v58&713 z&DGUdRqK!^XChme=pUJ)6$y#)T@W%9eYF|HV-Oc|%LIFMxSOIijHu%f!CqC>zIbLB zQ|oC0TbO7%I7N&9CC1nHhwNwritnnW75}oDOt4p}?J3%=A$5F9*~Ib{nbf7Ymdw1p zKY=YwRIUcK^fEENKYXy>QkAew>Jr?eZat6*_IiP%%2B(H@3!|A@uuZwr5Wa6wi|sC z*uunrPmgLp-;ee^XjrrM$DcOa^Ze-l5$v@E8txTvYcw75ozY++(?rWEbQpzN+My}Rg96?;62CCCJOalhei&@+=7 zgx-BMsYoJQm{@k?sOG0-ckQuzw>k)GJpBHTU@z`BthZ<1tenFAd|=C@1hz0SW9m`u zcERkf)5%uvZqD*$Jn}S^3HIWiMt=M6Rn!sat7DS0N%*#EN3HIW1!u!X{P0CTk)pYDnWeXES zULMgttf=j}a?m>S*WsI#)99;OlVyUvxED+_WPL{U0M6rX(V2<-yL=u)#vajzHR|Q6 z_0fuUk35@{BRHzAF;x@!cbPt3`-t``Eyy{lZ}M(ZmV>yCow;mbLT=+qw~aRO411E9 zU@zw$<$7?~I`f>U5mpn~BL9|MqObZnS-X?xj;jN%i6hnMorvOjvKi4Jzb!&iu%c9_m8m`@{~~ED`L*M`)TUXrndm zgC=UxIjaL&9~=o2+#a5N0{qpAcoX*MyT*#hex)#h+r^&;M*%D0jU_Ud0UPAfIaQyXm) z=Z}_9EhXjLQL}ZnFyXN}S{r+`f>xoLb&om$;sJ;Z|3|RbnkTVZCqGXuvrQyr!j~)D zaY7?H=xkx)w_ed&>f#F8!Ozwl?2{c|u8>4?l;rSlUQ6Wfxa5NWwFi{CVEtg(himN(wf+P)jFZLdI!Yv%`(AW+;672 zPoepHwEVx+xBG|B3Ch+p zpDM|?w%5)%TxSat9v$~+8A{jJQtdOZIpe944`*IAhfJ^+pOa~B`DU5@<`wql8=Wmo z4D{TimAq3=tM<1QSK&pMDerLR`~Q;(_TpYJ&CZ`6DoHqxmZK)>{JVS}b3%7&1%7Dk zoX6Emi|wNd99vrF-(~t#*PYspr;W7wXRV_eesQs4)fNdGQ(9*W6LK5>ja#S;1EF51 zED`MGthYOD^#4;;4P*k2`K`3ks#&PE=HFm#Ij)ITZq)mG!CHmk(7gB*rgbeeNejXM zBfAYm2r{srfM5#~%8M}V_UDN!edT1HVaGxxsSi!_Er=<|XcQp0cbVWL#Iq01;|{Xh z()TK5uooYdOcX|@mZj!#1F9ZQ29=}+$Do5)mX^@U|0CFo`wc4-o%<>c z&{w11jndh|L~6eo+SX}{oxZxEGwNbo4 zEPWCz5$rW<@hDAMxJC=UX|-{o%?m}x{*SC4oegJij~0vjM7x3wG}O1Z|JE}$(7ej- z)mq^ijO^%5ca)M9 z&o55<4Oi+>@A6=%LIE3I8{N* zxFXsi_J(&*o+A?1XMClzg$ZjXnrmmQb}OTGEt#^hgYy1vCp9&fOt6==`)p|UXou*( zFsuFaTCna)oh?i_`{T5*yH;Es17YQUEdD=&y{z4CrOHJ+#NM@dLdJM}%F@8#F|hVp z-ftLh_bB%pvMj>C?9M!}tE9meCak@L6Z6Jv^X=ZvzHW;0BgVsTuS~EP_ZzbGc6`~@ zc^=vWrDr9-*Bbw_sOR&W^Lgjt8}(7;q1F~ z`l|YXPd?V$M7M8bg1xw>QBU95`+9I}X@mR6*>P(351$jX;%9u>ml_M$prvI}n$dAE)=tQt#ahaA;XaHVc?zK$ybYsc2#1&`EmeJq-y z^|i0N@s(11toM(CSs6?=rQ%_1upDrEl2Kg(e_+;Mc zuUsDYn_<-ii_pIuiA2y5;z=ggmuhc83C)cH8NGdfxS67T#`V>y<7WTuRO`}K+V2MG za^&<$#uIXTLnheEsWj&hD~1;Hse*lXA8Yh5*usQU|H?U!zzKC5SZ(Zj)ZDNtn0@!= z%Te(W@-LZY+?hTJk%*E9%{S}QW1^G(et1;d_i$`N(#qON!4*^Nzkj|^JL!0Td~L9= z3?cXXBv?PY^9vFFY=45ar@G;qOa@z+sOC{8>D{Ij=L%QTKgn+6 zN)EXVrk$FH_7R$9`rgy^m_`0d$b#X9qnlvIl2z+|lq*^5f>`Qt;Y2cOQ`!HIH~OII z`b)fdjSd+uS(tF@-rKab4|2GE1;l_JBPD{pk|#wcqsErg#&lHR_s2@=ua){4?8R+Z zRl3)dPqy##s7TsnzTN~xKJPvTTbQtFhhH6GI7IQv)AXn#FO_^9I!Xk4In|V%XNGru z7TUz?jvWlPFyYjAc8Fb0o$W`3eI6G1zw3+%6V?jKjmEYTAY?M3GfH8?Uj@+~Eak@F4b>2(iONg8eRSL)3f zYOsX~N1?=t-Qv(n83*EA`@s^yUX~)p=zWP!8;h`({}g&G*E$R~*usRRwDQBDL@mi) z#X0L}zMObAKqA=7QuesCJKkyIhR-fN7rr7_2Ei64EX9~U$?;AbE0-ncE)dz<_mc?r zvJ^^k&4_c_mfxy(BL@*;_$5A62V@M(u&hYUl4Pk^D_|y zTbOVZe4I8`oII~5f_NU%QzF>Q(L{3EnC_^O9KyAPqlCww=RDpfMt@O08TCysgDp&0 z>Ih{*6P>Hi-_TGf3@y3~0UacQy?D+;3w!2j{T}KX}~& z-ip}5#0XJAxZiPR;=70S#xf6YEKIN$&w10FGa^XOj5}x9`~Tqi%6*k#!qU5&{&b)7 zjuYA1L+^|Gd6hb$62V^bwZy~G$C+8Am%(GeW6rY~wU7pW(clR<+Cw7P%hBm@qNE#$ zHCTK75d>S9;Mr`NrIr2q91vc9-6Vp&9K8{zjenp%R26%X*Ej2Cu!RYp&G=#hO{8WZ z&V_ZB2=;O`ZJai0gNXa0yJWD137*aP(lFwbo(f`z5hxLo7ZlFis|Hy>oWZ{BdLS%q zu&)*-A_62V@M;+!*r`HCg$ zf!KeZZ+i=aElhB{p~42fh@QdQM6YgjB*M|S(-QE$!$*sC(W^W34p>_X>Rv}WDkgYr zO!H;y^?GX%2e2B&zr|kM>!z6vUtKk$!mK#O1MrN$LHoS(xRaznAX~03;(XA&l}xlqtixS=b} z_w|>!Qg@i#PKpv9e@9c(S>Mg~=B54?#O)HT4Yn}hD3)q}*(<`{zIXHun1k!LXcEC* zmZI-s-|bp|d(|LEljr&>5LbRy4Yn{bdR(B;>TJ;hZDRD)^Lh}jyR{ltl?e8F-#AbV z%CkjVWv>XoZFE!b3?f(Q$_87Q$bX@yn0Y(WA&UR5>rF8SH*L%-5$v^cc~9|eRHRnb zzV41)b;O>v!*1j<*uuo#{|1WbeIgv9>x)o*Ilh=gzrLt5!Cv!s3>4LCML6Fkn&l7I zSAZxw`K-;THEllwIH_f#dau@?aRCv=! zBG{|!+Cie!l?bN|<9rUI0iODryl!N$g$bVjrulDQ55phC-w%Byg1th{juxm0r6t*O z@OVED)B&xOXnhY2zt0z29KgreN0cnDf~1 z?81Gp*gHK3^2lPZ)Hm3|#EslR0`=jXc^=;QroIEYwWBd>nP4xTU3elp|42UsqTpRx9DG)1g1vZlK_jxR+deY0?pf5Id}v z!4@WX-k9dHD!GixAR7NsT_V`)*!qd0e@vL>XWyfCf!KQ&5VECn%O zXjO?|ueZ^`A|O+!(?$#LSNbOGWQ`wHMmnmR{YMMbGt|c8-p73iHIMqQ^gCEJXfvja z)K^S!9GhmF%a8PbK=i*}ULx3wV*&5A3s33AFh2^v%Wkk2x5062n$lw zfNrUV`rMi<5$q+;k1D?1_4^<;jUKPFg^80rX9#yDNBce>_1PG~)W_c%e6}2w0evQl z^9#eAETk@dKk5suZ!Ax~HQ2%g#~b!E?9O1!1L5skTq4-3+VWtr`Nndmji$RY7{0iQ zwp5E7Y+*u<#2p@4jjAA`Mi!9>_KLYNLwwETLEYN!=k-ujX}zOt2S^4XPpT+O1nzFVB(n!WJeXLS_he zzE4$Gcl`*)eA}4u62V^bm{$$xs~-cg2iZGpVWRY$Il`Sy<@@29-VyWT{-ult9|@m1 zj}vxU47{gXby)sdn@%FwYhT<9;m(bEIryG_AJ4nbtqdWuFd>g%!p^7q1rYy)z1Nvw zuRV9?2zPed-JQGj&gk8f=v_V!rnwhP^J$}KTQ#)#=OmpiOmv8wBiz|-F&+ErR&JDr z-erQl~ktA|4b zDt|dSce#c0LT)4Xt5LdDJNgacYijUffeK$*x65M_xIO+Q(=1c6zA+CP zJl&9)*`Z;m_?q|n;Kxw$HShKEkR{@4j;Cq%DplWDi}&-lAlSmh;T}r_>RH;Epom1j z+QxMddn;F!2=)pZzd$@2IM>c2MQ-hdnnrhg+kS^ER`%jH-j@s&sD|j|y><)qHkN~! zjZ9g#Fmd8cm?(F7qC?CcQq@?1du@|S`6Pn9+UyS#sB@q&~L2Rs=%U}x= z51NJxRIPJ}#ki(##&tJ$|BpHo?DcEuaDf_IT2cEg^>^II~# z-9xoU?gh~W^#ZQbBs9B?(PG@D-EbzUiuL042-y)qYOdQ#~S!_HOptZD#!$EWP z-B{BPt5Q!Q*z41<%>s2;oSf~|pXTd(KnyKVLuU&Ue~#HEP*uet!cVJ4T||32sMCsH(t&n{lm9b*?3P*JT1Y4NcKVggb`D&mx(O&Bt zf>ps-5W{C?k_h%H^V@cjJ9BHNjf?@_h6~DBMz!Knl<;WsoHxzx`x+SeK%Bf%$Y2W- z1^b4J5|>76lkE5N^SG8+Z$&3@En$Mac+Q*VKSOI7OF@(_nAKnl6ZPXF#P~6ToU6}< z5oL^-){0l%S2`2y#d98Nf|tu1RtEON3y*ZRFfrw3q)5EdQ@dbaeR|+pQXSWlba;nm zg1vaoW9MW^I{H(V6S|YH;NBR zkT%4Q#N1eg>VrF{3j|x3;Mr`NA)uJ!s{$Q536!{-?Gp9g{xmY+*v4=gmgcGUi3U zR3;Y6DvbyCG)F$3mg;*O(?MjrnciRv6N|EK6tnUNX<6-OhBjD*8jH8P36~z}Ot2S6 zzGU@wk*Xl?oDH^M;Ns2Q!Z zg^8 zO7S3!67O^-*vsd~EuzMxK<&Rf)=s2eAhu)OrwItQFu~D-{9UY7?gTNy@3};<*AivB z7_7H)+L+owHJV}FXLZx(I$N0Fcr(p*jjI~o_}X`5)_IA@Txh#!Ik%NPYJ9ZFV%4e| zXK~$KF#WuAR7~*Lm}bdRm5s+BYB#wl5$wf%Xqw$xx&aTk6&WS7WPv57VY_tyrc_lg}K>)ZctniD{LMuyNp5Nu)M zRrS3B73FLiYckk1P!l<+FSgu~2=+=zj1uz`ytK^r6F@YGN!WdM83bFHIB+sb)H~s& z4Y8j9wj!4(9z?Cv=Ou!@meh(7sH^9+u^WURh#x_)g$cb;j40HnqSHndWH`A%j7dqA z2=*#9ElyN8?WujT_qZRJ+1r?N0J<3<*uuo5rEvoF;q2YnxF)vkXB+@Aba{eAu-A*7 z@xr|~+_zmn!%`*<2f-F5CK&Mo_2Ha0nm-+2tOhX*`_GwRulaitg?s1y+)3>WU+fqO ze1Bi}X|hXXeAig(iaQHO%#y5oMd+>in!kO=xiGPv@e8s)uf4mkvxNzc9%O9o|Ji5` zqRYw462V^j`Y7=_!pmu6Sk%wPE8IWQPF&X6!URVTa#9lmjn5#?BQu2w_VOwgBT(DW zY2z?54W{5e*lpw~oh?jo^qA)Cm7R@H5Zj(7O9XrM8xSW@4bk3TZ<^zfwbK;YJ7xY! z*4e@YM-TRSAv5R)5H(!;C4#-~FOC8B0v&aEq zg1rhYj~4E_25nPI7(+o6-#=St3lkCdVuib|!NV-CbZh^4$qgMOg1tIyj}`7J1+Cw| z(FKSiJDTcjVPf@}17ghhd`?}1TiEeptw!w}{3($M_By-tfaugBpH}3QwQnNk!fM^B z4|j6nlSH;KF>GmqK!rao=Lw70eAdsXiEofKww%zpM|lK!Hk;-V{YHwoN(96$cLP$3LxfzU<(sG z|4lRWQfuQ!5WmgZA`$FWXK1`Y)l;V$$-l_$%8mLZwP$b9*}??RX6TGoZ)aE)PdZu^ zPw2PUtK#rPak+X{ZNELEHh~xnq7?|XFu}7K`-D4nFb05_Ghm@au-A+hhKOF5=K9hG zDtQ{G@SGR~f-OwQSB7>SI~sq2m|Jz4M6g%drzCN5$8FaJ`#efu)>?Z^x?|RIT=8h~ z?83K+qjinrAR4z>ud{`TAw}bayM9TVBPEOus3Q2<%CV&@0DJN5GR=d#OB!84BqNWP zEle!S9WPdF&gaxGDVv5p09bEdwXLZ{uourR(`*o%rjG;Be|BA+Elk`#lOWb6Wzl@? ziYE`wuh!FH9q#aiCy7k3mpp6#8WpZ*0FkfDr9`$cv30O6x=nfO`ZCWK9;s`*!duZk zWYY23a_{oIfsRSG2F803%KA`=V6Ts^c!3(fT6=pfqag@OS*{HTwlKl70Q+mpD8?}m zKc1f_5$rXzVWL3wR;P`~(u$EC&+YrLbA&BS@Vqfi--5nIUJ!?|JB11M>RQ4OvAxq= zHSP0=E#zwy!%-)$4SUDE{khR{^_?o!4AO5bDXe zQitknVM3l!iIW-{gFxJ#6(|wxRWVQqRPuD%*fGAevB%oo|7@6a=Hv1tieZnl*b&a- zgo+Lz+Txp6lc&R^@nC}E7+I`)N*X_d7#%T1BG`-L4c`aj()4X8+;&}{nyxGHlU3!$+Ra!M^CN5LONmUdmpnfvU~l3NAiCx`n#dL= zN`IRqo^QP6GE=QPXW6o4jUDLS>^-~cd?XxW_a5k?cBwSiLAzdGj&fyxQq~}_v*CqF?$802CkwHlf8AeFd;``)8-WotKRF8nDP?AUJHW{is) z8qn~A{ujnP-c?2FUG6s?8>_zPC;dE#&F4IIwlHCINfHtN-g2TO*S~A^f*A9EFy>6K zmptaLTSVwZKztV(mB}dZl+0>Wf$ug)#9-S>r@Hm;~whQTuB_J9$G!vO%ulG$33RJpv z#eB48)MyZv=F7jDnaCC<!pVQXs|KbUG=tsE?{#`yl%#T$YY~oj+ zki=y^hXm@=+DFAlC=;k#t2=dTC4#-=Gml>oX%pWhk4-$;;;=w{TD$fiwebujgVmb;zZ?}ot+8VoYb0~09}(Gx%yKohS8=jO{%TBv#$m1d zo;q8Y$T|9mc+_K->$1JVGG)*hV-bi`CF)89du<+bSa{@K>$EW^-4LTMR1sar3hV5} zZR}BwiZ0c9yPnu}YukMoVvGebH2>Q~wlLA=!%?w%Q61M6n4tJ*19nr2Q0{#86qTty;j#w z5nrp5Vuy79=EgG+_rv=pvW1C3;VHshQ+Da2Duz`d_EBsjiD0j0eN%+HLhMwpsy4C3 z>uCa8m?*n3MYt=(URagMSdCfx>Hhx;yBF9h%R7$aMHoUiSxDKyLQM#(;eHXzMHuuv zI8Y*>1Cb5p06{kH))H7l#zo70zyyH-A;7BKMzhI*3UYdSo=SU4K#QTmFfuJX)WPTe*;nx6NXb!17ry?I^DTAxwQ zd%)LNZil4KIy$iNHI_=XG@sG`R6cpXA)}lL#kp=tJu)^hlGpf3%ru|Tziz~c9?2L5 zr#c)->Y3MCN6t0A5}z=ixF2$I?674$lQAX~=T9f~?{BrXJKD7`isu>eXs1n%;8fRk zHQGGaIlr=T$8#Nu;#3(RLsYA^JNF`;OfQKKj149f4>cve^L&5yUe`ln$#%=?4)gXhNAvH2`n z<%0M_MqHd$5o1EpZ(~xg`>?frN1Y!vH9o;SL13(Te^79WuVeGQeHW+3e`-W#$?_Nz ziuwlLD{UOiz{odYLj^Gqu$Bj>EZWI~jDa}kMCS6VHre`jX=-V?cPf(6O z_Qh!mPVtp*zOTqU`{9P^6F;9?5#!I!v*PQ`Jd1V8!uU-i=B-=n2u?kAH>qFxTUp~% zsLgjyPF@&qYkIgHMlhk^>&^UKTd^?S!HBx-Tt{$f(103!|4G-W)a3ZWcz^Rvu^n@A zV@xRcdP}A5)lQA?t1_PqduzFK9sCJ-(&p(GeWt|^8u3vD(({Eb*sPqgAvSXa$4qjg>m64IL-25}#{5vCcxmthq$fSyb$8!gM zbG2IC|9#$_YAsJnmp^Y5f*J)AioOli$`RfU3TNuu-TA>C_NQu0DC|C;=s0Otl!8;U zSD3%sQZ*-8*<%Ut8Zoxz`~( zm{8m;J*|Rb*(+~FDLD1=v!`_Hfo)aR>}s5q2qqNMC!SJ{@UDY`Q!^4}`u(yT-wwGB zCKS`E%akL$9Tc28(Gb;hGrNcEU_$Yi2actFBb{Z?DuZ55J8aBA8HY`=nGk!aFMpPJL5&L_c+QjBkhB4<;0M zijJtDI9xj*O2Mfo>ksJs$j?;q=xw+T5lkrZZyZoTar(*=j^NbFM@n?{k{RmAzlyO# z1QUwi{-{Jb!aFMpPStkbt2fMB;M*Z*#f0Kq-@VEa-VO>*jc>JEztpKHWCs(9acy?1 zplI0gbd-Wq>fP=7hmnTSjZqyO;?eFdmxgSg@7VX@q9O3Pt;MCm8wR+F3%^^FOP|T`XtAb+W z=$TOpPIW%}x<0t#O*MF1H=LCSCKNffudAR~)_cAqIMrdoGX0$!e^A9Ax55q)Oeoq+ zU8Wr2ofQSACe{?{d7bz8cF6r;Lh(#pp>l+`gMw38cYm!*dhQR|!Gz+w&1Wk|csnRK z_3CFY>ZPsT4%xwkV%`@os-XD#+{P#cr%tUIuj`H-Qu}(<<~99yi3lbX(XHcEP}C&0 zIf7GpUyahcdL31RN;hJM2qqN0Q=^n4ytAU<)KguC>T`vE_U$mYJc9|v@IFJ8BfK3H zoSNRLuYP6Cv5*~1D1P3xuX2R9gMw3;^Y@~!n)G?5ezn+qpXo2ManD6Cp?LOYrgDUL9Tc3}`D8<4jgI+t zWSCz}DArDChy=yvP0fx|aO%R+`o!bOxLSPYRR5;;hX^JV6W0Yl8MW2 zCVV^OI+##YuS-T8;q9Q{)N{Q{6aVR68M1>3MPy`Y#1Y;O3Qqm~#FoT^tKSdV!Gz-D z54J=c;q9Q{)E~PRBu*SU6S9K|Me(G9h$Flm6r76g9-27tMpeiTCKTJx4UIU$+d;vp z!+&j=*b%7?*};TjZR-akj_`I+aB9}oeHG822;0GgqT8_j`Ht{*P;hG7uP(*QzYN>K zgksk}E)Ne1X;|0}v1hVPNX0W-^UyPha1u0Awt4Z14D*YEQ__TFU+$c6cZgs@AFO zp^)Y!z2KBIA@%E9X!kngr(!}O%}Y>7!$QF+X+l~JY^y&x_A<^&1QQBrUV=h?Dhf_X z6H-~0?~x37M1GJ!A(H3Ta+~;!D%8P;kmNAv$?&KF&%66AIha_=Gep z6r8e6h(4aR7&}BTp|H)1Psr&~a7vnxQD?`52qqNLyadHg)38u*$~GZ-|A=L{4iQW! zY**tG=S{;x!6|7%s+P>q)hA!W4iQW!q6AIhBq!FC5O-P7fLSdU1pOA)yf>X8$(MOtX##xDALSefapOA)yf>X8$(fc3X ziX9@DP}t_hC**!ma7vnxxt;ff2qqNLyrdVLvQ0?H4ki?~c}XKUWt)%?!Gyv#FFqj+ z3k9ca6QXzY+kyKbf(eD~YW%`9EEJrQCS+%?qk7ZRySc*%CKS@V1clsl3QpN3#J58P z6AIhBq!FC5O-P7fLSdViG=fvogdCW4B1ABukme=5;FN7bLUu5ru+584NW((GDcgkT z;%R$v&qXkyu+584$Q`8Mlx;#n1QQC|y!eDPEEJrwO^9Cln-W}y2qqM^dGQIk4hl}$ zCL}~Kp|H(M8o?>sgoFqt6t;OuBRFN7kPyLy!Zt5y1gC5h5+ayT*ybgT;FN7bLIe{E r+q|R^oU%~S5lkp-^O8nz$~G(^f(eD~YOMG_Nr)za literal 0 HcmV?d00001 diff --git a/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg b/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg new file mode 100644 index 0000000000..a90e5aa342 --- /dev/null +++ b/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/profiles/FLSun/flsun_s1_buildplate_model.stl b/resources/profiles/FLSun/flsun_s1_buildplate_model.stl new file mode 100644 index 0000000000000000000000000000000000000000..5702cb464f939f257596b3c8cd0e14618ea455ac GIT binary patch literal 426484 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%0D?>1gnDQ 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

https://github.com/SoftFever/Orcaslicer